©2020 SparkyMaster - ausführlicher Hinweis dazu am Ende der Anleitung
Aktualisierung des Schaltstatus:
Besten Dank für das Skript!
hier mal eine vereinfachte Version, in der man nur im Kopf die Konfigurationen vornehmen muss:
Code
!geänderte version von @jungloewe am 03.06.22, basiert auf:
!Skript zur Statusaktualisierung Shelly 4Pro mit Originalfirmware als 4-fach Schalter (by SparkyMaster 1.0)
!*************************************************************************************
!***** Ab hier die persönlichen Einstellungen vornehmen:
!*****
!***** IP des Shelly ****
string ip = "192.168.178.175";
!***** CUxD-Exec-Geräteadresse ****
string cuxd = "CUX2801002:2";
!***** Schalteradressen des Shelly ****
string list = ("CUX4000004:13\tCUX4000004:14\tCUX4000004:15\tCUX4000004:16");
!*************************************************************************************
string obj; ! Kanalvariable
integer idx = 0; ! Indexvariable
!WriteLine("Kanalliste: "#list)
foreach (obj, list) {
!***** Schaltstatus auslesen Schalter n ****
var url = "http://"#ip#"/relay/"#idx#"/status";
dom.GetObject("CUxD."#cuxd#".CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject("CUxD."#cuxd#".CMD_QUERY_RET").State(1);
string Antwort = dom.GetObject("CUxD."#cuxd#".CMD_RETS").State();
dom.GetObject("CUxD."#cuxd#".CMD_SETS").State("0");
!WriteLine("Antwort:"#Antwort);
string word = "ison:";
integer word_laenge = word.Length();
integer word_position = Antwort.Find(word);
boolean daten = Antwort.Substr((word_position + word_laenge +5), 5).StartsWith("true");
!**** Zustand des Kanals erkennen ****
boolean zustand = dom.GetObject("CUxD."#obj#".STATE").State();
WriteLine("Soll "#idx#": '"#daten#"' / Ist: '"#zustand#"'");
!**** Bei Bedarf aktualisieren ****
if ((daten == true) && (zustand == false)) {
dom.GetObject("CUxD."#obj#".SET_STATE").State(1);
WriteLine("Set ON");
}
if ((daten == false) && (zustand == true)) {
dom.GetObject("CUxD."#obj#".SET_STATE").State(0);
WriteLine("Set off");
}
idx = idx+1;
}
!Ende Skript
Alles anzeigen