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
http://localhost:18080/obs/live?username=xxx&password=xxx&uuid=sensor.temp_living
http://localhost:18080/obs/live?username=xxx&password=xxx&uuid=light.*,sensor.*
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
Reolink camera plugin¶
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.