Durch den Einsatz von ioBroker habe ich bei dem dem Shelly CoIoT peer aktiviert sowie ein Benutzer mit Passwort festgelegt.
Nun bekomme ich irgendwie keine Daten mehr auf mein CuxD Gerät...
Anbei mal ein Screenshot des CuxD, sowie nachfolgend das Script.
Hatte ich bei den Adressen einen Fehler? Vor lazuter testen weiss ich eh nicht mehr was ich da vorher mal hatte...
Code: Alles auswählen
var execshpl = "CUxD.CUX2801002:3" ! CUxD-Exec-Device angeben
var shplcuxd = "CUxD.CUX2801002:3" ! CUxD-Device für den Shelly PlugS anpassen
Code: Alles auswählen
! Skript V2.2.2 PlugS Heizung ---------------------------------------
! zur Einbindung Shelly PlugS mit Originalfirmware (c) 2021 by 66er (alias Stefan K.)
! Alle Rechte vorbehalten!
! Publiziert und Updates auf https://www.shelly-support.eu/forum/index.php?board/145-homematic/
! entwickelt und getestet auf PlugS-Firmware 1.9.0, 1.9.3 und 1.11.2
! jede Funktion optional aktivierbar, automatische Homematic-SV-Erstellung, Onlinestatus-Prüfung optional integriert
! Versionsdatum: 09.12.2021
! NEU: Systemvariablen werden autom. dem CUxD-Schalter-Kanal zugeordnet
! BITTE BEACHTEN:
! Dieses Skript legt ggf. selbstständig zusätzliche Systemvariablen auf Deiner Homematic-Zentrale an!
! Das vermeidet Inkonsistenzen und eine temporäre Blockade der CCU durch das Skript.
! Ausserdem erspart es Dir das manuelle Anlegen benötigter Systemvariablen.
! Wer das nicht möchte, kann dieses Skript leider nicht nutzen!
! Die Nutzung des Skriptes erfolgt auf eigenes Risiko.
! Aus der Nutzung entsteht kein Rechtsanspruch auf Suppport oder Fehlerbeseitigung durch den Autor.
! Der Autor haftet nicht für eventuelle Folgen der Nutzung auf der Homematic-Zentrale des Nutzers.
! Das Skript ist ausführlich getestet und sollte problemlos funktionieren.
! Bezeichnung: PlugS Heizung (kann angepasst werden, dient nur zur Orientierung)
!**** SETUP ******** SETUP ******** SETUP ******** SETUP ***
! ACHTUNG: Beim Anpassen der Adressen keine "" löschen!
! Setup Shelly PlugS
var shplip = "192.168.178.92" ; ! IP des Shelly PlugS anpassen
var shplname = "ShellyPlugS_HZG" ; ! Name des Shelly PlugS anpassen (daraus werden ggf. automatisch weitere Variablennamen erzeugt
var shplrl = "N" ; ! Ist Restrict Login im Shelly aktiv, dann auf "J" setzen
var shplbn = "meinBenutzer" ; ! Ist Restrict login auf J, dann Benutzername anpassen
var shplpw = "meinPasswort" ; ! Ist Restrict login auf J, dann Passwort anpassen, keine Sonderzeichen
! Setup der CUxD-GERÄTE
var execshpl = "CUxD.CUX2801002:3"; ! Adresse und Kanal des CUxD-Exec-Device angeben
var shplcuxd = "CUxD.CUX2801002:3" ; ! Adresse und Kanal des CUxD-Device für den Shelly PlugS anpassen
! Setup Online-Status
var shplonl = "J" ; ! Variable für Onlinezustandsüberwachung, falls nicht gewünscht, auf "N" setzen""
! Setup Aktualisierungsumfang
var shplstat = "J" ; ! Status EIN oder AUS wird durch das Skript aktualisiert, wenn nicht gewünscht auf "N" setzen
var shplvba = "J" ; ! aktuelle Verbrauchsanzeige, wenn nicht gewünscht auf "N" setzen
!****ENDE SETUP ********ENDE SETUP ********ENDE SETUP ******
!*****Ab hier NICHTS MEHR ÄNDERN ***************************
! Variable für Onlinestatus prüfen,ggf.anlegen
if (shplonl == "J") {
var shplonln = shplname + "_Online-Status_" ;
! WriteLine(shplonln) ;
string sName= ""#shplonln#""; ! Onlinestatus
if (!dom.GetObject (ID_SYSTEM_VARIABLES).Get (sName)) {
object svObj = dom.CreateObject(OT_VARDP,sName);
svObj.DPInfo("autom. angelegt durch Skript Shelly PlugS");
svObj.ValueUnit("");
dom.GetObject (ID_SYSTEM_VARIABLES).Add(svObj);
svObj.ValueType(ivtBinary);
svObj.ValueSubType(istBool);
svObj.ValueName0("Offline");
svObj.ValueName1("Online");
svObj.State (true);!SCNR = SHP22266R
dom.RTUpdate(0);
object oChan= channels.Get (""#shplname#"");
object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (""#shplonln#"");
oChan.DPs().Add (oSys);
oSys.Channel (oChan.ID() );
}
! Onlineabfrage und setzen des Status
string stderr;
string stdout;
integer Status;
system.Exec("ping -c 1 '"#shplip#"'", &stdout, &stderr);
Status = stdout.Find("ms");
!WriteLine(Status);
if (((shplonl ) == "J" ) && ((Status) == -1)) {
WriteLine("Shelly1 ist offline");
dom.GetObject (""#shplonln#"").State(0);
quit; ! Programmabbruch bei Shelly offline
}
if ((shplonl ) == "J" ) {
dom.GetObject (""#shplonln#"").State(1);
WriteLine("Shelly PlugS ist online");
}
}
!*******************************************************************************
!***** Werte-Abfrage des PlugS *****
if (shplstat == "J"){
var url = "http://" + shplip + "/relay/0/status" ;
!WriteLine(url);
if (shplrl == "J") {
var url = "http://" + shplbn + ":" + shplpw + "@" +shplip + "/relay/0/status" ;
!WriteLine(url);
}
dom.GetObject(""#execshpl#".CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject(""#execshpl#".CMD_QUERY_RET").State(1);
string Antwort = dom.GetObject(""#execshpl#".CMD_RETS").State();
dom.GetObject(""#execshpl#".CMD_SETS").State("0");
!WriteLine(Antwort);
string word = "ison:";
integer word_laenge = word.Length();
integer word_position = Antwort.Find(word);
string daten = Antwort.Substr((word_position + word_laenge +4), 5);
integer word_position = daten.Find(word);
daten = daten.Substr(0, (word_position -3));
!WriteLine(daten);
var zustand = dom.GetObject(""#shplcuxd#".STATE").State();
!WriteLine(zustand);
if (daten == "true,")
{dom.GetObject(""#shplcuxd#".SET_STATE").State(1);
!WriteLine("PlugS ist eingeschaltet");
}
if (daten == "false")
{
dom.GetObject(""#shplcuxd#".SET_STATE").State(0);
!WriteLine("PlugS ist aus");
}
}
!*************************************************************************
! Leistung
if (shplvba == "J") {
!Variable prüfen, ggf. anlegen
string shplvban;
shplvban = shplname + "_Leistung" ;
string sName= ""#shplvban#"";
if (!dom.GetObject (ID_SYSTEM_VARIABLES).Get (sName)) {
object svObj = dom.CreateObject(OT_VARDP,sName);
svObj.DPInfo("autom. angelegt durch Skript Shelly PlugS");
svObj.ValueUnit("W");
dom.GetObject (ID_SYSTEM_VARIABLES).Add(svObj);
svObj.ValueType(ivtFloat);
svObj.ValueSubType(istGeneric);
svObj.ValueMin(0);
svObj.ValueMax(3500);
svObj.State (0);!SCNR = SHP22266R
dom.RTUpdate(0);
object oChan= channels.Get (""#shplname#"");
object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (""#shplvban#"");
oChan.DPs().Add (oSys);
oSys.Channel (oChan.ID() );
}
var url2 = "http://" + shplip + "/meter/0?status" ;
!WriteLine(url2);
if (shplrl == "J") {
var url2 = "http://" + shplbn + ":" + shplpw + "@" +shplip + "/meter/0?status" ;
WriteLine(url2);
}
dom.GetObject(""#execshpl#".CMD_SETS").State("wget -q -O - '"#url2#"'");
dom.GetObject(""#execshpl#".CMD_QUERY_RET").State(1);
string Antwort = dom.GetObject(""#execshpl#".CMD_RETS").State();
dom.GetObject(""#execshpl#".CMD_SETS").State("0");
!WriteLine(Antwort);
string t;
t = Antwort;
!WriteLine(t);
string s;
foreach (s,t.Split (",")) {
if (s.LTrim ("{").StartsWith ('"power"')) {
string p = (s.StrValueByIndex (":",1).RTrim ("}"));
! WriteLine(p);
}
}
dom.GetObject(""#shplvban#"").State(p);
}
WriteLine("Skript beendet !");
!Ende Skript