- Offizieller Beitrag
©2020 Stefan K. (alias 66er)
Heute kann ich Euch die Einbindung des Temperatur Addon mit 1-3 Sensoren DS18B20 auf Shelly1 vorstellen.
Vielen Dank an neo-v für die freundliche Unterstützung, die Verwendungsfreigabe Deiner Bilder und das Testen.
Bildschirmfoto vom 2020-02-02 09-40-34.png
Quelle: neo-v
Voraussetzung:
Die Kopplung setzt eine bestehende Einbindung eines Shelly1 nach dieser Anleitung voraus. Auf Shelly1 ist sie getestet, sollte funktioniert aber auch 1:1 auf dem Shelly1PM funktionieren (ohne Gewähr) . Lediglich sind beim 1PM die Werte von Sensor 1 und Sensor 2 vertauscht (, da sie im Antwortstring vertauscht gesendet werden).
Umsetzung:
Zunächst brauchen wir für jeden Kanal des Addon eine Sytemvariable, die mit dem entsprechenden Shelly1 verknüpft wird.
Die Variablennamen könnt Ihr frei wählen, aber sie dürfen keine Leerzeichen enthalten!
Nun braucht es nur noch ein Skript, welches im Aktualisierungsprogramm (siehe Kopplungsanleitung Shelly1) als weitere DANN-Zeile eingefügt wird:
Ab Firmware 1.7.0 findet Ihr das passende Skript hier!
Dieses Skript läuft nur mit Shelly-Firmware <V1.7.0!
!Skript V3.1.3 zur Temperaturaktualisierung des Temp-Addon mit Originalfirmware (c)2020 by 66er (alias Stefan K.)
!***********************************************************************
!Mein Dank an alchy aus dem Homematic-Forum. Ich setze zur Auswertung einen von Ihm veröffentlichten Code mit ein, der von mir angepasst wurde.
!Quelle des Originalcode:https://homematic-forum.de/for…&t=43632&p=435194#p435194
!***********************************************************************
!Raumbezeichnung (nur zur Orientierung, ggf anpassen)
!**** SETUP ******** SETUP ******** SETUP ******** SETUP ***
! ACHTUNG: Beim Anpassen der Adressen keine "" löschen!
! Setup der CUxD-GERÄTE
var url = "http://192.168.5.125/status"; ! IP-Adresse des Shelly mit Temp-Addon anpassen
var execta = "CUxD.CUX2801001:1"; ! Adresse und Kanal des CUxD-Exec-Device angeben
!Setup der SYSTEMVARIABLEN
var temp0 = "Shelly-TA_0"; !Name der Systemvariablen anpassen
var temp1 = "Shelly-TA_1"; ! Name der Systemvariablen anpassen
var temp2 = "Shelly-TA_2"; !Name der Systemvariablen anpassen
!Setup der OFFSET-Werte
!*** OFFSET Werte unbedingt im Format x.x (Punkt statt Komma!) eingeben
var offset1 = "0.0"; ! Sensor 1
var offset2 = "0.0"; ! Sensor 2
var offset3 = "0.0"; ! Sensor 3
!Setup Anzahl angeschlossene Sensoren
var anzahls = "3" ; ! erlaubt sind die Zahlen 1 bis 3
!****ENDE SETUP ********ENDE SETUP ********ENDE SETUP ******
!*****Ab hier NICHTS MEHR ÄNDERN *****
!****Abfrage des Temp-Addon****
dom.GetObject(""#execta#".CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject(""#execta#".CMD_QUERY_RET").State(1);
string Antwort = dom.GetObject(""#execta#".CMD_RETS").State();
string t = dom.GetObject(""#execta#".CMD_RETS").State();
dom.GetObject(""#execta#".CMD_SETS").State("0");
!WriteLine(Antwort);
!JSON String nach Vorgaben auslesen
! v0.2 (c) by Alchy und angepasst von 66er
string output = Antwort;
!WriteLine(output);
string part; string code;string slist;integer collect = -1;
foreach (part, output.Split("{")){
collect = part.Find("tC");
if (collect>-1){
code = ((part.StrValueByIndex(",",0)).StrValueByIndex(":",1));
code = code.Substr(0, code.Length()-1);
slist = slist#code#"/";
}}
!WriteLine(slist);
! Ergebnis in Einzelwerte auflösen
var t1 = slist.StrValueByIndex("/", 0);
var t2 = slist.StrValueByIndex("/", 1);
var t3 = slist.StrValueByIndex("/", 2);
!WriteLine(t1);
!WriteLine(t2);
!WriteLine(t3);
!um OFFSET korrigieren
real t1r = t1.ToFloat();
!WriteLine(t1r);
t1 = t1r + offset1;
!WriteLine(t1);
real t2r = t2.ToFloat();
!WriteLine(t2r);
t2 = t2r + offset2;
!WriteLine(t2);
real t3r = t3.ToFloat();
!WriteLine(t3r);
t3 = t3r + offset3;
!WriteLine(t3);
!Werte in Systemvariablen schreiben
dom.GetObject(""#temp0#"").State(t1);
if ((anzahls) == 1) { quit; };
dom.GetObject(""#temp1#"").State(t2);
if ((anzahls) == 2) { quit; };
dom.GetObject(""#temp2#"").State(t3);
!WriteLine("Skript beendet")
!Ende Skript
Alles anzeigen
An dieser Stelle nochmal meinen großen Dank an die Betatester neo-v und schote .
Ich empfehle ausdrücklich, im Aktualisierungsprogramm den Onlinestatus des Shelly1 im WENN mit einzubinden, damit das Skript nur ausgeführt wird, wenn der Shelly Online ist. Ansonsten kann es zu Verzögerungen im Gesamtablauf der Homematic-Installation kommen!
Viel Spass damit.
___________________________________________
Die Anleitung inkl. der Skripte und Bilder unterliegt dem Urheberrecht. Wer gegen das Urheberrecht verstößt (z.B. Bilder oder Texte unerlaubt kopiert und auf anderen Webseiten publiziert), macht sich gem. §§ 106 ff UrhG strafbar, kann zudem kostenpflichtig abgemahnt werden und muss Schadensersatz leisten (§ 97 UrhG).
© 2020 Stefan K. (alias 66er)
Alle Rechte vorbehalten