Opennet Homematic: Unterschied zwischen den Versionen

Aus Opennet
Wechseln zu: Navigation, Suche
(Homematic API)
(Homematic API)
(6 dazwischenliegende Versionen von einem Benutzer werden nicht angezeigt)
Zeile 10: Zeile 10:
 
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.
 
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)
+
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), 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).
 
Das Türschloss mit integriertem Motor benötigt 3x AA Batterien. Tausch ca. alle 1,5 Jahre notwendig (Stand Oktober 2020).
Zeile 26: Zeile 26:
 
* 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" + Verknüpfung Heizung/Thermostat "Comfort-Temperatur"
 
** 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"
+
** 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_confort - Kanalauswahl: Verknüpfung Heizung/Thermostat "Comfort-Temperatur"
 
** temp_eco - Kanalauswahl: Verknüpfung Heizung/Thermostat "Eco-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_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:
Zeile 40: Zeile 43:
 
* 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 erlauben? (Aka, "der letzte der geht macht die Tür zu"?)
+
* Tür Schließen, auch ohne Login erlaubt (Aka, "der letzte der geht macht die Tür zu")
  
 
Sonstiges:
 
Sonstiges:
Zeile 173: Zeile 176:
  
 
Es sind drei interne Homematic Programme/Automatisierungen angelegt:
 
Es sind drei interne Homematic Programme/Automatisierungen angelegt:
* door_open - Öffnet die Türverriegelung und setzt die Heizung auf den Comfort-Modus
+
* 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 Heizung auf den Eco-Modus
+
* door_close - Schließt die Türverriegelung und setzt die Temperatursteuerung auf den Eco-Modus
* daily_eco_temp - Setzt täglich um 3:30 die Heizung 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:
 
Im [[Frieda23]]-Webinterface haben wir für die Nutzer bereit gestellt:

Version vom 18. Januar 2023, 18:43 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

Allgemeines

Frieda23-Lichtsteuerung2022.png

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), 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).

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:

  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 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

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"
}

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:

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