Skip to content

Features

JSON-Schema

Every Device/Entity can and should have an accompanying JSON-Schema that defines its properties and possible states. The platform validates every input against the JSON-Schema and guarantees that no invalid state can be set. Depending on the source of the request and the given parameters the platform can try to fix erroneous states by removing unwanted properties, changing the type of the parameter, or choosing the next value that would be in the valid range.

stable

This core feature is stable and heavily tested in production use.

Access Control

The KosmoS Platform has advanced access control which include access control based specific users, groups and scopes. A user that creates a Device will be the automatically added with admin access for the device.

graph TD
   start("User2 tries<br/>to read status<br/>of Lamp17") --> checkLampExists{"Lamp17 is a<br>known device"}
   checkLampExists -->|No| notFound("return NotFound<br>(HTTP404)"):::fail
   checkLampExists -->|Yes| checkReadScope{"Device has<br>a read scope"} -->|No| returnStatus:::success
   checkReadScope -->|Yes| checkSystemAdmin{"User is<br>system admin?"} -->|Yes| returnStatus
   checkSystemAdmin -->|No| checkUserScopeAdmin{"User has<br>admin access<br>to scope"}
   checkUserScopeAdmin -->|Yes| returnStatus("return status<br>of device")
   checkUserScopeAdmin -->|No| checkUserScopeUser{"User has<br>user access<br>to scope"}
   checkUserScopeUser -->|Yes| returnStatus
   checkUserScopeUser -->|No| forbidden("return Forbidden<br>(HTTP403)"):::fail
    classDef default font-size:12px;
    classDef success fill:#087f23,font-size:12px;
    classDef fail fill:#f44336,font-size:12px;

stable

This core feature is stable and heavily tested in production use.

Integration with Smart environments

The default integration with existing smart environments is done with Home Assistant. We selected Home Assistant for our default integration because it is considered as the current de facto standard for open-source smart environment controllers.

stable

This core feature is stable and heavily tested in production use.

Live Annotation/Status website optimized for OBS

A website is available to annotate OBS live with changes in user selected entities/devices. See Doc.

Examples: Just monitor "Light.Stehlampe"

http://localhost:18080/obs/live?username=xxx&password=xxx&uuid=light.stehlampe
Monitor only the sensor.temp_living
http://localhost:18080/obs/live?username=xxx&password=xxx&uuid=sensor.temp_living
Monitor all Lights and Sensors available in HomeAssistant

http://localhost:18080/obs/live?username=xxx&password=xxx&uuid=light.*,sensor.*
Everything
http://localhost:18080/obs/live?username=xxx&password=xxx&uuid=*

stable

This core feature is stable and heavily tested in production use.

KosmoS Wizard-of-Oz

The KosmoS platform has a full featured Wizard-of-Oz interface that will be automatically populated but can be (and most likely should be) manually configured to support the features and parameters needed for a given Wizard-of-Oz experiment.

[
  {
    "uuid": "ubiact1",
    "name": "UbiAct",
    "body": [
      {
        "type": "select_prob",
        "property2": "gesture",
        "property": "detected_gestures",
        "show": true
      },
      {
        "type": "_displayjson",
        "property": "detected_gestures",
        "show": true
      },
      {
        "type": "display",
        "property": "gesture",
        "show": true
      },
      {
        "type": "radio_json",
        "property": "detected_gestures",
        "prefix": "set detected_gestures to",
        "options": [
          {
            "name": "hand_closed",
            "prob":  0.81
          },
          {
            "name": "hand_opened",
            "prob": 0.94
          },
          {
            "name": "none",
            "prob": 0.94
          }
        ]
      }
    ]
  }
]
stable

The Interface is tested and used in a production environment but lacks some user experience tweaks and fixes.

KosmoS Rule Engine Editor (KREE)

KREE is a block-based programming interface on top of the KosmoS Platform. It is based on https://developers.google.com/blockly and generates python code that will be launched directly from the KosmoS Platform

needs work

It is used in production already but still needs to be updated to the new python library. There also needs to be a wider variety of blocks to use, currently they are limited to generic blocks and some blocks based on the ConText use case.

Plugins

The platform supports a plugin system based upon pf4j.

The repository containing the plugin Interfaces can be found on github.com/kosmos-lab/kosmos-plugins. It currently is rather rudimentary and might change significant in a short amount of time.

stable

This core feature is stable and heavily tested in production use.

Example Plugins

There are multiple example plugins available

github.com/kosmos-lab/kosmos-plugin-web-chat

github.com/kosmos-lab/kosmos-plugin-web-example

Kiosk Plugin

This plugin is used in the BAALL to control multiple browserconnected screens. It might also be useful for an example plugin using websockets and regular synchronous requests.

github.com/kosmos-lab/kosmos-plugin-web-kiosk

Weather Plugin

This is a weather plugin using openweathermap.

github.com/kosmos-lab/kosmos-plugin-weather

OSC Plugin

This is a plugin used for OpenSoundControl inside the BAALL.

github.com/kosmos-lab/kosmos-plugin-web-osc

To have an example for the camera plugin api the previously integrated camera system for ReoLink was moved to a plugin, you can find it on github.com/kosmos-lab/kosmos-plugin-camera-reolink.

needs testing

This feature is currently only tested with the Reolink RLC-410-5MP and RLC-520-5MP, but should work for all reolink cameras

Camera Integration

We currently support plugin based integration with Reolink cameras (see plugins). It is possible to get the recording of a specific timeframe via the Reolink API, those videos will be stitched together, and subtitles will be automatically created for the devices the user selected. In those subtitles all changes will be displayed. It is also possible to provide a custom delay between the "recording time" and the "database time".

in development

This core feature is still in an early state and may introduce breaking changes soon, currently there is no UI to check/configure the cameras.

Plans

ONVIF integration with discovery and recording of current live videos and subtitle integration. Integration of the ONVIF recording service to gather previously recorded videos.