From ee1850b3f56114c31e3cc21aca7e3c86eeeb54ce Mon Sep 17 00:00:00 2001 From: Ege Korkan Date: Wed, 13 Nov 2024 15:01:01 +0100 Subject: [PATCH 1/4] add TUM devices part 1 --- .../TDs/Flask-manual/Uarm-TUM.td.json | 396 +++++++++++ .../TDs/Flask-manual/ur10-TUM.td.json | 647 ++++++++++++++++++ .../TDs/Philips-Hue/Lamp-TUM.td.json | 263 +++++++ .../ConveyorBelt1-TUM.td.json | 114 +++ .../TDs/thingweb-nodewot/SenseHat1-TUM.json | 619 +++++++++++++++++ 5 files changed, 2039 insertions(+) create mode 100644 events/2024.11.Munich/TDs/Flask-manual/Uarm-TUM.td.json create mode 100644 events/2024.11.Munich/TDs/Flask-manual/ur10-TUM.td.json create mode 100644 events/2024.11.Munich/TDs/Philips-Hue/Lamp-TUM.td.json create mode 100644 events/2024.11.Munich/TDs/thingweb-nodewot/ConveyorBelt1-TUM.td.json create mode 100644 events/2024.11.Munich/TDs/thingweb-nodewot/SenseHat1-TUM.json diff --git a/events/2024.11.Munich/TDs/Flask-manual/Uarm-TUM.td.json b/events/2024.11.Munich/TDs/Flask-manual/Uarm-TUM.td.json new file mode 100644 index 00000000..9333b759 --- /dev/null +++ b/events/2024.11.Munich/TDs/Flask-manual/Uarm-TUM.td.json @@ -0,0 +1,396 @@ +{ + "@context": "https://www.w3.org/2019/wot/td/v1", + "actions": { + "beep": { + "description": "Beep for 1 sec", + "forms": [ + { + "contentType": "application/json", + "href": "http://172.16.1.150:8080/uarm/actions/beep", + "htv:methodName": "POST", + "op": "invokeaction" + }, + { + "contentType": "application/json", + "href": "mqtt://dbbroker.local:1883/uarm/actions/beep", + "mqv:controlPacketValue": "PUBLISH", + "op": "invokeaction" + } + ], + "idempotent": true, + "safe": false, + "title": "Beep" + }, + "beepWithTime": { + "description": "Beep for a time set between 1-3 sec", + "forms": [ + { + "contentType": "application/json", + "href": "http://172.16.1.150:8080/uarm/actions/beepwithtime", + "htv:methodName": "POST", + "op": "invokeaction" + }, + { + "contentType": "application/json", + "href": "mqtt://dbbroker.local:1883/uarm/actions/beepwithtime", + "mqv:commandCode": 3, + "op": "invokeaction" + } + ], + "idempotent": true, + "input": { + "maximum": 3, + "minimum": 1, + "type": "integer" + }, + "safe": false, + "title": "Beep with Time set" + }, + "go": { + "description": "Move to described Position with set speed", + "forms": [ + { + "contentType": "application/json", + "href": "http://172.16.1.150:8080/uarm/actions/gowithspeed", + "htv:methodName": "POST", + "op": "invokeaction" + }, + { + "contentType": "application/json", + "href": "mqtt://dbbroker.local:1883/uarm/actions/gowithspeed", + "mqv:controlPacketValue": "PUBLISH", + "op": "invokeaction" + } + ], + "idempotent": true, + "input": { + "properties": { + "speed": { + "maximum": 10000, + "minimum": 100, + "type": "integer" + }, + "x": { + "maximum": 200, + "minimum": 120, + "type": "integer" + }, + "y": { + "maximum": 200, + "minimum": -200, + "type": "integer" + }, + "z": { + "maximum": 100, + "minimum": 52, + "type": "integer" + } + }, + "required": [ + "x", + "y", + "z", + "speed" + ], + "type": "object" + }, + "safe": false, + "title": "Go to with speed" + }, + "goHome": { + "description": "Go to the set home point", + "forms": [ + { + "contentType": "application/json", + "href": "http://172.16.1.150:8080/uarm/actions/gohome", + "htv:methodName": "POST", + "op": "invokeaction" + }, + { + "contentType": "application/json", + "href": "mqtt://dbbroker.local:1883/uarm/actions/gohome", + "mqv:controlPacketValue": "PUBLISH", + "op": "invokeaction" + } + ], + "idempotent": false, + "safe": false, + "title": "Go Home" + }, + "goTo": { + "description": "Move to Position x,y,z given by the user with fixed speed=3000", + "forms": [ + { + "contentType": "application/json", + "href": "http://172.16.1.150:8080/uarm/actions/goto", + "htv:methodName": "POST", + "op": "invokeaction" + }, + { + "contentType": "application/json", + "href": "mqtt://dbbroker.local:1883/uarm/actions/goto", + "mqv:controlPacketValue": "PUBLISH", + "op": "invokeaction" + } + ], + "idempotent": true, + "input": { + "properties": { + "x": { + "maximum": 200, + "minimum": 120, + "type": "integer" + }, + "y": { + "maximum": 200, + "minimum": -200, + "type": "integer" + }, + "z": { + "maximum": 100, + "minimum": 52, + "type": "integer" + } + }, + "required": [ + "x", + "y", + "z" + ], + "type": "object" + }, + "safe": false, + "title": "Go to position" + }, + "gripClose": { + "description": "Closes the grip", + "forms": [ + { + "contentType": "application/json", + "href": "http://172.16.1.150:8080/uarm/actions/gripclose", + "htv:methodName": "POST", + "op": "invokeaction" + }, + { + "contentType": "application/json", + "href": "mqtt://dbbroker.local:1883/uarm/actions/gripclose", + "mqv:controlPacketValue": "PUBLISH", + "op": "invokeaction" + } + ], + "idempotent": true, + "safe": false, + "title": "Close Grip" + }, + "gripOpen": { + "description": "Opens the grip", + "forms": [ + { + "contentType": "application/json", + "href": "http://172.16.1.150:8080/uarm/actions/gripopen", + "htv:methodName": "POST", + "op": "invokeaction" + }, + { + "contentType": "application/json", + "href": "mqtt://dbbroker.local:1883/uarm/actions/gripopen", + "mqv:controlPacketValue": "PUBLISH", + "op": "invokeaction" + } + ], + "idempotent": true, + "safe": false, + "title": "Open Grip" + }, + "reset": { + "description": "Reestablish connection to Uarm to correct for loss of location", + "forms": [ + { + "contentType": "application/json", + "href": "http://172.16.1.150:8080/uarm/actions/reset", + "htv:methodName": "POST", + "op": "invokeaction" + } + ], + "idempotent": true, + "safe": false, + "title": "Reset" + }, + "turnLeft": { + "description": "Turn robot arm to left for 1 step", + "forms": [ + { + "contentType": "application/json", + "href": "http://172.16.1.150:8080/uarm/actions/turnleft", + "htv:methodName": "POST", + "op": "invokeaction" + }, + { + "contentType": "application/json", + "href": "mqtt://dbbroker.local:1883/uarm/actions/turnleft", + "mqv:controlPacketValue": "PUBLISH", + "op": "invokeaction" + } + ], + "idempotent": false, + "output": { + "properties": { + "y": { + "maximum": 200, + "minimum": -200, + "type": "number" + } + }, + "required": [ + "y" + ], + "type": "object" + }, + "safe": false, + "title": "Turn Left" + }, + "turnRight": { + "description": "Turn robot arm to right for 1 step", + "forms": [ + { + "contentType": "application/json", + "href": "http://172.16.1.150:8080/uarm/actions/turnright", + "htv:methodName": "POST", + "op": "invokeaction" + }, + { + "contentType": "application/json", + "href": "mqtt://dbbroker.local:1883/uarm/actions/turnright", + "mqv:controlPacketValue": "PUBLISH", + "op": "invokeaction" + } + ], + "idempotent": false, + "input": { + "properties": { + "y": { + "maximum": 330, + "minimum": -330, + "type": "number" + } + }, + "required": [ + "y" + ], + "type": "object" + }, + "safe": false, + "title": "Turn Right" + } + }, + "description": "Uarm resets every full hour automatically to negate accumulation of location errors", + "id": "urn:dev:ops:32473-UArm-001", + "properties": { + "homeLoc": { + "description": "Home location, can be set to a new value. goHome action goes there", + "forms": [ + { + "contentType": "application/json", + "href": "http://172.16.1.150:8080/uarm/properties/homeloc", + "op": [ + "readproperty", + "writeproperty" + ] + }, + { + "contentType": "application/json", + "href": "mqtt://dbbroker.local:1883/uarm/properties/homeloc", + "mqv:controlPacketValue": "SUBSCRIBE", + "op": [ + "readproperty", + "observeproperty" + ] + }, + { + "contentType": "application/json", + "href": "mqtt://dbbroker.local:1883/uarm/properties/homeloc/writeproperty", + "mqv:controlPacketValue": "PUBLISH", + "op": "writeproperty" + } + ], + "properties": { + "x": { + "maximum": 250, + "minimum": 50, + "type": "integer" + }, + "y": { + "maximum": 330, + "minimum": -330, + "type": "integer" + }, + "z": { + "maximum": 100, + "minimum": 52, + "type": "integer" + } + }, + "required": [ + "x", + "y", + "z" + ], + "title": "Home location", + "type": "object" + }, + "location": { + "description": "Gives back the current location", + "forms": [ + { + "contentType": "application/json", + "href": "http://172.16.1.150:8080/uarm/properties/location", + "op": [ + "readproperty" + ] + }, + { + "contentType": "application/json", + "href": "mqtt://dbbroker.local:1883/uarm/properties/location", + "mqv:controlPacketValue": "SUBSCRIBE", + "op": [ + "readproperty", + "observeproperty" + ] + } + ], + "properties": { + "x": { + "maximum": 200, + "minimum": 120, + "type": "integer" + }, + "y": { + "maximum": 200, + "minimum": -200, + "type": "integer" + }, + "z": { + "maximum": 100, + "minimum": 52, + "type": "integer" + } + }, + "required": [ + "x", + "y", + "z" + ], + "title": "Return location", + "type": "object" + } + }, + "security": [ + "nosec_sc" + ], + "securityDefinitions": { + "nosec_sc": { + "scheme": "nosec" + } + }, + "title": "Uarm" +} \ No newline at end of file diff --git a/events/2024.11.Munich/TDs/Flask-manual/ur10-TUM.td.json b/events/2024.11.Munich/TDs/Flask-manual/ur10-TUM.td.json new file mode 100644 index 00000000..e6c98b0a --- /dev/null +++ b/events/2024.11.Munich/TDs/Flask-manual/ur10-TUM.td.json @@ -0,0 +1,647 @@ +{ + "@context": "https://www.w3.org/2019/wot/td/v1", + "@type": "UR-10 Robot Arm", + "actions": { + "goHome": { + "description": "Go to the home position", + "forms": [ + { + "contentType": "application/json", + "href": "actions/goHome", + "htv:methodName": "POST", + "op": "invokeaction" + } + ], + "idempotent": false, + "safe": false, + "title": "Go Home" + }, + "setJointDegrees": { + "description": "Turn the robot arm joints to a specific degree", + "forms": [ + { + "contentType": "application/json", + "href": "actions/setJointDegrees", + "htv:methodName": "POST", + "op": "invokeaction" + } + ], + "idempotent": true, + "input": { + "oneOf": [ + { + "properties": { + "base": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "elbow": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "shoulder": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "wrist1": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "wrist2": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "wrist3": { + "maximum": 360, + "minimum": -360, + "type": "number" + } + }, + "type": "object" + }, + { + "items": [ + { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + { + "maximum": 360, + "minimum": -360, + "type": "number" + } + ], + "maxItems": 6, + "minItems": 6, + "type": "array" + } + ] + }, + "safe": false, + "title": "Set the joint positions " + }, + "turnBase": { + "description": "Turn the robot arm Base joint a certain amount within borders", + "forms": [ + { + "contentType": "application/json", + "href": "actions/turnBase", + "htv:methodName": "POST", + "op": "invokeaction" + } + ], + "idempotent": false, + "input": { + "properties": { + "base": { + "maximum": 360, + "minimum": -360, + "type": "number" + } + }, + "required": [ + "base" + ], + "type": "object" + }, + "safe": false, + "title": "Turn Base" + }, + "turnElbow": { + "description": "Turn the robot arm elbow joint a certain amount within borders", + "forms": [ + { + "contentType": "application/json", + "href": "actions/turnElbow", + "htv:methodName": "POST", + "op": "invokeaction" + } + ], + "idempotent": false, + "input": { + "properties": { + "elbow": { + "maximum": 360, + "minimum": -360, + "type": "number" + } + }, + "required": [ + "elbow" + ], + "type": "object" + }, + "safe": false, + "title": "Turn Elbow" + }, + "turnShoulder": { + "description": "Turn the robot arm shoulder joint a certain amount within borders", + "forms": [ + { + "contentType": "application/json", + "href": "actions/turnShoulder", + "htv:methodName": "POST", + "op": "invokeaction" + } + ], + "idempotent": false, + "input": { + "properties": { + "shoulder": { + "maximum": 360, + "minimum": -360, + "type": "number" + } + }, + "required": [ + "shoulder" + ], + "type": "object" + }, + "safe": false, + "title": "Turn Shoulder" + }, + "turnWrist1": { + "description": "Turn the robot arm Wrist1 joint a certain amount within borders", + "forms": [ + { + "contentType": "application/json", + "href": "actions/turnWrist1", + "htv:methodName": "POST", + "op": "invokeaction" + } + ], + "idempotent": false, + "input": { + "properties": { + "wrist1": { + "maximum": 360, + "minimum": -360, + "type": "number" + } + }, + "required": [ + "wrist1" + ], + "type": "object" + }, + "safe": false, + "title": "Turn Wrist1" + }, + "turnWrist2": { + "description": "Turn the robot arm Wrist2 joint a certain amount within borders", + "forms": [ + { + "contentType": "application/json", + "href": "actions/turnWrist2", + "htv:methodName": "POST", + "op": "invokeaction" + } + ], + "idempotent": false, + "input": { + "properties": { + "wrist2": { + "maximum": 360, + "minimum": -360, + "type": "number" + } + }, + "required": [ + "wrist2" + ], + "type": "object" + }, + "safe": false, + "title": "Turn Wrist2" + }, + "turnWrist3": { + "description": "Turn the robot arm Wrist3 joint a certain amount within borders", + "forms": [ + { + "contentType": "application/json", + "href": "actions/turnWrist3", + "htv:methodName": "POST", + "op": "invokeaction" + } + ], + "idempotent": false, + "input": { + "properties": { + "wrist3": { + "maximum": 360, + "minimum": -360, + "type": "number" + } + }, + "required": [ + "wrist3" + ], + "type": "object" + }, + "safe": false, + "title": "Turn Wrist3" + } + }, + "base": "http://172.16.1.219/ur10/", + "goTo": { + "description": "Move to position in cartesian coordinates with the assigned speed and acceleration, default values are .... ", + "idempotent": true, + "input": { + "properties": { + "a": { + "maximum": 1.0, + "minimum": 0.1, + "type": "number" + }, + "s": { + "maximum": 1.0, + "minimum": 0.1, + "type": "number" + }, + "x": { + "maximum": 1300, + "minimum": -1300, + "type": "integer" + }, + "y": { + "maximum": 1300, + "minimum": -1300, + "type": "integer" + }, + "z": { + "maximum": 1300, + "minimum": -1300, + "type": "integer" + } + }, + "type": "object" + }, + "safe": false, + "title": "Go to position" + }, + "gripClose": { + "description": "Closes the grip", + "idempotent": true, + "safe": false, + "title": "Close Grip" + }, + "gripCloseLight": { + "description": "Closes the grip with 25 Newton of force", + "idempotent": true, + "safe": false, + "title": "Close Grip" + }, + "gripOpen": { + "description": "Opens the grip", + "idempotent": true, + "safe": false, + "title": "Open Grip" + }, + "id": "de:tum:ei:esi:ur10", + "links": [ + { + "href": "http://127.0.0.1:5000/files/urdf.zip", + "rel": "urdfFile" + } + ], + "properties": { + "currentCoordinates": { + "description": "Gives back the current location in cartesian coordinates", + "forms": [ + { + "contentType": "application/json", + "href": "properties/currentCoordinates", + "op": [ + "readproperty" + ] + } + ], + "properties": { + "x": { + "maximum": 1300, + "minimum": -1300, + "type": "integer" + }, + "y": { + "maximum": 1300, + "minimum": -1300, + "type": "integer" + }, + "z": { + "maximum": 1300, + "minimum": -1300, + "type": "integer" + } + }, + "readOnly": true, + "required": [ + "x", + "y", + "z" + ], + "title": "Current Cartesian Coordinates", + "type": "object" + }, + "currentJointDegrees": { + "description": "Gives back the current degree values for joints", + "forms": [ + { + "contentType": "application/json", + "href": "properties/currentJointDegrees", + "op": [ + "readproperty" + ] + } + ], + "properties": { + "base": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "elbow": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "shoulder": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "wrist1": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "wrist2": { + "maximum": 360, + "minimum": -360, + "type": "number" + }, + "wrist3": { + "maximum": 360, + "minimum": -360, + "type": "number" + } + }, + "readOnly": true, + "required": [ + "base", + "shoulder", + "elbow", + "wrist1", + "wrist2", + "wrist3" + ], + "title": "Current Joint Position", + "type": "object" + }, + "homePosition": { + "description": "Home position on x-y-z space and joint degrees values", + "forms": [ + { + "contentType": "application/json", + "href": "properties/homePosition", + "op": [ + "readproperty" + ] + } + ], + "properties": { + "base": { + "type": "number" + }, + "elbow": { + "type": "number" + }, + "shoulder": { + "type": "number" + }, + "wrist1": { + "type": "number" + }, + "wrist2": { + "type": "number" + }, + "wrist3": { + "type": "number" + }, + "x": { + "type": "integer" + }, + "y": { + "type": "integer" + }, + "z": { + "type": "integer" + } + }, + "readOnly": true, + "required": [ + "x", + "y", + "z" + ], + "title": "Home position", + "type": "object" + }, + "moveAcceleration": { + "description": "Its value sets the moving acceleration of all UR-10 robot arm joints, default value is 0.5 but can be changed", + "forms": [ + { + "contentType": "application/json", + "href": "properties/moveAcceleration", + "htv:methodName": "GET", + "op": "readproperty" + }, + { + "contentType": "application/json", + "href": "properties/moveAcceleration", + "htv:methodName": "PUT", + "op": "writeproperty" + } + ], + "maximum": 1.0, + "minimum": 0.1, + "readOnly": false, + "title": "Acceleration", + "type": "number", + "writeOnly": false + }, + "moveSpeed": { + "description": "Its value sets the moving speed of all UR-10 robot arm joints, default value is 0.5 but can be changed", + "forms": [ + { + "contentType": "application/json", + "href": "properties/moveSpeed", + "htv:methodName": "GET", + "op": "readproperty" + }, + { + "contentType": "application/json", + "href": "properties/moveSpeed", + "htv:methodName": "PUT", + "op": "writeproperty" + } + ], + "maximum": 1.0, + "minimum": 0.1, + "readOnly": false, + "title": "Speed", + "type": "number", + "writeOnly": false + }, + "offset": { + "description": "Offset of the robot base from the QR code position, using Unity's coordinate frame", + "forms": [ + { + "contentType": "application/json", + "href": "properties/offset", + "op": [ + "readproperty" + ] + } + ], + "properties": { + "position": { + "properties": { + "x": { + "description": "X-axis offset in meters", + "type": "number" + }, + "y": { + "description": "Y-axis offset in meters", + "type": "number" + }, + "z": { + "description": "Z-axis offset in meters", + "type": "number" + } + }, + "type": "object" + }, + "rotation": { + "properties": { + "rx": { + "description": "Rotation offset around X-axis in degrees", + "type": "number" + }, + "ry": { + "description": "Rotation offset around Y-axis in degrees", + "type": "number" + }, + "rz": { + "description": "Rotation offset around Z-axis in degrees", + "type": "number" + } + }, + "type": "object" + } + }, + "readOnly": true, + "title": "Robot Base Offset using Unity's (Hololens) coordinate frame", + "type": "object" + }, + "urdfFile": { + "description": "URL to download the URDF file for the robot", + "forms": [ + { + "contentType": "application/json", + "href": "properties/urdfFile", + "op": [ + "readproperty" + ] + } + ], + "readOnly": true, + "title": "URDF File", + "type": "string" + }, + "worldCoordinates": { + "description": "Current TCP location in the world coordinate system (relative to QR code)", + "forms": [ + { + "contentType": "application/json", + "href": "properties/worldCoordinates", + "op": [ + "readproperty" + ] + } + ], + "properties": { + "rx": { + "description": "Rotation around X-axis in degrees", + "type": "number" + }, + "ry": { + "description": "Rotation around Y-axis in degrees", + "type": "number" + }, + "rz": { + "description": "Rotation around Z-axis in degrees", + "type": "number" + }, + "x": { + "description": "X coordinate in millimeters", + "type": "number" + }, + "y": { + "description": "Y coordinate in millimeters", + "type": "number" + }, + "z": { + "description": "Z coordinate in millimeters", + "type": "number" + } + }, + "readOnly": true, + "required": [ + "x", + "y", + "z", + "rx", + "ry", + "rz" + ], + "title": "World Coordinates", + "type": "object" + } + }, + "security": [ + "nosec_sc" + ], + "securityDefinitions": { + "nosec_sc": { + "scheme": "nosec" + } + }, + "title": "Ur-10" +} \ No newline at end of file diff --git a/events/2024.11.Munich/TDs/Philips-Hue/Lamp-TUM.td.json b/events/2024.11.Munich/TDs/Philips-Hue/Lamp-TUM.td.json new file mode 100644 index 00000000..2405a3cb --- /dev/null +++ b/events/2024.11.Munich/TDs/Philips-Hue/Lamp-TUM.td.json @@ -0,0 +1,263 @@ +{ + "@context": "https://www.w3.org/2022/wot/td/v1.1", + "id": "5dc4b482-e6e4-4f0b-9783-f85a1432c845", + "@type": "Thing", + "title": "Philips Hue Lamp", + "description": "A Philips Hue lamp that can be controlled via the Hue Bridge", + "securityDefinitions": { + "basic_sc": { + "scheme": "apikey", + "in": "header", + "name": "hue-application-key" + } + }, + "security": "basic_sc", + "base": "https://192.168.1.101/clip/v2/resource/light/5dc4b482-e6e4-4f0b-9783-f85a1432c845", + "properties": { + "lightInformation": { + "title": "State and Attributes of the Light", + "description": "The current state and attributes of the light. There are more attributes that are not listed here and are not of importance.", + "type": "object", + "properties": { + "data": { + "title": "An Array that holds the object of the information", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "The ID of the light", + "type": "string" + }, + "id_v1": { + "description": "The ID of the light in version 1", + "type": "string" + }, + "on": { + "description": "On/Off state of the light. On=true, Off=false", + "type": "boolean" + }, + "dimming": { + "description": "The brightness of the light", + "type": "object", + "properties": { + "brightness": { + "description": "The brightness of the light. 0 is the minimum brightness and 100 is the maximum brightness", + "type": "number", + "minimum": 0, + "maximum": 100 + }, + "min_dim_level": { + "description": "The unit of the brightness", + "type": "number" + } + } + }, + "color": { + "description": "The color of the light", + "type": "object", + "properties": { + "xy": { + "description": "The x and y coordinates of the color in the CIE color space", + "type": "object", + "properties": { + "x": { + "description": "The x coordinate of the color in the CIE color space", + "type": "number" + }, + "y": { + "description": "The y coordinate of the color in the CIE color space", + "type": "number" + } + } + }, + "gamut": { + "description": "The color gamut of the light", + "type": "object", + "properties": { + "red": { + "description": "The red color gamut of the light", + "type": "object", + "properties": { + "x": { + "description": "The x coordinate of the red color gamut in the CIE color space", + "type": "number" + }, + "y": { + "description": "The y coordinate of the red color gamut in the CIE color space", + "type": "number" + } + } + }, + "green": { + "description": "The green color gamut of the light", + "type": "object", + "properties": { + "x": { + "description": "The x coordinate of the green color gamut in the CIE color space", + "type": "number" + }, + "y": { + "description": "The y coordinate of the green color gamut in the CIE color space", + "type": "number" + } + } + }, + "blue": { + "description": "The blue color gamut of the light", + "type": "object", + "properties": { + "x": { + "description": "The x coordinate of the blue color gamut in the CIE color space", + "type": "number" + }, + "y": { + "description": "The y coordinate of the blue color gamut in the CIE color space", + "type": "number" + } + } + } + } + }, + "gamut_type": { + "description": "The type of the color gamut", + "type": "string" + } + } + }, + "dynamics": { + "description": "The dynamics of the light", + "type": "object", + "properties": { + "status": { + "description": "The status of the dynamics", + "type": "string", + "enum": [ + "none", + "dynamic_palette" + ] + }, + "speed": { + "description": "The speed of the dynamics", + "type": "number" + }, + "speed_valid": { + "description": "The validity of the speed", + "type": "boolean" + } + + } + }, + "type": { + "description": "The type of the device", + "type": "string" + } + } + } + } + }, + "forms": [ + { + "href": "", + "contentType": "application/json", + "htv:methodName": "GET", + "op": [ + "readproperty" + ] + } + ] + } + }, + "actions": { + "setState": { + "title": "Set the state of the light", + "description": "Set the state of the light. The state can be On/Off, brightness, color, and dynamics.", + "input": { + "type": "object", + "properties": { + "on": { + "description": "On/Off state of the light. On=true, Off=false", + "type": "object", + "properties": { + "on": { + "description": "On/Off state of the light. On=true, Off=false", + "type": "boolean" + } + } + }, + "dimming": { + "description": "The brightness of the light", + "type": "object", + "properties": { + "brightness": { + "description": "The brightness of the light. 0 is the minimum brightness and 100 is the maximum brightness", + "type": "number", + "minimum": 0, + "maximum": 100 + } + } + }, + "color": { + "description": "The color of the light", + "type": "object", + "properties": { + "xy": { + "description": "The x and y coordinates of the color in the CIE color space", + "type": "object", + "properties": { + "x": { + "description": "The x coordinate of the color in the CIE color space", + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "y": { + "description": "The y coordinate of the color in the CIE color space", + "type": "number", + "minimum": 0, + "maximum": 1 + } + } + } + } + } + } + }, + "output": { + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "rid": { + "description": "The ID of the resource", + "type": "string" + }, + "rtype": { + "description": "The type of the resource", + "type": "string" + } + } + } + }, + "errors": { + "type": "array" + } + } + }, + "forms": [ + { + "href": "", + "contentType": "application/json", + "htv:methodName": "PUT", + "op": [ + "invokeaction" + ] + } + ] + } + }, + "events": {} +} \ No newline at end of file diff --git a/events/2024.11.Munich/TDs/thingweb-nodewot/ConveyorBelt1-TUM.td.json b/events/2024.11.Munich/TDs/thingweb-nodewot/ConveyorBelt1-TUM.td.json new file mode 100644 index 00000000..8df61422 --- /dev/null +++ b/events/2024.11.Munich/TDs/thingweb-nodewot/ConveyorBelt1-TUM.td.json @@ -0,0 +1,114 @@ +{ + "@context": [ + "https://www.w3.org/2019/wot/td/v1", + { + "@language": "en" + } + ], + "@type": "", + "actions": { + "startBeltBackward": { + "description": "This action starts moving the conveyor belt backward", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/ConveyorBelt1/actions/startBeltBackward", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "output": { + "const": "Conveyor belt started backwards" + }, + "safe": false, + "synchronous": true, + "title": "Start conveyor belt" + }, + "startBeltForward": { + "description": "This action starts moving the conveyor belt forward", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/ConveyorBelt1/actions/startBeltForward", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "output": { + "const": "Conveyor belt started forwards" + }, + "safe": false, + "synchronous": true, + "title": "Start conveyor belt" + }, + "stopBelt": { + "description": "This action stops moving the conveyor belt", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/ConveyorBelt1/actions/stopBelt", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "output": { + "const": "Conveyor belt stopped" + }, + "safe": false, + "synchronous": false, + "title": "Stop conveyor belt" + } + }, + "description": "Conveyor Belt with a Stepper Motor on a RPi", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/ConveyorBelt1/all/properties", + "op": [ + "writeallproperties", + "writemultipleproperties" + ] + } + ], + "id": "urn:dev:ops:32473-ConveyorBelt-001", + "properties": { + "speed": { + "description": "Speed of the conveyor belt", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/ConveyorBelt1/properties/speed", + "op": [ + "readproperty", + "writeproperty" + ] + } + ], + "maximum": 100, + "minimum": 1, + "observable": false, + "readOnly": false, + "title": "Speed", + "type": "integer", + "unit": "%", + "writeOnly": false + } + }, + "security": "basic_sc", + "securityDefinitions": { + "basic_sc": { + "in": "header", + "scheme": "basic" + } + }, + "title": "ConveyorBelt1" +} \ No newline at end of file diff --git a/events/2024.11.Munich/TDs/thingweb-nodewot/SenseHat1-TUM.json b/events/2024.11.Munich/TDs/thingweb-nodewot/SenseHat1-TUM.json new file mode 100644 index 00000000..e2d11807 --- /dev/null +++ b/events/2024.11.Munich/TDs/thingweb-nodewot/SenseHat1-TUM.json @@ -0,0 +1,619 @@ +{ + "@context": [ + "https://www.w3.org/2019/wot/td/v1", + { + "@language": "en" + } + ], + "@type": "Thing", + "actions": { + "clear": { + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/actions/clear", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "safe": false + }, + "flashMessage": { + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/actions/flashMessage", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "input": { + "description": "The message to show where only one letter is displayed at a time. May include the scroll speed and text/background colours.", + "properties": { + "backColour": { + "items": { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "maxItems": 3, + "minItems": 3, + "type": "array" + }, + "speed": { + "type": "number" + }, + "textColour": { + "items": { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "maxItems": 3, + "minItems": 3, + "type": "array" + }, + "textString": { + "type": "string" + } + }, + "required": [ + "textString" + ], + "type": "object" + }, + "safe": false + }, + "flipH": { + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/actions/flipH", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "safe": false + }, + "flipV": { + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/actions/flipV", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "safe": false + }, + "setPixel": { + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/actions/setPixel", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "input": { + "description": "Set the pixel in the given (x,y) coordinates to a given RGB color.", + "properties": { + "b": { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "g": { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "r": { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "x": { + "maximum": 7, + "minimum": 0, + "type": "integer" + }, + "y": { + "maximum": 7, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "x", + "y", + "r", + "g", + "b" + ], + "type": "object" + }, + "safe": false + }, + "showLetter": { + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/actions/showLetter", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "input": { + "description": "The letter to show. May include text/background colours.", + "properties": { + "backColour": { + "items": { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "maxItems": 3, + "minItems": 3, + "type": "array" + }, + "letter": { + "maxLength": 1, + "type": "string" + }, + "textColour": { + "items": { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "maxItems": 3, + "minItems": 3, + "type": "array" + } + }, + "required": [ + "letter" + ], + "type": "object" + }, + "safe": false + }, + "showMessage": { + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/actions/showMessage", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "input": { + "description": "The message to show. May include the scrolling speed and text/background colours.", + "properties": { + "backColour": { + "items": { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "maxItems": 3, + "minItems": 3, + "type": "array" + }, + "scrollSpeed": { + "description": "seconds paused between letters.", + "maximum": 1, + "minimum": 0, + "type": "number", + "unit": "second" + }, + "textColour": { + "items": { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "maxItems": 3, + "minItems": 3, + "type": "array" + }, + "textString": { + "type": "string" + } + }, + "required": [ + "textString", + "scrollSpeed" + ], + "type": "object" + }, + "safe": false + } + }, + "description": "Raspberry Pi SenseHat", + "events": { + "joystickHold": { + "data": { + "enum": [ + "left", + "right", + "up", + "down", + "click" + ], + "type": "string" + }, + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/events/joystickHold", + "op": [ + "subscribeevent" + ], + "subprotocol": "longpoll" + } + ] + }, + "joystickPress": { + "data": { + "enum": [ + "left", + "right", + "up", + "down", + "click" + ], + "type": "string" + }, + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/events/joystickPress", + "op": [ + "subscribeevent" + ], + "subprotocol": "longpoll" + } + ] + }, + "joystickRelease": { + "data": { + "enum": [ + "left", + "right", + "up", + "down", + "click" + ], + "type": "string" + }, + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/events/joystickRelease", + "op": [ + "subscribeevent" + ], + "subprotocol": "longpoll" + } + ] + } + }, + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/all/properties", + "op": [ + "readallproperties", + "readmultipleproperties", + "writeallproperties", + "writemultipleproperties" + ] + } + ], + "id": "urn:dev:ops:32473-sensehat-001", + "properties": { + "acceleration": { + "description": "Get 3 Floats representing the acceleration intensity of each axis in Gs", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/acceleration", + "htv:methodName": "GET", + "op": [ + "readproperty" + ] + }, + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/acceleration/observable", + "op": [ + "observeproperty" + ], + "subprotocol": "longpoll" + } + ], + "observable": true, + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + }, + "z": { + "type": "number" + } + }, + "readOnly": true, + "type": "object", + "writeOnly": false + }, + "compass": { + "description": "Get 3 Floats representing the magnetic intensity of the axis in microteslas.", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/compass", + "htv:methodName": "GET", + "op": [ + "readproperty" + ] + }, + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/compass/observable", + "op": [ + "observeproperty" + ], + "subprotocol": "longpoll" + } + ], + "observable": true, + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + }, + "z": { + "type": "number" + } + }, + "readOnly": true, + "type": "object", + "writeOnly": false + }, + "displayRotation": { + "description": "The rotation of the display. 0 is with the HDMI port facing down.", + "enum": [ + 0, + 90, + 180, + 270 + ], + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/displayRotation", + "op": [ + "readproperty", + "writeproperty" + ] + } + ], + "observable": false, + "readOnly": false, + "type": "integer", + "writeOnly": false + }, + "eventHistory": { + "description": "An array containing the complete event history.", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/eventHistory", + "htv:methodName": "GET", + "op": [ + "readproperty" + ] + } + ], + "items": { + "type": "string" + }, + "observable": false, + "readOnly": true, + "type": "array", + "writeOnly": false + }, + "gyro": { + "description": "Get 3 Floats representing the rotational intensity of each axis in rads/second.", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/gyro", + "htv:methodName": "GET", + "op": [ + "readproperty" + ] + }, + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/gyro/observable", + "op": [ + "observeproperty" + ], + "subprotocol": "longpoll" + } + ], + "observable": true, + "properties": { + "x": { + "type": "number" + }, + "y": { + "type": "number" + }, + "z": { + "type": "number" + } + }, + "readOnly": true, + "type": "object", + "writeOnly": false + }, + "humidity": { + "description": "The percentage of relative humidity.", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/humidity", + "htv:methodName": "GET", + "op": [ + "readproperty" + ] + }, + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/humidity/observable", + "op": [ + "observeproperty" + ], + "subprotocol": "longpoll" + } + ], + "observable": true, + "readOnly": true, + "type": "number", + "writeOnly": false + }, + "lowLight": { + "description": "The LED Matrix low light mode.", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/lowLight", + "op": [ + "readproperty", + "writeproperty" + ] + } + ], + "observable": false, + "readOnly": false, + "type": "boolean", + "writeOnly": false + }, + "pixels": { + "description": "An array containing the current colours of all LEDs.", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/pixels", + "op": [ + "readproperty", + "writeproperty" + ] + } + ], + "items": { + "items": { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "maxItems": 3, + "minItems": 3, + "type": "array" + }, + "maxItems": 64, + "minItems": 64, + "observable": false, + "readOnly": false, + "type": "array", + "writeOnly": false + }, + "pressure": { + "description": "The current pressure in Millibars.", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/pressure", + "htv:methodName": "GET", + "op": [ + "readproperty" + ] + }, + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/pressure/observable", + "op": [ + "observeproperty" + ], + "subprotocol": "longpoll" + } + ], + "observable": true, + "readOnly": true, + "type": "number", + "writeOnly": false + }, + "temperature": { + "description": "The current temperature in degrees Celsius.", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/temperature", + "htv:methodName": "GET", + "op": [ + "readproperty" + ] + }, + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/SenseHat1/properties/temperature/observable", + "op": [ + "observeproperty" + ], + "subprotocol": "longpoll" + } + ], + "observable": true, + "readOnly": true, + "type": "number", + "writeOnly": false + } + }, + "security": "basic_sc", + "securityDefinitions": { + "basic_sc": { + "in": "header", + "scheme": "basic" + } + }, + "title": "SenseHat1" +} \ No newline at end of file From 5033f93481812f5dddc19cc688ee13b08ca46fcf Mon Sep 17 00:00:00 2001 From: Ege Korkan Date: Thu, 14 Nov 2024 10:58:44 +0100 Subject: [PATCH 2/4] add all TUM devices --- .../TDs/Flask-manual/ScrollPhat-TUM.td.jsonld | 358 ++++++++++++++++ .../{Uarm-TUM.td.json => Uarm-TUM.td.jsonld} | 0 .../{ur10-TUM.td.json => ur10-TUM.td.jsonld} | 0 ...d.json => Color-Lamp-onsite-TUM.td.jsonld} | 0 .../Color-Lamp-remote-TUM.td.jsonld | 382 ++++++++++++++++++ .../Philips-Hue/Dimmer-Switch-TUM.td.jsonld | 98 +++++ ...UM.td.json => ConveyorBelt1-TUM.td.jsonld} | 0 .../thingweb-nodewot/PanTilt-TUM.td.jsonld | 291 +++++++++++++ .../thingweb-nodewot/RainbowHAT-TUM.td.jsonld | 257 ++++++++++++ ...seHat1-TUM.json => SenseHat-TUM.td.jsonld} | 0 10 files changed, 1386 insertions(+) create mode 100644 events/2024.11.Munich/TDs/Flask-manual/ScrollPhat-TUM.td.jsonld rename events/2024.11.Munich/TDs/Flask-manual/{Uarm-TUM.td.json => Uarm-TUM.td.jsonld} (100%) rename events/2024.11.Munich/TDs/Flask-manual/{ur10-TUM.td.json => ur10-TUM.td.jsonld} (100%) rename events/2024.11.Munich/TDs/Philips-Hue/{Lamp-TUM.td.json => Color-Lamp-onsite-TUM.td.jsonld} (100%) create mode 100644 events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-remote-TUM.td.jsonld create mode 100644 events/2024.11.Munich/TDs/Philips-Hue/Dimmer-Switch-TUM.td.jsonld rename events/2024.11.Munich/TDs/thingweb-nodewot/{ConveyorBelt1-TUM.td.json => ConveyorBelt1-TUM.td.jsonld} (100%) create mode 100644 events/2024.11.Munich/TDs/thingweb-nodewot/PanTilt-TUM.td.jsonld create mode 100644 events/2024.11.Munich/TDs/thingweb-nodewot/RainbowHAT-TUM.td.jsonld rename events/2024.11.Munich/TDs/thingweb-nodewot/{SenseHat1-TUM.json => SenseHat-TUM.td.jsonld} (100%) diff --git a/events/2024.11.Munich/TDs/Flask-manual/ScrollPhat-TUM.td.jsonld b/events/2024.11.Munich/TDs/Flask-manual/ScrollPhat-TUM.td.jsonld new file mode 100644 index 00000000..61cade9f --- /dev/null +++ b/events/2024.11.Munich/TDs/Flask-manual/ScrollPhat-TUM.td.jsonld @@ -0,0 +1,358 @@ +{ + "@context": [ + "https://www.w3.org/2019/wot/td/v1", + { + "@language": "en" + } + ], + "actions": { + "clear": { + "description": "clears all pixels.", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/ScrollPHAT/actions/clear", + "op": "invokeaction" + } + ], + "idempotent": true, + "safe": false, + "title": "Clear the entire screen." + }, + "clearRect": { + "description": "Clear a specified rectangular area of the screen.", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/ScrollPHAT/actions/clearRect", + "op": "invokeaction" + } + ], + "idempotent": true, + "input": { + "properties": { + "height": { + "default": 7, + "description": "Height of the area. 7 by default", + "maximum": 7, + "minimum": 0, + "type": "integer" + }, + "width": { + "default": 17, + "description": "Width of the area. 17 by default", + "maximum": 17, + "minimum": 0, + "type": "integer" + }, + "x": { + "default": 0, + "description": "Offset x - distance of the area from the left of the screen. 0 by default", + "maximum": 17, + "minimum": 0, + "type": "integer" + }, + "y": { + "default": 0, + "description": "Offset y - distance of the area from the left of the screen. 0 by default", + "maximum": 7, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "x", + "y" + ], + "type": "object" + }, + "safe": false, + "title": "Clear Screen Area" + }, + "clock": { + "description": "shows current time on screen for 10 seconds", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/ScrollPHAT/actions/clock", + "op": "invokeaction" + } + ], + "title": "Show Time" + }, + "fill": { + "description": "Fill an area of the display.", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/ScrollPHAT/actions/fill", + "op": "invokeaction" + } + ], + "idempotent": true, + "input": { + "properties": { + "brightness": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "height": { + "default": 7, + "description": "Height of the area. 7 by default", + "maximum": 7, + "minimum": 0, + "type": "integer" + }, + "width": { + "default": 17, + "description": "Width of the area. 17 by default", + "maximum": 17, + "minimum": 0, + "type": "integer" + }, + "x": { + "default": 0, + "description": "Offset x - distance of the area from the left of the screen. 0 by default", + "maximum": 17, + "minimum": 0, + "type": "integer" + }, + "y": { + "default": 0, + "description": "Offset y - distance of the area from the left of the screen. 0 by default", + "maximum": 7, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "brightness" + ], + "type": "object" + }, + "safe": false, + "title": "Fill the Screen" + }, + "scroll": { + "description": "Scroll pHAT HD displays an 17x7 pixel window into the bufer, which starts at the left offset and wraps around. The x and y values are added to the internal scroll offset.", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/ScrollPHAT/actions/scroll", + "op": "invokeaction" + } + ], + "input": { + "properties": { + "x": { + "default": 1, + "description": "Amount to scroll on x-axis. (default 1)", + "type": "integer" + }, + "y": { + "default": 0, + "description": "Amount to scroll on y-axis. (default 0)", + "type": "integer" + } + }, + "type": "object" + }, + "title": "Shift Image" + }, + "sendImage": { + "description": "Takes a bmp image with size 17-7 pixels with bpp value of 8 as input, and displays it on the screen.", + "forms": [ + { + "contentType": "image/bmp", + "description": "The payload is multipart/form-data which should be indicated in curl command with '--form' flag as in: curl --location --request POST 'http://:8080/actions/sendImage' --form 'example.bmp=@'/example.bmp''. form entry name and filename should match", + "href": "https://remotelab.esi.cit.tum.de:8081/ScrollPHAT/actions/sendImage", + "op": "invokeaction" + } + ], + "idempotent": true, + "input": {}, + "safe": false, + "title": "Upload Image" + }, + "setPixel": { + "description": "Light a specific single pixel with a given brightness. x and y are 5 by default.", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/ScrollPHAT/actions/setPixel", + "op": "invokeaction" + } + ], + "idempotent": true, + "input": { + "properties": { + "brightness": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "x": { + "default": 5, + "maximum": 16, + "minimum": 0, + "type": "integer" + }, + "y": { + "default": 5, + "maximum": 6, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "brightness" + ], + "type": "object" + }, + "safe": false, + "title": "Turn on Pixel" + }, + "showPulse": { + "description": "shows a pulse graph on screen for 10 seconds", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/ScrollPHAT/actions/showPulse", + "op": "invokeaction" + } + ], + "title": "Display Pulse" + }, + "writeChar": { + "description": "Write a single char to the screen. Returns the x and y coordinates of the bottom left-most corner of the drawn character.Shows the char for 5 secs", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/ScrollPHAT/actions/writeChar", + "op": "invokeaction" + } + ], + "idempotent": true, + "input": { + "properties": { + "brightness": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "char": { + "description": "Char to display- either an integer ordinal or a single letter", + "maxLength": 1, + "minLength": 1, + "type": "string" + }, + "o_x": { + "default": 5, + "description": "Offset x - distance of the string from the left of the screen. By default its value is 5", + "maximum": 17, + "minimum": 0, + "type": "integer" + }, + "o_y": { + "default": 0, + "description": "Offset x - distance of the string from the left of the screen. By default its value is 0", + "maximum": 7, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "char", + "brightness" + ], + "type": "object" + }, + "safe": false, + "title": "Display Character" + }, + "writeString": { + "description": "Write a string to the screen. Calls draw_char for each character.", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/ScrollPHAT/actions/writeString", + "op": "invokeaction" + } + ], + "idempotent": true, + "input": { + "properties": { + "brightness": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "string": { + "description": "The string to display.", + "maxLength": 50, + "type": "string" + }, + "time": { + "default": 5, + "description": "duration the string keep scrolling, it is 5 seconds by default. Adjust the duration according to the lenght of your string.", + "maximum": 30, + "minimum": 3, + "type": "integer" + }, + "x": { + "description": "Offset x - distance of the string from the left of the screen", + "maximum": 17, + "minimum": 0, + "type": "integer" + }, + "y": { + "description": "Offset x - distance of the string from the left of the screen", + "maximum": 7, + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "string", + "x", + "y", + "brightness" + ], + "type": "object" + }, + "safe": false, + "title": "Display String" + } + }, + "description": "A scroll-phat-hd that can be remotely controlled.", + "id": "de:tum:ei:esi:phat", + "properties": { + "displaySize": { + "description": "Get the size/shape of the display. Returns a tuple containing the width and height of the display", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/ScrollPHAT/properties/displaySize", + "op": [ + "readproperty" + ] + } + ], + "items": { + "type": "integer" + }, + "readOnly": true, + "title": "The Display Size", + "type": "array" + } + }, + "security": "basic_sc", + "securityDefinitions": { + "basic_sc": { + "in": "header", + "scheme": "basic" + } + }, + "title": "ScrollPhat HD" +} \ No newline at end of file diff --git a/events/2024.11.Munich/TDs/Flask-manual/Uarm-TUM.td.json b/events/2024.11.Munich/TDs/Flask-manual/Uarm-TUM.td.jsonld similarity index 100% rename from events/2024.11.Munich/TDs/Flask-manual/Uarm-TUM.td.json rename to events/2024.11.Munich/TDs/Flask-manual/Uarm-TUM.td.jsonld diff --git a/events/2024.11.Munich/TDs/Flask-manual/ur10-TUM.td.json b/events/2024.11.Munich/TDs/Flask-manual/ur10-TUM.td.jsonld similarity index 100% rename from events/2024.11.Munich/TDs/Flask-manual/ur10-TUM.td.json rename to events/2024.11.Munich/TDs/Flask-manual/ur10-TUM.td.jsonld diff --git a/events/2024.11.Munich/TDs/Philips-Hue/Lamp-TUM.td.json b/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-onsite-TUM.td.jsonld similarity index 100% rename from events/2024.11.Munich/TDs/Philips-Hue/Lamp-TUM.td.json rename to events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-onsite-TUM.td.jsonld diff --git a/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-remote-TUM.td.jsonld b/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-remote-TUM.td.jsonld new file mode 100644 index 00000000..3d1125e1 --- /dev/null +++ b/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-remote-TUM.td.jsonld @@ -0,0 +1,382 @@ +{ + "title": "Hue Color Lamp 1", + "id": "urn:dev:ops:32473-HueLight-1", + "description": "This is a Philips Hue Color Light Bulb that can be controlled remotely. This is on the left of the desk 1", + "@context": [ + "https://www.w3.org/2019/wot/td/v1", + { + "@language": "en" + } + ], + "securityDefinitions": { + "basic_sc": { + "scheme": "basic", + "in": "header" + } + }, + "security": [ + "basic_sc" + ], + "base": "https://remotelab.esi.cit.tum.de:8081/LabLocal/api/17AvYQeLM2T8Z3r0e3BiEvb9Qdwt36yU2BudTxrn/lights/1/", + "properties": { + "lightInformation": { + "title": "State and Attributes Of Light", + "description": "Gets the attributes and state of a given light. There are more attributes that are not listed here and are not of importance.", + "type": "object", + "properties": { + "state": { + "title": "Light State", + "description": "Details the state of the light, see the state table below for more details.", + "readOnly": true, + "type": "object", + "properties": { + "on": { + "description": "On/Off state of the light. On=true, Off=false", + "type": "boolean" + }, + "alert": { + "description": "The alert effect, which is a temporary change to the bulb’s state.'l' of lselect stands for loop.", + "type": "string", + "enum": [ + "none", + "select", + "lselect" + ] + }, + "hue": { + "description": "The hue value to set light to.The hue value is a wrapping value between 0 and 65535. Both 0 and 65535 are red, 25500 is green and 46920 is blue.", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "bri": { + "description": "brightness level", + "type": "integer", + "minimum": 0, + "maximum": 254 + }, + "sat": { + "description": "Saturation of the light. 254 is the most saturated (colored) and 0 is the least saturated (white).", + "type": "integer", + "minimum": 0, + "maximum": 254 + }, + "xy": { + "type": "array", + "description": "The x and y coordinates of a color in CIE color space.The first entry is the x coordinate and the second entry is the y coordinate. Both x and y must be between 0 and 1. If the specified coordinates are not in the CIE color space, the closest color to the coordinates will be chosen.", + "items": { + "type": "number", + "minimum": -1, + "maximum": 1 + }, + "maxItems": 2, + "minItems": 2 + }, + "ct": { + "description": "The Mired color temperature of the light. 2012 connected lights are capable of 153 (6500K) to 500 (2000K).", + "type": "integer", + "minimum": 153, + "maximum": 500 + }, + "effect": { + "description": "The dynamic effect of the light. Currently “none” and “colorloop” are supported. Other values will generate an error of type 7.Setting the effect to colorloop will cycle through all hues using the current brightness and saturation settings.", + "type": "string", + "enum": [ + "none", + "colorloop" + ] + }, + "colormode": { + "type": "string", + "enum": [ + "xy", + "ct" + ] + }, + "reachable": { + "description": "Indicates if a light can be reached by the bridge", + "type": "boolean" + } + } + }, + "type": { + "description": "A fixed name describing the type of light", + "type": "string" + }, + "name": { + "description": "A unique, editable name given to the light", + "type": "string" + }, + "modelid": { + "description": "The hardware model of the light.", + "type": "string" + }, + "swversion": { + "description": "An identifier for the software version running on the light", + "type": "string" + } + }, + "forms": [ + { + "href": "", + "htv:methodName": "GET", + "contentType": "application/json", + "op": "readproperty" + } + ] + } + }, + "actions": { + "setState": { + "title": "Set State", + "description": "Allows the user to turn the light on and off, modify the hue and effects", + "input": { + "type": "object", + "properties": { + "on": { + "description": "On/Off state of the light. On=true, Off=false", + "type": "boolean" + }, + "bri": { + "description": "Brightness level. Values higher than 254 are taken as 254", + "type": "integer", + "minimum": 0, + "maximum": 254 + }, + "alert": { + "description": "The alert effect, which is a temporary change to the bulb’s state.'l' of lselect stands for loop. Presence of lselect ignores transitiontime", + "type": "string", + "enum": [ + "lselect", + "none", + "select" + ] + }, + "transisiontime": { + "description": "The duration of the transition from the light’s current state to the new state.", + "type": "integer", + "unit": "100ms", + "minimum": 0, + "maximum": 65535 + }, + "bri_inc": { + "description": "Increments or decrements the value of the brightness. bri_inc is ignored if the bri attribute is provided.", + "type": "integer", + "minimum": -254, + "maximum": 254 + }, + "hue": { + "description": "The hue value to set light to.The hue value is a wrapping value between 0 and 65535. Both 0 and 65535 are red, 25500 is green and 46920 is blue.", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "sat": { + "description": "Saturation of the light. 254 is the most saturated (colored) and 0 is the least saturated (white).", + "type": "integer", + "minimum": 0, + "maximum": 254 + }, + "xy": { + "type": "array", + "description": "The x and y coordinates of a color in CIE color space.The first entry is the x coordinate and the second entry is the y coordinate. Both x and y must be between 0 and 1. If the specified coordinates are not in the CIE color space, the closest color to the coordinates will be chosen.", + "items": { + "type": "number", + "minimum": -1, + "maximum": 1 + }, + "maxItems": 2, + "minItems": 2 + }, + "ct": { + "description": "The Mired color temperature of the light. 2012 connected lights are capable of 153 (6500K) to 500 (2000K).", + "type": "integer", + "minimum": 153, + "maximum": 500 + }, + "effect": { + "description": "The dynamic effect of the light. Currently “none” and “colorloop” are supported. Other values will generate an error of type 7.Setting the effect to colorloop will cycle through all hues using the current brightness and saturation settings.", + "type": "string", + "enum": [ + "none", + "colorloop" + ] + }, + "sat_inc": { + "description": "Increments or decrements the value of the sat. sat_inc is ignored if the sat attribute is provided. Any ongoing sat transition is stopped. Setting a value of 0 also stops any ongoing transition. The bridge will return the sat value after the increment is performed.", + "type": "integer", + "minimum": -254, + "maximum": 254 + }, + "hue_inc": { + "description": "Increments or decrements the value of the hue. hue_inc is ignored if the hue attribute is provided. Any ongoing color transition is stopped. Setting a value of 0 also stops any ongoing transition. The bridge will return the hue value after the increment is performed.Note if the resulting values are < 0 or > 65535 the result is wrapped. ", + "type": "integer", + "minimum": -65534, + "maximum": 65534 + }, + "ct_inc": { + "description": "Increments or decrements the value of the ct. ct_inc is ignored if the ct attribute is provided. Any ongoing color transition is stopped. Setting a value of 0 also stops any ongoing transition. The bridge will return the ct value after the increment is performed.", + "type": "integer", + "minimum": -65534, + "maximum": 65534 + }, + "xy_inc": { + "type": "array", + "description": "TIncrements or decrements the value of the xy. xy_inc is ignored if the xy attribute is provided. Any ongoing color transition is stopped. Setting a value of 0 also stops any ongoing transition. Will stop at it’s gamut boundaries. The bridge will return the xy value after the increment is performed. Max value [0.5, 0.5].", + "items": { + "type": "number", + "minimum": -0.5, + "maximum": 0.5 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + "output": { + "type": "array", + "items": { + "type": "object", + "properties": { + "success": { + "oneOf": [ + { + "type": "object", + "properties": { + "/lights/1/state/on": { + "description": "Current state of the light after operation", + "type": "boolean" + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/bri": { + "description": "Current brightness level", + "type": "integer", + "minimum": 0, + "maximum": 254 + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/alert": { + "description": "Already provided alert value", + "type": "string", + "enum": [ + "lselect", + "none", + "select" + ] + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/transisiontime": { + "description": "Already provided transitiontime", + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/hue": { + "description": "Current hue of the light after the operation", + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/sat": { + "description": "Current saturation of the light after the operation", + "type": "integer", + "minimum": 0, + "maximum": 254 + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/xy": { + "description": "Current xy color of the light after the operation", + "type": "array", + "items": { + "type": "number", + "minimum": -1, + "maximum": 1 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/ct": { + "description": "Current ct color of the light after the operation", + "type": "integer", + "minimum": 153, + "maximum": 500 + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/effect": { + "description": "Current running effect on the light after the operation", + "type": "string", + "enum": [ + "none", + "colorloop" + ] + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/ct": { + "description": "Current running effect on the light after the operation", + "type": "string", + "enum": [ + "none", + "colorloop" + ] + } + } + } + ] + } + } + } + }, + "forms": [ + { + "href": "state", + "contentType": "application/json", + "htv:methodName": "PUT", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "safe": false + } + } +} \ No newline at end of file diff --git a/events/2024.11.Munich/TDs/Philips-Hue/Dimmer-Switch-TUM.td.jsonld b/events/2024.11.Munich/TDs/Philips-Hue/Dimmer-Switch-TUM.td.jsonld new file mode 100644 index 00000000..1988f59e --- /dev/null +++ b/events/2024.11.Munich/TDs/Philips-Hue/Dimmer-Switch-TUM.td.jsonld @@ -0,0 +1,98 @@ +{ + "title": "Hue Dimmer Switch", + "description": "A controller to switch off and on the lights or to dim them", + "id": "urn:dev:ops:32473-HueSwitch-1234", + "@context": [ + "https://www.w3.org/2019/wot/td/v1", + { + "@language": "en" + } + ], + "security": [ + "basic_sc" + ], + "securityDefinitions": { + "basic_sc": { + "scheme": "basic", + "in": "header" + } + }, + "base": "https://remotelab.esi.cit.tum.de:8081/LabLocal/api/17AvYQeLM2T8Z3r0e3BiEvb9Qdwt36yU2BudTxrn/", + "properties": { + "switchInformation": { + "description": "Switch information", + "type": "object", + "properties": { + "state": { + "type": "object", + "description": "When the switch last pressed and what button was pressed and how it was pressed", + "properties": { + "buttonevent": { + "description": "*2 means short release, *3 means long release. 1* is the turn on button, 2* is the brighten button, 3* is the dim button, 4* is the turn off button", + "type": "integer", + "enum": [ + 1002, + 1003, + 2002, + 2003, + 3002, + 3003, + 4002, + 4003 + ] + }, + "lastupdated": { + "type": "string", + "format": "date-time" + } + } + }, + "config": { + "type": "object", + "properties": { + "on": { + "type": "boolean" + }, + "battery": { + "type": "integer", + "maximum": 100 + }, + "reachable": { + "type": "boolean" + } + } + }, + "name": { + "type": "string" + }, + "type": { + "type": "string", + "const": "ZLLSwitch" + }, + "modelid": { + "type": "string", + "const": "RWL021" + }, + "manufacturername": { + "type": "string" + }, + "swversion": { + "type": "string" + }, + "uniqueid": { + "type": "string" + } + }, + "forms": [ + { + "href": "sensors/7", + "contentType": "application/json", + "htv:methodName": "GET", + "op": [ + "readproperty" + ] + } + ] + } + } +} \ No newline at end of file diff --git a/events/2024.11.Munich/TDs/thingweb-nodewot/ConveyorBelt1-TUM.td.json b/events/2024.11.Munich/TDs/thingweb-nodewot/ConveyorBelt1-TUM.td.jsonld similarity index 100% rename from events/2024.11.Munich/TDs/thingweb-nodewot/ConveyorBelt1-TUM.td.json rename to events/2024.11.Munich/TDs/thingweb-nodewot/ConveyorBelt1-TUM.td.jsonld diff --git a/events/2024.11.Munich/TDs/thingweb-nodewot/PanTilt-TUM.td.jsonld b/events/2024.11.Munich/TDs/thingweb-nodewot/PanTilt-TUM.td.jsonld new file mode 100644 index 00000000..8e69b69e --- /dev/null +++ b/events/2024.11.Munich/TDs/thingweb-nodewot/PanTilt-TUM.td.jsonld @@ -0,0 +1,291 @@ +{ + "@context": [ + "https://www.w3.org/2019/wot/td/v1", + { + "@language": "en" + } + ], + "@type": "Thing", + "actions": { + "goHome": { + "description": "Returns the pan and tilt to their home position which is at 0 and 0 degrees", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/PanTilt1/actions/goHome", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "safe": false, + "title": "Go Home" + }, + "moveContinuously": { + "description": "Moves the tilt and pan platform with the speeds given in input until a stop action is invoked or limits are reached", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/PanTilt1/actions/moveContinuously", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "input": { + "properties": { + "panSpeed": { + "description": "The speed at which the platform moves. Negative values for right and positive values for left", + "maximum": 15, + "minimum": -15, + "type": "number", + "unit": "angle per sec" + }, + "tiltSpeed": { + "description": "The speed at which the tilt platform moves. Negative values for moving up and positive values for moving down", + "maximum": 15, + "minimum": -15, + "type": "number", + "unit": "angle per sec" + } + }, + "required": [ + "panSpeed", + "tiltSpeed" + ], + "type": "object" + }, + "safe": false, + "title": "Move Continuously" + }, + "moveTo": { + "description": "Moves the tilt and pan platform to the angles given in input", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/PanTilt1/actions/moveTo", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "input": { + "properties": { + "panAngle": { + "maximum": 90, + "minimum": -90, + "title": "Pan To", + "type": "number", + "unit": "degrees" + }, + "tiltAngle": { + "maximum": 80, + "minimum": -80, + "title": "Tilt To", + "type": "number", + "unit": "degrees" + } + }, + "required": [ + "panAngle", + "tiltAngle" + ], + "type": "object" + }, + "safe": false, + "title": "Move To" + }, + "panContinuously": { + "description": "Moves the pan platform with speed given in input until a stop action is invoked or limits are reached", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/PanTilt1/actions/panContinuously", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "input": { + "description": "The speed at which the platform moves. Negative values for right and positive values for left", + "maximum": 15, + "minimum": -15, + "type": "number", + "unit": "angle per sec" + }, + "safe": false, + "title": "Pan Continuously" + }, + "panTo": { + "description": "Moves the pan platform to the angle specific in the input", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/PanTilt1/actions/panTo", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "input": { + "maximum": 90, + "minimum": -90, + "type": "number", + "unit": "degrees" + }, + "safe": false, + "title": "Pan To" + }, + "scan": { + "description": "Scans left and right once, starting from the leftmost point. Tilt stays the same", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/PanTilt1/actions/scan", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "safe": false, + "title": "Scan" + }, + "stopMovement": { + "description": "Stops any movement that was created with continuous movement calls", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/PanTilt1/actions/stopMovement", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "safe": false, + "title": "Stop Movement" + }, + "tiltContinuously": { + "description": "Moves the tilt platform with speed given in input until a stop action is invoked or limits are reached", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/PanTilt1/actions/tiltContinuously", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "input": { + "description": "The speed at which the platform moves. Negative values for moving up and positive values for moving down", + "maximum": 15, + "minimum": -15, + "type": "number", + "unit": "angle per sec" + }, + "safe": false, + "title": "Tilt Continuously" + }, + "tiltTo": { + "description": "Moves the tilt platform to the angle specific in the input", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/PanTilt1/actions/tiltTo", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "input": { + "maximum": 80, + "minimum": -80, + "type": "number", + "unit": "degrees" + }, + "safe": false, + "title": "Tilt To" + } + }, + "description": "A Pan and Tilt platform on top of a Raspberry", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/PanTilt1/all/properties", + "op": [ + "readallproperties", + "readmultipleproperties" + ] + } + ], + "id": "esi:pantilt:1", + "properties": { + "panPosition": { + "description": "The current position of the pan platform in degrees", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/PanTilt1/properties/panPosition", + "htv:methodName": "GET", + "op": [ + "readproperty" + ] + } + ], + "maximum": 90, + "minimum": -90, + "observable": false, + "readOnly": true, + "title": "Pan Position", + "type": "number", + "unit": "degrees", + "writeOnly": false + }, + "tiltPosition": { + "description": "The current position of the tilt platform in degrees", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/PanTilt1/properties/tiltPosition", + "htv:methodName": "GET", + "op": [ + "readproperty" + ] + } + ], + "maximum": 80, + "minimum": -80, + "observable": false, + "readOnly": true, + "title": "Tilt Position", + "type": "number", + "unit": "degrees", + "writeOnly": false + } + }, + "security": "basic_sc", + "securityDefinitions": { + "basic_sc": { + "in": "header", + "scheme": "basic" + } + }, + "title": "PanTilt1" +} \ No newline at end of file diff --git a/events/2024.11.Munich/TDs/thingweb-nodewot/RainbowHAT-TUM.td.jsonld b/events/2024.11.Munich/TDs/thingweb-nodewot/RainbowHAT-TUM.td.jsonld new file mode 100644 index 00000000..1462e92f --- /dev/null +++ b/events/2024.11.Munich/TDs/thingweb-nodewot/RainbowHAT-TUM.td.jsonld @@ -0,0 +1,257 @@ +{ + "@context": [ + "https://www.w3.org/2019/wot/td/v1", + { + "@language": "en" + } + ], + "@type": "", + "actions": { + "clearDisplay": { + "description": "Clears the seven segment displays", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/RainbowHAT1/actions/clearDisplay", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "safe": false + }, + "clearLEDs": { + "description": "Turns off the 7 LEDs", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/RainbowHAT1/actions/clearLEDs", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "safe": false + }, + "makeRainbow": { + "description": "Changes the colors of the LEDs to the official Rainbow colors!", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/RainbowHAT1/actions/makeRainbow", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "safe": false + }, + "writeDisplay": { + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/RainbowHAT1/actions/writeDisplay", + "htv:methodName": "POST", + "op": [ + "invokeaction" + ] + } + ], + "idempotent": false, + "input": { + "description": "A string from left to right on the seven segment display. Capitals look better", + "maxLength": 4, + "type": "string" + }, + "safe": false + } + }, + "description": "HAT with seven segment displays, temperature and pressure sensors, touch buttons and LEDs", + "events": { + "buttonA": { + "data": { + "type": "boolean" + }, + "description": "Press (true) or release(false) of a button. An LED also lights up on the HAT", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/RainbowHAT1/events/buttonA", + "op": [ + "subscribeevent" + ], + "subprotocol": "longpoll" + } + ] + }, + "buttonB": { + "data": { + "type": "boolean" + }, + "description": "Press (true) or release(false) of a button. An LED also lights up on the HAT", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/RainbowHAT1/events/buttonB", + "op": [ + "subscribeevent" + ], + "subprotocol": "longpoll" + } + ] + }, + "buttonC": { + "data": { + "type": "boolean" + }, + "description": "Press (true) or release(false) of a button. An LED also lights up on the HAT", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/RainbowHAT1/events/buttonC", + "op": [ + "subscribeevent" + ], + "subprotocol": "longpoll" + } + ] + } + }, + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/RainbowHAT1/all/properties", + "op": [ + "readallproperties", + "readmultipleproperties", + "writeallproperties", + "writemultipleproperties" + ] + } + ], + "id": "urn:dev:ops:32473-rainbowhat-001", + "properties": { + "leds": { + "additionalProperties": { + "properties": { + "brightness": { + "maximum": 15, + "minimum": 0, + "type": "integer" + }, + "colour": { + "items": { + "maximum": 255, + "minimum": 0, + "type": "integer" + }, + "maxItems": 3, + "minItems": 3, + "type": "array" + } + }, + "required": [ + "brightness", + "colour" + ], + "type": "object" + }, + "description": "7 LEDs with their RGB colors. 0 corresponds to the rightmost LED. They can be individually set", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/RainbowHAT1/properties/leds", + "op": [ + "readproperty", + "writeproperty" + ] + } + ], + "observable": false, + "propertyNames": { + "enum": [ + "0", + "1", + "2", + "3", + "4", + "5", + "6" + ], + "type": "string" + }, + "readOnly": false, + "title": "LEDs", + "type": "object", + "writeOnly": false + }, + "pressure": { + "description": "Pressure in hPa", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/RainbowHAT1/properties/pressure", + "htv:methodName": "GET", + "op": [ + "readproperty" + ] + }, + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/RainbowHAT1/properties/pressure/observable", + "op": [ + "observeproperty" + ], + "subprotocol": "longpoll" + } + ], + "observable": true, + "readOnly": true, + "title": "pressure", + "type": "number", + "unit": "hPa", + "writeOnly": false + }, + "temperature": { + "description": "Temperature in Celcius", + "forms": [ + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/RainbowHAT1/properties/temperature", + "htv:methodName": "GET", + "op": [ + "readproperty" + ] + }, + { + "contentType": "application/json", + "href": "https://remotelab.esi.cit.tum.de:8081/RainbowHAT1/properties/temperature/observable", + "op": [ + "observeproperty" + ], + "subprotocol": "longpoll" + } + ], + "observable": true, + "readOnly": true, + "title": "temperature", + "type": "number", + "unit": "C", + "writeOnly": false + } + }, + "security": "basic_sc", + "securityDefinitions": { + "basic_sc": { + "in": "header", + "scheme": "basic" + } + }, + "title": "RainbowHAT1" +} \ No newline at end of file diff --git a/events/2024.11.Munich/TDs/thingweb-nodewot/SenseHat1-TUM.json b/events/2024.11.Munich/TDs/thingweb-nodewot/SenseHat-TUM.td.jsonld similarity index 100% rename from events/2024.11.Munich/TDs/thingweb-nodewot/SenseHat1-TUM.json rename to events/2024.11.Munich/TDs/thingweb-nodewot/SenseHat-TUM.td.jsonld From d33574ed69ec9885de9d9f747063c0c0a38eebec Mon Sep 17 00:00:00 2001 From: Ege Korkan Date: Thu, 14 Nov 2024 11:10:07 +0100 Subject: [PATCH 3/4] fix validation error --- .../Color-Lamp-remote-TUM.td.jsonld | 542 +++++++----------- 1 file changed, 211 insertions(+), 331 deletions(-) diff --git a/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-remote-TUM.td.jsonld b/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-remote-TUM.td.jsonld index 3d1125e1..e9ce8873 100644 --- a/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-remote-TUM.td.jsonld +++ b/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-remote-TUM.td.jsonld @@ -1,382 +1,262 @@ { - "title": "Hue Color Lamp 1", - "id": "urn:dev:ops:32473-HueLight-1", - "description": "This is a Philips Hue Color Light Bulb that can be controlled remotely. This is on the left of the desk 1", - "@context": [ - "https://www.w3.org/2019/wot/td/v1", - { - "@language": "en" - } - ], + "@context": "https://www.w3.org/2022/wot/td/v1.1", + "id": "urn:dev:ops:32473-HueLight-2", + "@type": "Thing", + "title": "Philips Hue Lamp", + "description": "A Philips Hue lamp that can be controlled via the Hue Bridge", "securityDefinitions": { "basic_sc": { - "scheme": "basic", - "in": "header" + "scheme": "apikey", + "in": "header", + "name": "hue-application-key" } }, - "security": [ - "basic_sc" - ], - "base": "https://remotelab.esi.cit.tum.de:8081/LabLocal/api/17AvYQeLM2T8Z3r0e3BiEvb9Qdwt36yU2BudTxrn/lights/1/", + "security": "basic_sc", + "base": "https://192.168.1.101/clip/v2/resource/light/5dc4b482-e6e4-4f0b-9783-f85a1432c845", "properties": { "lightInformation": { - "title": "State and Attributes Of Light", - "description": "Gets the attributes and state of a given light. There are more attributes that are not listed here and are not of importance.", + "title": "State and Attributes of the Light", + "description": "The current state and attributes of the light. There are more attributes that are not listed here and are not of importance.", "type": "object", "properties": { - "state": { - "title": "Light State", - "description": "Details the state of the light, see the state table below for more details.", - "readOnly": true, - "type": "object", - "properties": { - "on": { - "description": "On/Off state of the light. On=true, Off=false", - "type": "boolean" - }, - "alert": { - "description": "The alert effect, which is a temporary change to the bulb’s state.'l' of lselect stands for loop.", - "type": "string", - "enum": [ - "none", - "select", - "lselect" - ] - }, - "hue": { - "description": "The hue value to set light to.The hue value is a wrapping value between 0 and 65535. Both 0 and 65535 are red, 25500 is green and 46920 is blue.", - "type": "integer", - "minimum": 0, - "maximum": 65535 - }, - "bri": { - "description": "brightness level", - "type": "integer", - "minimum": 0, - "maximum": 254 - }, - "sat": { - "description": "Saturation of the light. 254 is the most saturated (colored) and 0 is the least saturated (white).", - "type": "integer", - "minimum": 0, - "maximum": 254 - }, - "xy": { - "type": "array", - "description": "The x and y coordinates of a color in CIE color space.The first entry is the x coordinate and the second entry is the y coordinate. Both x and y must be between 0 and 1. If the specified coordinates are not in the CIE color space, the closest color to the coordinates will be chosen.", - "items": { - "type": "number", - "minimum": -1, - "maximum": 1 + "data": { + "title": "An Array that holds the object of the information", + "type": "array", + "items": { + "type": "object", + "properties": { + "id": { + "description": "The ID of the light", + "type": "string" + }, + "id_v1": { + "description": "The ID of the light in version 1", + "type": "string" + }, + "on": { + "description": "On/Off state of the light. On=true, Off=false", + "type": "boolean" + }, + "dimming": { + "description": "The brightness of the light", + "type": "object", + "properties": { + "brightness": { + "description": "The brightness of the light. 0 is the minimum brightness and 100 is the maximum brightness", + "type": "number", + "minimum": 0, + "maximum": 100 + }, + "min_dim_level": { + "description": "The unit of the brightness", + "type": "number" + } + } + }, + "color": { + "description": "The color of the light", + "type": "object", + "properties": { + "xy": { + "description": "The x and y coordinates of the color in the CIE color space", + "type": "object", + "properties": { + "x": { + "description": "The x coordinate of the color in the CIE color space", + "type": "number" + }, + "y": { + "description": "The y coordinate of the color in the CIE color space", + "type": "number" + } + } + }, + "gamut": { + "description": "The color gamut of the light", + "type": "object", + "properties": { + "red": { + "description": "The red color gamut of the light", + "type": "object", + "properties": { + "x": { + "description": "The x coordinate of the red color gamut in the CIE color space", + "type": "number" + }, + "y": { + "description": "The y coordinate of the red color gamut in the CIE color space", + "type": "number" + } + } + }, + "green": { + "description": "The green color gamut of the light", + "type": "object", + "properties": { + "x": { + "description": "The x coordinate of the green color gamut in the CIE color space", + "type": "number" + }, + "y": { + "description": "The y coordinate of the green color gamut in the CIE color space", + "type": "number" + } + } + }, + "blue": { + "description": "The blue color gamut of the light", + "type": "object", + "properties": { + "x": { + "description": "The x coordinate of the blue color gamut in the CIE color space", + "type": "number" + }, + "y": { + "description": "The y coordinate of the blue color gamut in the CIE color space", + "type": "number" + } + } + } + } + }, + "gamut_type": { + "description": "The type of the color gamut", + "type": "string" + } + } }, - "maxItems": 2, - "minItems": 2 - }, - "ct": { - "description": "The Mired color temperature of the light. 2012 connected lights are capable of 153 (6500K) to 500 (2000K).", - "type": "integer", - "minimum": 153, - "maximum": 500 - }, - "effect": { - "description": "The dynamic effect of the light. Currently “none” and “colorloop” are supported. Other values will generate an error of type 7.Setting the effect to colorloop will cycle through all hues using the current brightness and saturation settings.", - "type": "string", - "enum": [ - "none", - "colorloop" - ] - }, - "colormode": { - "type": "string", - "enum": [ - "xy", - "ct" - ] - }, - "reachable": { - "description": "Indicates if a light can be reached by the bridge", - "type": "boolean" + "dynamics": { + "description": "The dynamics of the light", + "type": "object", + "properties": { + "status": { + "description": "The status of the dynamics", + "type": "string", + "enum": [ + "none", + "dynamic_palette" + ] + }, + "speed": { + "description": "The speed of the dynamics", + "type": "number" + }, + "speed_valid": { + "description": "The validity of the speed", + "type": "boolean" + } + } + }, + "type": { + "description": "The type of the device", + "type": "string" + } } } - }, - "type": { - "description": "A fixed name describing the type of light", - "type": "string" - }, - "name": { - "description": "A unique, editable name given to the light", - "type": "string" - }, - "modelid": { - "description": "The hardware model of the light.", - "type": "string" - }, - "swversion": { - "description": "An identifier for the software version running on the light", - "type": "string" } }, "forms": [ { "href": "", - "htv:methodName": "GET", "contentType": "application/json", - "op": "readproperty" + "htv:methodName": "GET", + "op": [ + "readproperty" + ] } ] } }, "actions": { "setState": { - "title": "Set State", - "description": "Allows the user to turn the light on and off, modify the hue and effects", + "title": "Set the state of the light", + "description": "Set the state of the light. The state can be On/Off, brightness, color, and dynamics.", "input": { "type": "object", "properties": { "on": { "description": "On/Off state of the light. On=true, Off=false", - "type": "boolean" - }, - "bri": { - "description": "Brightness level. Values higher than 254 are taken as 254", - "type": "integer", - "minimum": 0, - "maximum": 254 - }, - "alert": { - "description": "The alert effect, which is a temporary change to the bulb’s state.'l' of lselect stands for loop. Presence of lselect ignores transitiontime", - "type": "string", - "enum": [ - "lselect", - "none", - "select" - ] - }, - "transisiontime": { - "description": "The duration of the transition from the light’s current state to the new state.", - "type": "integer", - "unit": "100ms", - "minimum": 0, - "maximum": 65535 - }, - "bri_inc": { - "description": "Increments or decrements the value of the brightness. bri_inc is ignored if the bri attribute is provided.", - "type": "integer", - "minimum": -254, - "maximum": 254 - }, - "hue": { - "description": "The hue value to set light to.The hue value is a wrapping value between 0 and 65535. Both 0 and 65535 are red, 25500 is green and 46920 is blue.", - "type": "integer", - "minimum": 0, - "maximum": 65535 - }, - "sat": { - "description": "Saturation of the light. 254 is the most saturated (colored) and 0 is the least saturated (white).", - "type": "integer", - "minimum": 0, - "maximum": 254 - }, - "xy": { - "type": "array", - "description": "The x and y coordinates of a color in CIE color space.The first entry is the x coordinate and the second entry is the y coordinate. Both x and y must be between 0 and 1. If the specified coordinates are not in the CIE color space, the closest color to the coordinates will be chosen.", - "items": { - "type": "number", - "minimum": -1, - "maximum": 1 - }, - "maxItems": 2, - "minItems": 2 - }, - "ct": { - "description": "The Mired color temperature of the light. 2012 connected lights are capable of 153 (6500K) to 500 (2000K).", - "type": "integer", - "minimum": 153, - "maximum": 500 - }, - "effect": { - "description": "The dynamic effect of the light. Currently “none” and “colorloop” are supported. Other values will generate an error of type 7.Setting the effect to colorloop will cycle through all hues using the current brightness and saturation settings.", - "type": "string", - "enum": [ - "none", - "colorloop" - ] - }, - "sat_inc": { - "description": "Increments or decrements the value of the sat. sat_inc is ignored if the sat attribute is provided. Any ongoing sat transition is stopped. Setting a value of 0 also stops any ongoing transition. The bridge will return the sat value after the increment is performed.", - "type": "integer", - "minimum": -254, - "maximum": 254 - }, - "hue_inc": { - "description": "Increments or decrements the value of the hue. hue_inc is ignored if the hue attribute is provided. Any ongoing color transition is stopped. Setting a value of 0 also stops any ongoing transition. The bridge will return the hue value after the increment is performed.Note if the resulting values are < 0 or > 65535 the result is wrapped. ", - "type": "integer", - "minimum": -65534, - "maximum": 65534 + "type": "object", + "properties": { + "on": { + "description": "On/Off state of the light. On=true, Off=false", + "type": "boolean" + } + } }, - "ct_inc": { - "description": "Increments or decrements the value of the ct. ct_inc is ignored if the ct attribute is provided. Any ongoing color transition is stopped. Setting a value of 0 also stops any ongoing transition. The bridge will return the ct value after the increment is performed.", - "type": "integer", - "minimum": -65534, - "maximum": 65534 + "dimming": { + "description": "The brightness of the light", + "type": "object", + "properties": { + "brightness": { + "description": "The brightness of the light. 0 is the minimum brightness and 100 is the maximum brightness", + "type": "number", + "minimum": 0, + "maximum": 100 + } + } }, - "xy_inc": { - "type": "array", - "description": "TIncrements or decrements the value of the xy. xy_inc is ignored if the xy attribute is provided. Any ongoing color transition is stopped. Setting a value of 0 also stops any ongoing transition. Will stop at it’s gamut boundaries. The bridge will return the xy value after the increment is performed. Max value [0.5, 0.5].", - "items": { - "type": "number", - "minimum": -0.5, - "maximum": 0.5 - }, - "maxItems": 2, - "minItems": 2 + "color": { + "description": "The color of the light", + "type": "object", + "properties": { + "xy": { + "description": "The x and y coordinates of the color in the CIE color space", + "type": "object", + "properties": { + "x": { + "description": "The x coordinate of the color in the CIE color space", + "type": "number", + "minimum": 0, + "maximum": 1 + }, + "y": { + "description": "The y coordinate of the color in the CIE color space", + "type": "number", + "minimum": 0, + "maximum": 1 + } + } + } + } } } }, "output": { - "type": "array", - "items": { - "type": "object", - "properties": { - "success": { - "oneOf": [ - { - "type": "object", - "properties": { - "/lights/1/state/on": { - "description": "Current state of the light after operation", - "type": "boolean" - } - } - }, - { - "type": "object", - "properties": { - "/lights/1/state/bri": { - "description": "Current brightness level", - "type": "integer", - "minimum": 0, - "maximum": 254 - } - } - }, - { - "type": "object", - "properties": { - "/lights/1/state/alert": { - "description": "Already provided alert value", - "type": "string", - "enum": [ - "lselect", - "none", - "select" - ] - } - } - }, - { - "type": "object", - "properties": { - "/lights/1/state/transisiontime": { - "description": "Already provided transitiontime", - "type": "integer", - "minimum": 0, - "maximum": 65535 - } - } - }, - { - "type": "object", - "properties": { - "/lights/1/state/hue": { - "description": "Current hue of the light after the operation", - "type": "integer", - "minimum": 0, - "maximum": 65535 - } - } - }, - { - "type": "object", - "properties": { - "/lights/1/state/sat": { - "description": "Current saturation of the light after the operation", - "type": "integer", - "minimum": 0, - "maximum": 254 - } - } - }, - { - "type": "object", - "properties": { - "/lights/1/state/xy": { - "description": "Current xy color of the light after the operation", - "type": "array", - "items": { - "type": "number", - "minimum": -1, - "maximum": 1 - }, - "maxItems": 2, - "minItems": 2 - } - } - }, - { - "type": "object", - "properties": { - "/lights/1/state/ct": { - "description": "Current ct color of the light after the operation", - "type": "integer", - "minimum": 153, - "maximum": 500 - } - } - }, - { - "type": "object", - "properties": { - "/lights/1/state/effect": { - "description": "Current running effect on the light after the operation", - "type": "string", - "enum": [ - "none", - "colorloop" - ] - } - } + "type": "object", + "properties": { + "data": { + "type": "array", + "items": { + "type": "object", + "properties": { + "rid": { + "description": "The ID of the resource", + "type": "string" }, - { - "type": "object", - "properties": { - "/lights/1/state/ct": { - "description": "Current running effect on the light after the operation", - "type": "string", - "enum": [ - "none", - "colorloop" - ] - } - } + "rtype": { + "description": "The type of the resource", + "type": "string" } - ] + } } + }, + "errors": { + "type": "array" } } }, "forms": [ { - "href": "state", + "href": "", "contentType": "application/json", "htv:methodName": "PUT", "op": [ "invokeaction" ] } - ], - "idempotent": false, - "safe": false + ] } - } + }, + "events": {} } \ No newline at end of file From 12d12a00588ed41f284d66dcf28b097625c8767d Mon Sep 17 00:00:00 2001 From: Ege Korkan Date: Thu, 14 Nov 2024 11:11:21 +0100 Subject: [PATCH 4/4] revert wrong id change and do correctly --- .../Color-Lamp-onsite-TUM.td.jsonld | 2 +- .../Color-Lamp-remote-TUM.td.jsonld | 542 +++++++++++------- 2 files changed, 332 insertions(+), 212 deletions(-) diff --git a/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-onsite-TUM.td.jsonld b/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-onsite-TUM.td.jsonld index 2405a3cb..c9539370 100644 --- a/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-onsite-TUM.td.jsonld +++ b/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-onsite-TUM.td.jsonld @@ -1,6 +1,6 @@ { "@context": "https://www.w3.org/2022/wot/td/v1.1", - "id": "5dc4b482-e6e4-4f0b-9783-f85a1432c845", + "id": "urn:dev:ops:32473-HueLight-2", "@type": "Thing", "title": "Philips Hue Lamp", "description": "A Philips Hue lamp that can be controlled via the Hue Bridge", diff --git a/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-remote-TUM.td.jsonld b/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-remote-TUM.td.jsonld index e9ce8873..3d1125e1 100644 --- a/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-remote-TUM.td.jsonld +++ b/events/2024.11.Munich/TDs/Philips-Hue/Color-Lamp-remote-TUM.td.jsonld @@ -1,262 +1,382 @@ { - "@context": "https://www.w3.org/2022/wot/td/v1.1", - "id": "urn:dev:ops:32473-HueLight-2", - "@type": "Thing", - "title": "Philips Hue Lamp", - "description": "A Philips Hue lamp that can be controlled via the Hue Bridge", + "title": "Hue Color Lamp 1", + "id": "urn:dev:ops:32473-HueLight-1", + "description": "This is a Philips Hue Color Light Bulb that can be controlled remotely. This is on the left of the desk 1", + "@context": [ + "https://www.w3.org/2019/wot/td/v1", + { + "@language": "en" + } + ], "securityDefinitions": { "basic_sc": { - "scheme": "apikey", - "in": "header", - "name": "hue-application-key" + "scheme": "basic", + "in": "header" } }, - "security": "basic_sc", - "base": "https://192.168.1.101/clip/v2/resource/light/5dc4b482-e6e4-4f0b-9783-f85a1432c845", + "security": [ + "basic_sc" + ], + "base": "https://remotelab.esi.cit.tum.de:8081/LabLocal/api/17AvYQeLM2T8Z3r0e3BiEvb9Qdwt36yU2BudTxrn/lights/1/", "properties": { "lightInformation": { - "title": "State and Attributes of the Light", - "description": "The current state and attributes of the light. There are more attributes that are not listed here and are not of importance.", + "title": "State and Attributes Of Light", + "description": "Gets the attributes and state of a given light. There are more attributes that are not listed here and are not of importance.", "type": "object", "properties": { - "data": { - "title": "An Array that holds the object of the information", - "type": "array", - "items": { - "type": "object", - "properties": { - "id": { - "description": "The ID of the light", - "type": "string" - }, - "id_v1": { - "description": "The ID of the light in version 1", - "type": "string" - }, - "on": { - "description": "On/Off state of the light. On=true, Off=false", - "type": "boolean" - }, - "dimming": { - "description": "The brightness of the light", - "type": "object", - "properties": { - "brightness": { - "description": "The brightness of the light. 0 is the minimum brightness and 100 is the maximum brightness", - "type": "number", - "minimum": 0, - "maximum": 100 - }, - "min_dim_level": { - "description": "The unit of the brightness", - "type": "number" - } - } - }, - "color": { - "description": "The color of the light", - "type": "object", - "properties": { - "xy": { - "description": "The x and y coordinates of the color in the CIE color space", - "type": "object", - "properties": { - "x": { - "description": "The x coordinate of the color in the CIE color space", - "type": "number" - }, - "y": { - "description": "The y coordinate of the color in the CIE color space", - "type": "number" - } - } - }, - "gamut": { - "description": "The color gamut of the light", - "type": "object", - "properties": { - "red": { - "description": "The red color gamut of the light", - "type": "object", - "properties": { - "x": { - "description": "The x coordinate of the red color gamut in the CIE color space", - "type": "number" - }, - "y": { - "description": "The y coordinate of the red color gamut in the CIE color space", - "type": "number" - } - } - }, - "green": { - "description": "The green color gamut of the light", - "type": "object", - "properties": { - "x": { - "description": "The x coordinate of the green color gamut in the CIE color space", - "type": "number" - }, - "y": { - "description": "The y coordinate of the green color gamut in the CIE color space", - "type": "number" - } - } - }, - "blue": { - "description": "The blue color gamut of the light", - "type": "object", - "properties": { - "x": { - "description": "The x coordinate of the blue color gamut in the CIE color space", - "type": "number" - }, - "y": { - "description": "The y coordinate of the blue color gamut in the CIE color space", - "type": "number" - } - } - } - } - }, - "gamut_type": { - "description": "The type of the color gamut", - "type": "string" - } - } - }, - "dynamics": { - "description": "The dynamics of the light", - "type": "object", - "properties": { - "status": { - "description": "The status of the dynamics", - "type": "string", - "enum": [ - "none", - "dynamic_palette" - ] - }, - "speed": { - "description": "The speed of the dynamics", - "type": "number" - }, - "speed_valid": { - "description": "The validity of the speed", - "type": "boolean" - } - } + "state": { + "title": "Light State", + "description": "Details the state of the light, see the state table below for more details.", + "readOnly": true, + "type": "object", + "properties": { + "on": { + "description": "On/Off state of the light. On=true, Off=false", + "type": "boolean" + }, + "alert": { + "description": "The alert effect, which is a temporary change to the bulb’s state.'l' of lselect stands for loop.", + "type": "string", + "enum": [ + "none", + "select", + "lselect" + ] + }, + "hue": { + "description": "The hue value to set light to.The hue value is a wrapping value between 0 and 65535. Both 0 and 65535 are red, 25500 is green and 46920 is blue.", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "bri": { + "description": "brightness level", + "type": "integer", + "minimum": 0, + "maximum": 254 + }, + "sat": { + "description": "Saturation of the light. 254 is the most saturated (colored) and 0 is the least saturated (white).", + "type": "integer", + "minimum": 0, + "maximum": 254 + }, + "xy": { + "type": "array", + "description": "The x and y coordinates of a color in CIE color space.The first entry is the x coordinate and the second entry is the y coordinate. Both x and y must be between 0 and 1. If the specified coordinates are not in the CIE color space, the closest color to the coordinates will be chosen.", + "items": { + "type": "number", + "minimum": -1, + "maximum": 1 }, - "type": { - "description": "The type of the device", - "type": "string" - } + "maxItems": 2, + "minItems": 2 + }, + "ct": { + "description": "The Mired color temperature of the light. 2012 connected lights are capable of 153 (6500K) to 500 (2000K).", + "type": "integer", + "minimum": 153, + "maximum": 500 + }, + "effect": { + "description": "The dynamic effect of the light. Currently “none” and “colorloop” are supported. Other values will generate an error of type 7.Setting the effect to colorloop will cycle through all hues using the current brightness and saturation settings.", + "type": "string", + "enum": [ + "none", + "colorloop" + ] + }, + "colormode": { + "type": "string", + "enum": [ + "xy", + "ct" + ] + }, + "reachable": { + "description": "Indicates if a light can be reached by the bridge", + "type": "boolean" } } + }, + "type": { + "description": "A fixed name describing the type of light", + "type": "string" + }, + "name": { + "description": "A unique, editable name given to the light", + "type": "string" + }, + "modelid": { + "description": "The hardware model of the light.", + "type": "string" + }, + "swversion": { + "description": "An identifier for the software version running on the light", + "type": "string" } }, "forms": [ { "href": "", - "contentType": "application/json", "htv:methodName": "GET", - "op": [ - "readproperty" - ] + "contentType": "application/json", + "op": "readproperty" } ] } }, "actions": { "setState": { - "title": "Set the state of the light", - "description": "Set the state of the light. The state can be On/Off, brightness, color, and dynamics.", + "title": "Set State", + "description": "Allows the user to turn the light on and off, modify the hue and effects", "input": { "type": "object", "properties": { "on": { "description": "On/Off state of the light. On=true, Off=false", - "type": "object", - "properties": { - "on": { - "description": "On/Off state of the light. On=true, Off=false", - "type": "boolean" - } - } + "type": "boolean" }, - "dimming": { - "description": "The brightness of the light", - "type": "object", - "properties": { - "brightness": { - "description": "The brightness of the light. 0 is the minimum brightness and 100 is the maximum brightness", - "type": "number", - "minimum": 0, - "maximum": 100 - } - } + "bri": { + "description": "Brightness level. Values higher than 254 are taken as 254", + "type": "integer", + "minimum": 0, + "maximum": 254 }, - "color": { - "description": "The color of the light", - "type": "object", - "properties": { - "xy": { - "description": "The x and y coordinates of the color in the CIE color space", - "type": "object", - "properties": { - "x": { - "description": "The x coordinate of the color in the CIE color space", - "type": "number", - "minimum": 0, - "maximum": 1 - }, - "y": { - "description": "The y coordinate of the color in the CIE color space", - "type": "number", - "minimum": 0, - "maximum": 1 - } - } - } - } + "alert": { + "description": "The alert effect, which is a temporary change to the bulb’s state.'l' of lselect stands for loop. Presence of lselect ignores transitiontime", + "type": "string", + "enum": [ + "lselect", + "none", + "select" + ] + }, + "transisiontime": { + "description": "The duration of the transition from the light’s current state to the new state.", + "type": "integer", + "unit": "100ms", + "minimum": 0, + "maximum": 65535 + }, + "bri_inc": { + "description": "Increments or decrements the value of the brightness. bri_inc is ignored if the bri attribute is provided.", + "type": "integer", + "minimum": -254, + "maximum": 254 + }, + "hue": { + "description": "The hue value to set light to.The hue value is a wrapping value between 0 and 65535. Both 0 and 65535 are red, 25500 is green and 46920 is blue.", + "type": "integer", + "minimum": 0, + "maximum": 65535 + }, + "sat": { + "description": "Saturation of the light. 254 is the most saturated (colored) and 0 is the least saturated (white).", + "type": "integer", + "minimum": 0, + "maximum": 254 + }, + "xy": { + "type": "array", + "description": "The x and y coordinates of a color in CIE color space.The first entry is the x coordinate and the second entry is the y coordinate. Both x and y must be between 0 and 1. If the specified coordinates are not in the CIE color space, the closest color to the coordinates will be chosen.", + "items": { + "type": "number", + "minimum": -1, + "maximum": 1 + }, + "maxItems": 2, + "minItems": 2 + }, + "ct": { + "description": "The Mired color temperature of the light. 2012 connected lights are capable of 153 (6500K) to 500 (2000K).", + "type": "integer", + "minimum": 153, + "maximum": 500 + }, + "effect": { + "description": "The dynamic effect of the light. Currently “none” and “colorloop” are supported. Other values will generate an error of type 7.Setting the effect to colorloop will cycle through all hues using the current brightness and saturation settings.", + "type": "string", + "enum": [ + "none", + "colorloop" + ] + }, + "sat_inc": { + "description": "Increments or decrements the value of the sat. sat_inc is ignored if the sat attribute is provided. Any ongoing sat transition is stopped. Setting a value of 0 also stops any ongoing transition. The bridge will return the sat value after the increment is performed.", + "type": "integer", + "minimum": -254, + "maximum": 254 + }, + "hue_inc": { + "description": "Increments or decrements the value of the hue. hue_inc is ignored if the hue attribute is provided. Any ongoing color transition is stopped. Setting a value of 0 also stops any ongoing transition. The bridge will return the hue value after the increment is performed.Note if the resulting values are < 0 or > 65535 the result is wrapped. ", + "type": "integer", + "minimum": -65534, + "maximum": 65534 + }, + "ct_inc": { + "description": "Increments or decrements the value of the ct. ct_inc is ignored if the ct attribute is provided. Any ongoing color transition is stopped. Setting a value of 0 also stops any ongoing transition. The bridge will return the ct value after the increment is performed.", + "type": "integer", + "minimum": -65534, + "maximum": 65534 + }, + "xy_inc": { + "type": "array", + "description": "TIncrements or decrements the value of the xy. xy_inc is ignored if the xy attribute is provided. Any ongoing color transition is stopped. Setting a value of 0 also stops any ongoing transition. Will stop at it’s gamut boundaries. The bridge will return the xy value after the increment is performed. Max value [0.5, 0.5].", + "items": { + "type": "number", + "minimum": -0.5, + "maximum": 0.5 + }, + "maxItems": 2, + "minItems": 2 } } }, "output": { - "type": "object", - "properties": { - "data": { - "type": "array", - "items": { - "type": "object", - "properties": { - "rid": { - "description": "The ID of the resource", - "type": "string" + "type": "array", + "items": { + "type": "object", + "properties": { + "success": { + "oneOf": [ + { + "type": "object", + "properties": { + "/lights/1/state/on": { + "description": "Current state of the light after operation", + "type": "boolean" + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/bri": { + "description": "Current brightness level", + "type": "integer", + "minimum": 0, + "maximum": 254 + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/alert": { + "description": "Already provided alert value", + "type": "string", + "enum": [ + "lselect", + "none", + "select" + ] + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/transisiontime": { + "description": "Already provided transitiontime", + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/hue": { + "description": "Current hue of the light after the operation", + "type": "integer", + "minimum": 0, + "maximum": 65535 + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/sat": { + "description": "Current saturation of the light after the operation", + "type": "integer", + "minimum": 0, + "maximum": 254 + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/xy": { + "description": "Current xy color of the light after the operation", + "type": "array", + "items": { + "type": "number", + "minimum": -1, + "maximum": 1 + }, + "maxItems": 2, + "minItems": 2 + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/ct": { + "description": "Current ct color of the light after the operation", + "type": "integer", + "minimum": 153, + "maximum": 500 + } + } }, - "rtype": { - "description": "The type of the resource", - "type": "string" + { + "type": "object", + "properties": { + "/lights/1/state/effect": { + "description": "Current running effect on the light after the operation", + "type": "string", + "enum": [ + "none", + "colorloop" + ] + } + } + }, + { + "type": "object", + "properties": { + "/lights/1/state/ct": { + "description": "Current running effect on the light after the operation", + "type": "string", + "enum": [ + "none", + "colorloop" + ] + } + } } - } + ] } - }, - "errors": { - "type": "array" } } }, "forms": [ { - "href": "", + "href": "state", "contentType": "application/json", "htv:methodName": "PUT", "op": [ "invokeaction" ] } - ] + ], + "idempotent": false, + "safe": false } - }, - "events": {} + } } \ No newline at end of file