Vielleicht nutz es ja jemanden, letztendlich konnte ich mit Hilfe von Node Red den Shelly in die HomeApp includieren
Beiträge von Rosa1
-
-
Ok, dann geh ich zurück.
Besten Dank
-
Moin Moin,
ich weiß nicht ob ich hier richtig bin, ich versuche es mal.
Ich habe einen Shelly Plug S Plus mit Hilfe vom Skript des 66er erfolgreich in Homematic integriert.
Schalten usw.
Jetzt habe ich eine andere Firmware installiert, diese :shelly-homekit-ShellyPlusPlugS
Auch das hat geklapt, ich kann den Shelly in meine HomeApp integrieren. Die Sprachteuerung (das war für mich der Grund für die Integrationin die Homeapp) funktioniert.
Auch kann ich den Shelly noch über die IP Adresse im Browser schalten.
Was nicht mehr klappt:
Homematic ist Schalten nicht mehr möglich. Das wäre wichtig .
Auch ist es nicht mehr möglich den Shelly in der App zu steuern. Das wäre aber für mich nicht wirklich wichtig.
Die LED wird auch nicht mehr angezeigt.
Wo liegt mein Fehler?
Beste Grüße
RS -
Danke@Alle
Ich könnte noch einen Tipp gebrauchen, wenn ich mehrere ShellyPlugS nutze, weiß ich wie ich sie Schalten kann, es sind ja genug Kanäle frei. Dort trage ich dann zB unter SWITCH|CMD_SHORT mit der jeweiligen IP die Werte ein.
Wenn ich aber das Script noch nutzen möchte, ist es möglich, dass gleiche Script mehrmals im Programm aufzurufen und nur die den zusätzlichen KAnal anzugeben var ShCuxZwei = "CUxD.CUX4000004:2" ; und eventuell aus "var ShLeistungZweiA = shp1name + "_Leistung" ;" ein "var ShLeistungZweiA = shp1name + "_LeistungSHZwei" ;
zu machen?
Beste Grüße
-
Zu früh gefreut.
Nun bleibt aber noch, dass Problem der Nichtsichbarkeit der Systemvariablen wenn ich den Kanal manuell eingebe. Ich kann somit kein Programm erstellen, dass die Leistung der Shelly benötigt.
Im Bild die Systemvariablen wenn kein Kanal manuell zugeordnet ist.
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. Hier kann ich die Variable für ein Programm auswählen
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. Hier (unten) die Systemvariablen wenn der SV "Leistung" der Kanal manuell zugeordnet ist. Sie ist nicht sichtbar.
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. Bei der Programmerstellung wird es für mich dann sehr kryptisch
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. MfG und Danke
-
Zitat
Ausgeschaltet bedeutet doch nicht, das er Offline ist. Offline hat was mit er Verbindung zum Netzwerk zu tun.
Mensch Danke !
..falls der 66er hier auch mal reinschaut, danke für das Script.
-
Hallo Martin,
ich denke schon, dass die Zeilen stimmen.
Es wird ja geschaltet, dass Gerat ist unter Geräte sichtbar, auch werden die Schaltflächen Ein und Aus aktualisiert, wenn ich über die App schalte.
Was bisher nicht stimmt ist, der "Online Status" ändert sich nicht.
Im Bild ist das sichtbar. Shelly ist aus, Status ist aber online. Dies ist nun der einzige "Fehler".
Eine Frage habe ich noch.
Durch die manuelle Kanalzuordnung sind unter den Schaltflächen Ein und Aus die beiden Werte aus den Variablen sichtbar, ist es normal, dass diese dann nicht mehr unter "Status-Bedinung-Systemvariable" sichtbar sind?Danke und freundliche Grüße
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. -
Guten Morgen,
habe ich eben getan.
Dann ist zu zumindestens der Onlinestatus unter Geräte An/Aus sichtbar. wird aber falsch dargestellt.
Die Variable Onlinstatus ist dann aber nicht mehr unter Status und Bedinung ->Variable sichtbar.
Die ist weg.
MfG
-
Was meinst du damit?
-
Hallo,
ich denke ich habe das soweit richtig gemacht. (mit meinem kleines Wissen)
Soviel musste ja nicht geändert werden.
MfG
Code
Alles anzeigen! Skript V1.0.1 zur Statusaktualisierung ShellyPlusPlugS mit Originalfirmware (c)2023-2024 by 66er (alias Stefan K.) ! Publiziert und Updates auf https://shelly-forum.com/forum/index.php?board/145-homematic/ ! entwickelt und getestet auf ShellyPlusPlugS-Firmware 0.14.1 ! Versionsdatum:01.04.2024 : ! automatische Homematic-SV-Erstellung inkl Kanalzuordnung, Onlinestatus-Prüfung integriert (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-BT (kann angepasst werden) !**** SETUP ******** SETUP ******** SETUP ******** SETUP *** ! ACHTUNG: Beim Anpassen der Adressen keine "" löschen! ! Setup ShellyPlus PlugS var shp1ip = "192.168.178.94" ; ! IP des ShellyPlus1PM anpassen var shp1name = "ShellySteckdose" ; ! CUxD-Gerätenamen anpassen (daraus werden ggf. automatisch weitere Variablennamen erzeugt ! Setup der CUxD-GERÄTE var execshp1 = "CUxD.CUX2801001:1"; ! Adresse und Kanal des CUxD-Exec-Device angeben var shp1cuxd = "CUxD.CUX4000004:1" ; ! Adresse des CUxD-Device für den ShellyPlusPlugS 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 = SHPPS10066R 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 = shp1name + "_Online-Status" ; !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 = SHPPS10166R 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 var url = shp1ip + "/rpc/switch.GetStatus?id=0"; WriteLine(url); !****Abfrage des ShellyPlusPlugS ***** WriteLine("Abfrage startet"); 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(); dom.GetObject(""#execshp1 #".CMD_SETS").State("0"); WriteLine(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("Zustand EIN festgestellt"); } if (out != "true") { WriteLine("Zustand 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 ShellyPlusPlugS V1.0.0 beendet"); !ENDE SKRIPT
-
Guten Tag,
ich habe mit Hilfe des Beitrages vom 66er ShellyPlusPlugS goes Homematic - mit der Originalfirmware einen Shelly in mein Homematicsystem eingbunden.
Was funktioniert ist:
An Aus in Homematic
Aktualisierung der Ansicht An Aus in Homematic wenn mit der App geschaltet wurde. (dieser Teil des Scriptes funktioniert bei mir)
Anlegen der Variablen und Anzeige der Leistung in der Variable.
Was nicht funktioniert ist die Homematic Anzeige der Leistung im Kanal, dass heisst unter Geräte "Ass Ein" wird die Leistung nicht angezeigt.
Auch funktioniert die Onlineanzeige in der Variable nicht, es ist immer "Onliene"
Hat jemand viellecht ne Idee woran das liegen könnte? Auch ohne Code?
Beste Grüße