Opennet Homematic

Aus Opennet
Wechseln zu: Navigation, Suche

Verwendung zur Steuerung der Licht, Tür und Heizung in der Frieda23. Erfahrungen bestehen auch im https://hacklabor.de (Danke für die Starthilfe). Die Lichtsteuerung basiert auf der LIFX HTTP API.

Inhaltsverzeichnis

Allgemeines

Bedienungsanleitung für Vereinsmitglieder: Frieda23/Zugang zum Vereinsraum

Die Software ist per Opennet ansible auf dem Server/kinjo installiert. Der Zugang wird über Opennet CA Client Zertifikate geschützt. Die Homematic Zentrale (CCU) ist am LAN Port von AP1.50 angeschlossen. Eine dortige Port-Weiterleitung ermöglicht den Zugang vom Opennet-Mesh.

Komponenten: CCU3 Zentrale, Keymatic Türschloss (HM-Sec-Key), Wand-Thermostat (HM-TC-IT-WM-W-EU), Heizkörper-Thermostat (HM-CC-RT-DN), Fernbedienung (HM-RC-Key4-3)

Das Türschloss mit integriertem Motor benötigt 3x AA Batterien. Tausch ca. alle 1,5 Jahre notwendig (Stand Oktober 2020).

Die Lichtsteuerung erfolgt über die LIFX HTTP API und einem Konto von Mathias. Dort ist ein API-Token generiert und hinterlegt. Es werden alle Lichter dem Raum "Versionsraum" zugeordnet an bzw. ausgeschaltet. Beim Verschließen der Tür wird das Licht automatisch mit abgeschaltet (Stand Oktober 2022).

Homematic API

Komponenten: Homematic CCU3 Zentrale, Keymatic Türschloss (HM-Sec-Key); Stand 03/2019

JSON-RPC API: /api/homematic.cgi (via POST)

Vorbereitung:

  • Benutzer anlegen (hier: api)
  • Programme anlegen (hier: door_open, door_close)
    • door_open - Kanalzustand: HM-Sec-Key "bei Sperrung aktiv, nur prüfen", Kanalauswahl: HM-Sec-Key "sofort Schloss entriegelt"
    • door_close - Kanalzustand: HM-Sec-Key "bei Sperrung inaktiv, nur prüfen", Kanalauswahl: HM-Sec-Key "sofort Schloss verriegelt"

Ablauf:

  1. Session.login (username password) - Anmeldung vornehmen, Session-ID erhalten
  2. Program.getAll (_session_id_) - Liste der Programme ausgeben; nach Programmnamen suchen, Programm-ID erhalten
  3. Program.execute (_session_id_ id) - gewünschtes Programm id ausführen
  4. Session.logout (_session_id_) - Abmeldung vornehmen, auch bei vorzeitigem Programmabbruch

Webinterface:

  • Login, denkbar via Opennet CA Client Login oder Nutzername/Passwort auf jeweils Basis Apache
  • Tür Öffnen, Ausführung nur mit Login
  • Tür Schließen, auch ohne Login erlauben? (Aka, "der letzte der geht macht die Tür zu"?)

Sonstiges:

  • Verschlusszustand der Tür prüfen und/oder nachts automatisch schließen? (Kann jeder Zeit von innen mechanisch geöffnet werden)
  • Ereignisprotokoll des Türschlosses aktivieren, ggf. Syslog-Export nach "monitor.on"
  • API-Zugriff per CCU Firewall schützen, Zugriff nur mit Authentifizierung erlauben

JSON Beispiele

  • Login:
! Request
! http POST <ccu>/api/homematic.cgi method=Session.login params:='{"username"\:"api","password"\:"XXX"}'
{
 "method": "Session.login",
 "id": 1,
 "params": {
   "username": "api",
   "password": "XXX"
 }
}
! Response
HTTP/1.1 200 OK
CONTENT-TYPE: application/json; charset=utf-8
Content-Length: 63
Date: ...
Server: lighttpd/1.4.50
{
   "error": null,
   "id": 1,
   "result": "abcd123xyz",
   "version": "1.1"
}
  • Program-List
! Request
! http POST <ccu>/api/homematic.cgi method=Program.getAll params:='{"_session_id_"\:"abcd123xyz"}'
{
 "method": "Program.getAll",
 "id": 2,
 "params": {
   "_session_id_": "abcd123xyz"
 }
}
! Response
HTTP/1.1 200 OK
..
{
   "error": null,
   "id": 2,
   "result": [
       {
           "id": "1234",
           "isActive": true,
           "isInternal": false,
           "lastExecuteTime": "2019-03-15 07:39:07",
           "name": "door_close"
       },
       {
           "id": "5678",
           "isActive": true,
           "isInternal": false,
           "lastExecuteTime": "1970-01-01 01:00:00",
           "name": "door_open"
       }
   ],
   "version": "1.1"
}
  • Program-Info (zur Info, nicht notwendig)
! Request
{
 "method": "Program.get",
 "id": 3,
 "params": {
   "_session_id_": "abcd123xyz",
   "id": "1234"
 }
}
! Response (CCU Firmware v3.43.15 -> invalides JSON, abschließendes Komma zu viel! Hier mit Korrektur)
HTTP/1.1 200 OK
...
{
 "id": 3,
 "version": "1.1",
 "result": {
   "id": "1234",
   "name": "door_close",
   "isActive": true,
   "isInternal": false,
   "lastExecuteTime": "2019-03-15 07:39:07"
 },
 "error": null
}
  • Program-Excecute
! Request
{
 "method": "Program.execute",
 "id": 3,
 "params": {
   "_session_id_": "abcd123xyz",
   "id": "1234"
 }
}
! Result
HTTP/1.1 200 OK
...
{
   "error": null,
   "id": 3,
   "result": true,
   "version": "1.1"
}
  • Logout
! Request
! http POST <ccu>/api/homematic.cgi method=Session.logout params:='{"_session_id_"\:"abcd123xyz"}'
{
 "method": "Session.logout",
 "id": 4,
 "params": {
   "_session_id_": "abcd123xyz"
 }
}
! Response
HTTP/1.1 200 OK
...
{
   "error": null,
   "id": 4,
   "result": true,
   "version": "1.1"
}

Türsteuerung (Bash Script)

Unsere Skripte sind angelegt in Opennet ansible auf Opennet DEV.

  • Ohne Debugging
$ ./homematic.sh --close-door
Action CLOSE DOOR
Login... done (Session ID Ajx32AXDwx)
Find program... done (Program ID 1682)
Run program... done (Status true)
Logout... done (Status true)
  • Mit Debugging
$ ./homematic.sh --close-close
Debugging = true
Action CLOSE DOOR
Login... Response: {"version": "1.1","result": "Ba7sY0iz1S","error": null} - done (Session ID Ba7sY0iz1S)
Find program... Response: {"version": "1.1","result": [{"id":"1682","name":"door_close","isActive":true,"isInternal":false, \
  "lastExecuteTime":"2019-03-16 19:36:17"},{"id":"1727","name":"door_open","isActive":true,"isInternal":false, \
  "lastExecuteTime":"2019-03-16 19:36:09"}],"error": null} - done (Program ID 1682)
Run program... Response: {"version": "1.1","result": true,"error": null} - done (Status true)
Logout... Response: {"version": "1.1","result": true,"error": null} - done (Status true)

Heizungssteuerung (Homematic Gruppe)

  • In der CCU Einstellungen > Gruppen > "Vereinsraum", Gruppentyp "Heizungssteuerung" - es entsteht ein virtuelles Gerät für den Raum "Vereinsraum"
  • als Gruppengeräte "Funk-Heizkörperthermostat" und "Funk-Wandthermostat" hinzufügen
  • anschließend kann über "Bedienen" des virtuellen Geräte die Konfiguration für die Heizungssteuerung vorgenommen werden
  • gleichzeitig erfolgt die Bedienung vor Ort an den Geräten als Gruppenschaltung
Meine Werkzeuge
Namensräume

Varianten
Aktionen
Start
Opennet
Kommunikation
Karten
Werkzeuge