©2020 SparkyMaster - ausführlicher Hinweis dazu am Ende der Anleitung
Optionale Anzeigen:
2. aktuelle Leistungsanzeige:
wertet die Leistung jedes Shelly 4Pro-Kanals aus, zeigt sie im CUxD-Gerät an und natürlich kann der Wert auch in Programmen genutzt werden.
Dazu brauchen wir 4 Systemvariable für den aktuellen Leistungswert:
4Pro_Leistung.png
Die Variablen werden dem entsprechenden Kanal des Shelly-CUxD-Gerätes zugeordnet. Dadurch werden sie wie im Bild 1 in #1 sichtbar.
In das Programm zur Statusaktualisierung (siehe Bild in #2) fügen wir nun eine 2. DANN Zeile zur Aktualisierung der Leistungsdaten ein.
Achtung:
Die Namen der Systemvariablen dürfen keine Leerzeichen und keine Umlaute enthalten!
Das Skript dazu:
!Skript V1.1 zur Leistungsaktualisierung des Shelly 4Pro mit Originalfirmware (c)2020 by SparkyMaster
!***********************************************************************
!Ein Dank an alchy aus dem Homematic-Forum. Ich setze zur Auswertung einen von Ihm veröffentlichten Code mit ein, den ich mit genialer Hilfe von 66er (auch hier mein Dank!) angepasst habe.
!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.178.43/status"; ! IP-Adresse des Shelly 4Pro anpassen
var execta = "CUxD.CUX2801003:2"; ! Adresse und Kanal des CUxD-Exec-Device angeben
!Setup der SYSTEMVARIABLEN
var power0 = "Shelly_4Pro_Leistung1"; !Name der Systemvariablen anpassen
var power1 = "Shelly_4Pro_Leistung2"; !Name der Systemvariablen anpassen
var power2 = "Shelly_4Pro_Leistung3"; !Name der Systemvariablen anpassen
var power3 = "Shelly_4Pro_Leistung4"; !Name der Systemvariablen anpassen
!Setup Anzahl Kanal
var anzahls = "4" ; ! erlaubt sind die Zahlen 1 bis 4
!****ENDE SETUP ********ENDE SETUP ********ENDE SETUP ******
!*****Ab hier NICHTS MEHR ÄNDERN *****
!****Abfrage des Shelly 4Pro****
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 p = 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 SparkyMaster (mit genialer Hilfe von 66er)
string output = Antwort;
!WriteLine(output);
string part; string code;string slist;integer collect = -1;
foreach (part, output.Split("{")){
collect = part.Find("power");
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 p1 = slist.StrValueByIndex("/", 4);
var p2 = slist.StrValueByIndex("/", 5);
var p3 = slist.StrValueByIndex("/", 6);
var p4 = slist.StrValueByIndex("/", 7);
!WriteLine(p1);
!WriteLine(p2);
!WriteLine(p3);
!WriteLine(p4);
!Werte in Systemvariablen schreiben
dom.GetObject(""#power0#"").State(p1);
if ((anzahls) == 1) { quit; };
dom.GetObject(""#power1#"").State(p2);
if ((anzahls) == 2) { quit; };
dom.GetObject(""#power2#"").State(p3);
if ((anzahls) == 3) { quit; };
dom.GetObject(""#power3#"").State(p4);
!WriteLine("Skript beendet")
!Ende Skript
Alles anzeigen
Gemäß den Hinweisen im Skript sind anzupassen:
IP des Shelly 4Pro
CUxD-Exec-Kanal
Systemvariablen
Im eingestellten Intervall des Timers wird nun die aktuelle Leistung aktualisiert.
Viel Erfolg !
____________________________________________________________
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 SparkyMaster