hier eine kleine Anleitung wie sich das tedee PRO oder tedee GO am Besten in die HomeMatic CCU integrieren lässt. Es wird die neue, lokale Bridge-API verwendet. D.h. neben dem smartlock muss auch die tedee Bridge installiert sein.
Vorbereitungen Tedee
Wir gehen davon aus, dass Du bereits das Tedee-Schloss an Deiner Tür installiert hast und die Tedee iOS- oder Android-App verwendet hast, um sowohl das Tedee-Schloss als auch die Bridge zu installieren. Hier sind einige wichtige Punkte, um mit der Integration zu beginnen:
- Erstmalige Einrichtung: Um loszulegen, benötigst Du eine mit Deinem lokalen Netzwerk verbundene Tedee Bridge. Die Bridge muss über Internetzugang verfügen, um ein Zugangszertifikat für gekoppelte Geräte zu erhalten und periodisch zu aktualisieren.
- Lokales Netzwerk: Die API funktioniert über Dein lokales Netzwerk, sodass Deine Integrationen direkt mit der Tedee Bridge kommunizieren können, ohne dass für die API-Aufrufe externer Internetzugang erforderlich ist.
- Gerätekopplung: Stelle sicher, dass mindestens ein Tedee-Schloss mit der Bridge gekoppelt ist, um es über die API steuern zu können.
Aktivieren der Bridge-API
Bevor Du die API verwenden kannst, musst Du sie in der Tedee-App auf der Bridge aktivieren. Öffne die Tedee-App, gehe zu ausgewählter Bridge -> Einstellungen -> API -> und schalte dann den Schalter um.
Wir nutzen für die Kommunikation den verschlüsselten Token. Der Punkt "Verschlüsselter Token" muss also angeschaltet bleiben.
Aus der API-Ansicht benötigen wir die folgenden beiden Werte:
- Token: Dies ist das eigentliche Token, das in jedem API-Aufruf zur Authentifizierung enthalten sein muss. Es funktioniert ähnlich wie ein Passwort, also halte es sicher.
- IP-Adresse: Gibt die lokale Netzwerkadresse der Tedee Bridge an, über die die API erreichbar sein wird.
- Geräte-ID: Dies ist die ID des Schlosses, das wir steuern möchten.
Tedee ansteuern
Das tedee lock lässt sich nun über einen Skript aus der HomeMatic CCU ansteuern. Wir legen hierzu ein neues Programm in der CCU an: HomeMatic Browser Admin Benutzerinterface -> Programme und Verknüpfungen -> Programme & Zentralenverknüfung -> Neu
In meinem Beispiel soll das tedee lock sich öffnen wenn ich beim HmIP-KRCK (HomeMatic-IP Keyfob) eine Taste drücke.
Hier das Skript:
Code: Alles auswählen
string tedeebridgeip= "192.168.192.28";
string tedeelockid= "12345";
string tedeeapitoken= "1AbCDefGHIjK";
string operation= "unlock"; ! lock or unlock
string unlockmode= "4"; ! 3 or 4
string timestamp;
system.Exec("date +'%s%3N' | tr -d '[:space:]'", & timestamp);
string tokenandtime= tedeeapitoken + timestamp;
string hash;
system.Exec("echo -n \"" + tokenandtime + "\" | sha256sum | awk '{print $1}' | tr -d '\n'", &hash);
string encryptedtoken;
system.Exec("echo -n \"" + hash + timestamp + "\" | tr -d '\n'", &encryptedtoken);
string stdout;
string stderr;
string url="http://" + tedeebridgeip + "/v1.0/lock/" + tedeelockid + "/" + operation + "?api_token=" + encryptedtoken + "&mode="+ unlockmode;
if (operation == "lock") {
url="http://" + tedeebridgeip + "/v1.0/lock/" + tedeelockid + "/" + operation + "?api_token=" + encryptedtoken;
}
string command = "wget '" + url + "'";
system.Exec(command, &stdout, &stderr);
WriteLine(stdout);
WriteLine(stderr);
- string tedeebridgeip= "192.168.192.28"; Hier muss die IP-Adresse der Tedee Bridge eingetragen werden (siehe Aktivieren der Bridge-API)
- string tedeelockid= "12345"; Hier muss die Geräte-ID des gewünschten tedee lock´s eingetragen werden (siehe Aktivieren der Bridge-API)
- string tedeeapitoken= "1AbCDefGHIjK"; Hier muss der Token der Tedee Bridge-API eingetragen werden (siehe Aktivieren der Bridge-API)
- string operation= "unlock"; Zum entriegeln bitte "unlock" und zum verriegeln "lock" eintragen.
- string unlockmode= "4"; Dieser String wird nur berücksichtigt, wenn wir vorher "unlock" eingegeben haben. Hier wählen wir "4" wenn wir beim entriegeln die Türfalle mit einziehen möchten und "3" wenn nur entriegelt werden soll, ohne die Türfalle einzuziehen. Für den Modus 4 muss die Türfalle bei der Kalibrierung in der tedee App konfiguriert sein.
Vorbereitungen Tedee Status abrufen
Um den Status vom Tedee zur CCU zurückzubekommen, nutzen wir das XML-API Addon für HomeMatic:
https://www.homematic-inside.de/software/xml-api
Wichtiger Hinweis: Der XML-Api Token bei folgender Methode unverschlüsselt im lokalen Netzwerk übertragen. Bitte nutze diese Möglichkeit nur wenn keine Fremde Zugriff auf dein Netzwerk haben!
Um das Addon zu installieren, lade die xmlapi_addon-X.X.tar.gz Datei der aktuellen Version hier herunter:
https://github.com/homematic-community/XML-API/releases
In meinem Beispiel ist es Version 2.2. Nun installieren wir das Addon: HomeMatic Browser Admin Benutzerinterface -> Einstellungen -> Systemsteuerung -> Zusatzsoftware -> Zusatzsoftware installieren / aktualisieren
Hier klicken wir auf "Datei auswählen", wählen die eben heruntergeladene .tar.gz Datei aus und klicken anschließend auf "Installieren".
Tedee Status abrufen
Zunächst legen wir zwei neue Systemvariablen an: HomeMatic Browser Admin Benutzerinterface -> Einstellungen -> Systemvariable -> Neu
Beide Variablen sind vom Variablentyp "Zahl". Der einen geben wir den Namen "tedeeLockState" und der anderen "tedeeBatteryLevel". Die Namen müssen exakt so lauten wir hier angegeben, da diese später vom Skript aus verändert werden.
Danach musst du ein neues Programm in der CCU anlegen: HomeMatic Browser Admin Benutzerinterface -> Programme und Verknüpfungen -> Programme & Zentralenverknüfung -> Neu
Wir nennen das Programm "tedee Callback". Die Bedingung lassen wir leer und bei Aktivität "Dann" geben wir folgenden Skript ein und verzögern den Skript um 2 Sekunden:
Code: Alles auswählen
string tedeebridgeip= "192.168.192.28";
string tedeelockid= "12345";
string tedeeapitoken = "1AbCDefGHIjK";
string timestamp;
system.Exec("date +'%s%3N' | tr -d '[:space:]'", & timestamp);
string tokenandtime= tedeeapitoken + timestamp;
string hash;
system.Exec("echo -n \"" + tokenandtime + "\" | sha256sum | awk '{print $1}' | tr -d '\n'", &hash);
string encryptedtoken;
system.Exec("echo -n \"" + hash + timestamp + "\" | tr -d '\n'", &encryptedtoken);
string stdout;
string stderr;
string url="http://" + tedeebridgeip + "/v1.0/lock/" + tedeelockid + "?api_token=" + encryptedtoken;
string command = "wget -q -O - '" + url + "'";
system.Exec(command, &stdout, &stderr);
WriteLine(stdout);
WriteLine(stderr);
integer start;
integer i;
start =stdout.Find("state");
start = start +7;
i=stdout.Substr(start,1);
dom.GetObject("tedeeLockState").State(i);
integer start2;
integer i2;
start2=stdout.Find("batteryLevel");
start2=start2+14;
i2=stdout.Substr(start2,2);
dom.GetObject("tedeeBatteryLevel").State(i2);
- string tedeebridgeip= "192.168.192.28"; Hier muss die IP-Adresse der Tedee Bridge eingetragen werden (siehe Aktivieren der Bridge-API)
- string tedeelockid= "12345"; Hier muss die Geräte-ID des gewünschten tedee lock´s eingetragen werden (siehe Aktivieren der Bridge-API)
- string tedeeapitoken= "1AbCDefGHIjK"; Hier muss der Token der Tedee Bridge-API eingetragen werden (siehe Aktivieren der Bridge-API)
- dom.GetObject("tedeeLockState").State(i);
- dom.GetObject("tedeeBatteryLevel").State(i2);
Um den Script nun bei Statusänderung des Schlosses ausführen zu lassen müssen wir das eben erstellte Programm von der Tedee Bridge ansteuern lassen. Hierfür benötigen wir die "program id" von dem tedee Callback Programm. Die finden wir in der Programmliste im XML-Api Addon:
HomeMatic Browser Admin Benutzerinterface -> Einstellungen -> Systemsteuerung -> Zusatzsoftware -> XML-API -> Einstellungen -> programlist.cgi
In meinem Beispiel lautet die Programm ID "1789".
Neben der Programm ID müssen wir auch noch einen Token zur Authentifizierung erstellen. Dafür wählen wir bei den XML-API Einstellungen den Punkt "tokenregister.cgi":
In meinem Beispiel bekommen wir den Token "wOnmJXMLKbEtmKKJ" zurück. Du kannst den Token jederzeit in der "tokenlist.cgi" nochmals einsehen.
Nun müssen wir die Informationen nur noch an die tedee Bridge übertragen. Dazu erstellen lassen wir einen Skript ausführen: HomeMatic Browser Admin Programme und Verknüpfungen -> Programme und Zentralenverknüfung -> Skript testen
Bei der Eingabe fügen wir nun folgenden Skript ein:
Code: Alles auswählen
string tedeebridgeip= "192.168.192.28";
string tedeelockid= "12345";
string token= "1AbCDefGHIjK";
string homematicccuip= "192.168.192.103";
string programid= "1789";
string xmlapitoken= "wOnmJXMLKbEtmKKJ";
string timestamp;
system.Exec("date +'%s%3N' | tr -d '[:space:]'", & timestamp);
string tokenandtime= token + timestamp;
string hash;
system.Exec("echo -n \"" + tokenandtime + "\" | sha256sum | awk '{print $1}' | tr -d '\n'", &hash);
string encryptedtoken;
system.Exec("echo -n \"" + hash + timestamp + "\" | tr -d '\n'", &encryptedtoken);
string url = "http://" + tedeebridgeip + "/v1.0/callback?api_token=" + encryptedtoken;
string stdout;
string stderr;
string requestBody = "{\"url\": \"http://"+ homematicccuip +"/config/xmlapi/runprogram.cgi?program_id="+programid+"&sid="+ xmlapitoken +"\", \"headers\": [{}]}";
string command = "curl -X POST -d '" + requestBody + "' -H 'Content-Type: application/json' '" + url + "'";
system.Exec(command, &stdout, &stderr);
WriteLine(stdout);
WriteLine(stderr);
- string tedeebridgeip= "192.168.192.28"; Hier muss die IP-Adresse der Tedee Bridge eingetragen werden (siehe Aktivieren der Bridge-API)
- string tedeelockid= "12345"; Hier muss die Geräte-ID des gewünschten tedee lock´s eingetragen werden (siehe Aktivieren der Bridge-API)
- string tedeeapitoken= "1AbCDefGHIjK"; Hier muss der Token der Tedee Bridge-API eingetragen werden (siehe Aktivieren der Bridge-API)
- string homematicccuip = "192.168.192.103"; Hier muss die IP-Adresse der HomeMatic CCU
- string programid = "1789"; Hier muss die Programm-ID des tedee Callback Programms eingetragen werden (siehe XML-API programlist.cgi)
- string xmlapitoken = "wOnmJXMLKbEtmKKJ"; Hier muss der Token der XML-API eingetragen werden (siehe XML-API tokenlist.cgi)
Die Variablen können folgende Werte von der Bridge bekommen:
tedeeLockState
- 0 - uncalibrated
- 1 - calibration
- 2 - open
- 3 - partially_open
- 4 - opening
- 5 - closing
- 6 - closed
- 7 - pull_spring
- 8 - pulling
- 9 - unknown
- 255 - unpulling
tedeeBatteryLevel
- 0-100 battery level in percentage
- 255 if battery level is not known
Die Werte kannst du dir nun in deine Visualisierung einbinden oder in einer Logik verwenden.
Bei Fragen gerne einfach schreiben.
Grüße
Stephan