Opennet Homematic: Unterschied zwischen den Versionen
Leo (Diskussion | Beiträge) (Hinzufügen von Bedienungsnaleitungen) |
|||
(44 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
+ | 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. | ||
+ | |||
+ | === Allgemeines === | ||
+ | [[Datei:Frieda23-Lichtsteuerung2022.png|right|200px]] | ||
+ | * Steuerung: https://frieda23.opennet-initiative.de/ | ||
+ | * Zentrale/Backend: http://1.50.aps.on:254/ | ||
+ | |||
+ | 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, [[Media:HM-Sec-Key_UM_GE_eQ-3_web.pdf|Bedienungsnaleitung]]) | ||
+ | * Wand-Thermostat (HM-TC-IT-WM-W-EU, [[Media:Hm-tc-it-wm-w-eu_um_ge_eq-3_web.pdf|Bedienungsanleitung]]) | ||
+ | * Heizkörper-Thermostat (HM-CC-RT-DN, [[Media:Hm-cc-rt-dn_um_ge_eq-3_web.pdf|Bedienungsnaleitung]]) | ||
+ | * Fernbedienung (HM-RC-Key4-3) | ||
+ | * Schaltsteckdose (HmIP-PS-2) | ||
+ | |||
+ | 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 [[Benutzer:MathiasMahnke|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 | Komponenten: Homematic CCU3 Zentrale, Keymatic Türschloss (HM-Sec-Key); Stand 03/2019 | ||
JSON-RPC API: /api/homematic.cgi (via POST) | JSON-RPC API: /api/homematic.cgi (via POST) | ||
− | |||
− | |||
Vorbereitung: | Vorbereitung: | ||
− | * Benutzer anlegen (hier: | + | * Benutzer anlegen (hier: api) |
* Programme anlegen (hier: door_open, door_close) | * 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_open - Kanalzustand: HM-Sec-Key "bei Sperrung aktiv, nur prüfen", Kanalauswahl: HM-Sec-Key "sofort Schloss entriegelt" + Verknüpfung Heizung/Thermostat "Comfort-Temperatur" |
− | ** door_close - Kanalzustand: HM-Sec-Key "bei Sperrung inaktiv, nur prüfen", Kanalauswahl: HM-Sec-Key "sofort Schloss verriegelt" | + | ** door_close - Kanalzustand: HM-Sec-Key "bei Sperrung inaktiv, nur prüfen", Kanalauswahl: HM-Sec-Key "sofort Schloss verriegelt" + Verknüpfung Heizung/Thermostat "Eco-Temperatur" + Kanalauswahl: HmIP-PS-2 :3 "sofort Schaltzustand: Aus" |
+ | ** temp_confort - Kanalauswahl: Verknüpfung Heizung/Thermostat "Comfort-Temperatur" | ||
+ | ** temp_eco - Kanalauswahl: Verknüpfung Heizung/Thermostat "Eco-Temperatur" | ||
+ | ** power_on - Kanalauswahl: HmIP-PS-2 :3 "sofort Schaltzustand: Ein" | ||
+ | ** power_off - Kanalauswahl: HmIP-PS-2 :3 "sofort Schaltzustand: Aus" | ||
+ | ** daily_eco_temp - Zeit: Täglich um 03:30 Uhr, Kanalauswahl: Verknüpfung Heizung/Thermostat "Eco-Temperatur" | ||
+ | ** daily_power_off - Zeit: Täglich um 03:30 Uhr, Kanalauswahl: HmIP-PS-2 :3 "sofort Schaltzustand: Aus" | ||
Ablauf: | Ablauf: | ||
# '''Session.login''' (username password) - Anmeldung vornehmen, Session-ID erhalten | # '''Session.login''' (username password) - Anmeldung vornehmen, Session-ID erhalten | ||
− | # '''Program.getAll''' (_session_id_) - Liste der Programme ausgeben; | + | # '''Program.getAll''' (_session_id_) - Liste der Programme ausgeben; nach Programmnamen suchen, Programm-ID erhalten |
# '''Program.execute''' (_session_id_ id) - gewünschtes Programm ''id'' ausführen | # '''Program.execute''' (_session_id_ id) - gewünschtes Programm ''id'' ausführen | ||
# '''Session.logout''' (_session_id_) - Abmeldung vornehmen, auch bei vorzeitigem Programmabbruch | # '''Session.logout''' (_session_id_) - Abmeldung vornehmen, auch bei vorzeitigem Programmabbruch | ||
Zeile 20: | Zeile 49: | ||
* Login, denkbar via Opennet CA Client Login oder Nutzername/Passwort auf jeweils Basis Apache | * Login, denkbar via Opennet CA Client Login oder Nutzername/Passwort auf jeweils Basis Apache | ||
* Tür Öffnen, Ausführung nur mit Login | * Tür Öffnen, Ausführung nur mit Login | ||
− | * Tür Schließen, auch ohne Login | + | * Tür Schließen, auch ohne Login erlaubt (Aka, "der letzte der geht macht die Tür zu") |
Sonstiges: | Sonstiges: | ||
− | |||
* Verschlusszustand der Tür prüfen und/oder nachts automatisch schließen? (Kann jeder Zeit von innen mechanisch geöffnet werden) | * 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: | * Login: | ||
! Request | ! Request | ||
+ | ! http POST <ccu>/api/homematic.cgi method=Session.login params:='{"username"\:"api","password"\:"XXX"}' | ||
{ | { | ||
"method": "Session.login", | "method": "Session.login", | ||
"id": 1, | "id": 1, | ||
"params": { | "params": { | ||
− | "username": " | + | "username": "api", |
"password": "XXX" | "password": "XXX" | ||
} | } | ||
Zeile 52: | Zeile 83: | ||
* Program-List | * Program-List | ||
! Request | ! Request | ||
+ | ! http POST <ccu>/api/homematic.cgi method=Program.getAll params:='{"_session_id_"\:"abcd123xyz"}' | ||
{ | { | ||
"method": "Program.getAll", | "method": "Program.getAll", | ||
Zeile 93: | Zeile 125: | ||
} | } | ||
} | } | ||
− | ! Response | + | ! Response (CCU Firmware v3.43.15 -> invalides JSON, abschließendes Komma zu viel! Hier mit Korrektur) |
HTTP/1.1 200 OK | HTTP/1.1 200 OK | ||
... | ... | ||
− | {"id": 3,"version": "1.1","result": {"id":" | + | { |
+ | "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 | * Program-Excecute | ||
! Request | ! Request | ||
Zeile 118: | Zeile 161: | ||
* Logout | * Logout | ||
! Request | ! Request | ||
+ | ! http POST <ccu>/api/homematic.cgi method=Session.logout params:='{"_session_id_"\:"abcd123xyz"}' | ||
{ | { | ||
"method": "Session.logout", | "method": "Session.logout", | ||
Zeile 134: | Zeile 178: | ||
"version": "1.1" | "version": "1.1" | ||
} | } | ||
+ | |||
+ | === Programme (Homematic + LIFX) === | ||
+ | |||
+ | Es sind drei interne Homematic Programme/Automatisierungen angelegt: | ||
+ | * door_open - Öffnet die Türverriegelung, schaltet die Schaltsteckdose aus und setzt die Temperatursteuerung auf den Comfort-Modus | ||
+ | * door_close - Schließt die Türverriegelung und setzt die Temperatursteuerung auf den Eco-Modus | ||
+ | * temp_eco - Setzt die Temperatursteuerung auf den Eco-Modus | ||
+ | * temp_comfort - Setzt die Temperatursteuerung auf den Comfort-Modus | ||
+ | * power_on - Schaltet die Schaltsteckdose an | ||
+ | * power_off - Schaltet die Schaltsteckdose aus | ||
+ | * daily_eco_temp - Setzt täglich um 3:30 die Temperatursteuerung auf den Eco-Modus | ||
+ | * daily_power_off - Schaltet täglich um 3:30 die Schaltsteckdose aus | ||
+ | |||
+ | Im [[Frieda23]]-Webinterface haben wir für die Nutzer bereit gestellt: | ||
+ | * Tür Öffnen - ruft das Homematic-Programm "door_open" auf | ||
+ | * Tür Schließen - ruft das Homematic-Programm "door_close" auf und schaltet die LIFX Lichter an | ||
+ | * Licht an - schaltet die LIFX Lichter an | ||
+ | * Licht aus - schaltet die LIFX Lichter aus | ||
+ | |||
+ | Bildschirmfotos der Homematic-Programme und Webinterface: | ||
+ | <gallery> | ||
+ | Datei:ONI Frieda23 HomematicDoorOpen.png|"door_open" | ||
+ | Datei:ONI Frieda23 HomematicDoorClose.png|"door_close" | ||
+ | Datei:ONI Frieda23 HomematicDailyEcoTemp.png|"daily_eco_temp" | ||
+ | Datei:Frieda23-Lichtsteuerung2022.png|Webinterface | ||
+ | </gallery> | ||
+ | |||
+ | === 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 | ||
+ | |||
+ | [[Kategorie:Dienste]] |
Aktuelle Version vom 18. Oktober 2023, 16:33 Uhr
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 |
[Bearbeiten] Allgemeines
- Steuerung: https://frieda23.opennet-initiative.de/
- Zentrale/Backend: http://1.50.aps.on:254/
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, Bedienungsnaleitung)
- Wand-Thermostat (HM-TC-IT-WM-W-EU, Bedienungsanleitung)
- Heizkörper-Thermostat (HM-CC-RT-DN, Bedienungsnaleitung)
- Fernbedienung (HM-RC-Key4-3)
- Schaltsteckdose (HmIP-PS-2)
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).
[Bearbeiten] 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" + Verknüpfung Heizung/Thermostat "Comfort-Temperatur"
- door_close - Kanalzustand: HM-Sec-Key "bei Sperrung inaktiv, nur prüfen", Kanalauswahl: HM-Sec-Key "sofort Schloss verriegelt" + Verknüpfung Heizung/Thermostat "Eco-Temperatur" + Kanalauswahl: HmIP-PS-2 :3 "sofort Schaltzustand: Aus"
- temp_confort - Kanalauswahl: Verknüpfung Heizung/Thermostat "Comfort-Temperatur"
- temp_eco - Kanalauswahl: Verknüpfung Heizung/Thermostat "Eco-Temperatur"
- power_on - Kanalauswahl: HmIP-PS-2 :3 "sofort Schaltzustand: Ein"
- power_off - Kanalauswahl: HmIP-PS-2 :3 "sofort Schaltzustand: Aus"
- daily_eco_temp - Zeit: Täglich um 03:30 Uhr, Kanalauswahl: Verknüpfung Heizung/Thermostat "Eco-Temperatur"
- daily_power_off - Zeit: Täglich um 03:30 Uhr, Kanalauswahl: HmIP-PS-2 :3 "sofort Schaltzustand: Aus"
Ablauf:
- Session.login (username password) - Anmeldung vornehmen, Session-ID erhalten
- Program.getAll (_session_id_) - Liste der Programme ausgeben; nach Programmnamen suchen, Programm-ID erhalten
- Program.execute (_session_id_ id) - gewünschtes Programm id ausführen
- 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 erlaubt (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
[Bearbeiten] 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" }
[Bearbeiten] Programme (Homematic + LIFX)
Es sind drei interne Homematic Programme/Automatisierungen angelegt:
- door_open - Öffnet die Türverriegelung, schaltet die Schaltsteckdose aus und setzt die Temperatursteuerung auf den Comfort-Modus
- door_close - Schließt die Türverriegelung und setzt die Temperatursteuerung auf den Eco-Modus
- temp_eco - Setzt die Temperatursteuerung auf den Eco-Modus
- temp_comfort - Setzt die Temperatursteuerung auf den Comfort-Modus
- power_on - Schaltet die Schaltsteckdose an
- power_off - Schaltet die Schaltsteckdose aus
- daily_eco_temp - Setzt täglich um 3:30 die Temperatursteuerung auf den Eco-Modus
- daily_power_off - Schaltet täglich um 3:30 die Schaltsteckdose aus
Im Frieda23-Webinterface haben wir für die Nutzer bereit gestellt:
- Tür Öffnen - ruft das Homematic-Programm "door_open" auf
- Tür Schließen - ruft das Homematic-Programm "door_close" auf und schaltet die LIFX Lichter an
- Licht an - schaltet die LIFX Lichter an
- Licht aus - schaltet die LIFX Lichter aus
Bildschirmfotos der Homematic-Programme und Webinterface:
[Bearbeiten] 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)
[Bearbeiten] 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