Smartthings: Samsung Klimaanlage (Windfree) per IPS steuern | How To

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:

  1. Sich unter https://graph-eu01-euwest1.api.smartthings.com einloggen

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

  3. Seht euch dann unter https://graph-eu01-euwest1.api.smartthings.com die registrierten Geräte (My Devices) an.

  4. 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é

Sehr schön,

und vielen Dank André für deine Mühe.
Leider habe ich es noch nicht geschafft mich mit deiner Anleitung zu beschäftigen.
Habe mir zur Zeit zu viele andere Baustellen im IPS aufgemacht.
Im Sommer würde ich mich vermutlich eher unter Druck setzen.

Hoffe aber das ich es noch im Herbst hinbekommen.
Solange noch alles frisch im Kopf ist.

Melde mich sobald ich erste Ergebnisse habe.

Schönen Gruß
André

Hallo André,

nachdem ich die Tage ein wenig Zeit hatte, habe ich mir deine Skripte portiert und an mein System angepasst.
Funktionierte auf Anhieb, echt super Arbeit. Danke!

2 Probleme habe ich aber noch.
Die AirFlowDirection sowie WinFree Funktion lässt sich leider nicht steuern, die Windrichtung ist mir nicht so wichtig da ich diese sowieso kam verändere, allerdings die WinFree Funktion ist elementar da dies der Grund war warum ich mir diese Anlagen überhaut zugelegt habe, befehle werden gesendet, aber die Anlage reagiert auf die befehle nicht.

Weiterhin hast du ein Statusskript der die Variablen auf den aktuellen Betriebszustand bringt.
Hast du eine Möglichkeit diesen zu tickern oder fragst du den Status per Timer alle paar Minuten ab.
Ist ne Möglichkeit aber ein Ticker währe wohl die elegantere Lösung.
Ich überlege mit ggf. den Status per ifttt zu tickern. Leider ist der dienst recht unzuverlässig.

Gruß und nochmals Besten Dank
André

Hallo akay,

ich habe die Klimaanlage jetzt ein halbes Jahr nicht mehr in Betrieb gehabt. Insofern kann ich so spontan nicht testen.

Wenn ich mich recht entsinne funktionierte Windfree nur, wenn Cool eingestellt war, bin mir aber nicht sicher.

Aber mal als Trockenübung: im Script Commands stehen oben die Befehle für die einzelnen Funktioen. Übergeben werden sie per Control Commands. Es müsste setAcOptionalMode sein. Setze den JSON-String mal per Hand zusammen und teste mal mit Postman.

	
	case "WindFree": // off, windFree als Boolean
	    { 
		$Capability = "custom.airConditionerOptionalMode";
		$Command    = "setAcOptionalMode";
			 
		switch($Input)
			{
			case "0": // OFF
			
				$Arguments = '"off"';
			
			break;
			
			case "1": // WINDFREE
			
				$Arguments = '"windFree"';
			
			break;
			}
		}
	break;

$Message = '
{
  "commands": [
    {
      "component":  "'.$Component.'",
      "capability": "'.$Capability.'",
      "command":    "'.$Command.'",
      "arguments":  ['.$Arguments.']
    }
  ]
}
';

Ich sehe keine Möglichkeit für ein triggern, wenn Du z.B. per Handsender also nicht über das WF schaltest. Da wird ein Timerevent herhalten müssen.

Gruß

André

Hallo André,

danke ja wenn ich vorher auf cool stelle scheint die die WindFree-Funktion zu reagierten. Zumindest wird mir dies in der Samrthings App angezeigt. (Ich bein gerade nicht zuhause) Sehr seltsam ich dachte ich hätte dies schon getestet. Hauptsache es funktioniert jetzt.

Das triggern habe ich jetzt per Ifttt gelöst. Dort kann die Samsung Klima entweder über „SmartThings“ oder als „Samsung Room Air Conditioner“ angebunden werden. Es funktionieren dort zwar nur an oder aus Dies reicht aber aus um Symcon per Webhook eine Nachricht zu schicken das die Klimaanlage an gemacht wurde und dann dein Status Skript auszulösen.
Ansonsten wird das Statusskript alle 15 Minuten gestartet soweit eine Klimaanlage aktiv ist.
Damit sollte die Übersicht erhalten sein.

Ich werde am Wochenende noch dein Skript anpassen das der bei Schaltung der Windfree automatisch vorher auf Cool geht.
Anschließend die beiden anderen Windfree-Klimaanlagen noch einbinden.

Danke du hast mir sehr geholfen. Durch dein Skript dürfte die Anlage jetzt gut angebunden sein. Ich hoffe die Verbindung zu ifttt bleibt konstant und bricht nicht wieder ab. Dann steht einer weiteren Aufrüstung mit Samsung Klimaanlagen nur noch meine Geldbörse im Wege.

Besten Gruß
André

Hallo Andre,

erst einmal riesen Respekt vor der Programmierung und der ganzen Recherche!

Ich habe Dein Beispiel inzwische bei mir importiert. Es wurde auch alles angelgt, so wie in Deiner Anleitung beschrieben.
Leider scheint aber etwas nicht zu funktionieren. Es gibt keine Rückmeldung vom Gerät. Was aber klappt ist, wenn ich den Control off/on ausführe, dann schaltet sich das Gerät aus. Allerdings nicht wieder ein.

Allerdings wird dies bei mir damit zusammenhängen, dass ich 3 Splitgeräte habe. Ich habe zwar in den jeweiligen config-Dateien die ID und das secret eingetragen, aber ich vermute, dass dies nicht ausreicht, um die Geräte zu trennen.
Leider sind meine Programmierfähigkeiten sehr übersichtlich.

Könntest Du mir etwas Hilfestellung geben, was ich noch machen muss?

Viele Grüße

Markus

Hallo Markus,

ich schaue morgen mal, da ich bei mir 4 von den Geräten laufen habe und ich das vor 1 Jahr programmiert habe. Muss mich also erstmal selbst auffrischen :wink:

Den Token hast Du ja sicher auch hineinkopiert ? Geht es mit der App fürs Handy ? Ich frage, weil die Samsungs ein unnützes WLAN-Modul verbaut haben, welches häufig die Verbindung verliert und man neu hochfahren muss.

Gruß André

Gesendet von meinem SM-N960F mit Tapatalk

Hallo Andre,

danke für die schnelle Antwort! Ja, den Token habe ich auch eingefügt. Ich war gestern auch etwas vorschnell. Ich bekomme doch eine Rückmeldung von der Anlage. Was aber wie gesagt nicht klappt, ist mehrere Geräte zu steuern.

Und Du hast Recht, das WLAN-Modul von Samsung ist totaler Schrott. Es verliert dauernd die Verbindung.

Viele Grüße

Markus

Hallo Markus,

bist Du weiter gekommen?

Erweitere das Config Array um die 2 weiteren Anlagen und erzeuge 2 Kopien der Kategorie Arbeitszimmer die Du dann wie im Array benennst.

Gruß André

Moin,

Ich habe in der SmartThings App einen Kühlschrank und einen Fernseher. Die Geräte würde ich ebenfalls gerne über IPS steuern, naja den Kühlschrank eher überwachen.
Kann man helfen, bin leider noch sehr unerfahren im Bereicj Symcon.

Bin ebenfalls interessiert.

Hallo, bin auch daran Interesse eine Waschmaschine in IPS zu überwachen.
Ist hier sxhon jemand weiter gekommen?

Hallo André, Hut ab für deine Arbeit. Ich habe dies heute nach deiner Anleitung für meine 5 Klimageräte installiert. Es hat auf Anhieb funktioniert.

Das Einzige, was leider nicht funktioniert, ist die „Airflowdirection“. Ich habe bei Samsung nachgeschaut, ich finde nur die Funktion „fanOscillationMode“. Diese kann durch SetfanOscillationMode verändert werden. Es stehen hier sehr viele Modes zur Verfügung. Unter anderem aber auch deine vorgegebenen.

Ich habe das script control commands dahingehend abgeändert. Leider bekomme ich immer die Meldung „Error“ Befehl nicht gesendet. gibt es eine Möglichkeit den Code zu debuggen? Bin noch totaler Neuling hier!

Danke für die Info. LG Erich

Guten Morgen,

vielen Dank für deine Mühe!

Ich wollte heute auch (endlich) meine Klimaanlage in IPS integrieren.
Allerdings scheitere ich daran, dass beide Wärmetauscher keine Network-ID hinterlegt haben:

Muss ich in der Handy-App noch irgendeine Einstellung vornehmen, dass online die Network ID generiert wird?

Viele Grüße

Wärmetauscher ist doch das Aussengerät?! Die haben keine IP.
Gruß, Peter

Hm ne, bei mir bekomme ich nur die beiden innenliegenden Geräte angezeigt, welche in zwei Räumen verbaut sind und auch die korrekte Bezeichnung tragen, welche in der Handy-App definiert worden ist.
Das Außengerät erscheint in der Smartthings-Anzeige überhaupt nicht.

Hallo,

schau mal bitte unter

http://my.smartthings.com/advanced

nach. Die Website hat sich geändert.

VG André

für die Abfrage der Stati bzw. senden von Kommandos brauchst du doch nur die Device-ID (kommt in die URL) und den Access-Token (kommt ins curl).
Benutzt du die Scripte von DigiHouse? Ich habe mir die Scripte selbst zusammengestellt, damit ich das System auch verstehe.
Gruß, Peter

auf der Seite war ich und habe ich die obigen Screenshots her - leider ist keine Network ID hinterlegt: