Moin SparkyMaster,
Nochmals vielen Dank, nun funktioniert es.
Ich habe einen zusätzlichen CUx-D Timer erstellt und das Programm damit verbunden!
Shelly_Homematic_Timer_CUx-D.jpg
Einen schönen Tag noch
Moin SparkyMaster,
Nochmals vielen Dank, nun funktioniert es.
Ich habe einen zusätzlichen CUx-D Timer erstellt und das Programm damit verbunden!
Shelly_Homematic_Timer_CUx-D.jpg
Einen schönen Tag noch
Vielen Dank für die schnelle Hilfe!
Leerzeichen wurden entfernt, leider wird immer noch keine automatische Aktualisierung angezeigt.
Es wird nur der einmalige Wert beim Skript-Test in die Variable gesetzt.
Ansteuerung und somit Schalten, kann ich den Shelly problemlos aus Homematic heraus
Hallo zusammen,
ich komme leider mit meiner Einbindung eines Shelly Plus 1PM in Homematic nicht weiter:
Ich habe nach der Anleitung in dem Forum den Shelly eingebunden:
- CUx-D Exec und Schalter erstellt
- Shelly Webhooks erstellt (Login+PW der Homematic eingebunden)
- Variablen wurden über das Skript erstellt, Werte werden beim "Skript-Test" einmalig übergeben, allerdings aktualisieren sich die Werte nicht, wie in der Zeitsteuerung angegeben
Muss ich hier einen zusätzlichen Timer im CUx-D erstellen
Anbei habe ich den verwendeten Quellcode/Screenshots über die erstellten Daten angefügt, ich hoffe es fehlt nichts dabei.
Evtl könnt Ihr mir ja etwas auf die Sprünge helfen.
Herzlichen Dank schon einmal!!
Grüße Markus
! Skript V2.1.2 zur Statusaktualisierung ShellyPlus1PM mit Originalfirmware (c)2021-2022 by 66er (alias Stefan K.)
! Publiziert und Updates auf https://smarthome-forum.eu/forum/index.php?board/145-homematic/
! entwickelt und getestet auf ShellyPlus1PM-Firmware 0.9.1, 0.9.2beta2 und 0.10.1
! Versionsdatum:28.12.2021 : Anpassung an Firmware >= 0.9.2
! automatische Homematic-SV-Erstellung inkl Kanalzuordnung, Onlinestatus-Prüfung integriert (optional)
! Restrict Login optional
! 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.
!Raumbezeichnung: Test (kann angepasst werden)
!**** SETUP ******** SETUP ******** SETUP ******** SETUP ***
! ACHTUNG: Beim Anpassen der Adressen keine "" löschen!
! Setup ShellyPlus 1PM
var shp1ip = "192.168.0.23" ; ! IP des ShellyPlus1PM anpassen
var shp1name = "VG Shelly Schalter" ; ! CUxD-Gerätenamen anpassen (daraus werden ggf. automatisch weitere Variablennamen erzeugt
! Restrict Login
var shp1rl = "N" ; ! Ist Resrict Login im Shelly aktiv, dann auf "J" setzen
var shp1bn = "DeinBenutzername" ; ! Ist Restrict login auf J, dann Benutzername anpassen
var shp1pw = "DeinPasswort" ; ! Ist Restrict login auf J, dann Passwort anpassen, keine Sonderzeichen
! Setup der CUxD-GERÄTE
var execshp1 = "CUxD.CUX2801005:1"; ! Adresse und Kanal des CUxD-Exec-Device angeben
var shp1cuxd = "CUxD.CUX4000001:1" ; ! Adresse des CUxD-Device für den ShellyPlus1PM anpassen
! Setup Online-Status
var shp1onl = "J" ; ! Variable für Onlinezustandsüberwachung, falls nicht gewünscht, auf "N" setzen""
! Setup Aktualisierungs- und Anzeigeumfang
var shp1a = "J" ; ! Schaltstatus aktualisieren, wenn nicht gewünscht auf "N" setzen
var shpl1p = "J" ; ! Verbrauch aktualisieren, wenn nicht gewünscht auf "N" setzen
!****ENDE SETUP ********ENDE SETUP ********ENDE SETUP ******
!*****Ab hier NICHTS MEHR ÄNDERN *****
! *** Variable für Leistung prüfen, ggf. anlegen
if (shpl1p == "J" ) {
var shpl1pk1 = shp1name + "_Leistung" ;
!WriteLine(shpl1pk1) ;
string sName= ""#shpl1pk1#"";
if (!dom.GetObject (ID_SYSTEM_VARIABLES).Get (sName)) {
object svObj = dom.CreateObject(OT_VARDP,sName);
svObj.DPInfo("autom. angelegt durch Skript ShellyPlus1PM");
svObj.ValueUnit("W");
dom.GetObject (ID_SYSTEM_VARIABLES).Add(svObj);
svObj.ValueType(ivtFloat);
svObj.ValueSubType(istGeneric);
svObj.ValueMin(0);
svObj.ValueMax(3800);
svObj.State (0);!SCNR = SHP1PM21166R
dom.RTUpdate(0);
object oChan= channels.Get (""#shp1name#"");
object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (""#shpl1pk1#"");
oChan.DPs().Add (oSys);
oSys.Channel (oChan.ID() );
}
}
! Variable für Onlinestatus prüfen,ggf.anlegen
if (shp1onl == "J") {
var shp1onln = "Online-Status_" + shp1name ;
!WriteLine(shp1onln) ;
string sName= ""#shp1onln#""; ! Onlinestatus
if (!dom.GetObject (ID_SYSTEM_VARIABLES).Get (sName)) {
object svObj = dom.CreateObject(OT_VARDP,sName);
svObj.DPInfo("autom. angelegt durch Skript ShellyPlus1PM");
svObj.ValueUnit("");
dom.GetObject (ID_SYSTEM_VARIABLES).Add(svObj);
svObj.ValueType(ivtBinary);
svObj.ValueSubType(istBool);
svObj.ValueName0("Offline");
svObj.ValueName1("Online");
svObj.State(true);!SCR = SHP1PM21166R
dom.RTUpdate(0);
object oChan= channels.Get (""#shp1name#"");
object oSys=dom.GetObject (ID_SYSTEM_VARIABLES).Get (""#shp1onln#"");
oChan.DPs().Add (oSys);
oSys.Channel (oChan.ID() );
}
}
! Onlineabfrage und setzen des Status
string stderr;
string stdout;
integer Status;
system.Exec("ping -c 1 '"#shp1ip#"'", &stdout, &stderr);
Status = stdout.Find("ms");
WriteLine(Status);
if (((shp1onl ) == "J" ) && ((Status) == -1)) {
WriteLine("ShellyPlus1PM ist offline");
dom.GetObject (""#shp1onln#"").State(0);
quit; ! Programmabbruch bei Shelly offline
}
if ((shp1onl ) == "J" ) {
dom.GetObject (""#shp1onln#"").State(1);
WriteLine("ShellyPlus1PM ist online");
}
! Statusabfrage
! url ohne RL
var url = shp1ip + "/rpc/Shelly.GetStatus";
WriteLine(url);
! url mit RL
if ( shp1rl == "J") {
var url = shp1bn + ":" + shp1pw +"@" +shp1ip + "/rpc/Shelly.GetStatus";
WriteLine(url);
}
!****Abfrage des ShellyPlus1PM *****
dom.GetObject(""#execshp1#".CMD_SETS").State("wget -q -O - '"#url#"'");
dom.GetObject(""#execshp1#".CMD_QUERY_RET").State(1);
string Antwort = dom.GetObject(""#execshp1#".CMD_RETS").State();
string t = dom.GetObject(""#execshp1#".CMD_RETS").State();
dom.GetObject(""#execshp1 #".CMD_SETS").State("0");
WriteLine("Antwortstring: " + Antwort);
string output = Antwort;
string part; string code;string slist;integer collect = -1;
foreach (part,output.Split("switch:0")){
collect = part.Find("output");
if (collect>-1){
code = ((part.StrValueByIndex(",",1)).StrValueByIndex(":",1));
code = code.Substr(0, code.Length()-0);
slist = slist#code#"/";
}}
WriteLine(slist);
var out = slist.StrValueByIndex("/", 0);
!WriteLine(out);
if (out == "true") {
dom.GetObject(""#shp1cuxd#".SET_STATE").State(1);
!WriteLine("Bedingung EIN festgestellt");
}
if (out != "true") {
WriteLine("Bedingung AUS festgestellt");
dom.GetObject(""#shp1cuxd#".SET_STATE").State(0);
dom.GetObject(""#shpl1pk1#"").State(0);
WriteLine("Programm beendet, Shelly ist ausgeschaltet!");
quit;
}
! ***Auswertung Leistung
string output = Antwort;
!Testantwort ! FOLGEZEILE MUSS auskommentiert sein, wenn String vorhanden
string part; string code;string slist;integer collect = -1;
foreach (part, output.Split("switch0")){
collect = part.Find("apower");
if (collect>-1){
code = ((part.StrValueByIndex(",",2)).StrValueByIndex(":",1));
code = code.Substr(0, code.Length()-0);
slist = slist#code#"/";
}}
WriteLine(slist);
var lpk1 = slist.StrValueByIndex("/", 0);
if (shpl1p == "J") {
dom.GetObject(""#shpl1pk1#"").State(lpk1);
}
WriteLine("Skript beendet");
!ENDE SKRIPT
Alles anzeigen
102
ShellyPlus1PM ist online
192.168.0.23/rpc/Shelly.GetStatus
Antwortstring: {"ble":{},"cloud":{"connected":true},"input:0":{"id":0,"state":false},"mqtt":{"connected":false},"switch:0":{"id":0, "source":"init", "output":true, "apower":64.6, "voltage":233.0, "current":1.002, "aenergy":{"total":31490.971,"by_minute":[1051.457,1223.182,1380.997],"minute_ts":1664706955},"temperature":{"tC":47.1, "tF":116.9}},"sys":{"mac":"441793CE350C","restart_required":false,"time":"12:35","unixtime":1664706959,"uptime":1011367,"ram_size":235212,"ram_free":159060,"fs_size":458752,"fs_free":155648,"cfg_rev":18,"kvs_rev":1,"schedule_rev":0,"webhook_rev":8,"available_updates":{"beta":{"version":"0.11.2-beta1"}}},"wifi":{"sta_ip":"192.168.0.23","status":"got ip","ssid":"Sebblschorsch Haus","rssi":-56},"ws":{"connected":false}}
true/
64.6/
Skript beendet
Shelly_Homematic_Übersicht.jpg