- Offizieller Beitrag
Nach einer "heißen" Diskussion um die Gesamtleistungsanzeige in diesem Thread, komme ich der Bitte um Integration in Homematic als Option gerne nach.
Jedoch möchte ich ausdrücklich darauf hinweisen, dass der Wert der Gesamtleistung im Shelly mit jeden Reboot auf "0" gesetzt wird!
Außerdem weichen Werte und Einheiten in der APP (Cloud) von den im Shelly selbst gespeicherten ab.
Wir brauchen 2 Variablen für die Leistungswerte:
Diese werden, wie schon aus dem Thread zur Kopplung bekannt, mit dem zugehörigen CUxD-Kanal des Shelly2.5 verknüpft.
In das Programm zur Statusaktualisierung wird dann noch eine 3. DANN-Zeile eingefügt und das folgende Skript ausgeführt:
Code
!Skript zur Gesamt-Leistungsaktualisierung je Kanal Shelly2.5 als Schaltaktor mit Originalfirmware (by 66er V2.5.1LG)
!Raumbezeichnung (nur zur Orientierung, ggf anpassen)
!****Abfrage des Shelly2.5 Kanal 1*****
!In der folgenden Zeile IP des Shelly2 anpassen!
var url = "http://192.168.1.131/meter/0?status";
!In den folgenden Zeilen die CUxD-Exec-Kanal anpassen (hier: 2801001:3)
dom.GetObject("CUxD.CUX2801001:3.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:3.CMD_QUERY_RET").State(1);
string Antwort = dom.GetObject("CUxD.CUX2801001:3.CMD_RETS").State();
string t = dom.GetObject("CUxD.CUX2801001:3.CMD_RETS").State();
dom.GetObject("CUxD.CUX2801001:3.CMD_SETS").State("0");
WriteLine(Antwort);
WriteLine(t);
!****Auswertung des Antwortstrings ****
!Hier NICHTS ändern
string s;
foreach (s,t.Split (",")) {
if (s.LTrim ("{").StartsWith ('"total"')) {
string e = (s.StrValueByIndex (":",1).RTrim ("}"));
WriteLine(e);
real eb = e.ToFloat();
WriteLine(eb)
}
}
!**** Variable setzen****
!Variablennamen anpassen (hier: Test_Gesamtleistung_K1)
dom.GetObject("Test_Gesamtleistung_K1").State(eb/60000);
!****Abfrage des Shelly2.5 Kanal 2*****
!In der folgenden Zeile IP des Shelly2 anpassen!
var url = "http://192.168.1.131/meter/1?status";
!In den folgenden Zeilen die CUxD-Exec-Kanal anpassen (hier: 2801001:3)
dom.GetObject("CUxD.CUX2801001:3.CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD.CUX2801001:3.CMD_QUERY_RET").State(1);
string Antwort = dom.GetObject("CUxD.CUX2801001:3.CMD_RETS").State();
string t = dom.GetObject("CUxD.CUX2801001:3.CMD_RETS").State();
dom.GetObject("CUxD.CUX2801001:3.CMD_SETS").State("0");
WriteLine(Antwort);
WriteLine(t);
!****Auswertung des Antwortstrings ****
!Hier NICHTS ändern
string s;
foreach (s,t.Split (",")) {
if (s.LTrim ("{").StartsWith ('"total"')) {
string e = (s.StrValueByIndex (":",1).RTrim ("}"));
WriteLine(e);
real eb = e.ToFloat();
WriteLine(eb)
}
}
!**** Variable setzen****
!Variablennamen anpassen (hier: Test_Gesamtleistung_K2)
dom.GetObject("Test_Gesamtleistung_K2").State(eb/60000);
!Ende Skript
Alles anzeigen
Verbrauchswerte <0,01kwh werden als "0,00" in der Sysvar dargestellt!
Viel Spass damit.