-
Autor
Hi 66er,
ich hoffe das ich die Frage auch hier stellen darf die Themen bzgl TempAddon sind alle geschlossen, wenn ich richtig geschaut habe.
Ich Habe wie im anderen Beitrag bereits geklärt 4 Shelly's für die Bewässerung installiert. Der 1. hat das Addon bekommen mit ein DHT21 (DHT22). In der Shelly App sehe ich die Temperatur und Humidity. Jetzt möchte ich diese Werte natürlich in Homematic abbilden, dafür hast du ja ein Skript, zumindest für die Temperatur (ShellyVersion 1.10.X also das Skript ab >1.7)
Hier mein geänderter code noch ohne Auslesen und schreiben vom
!Skript V4.1.0 zur Temperaturaktualisierung des Temp-Addon mit Originalfirmware ab Shelly-Firmware 1.7.0 (c)2020 by 66er (alias Stefan K.) bei Verwendung von 1-3 Temperatursensoren DS18B20
!***********************************************************************
!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.278.23/status"; ! IP-Adresse des Shelly mit Temp-Addon anpassen
var execta = "CUxD.CUX4000001:3"; ! Adresse und Kanal des CUxD-Exec-Device angeben
!Setup der SYSTEMVARIABLEN
var temp0 = "Shelly_Temp_Garten"; !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 = "1" ; ! 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(",",1)).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
Shelly IP ist http://192.168.178.23/status
Abfrage klappt auch im Browser.
Programm in Homematic siehe Bild.
Ebenfalls das Gerät mit den dazugehörigen Systemvariablen.
Offset muss ich doch nur verwenden wenn ich ein Korrigierten Wert haben möchte, den ich nicht benötige richtig? Ansonsten bin ich sehr ratlos ehrlich gesagt.
Danke und schön Sonntag Dennis