{ "protocol": "jarvis.skill.v1", "id": "unifi.protect", "name": "UniFi Protect", "version": "1.0.0", "description": "Lokale UniFi-Protect-Integration über die offizielle Integration API.", "runtime": { "type": "process", "command": "python3", "args": [ "main.py" ], "timeout_ms": 10000, "env_from": [ "UNIFI_PROTECT_URL", "UNIFI_API_KEY", "UNIFI_VERIFY_TLS" ] }, "permissions": { "network": true, "system_exec": true }, "actions": [ { "name": "info", "description": "Prüft die Protect-API und liefert Versionsinformationen.", "input_schema": { "type": "object", "properties": {}, "additionalProperties": false }, "output_schema": { "type": "object" } }, { "name": "list_cameras", "description": "Listet Protect-Kameras mit Status und Fähigkeiten.", "input_schema": { "type": "object", "properties": {}, "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "cameras": { "type": "array", "items": { "type": "object" } }, "count": { "type": "integer" } }, "required": [ "cameras", "count" ], "additionalProperties": false } }, { "name": "get_camera", "description": "Liest Details einer Protect-Kamera.", "input_schema": { "type": "object", "properties": { "camera_id": { "type": "string" } }, "required": [ "camera_id" ], "additionalProperties": false }, "output_schema": { "type": "object" } }, { "name": "list_sensors", "description": "Listet Protect-Sensoren.", "input_schema": { "type": "object", "properties": {}, "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "sensors": { "type": "array", "items": { "type": "object" } }, "count": { "type": "integer" } }, "required": [ "sensors", "count" ], "additionalProperties": false } }, { "name": "list_lights", "description": "Listet Protect-Lights/Floodlights.", "input_schema": { "type": "object", "properties": {}, "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "lights": { "type": "array", "items": { "type": "object" } }, "count": { "type": "integer" } }, "required": [ "lights", "count" ], "additionalProperties": false } }, { "name": "ptz_goto", "description": "Fährt eine PTZ-Kamera auf ein vorhandenes Preset.", "mutates": true, "input_schema": { "type": "object", "properties": { "camera_id": { "type": "string" }, "slot": { "type": "integer" } }, "required": [ "camera_id", "slot" ], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "accepted": { "type": "boolean" } }, "required": [ "accepted" ], "additionalProperties": false } }, { "name": "ptz_patrol_start", "description": "Startet eine konfigurierte PTZ-Patrouille.", "mutates": true, "input_schema": { "type": "object", "properties": { "camera_id": { "type": "string" }, "slot": { "type": "integer" } }, "required": [ "camera_id", "slot" ], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "accepted": { "type": "boolean" } }, "required": [ "accepted" ], "additionalProperties": false } }, { "name": "ptz_patrol_stop", "description": "Stoppt die aktive PTZ-Patrouille.", "mutates": true, "input_schema": { "type": "object", "properties": { "camera_id": { "type": "string" } }, "required": [ "camera_id" ], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "accepted": { "type": "boolean" } }, "required": [ "accepted" ], "additionalProperties": false } }, { "name": "trigger_alarm_webhook", "description": "Triggert einen in Protect konfigurierten Alarm-Manager-Webhook.", "mutates": true, "requires_confirmation": true, "input_schema": { "type": "object", "properties": { "trigger_id": { "type": "string" } }, "required": [ "trigger_id" ], "additionalProperties": false }, "output_schema": { "type": "object", "properties": { "accepted": { "type": "boolean" } }, "required": [ "accepted" ], "additionalProperties": false } } ] }