- Offizieller Beitrag
©2020 Stefan K. (alias 66er)
Heute kann ich Euch die Einbindung des Temperatur Addon mit Sensor DHT22 auf Shelly1 vorstellen.
Voraussetzung:
Die Kopplung setzt eine bestehende Einbindung eines Shelly1 nach dieser Anleitung voraus. Auf Shelly1 ist sie getestet, sollte aber auch 1:1 auf dem Shelly1PM funktionieren (ohne Gewähr) .
Umsetzung:
Zunächst brauchen wir für die Werte "Temperatur" und "Luftfeuchte" des Addon je 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:
!Skript V1.0 zur Werteaktualisierung des Temp-Addon mit 1x DHT22 mit Originalfirmware (c)2020 by 66er (alias Stefan K.)
!***********************************************************************
!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.1.150/status"; ! IP-Adresse des Shelly mit Temp-Addon anpassen
var execta = "CUxD.CUX2801001:2"; ! Adresse und Kanal des CUxD-Exec-Device angeben
!Setup der SYSTEMVARIABLEN
var temp = "Shelly-TA_aussen_Temp"; !Name der Systemvariablen für die Temperatur anpassen
var hum = "Shelly-TA_aussen_Lf"; ! Name der Systemvariablen für die Luftfeuchte anpassen
!Setup der OFFSET-Werte
!*** OFFSET Werte unbedingt im Format x.x (Punkt statt Komma!) eingeben
var offsettemp = "0.0"; ! Offset Temperatur
var offsethum = "0.0"; ! Offset Luftfeuchte
!****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);
! Auslesen Temperatur
string word = "tC";
integer word_laenge = word.Length();
integer word_position = Antwort.Find(word);
string daten = Antwort.Substr((word_position + word_laenge +2), 4);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -3));
WriteLine(daten); ! = Temperatur
t = daten.ToFloat() + offsettemp;
!WriteLine(t);
! Auslesen Luftfeuchte
string word = "hum";
integer word_laenge = word.Length();
integer word_position = Antwort.Find(word);
string daten = Antwort.Substr((word_position + word_laenge +19), 5);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -3));
!WriteLine(daten); ! = Luftfeuchte
var h = daten.ToFloat() + offsethum;
!WriteLine(h);
!Werte in Variablen schreiben
dom.GetObject(""#temp#"").State(t);
dom.GetObject(""#hum#"").State(h);
! Ende Skript
Alles anzeigen
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