Hallo Gemeinde,
nach Rückfragen aus meinem anderen Thread https://www.symcon.de/forum/threads/41187-Smartthings-Integration?p=406312#post406312 habe ich mir mal die Mühe gemacht, ein How To zu dem Weg zusammen zu stellen, wie ich meine Samsung Klimaanlage (Windfree) über IPS steuere.
Ich betreibe seit Juli 4 Samsung Windfree Klimageräte, welche als Smartthings eine WLAN-Anbindung haben und nicht nur per Fernbedienung, sondern auch per App gesteuert werden können. Warum letzteres also nicht für IPS nutzen ?
Die richtigen Befehle herauszufinden war etwas tricky, aber bei mir funktioniert es mittlerweile, wie ich es mir wünsche. Ein kleiner Haken ist, dass man online über die Smartthings-Server gehen muss. Wer die App aktiviert und somit einen Samsung Smartthings Account freigeschaltet hat, ist bewusst diesen Weg aber schon gegangen. Die Geräte sind dann dort eingepflegt und damit online verfügbar. Wer sie noch nicht angemeldet hat muss dies also dazu noch tun. Ein lokaler Weg wäre zwar schön, aber da ist im Netz nichts zu finden. Der Traffic geht a.e. über TCP, aber das wäre mir zu aufwändig, da etwas zu entwickeln.
Beispielinstallation:
Ich habe euch eine kleine Beispielinstallation für ein Gerät zusammengestellt. Für Backups einzelner Objektbäume der Verwaltungskonsole hatte ich mir einen IPS 5.X-kompatiblen Exporter geschrieben nachdem der von Raketenschnecke nicht mehr funktionierte.
Klimaanlage-Beispielinstallation.zip (16.6 KB)
Nehmt dazu Backup_Klimaanlage-Beispiel.bak und kopiert sie in ein Verzeichnis z.B. D:/IP-Symcon Backup. Das Restore-Script habe ich zumindest so voreingestellt. Führt das Restore-Script an irgendeinem Ort in der Verwaltungskonsole (ja, ich benutze immer noch die Legacy) aus. Es wird unter Root ein Objektbaum Klimaanlage und ein WF-Item angelegt.
Das sollte so aussehen:
Jetzt brauchen wir den Zugang zu den Geräten. Vorraussetzung ist ein Samsung Smartthings - Account, den ihr aber bei App-Steuerung schon angelegt habt. Was ist also zu tun:
-
Sich unter https://graph-eu01-euwest1.api.smartthings.com einloggen
-
Unter https://account.smartthings.com/tokens/new einen Token erstellen und dabei alles ankreuzen. Der ist wichtig, da ihr Euch sonst nicht authentifizieren könnt. Tragt ihn in das Config – Script (wie auch unter 4) ein.
-
Seht euch dann unter https://graph-eu01-euwest1.api.smartthings.com die registrierten Geräte (My Devices) an.
-
Klickt auf eines und kopiert 1. die „Device Network Id“ und 2. unter States „di“ (das ist die Secret-ID) in das Config-Script (im Objektbaum direkt unter Klimaanlage – Beispiel) ein:
Wenn alles gut gegangen ist, solltet ihr jetzt das Gerät bedienen können. Bei Fehler prüft bitte in Command, ob in Zeile 127 die $WFC_ID richtig ist.
Wenn es nicht auf Anhieb funktioniert, kann ich Euch nur trösten, dass ich auch fast 6 Wochen dafür gebraucht habe, da die Doku recht undurchsichtig ist. Wenn man aber erstmal einen Faden gefunden hat, war es ganz leicht.
Das Prinzip:
Die Formen der Befehle habe ich nach einigen Recherchen der Device-Capabilities unter Control-Commands zusammengestellt.
Statusabfragen gehen über GET und Befehle über POST. Das Ganze als JSON über CURL. Primär getestet hatte ich das alles über Postman.
Der Befehl zur Temperatursteuerung sieht z.B. so aus:
{
"commands": [
{
"component": "main",
"capability": "thermostatCoolingSetpoint",
"command": "setCoolingSetpoint",
"arguments": [25]
}
]
}
ON/OFF geht z.B. über:
{
"commands": [
{
"component": "main",
"capability": "switch",
"command": "off"
}
]
}
Das jeweils als POST an: https://api.smartthings.com/v1/devices/>Die Secret-ID des Gerätes</commands
Vielleicht bekommt ihr ja noch den Befehl für den Ionisierungsmodus (Tannenbaum auf der Fernbedienung) oder zum Dustsensor heraus.
Hier noch zwei nützliche Links:
https://docs.smartthings.com/en/latest/capabilities-reference.html#id67
https://docs.smartthings.com/en/latest/ref-docs/device-handler-ref.html
Im Winter werde ich mal noch an meiner Weboberfläche (als iFrame) weiter feilen. Die sieht im Moment so aus, wobei die 4 Geräte dann nebeneinander zu sehen sein sollen:
Ich denke, dass man analog mit diesem Vorgehen auch andere Smartthings steuern kann.
Gruß André