Beiträge von hagen_CCU
-
-
Jetzt schwillt mir endgültig der Kamm.
Kann ich verstehen. Sorry. Ich bemühe mich auf Arbeit, anderen Präzision beizubringen und hier pfusche ich so rum. Ich lege das Thema zur Seite und versuche erstmal durch Lesen zu lernen ...
Würde versuchen es wieder gut zu machen, wenn ich wüsste wie. Lassen wir es ruhen - oder lösche einfach den Beitrag.(Plus 1PM übrigens)
-
-
-
Sorry für die wahrscheinlich total simple Frage. Ich habe wirklich VIEEEEELE Beiträge für Anfänger hier im Forum gelesen. Aber ich bin (noch) zu d.....
Ich habe die Shelly 3EM mit der CCU verknüpft mit Hilfe von CCU Jack. Kann die Werte gut im CCU WEB-Interface oder der PocektControl App sehen. Aber ich schaffe es nicht die 3 Werte in je eine Variable zu schreiben, um sie zu summieren und dann in eine Summen-Variable "Shelly3EM_Summe" zurück zu schreiben.
Ich habe so viel Zeit mit dem Lesen und Probieren verbracht, dass ich jetzt vor Verzweiflung doch hier frage. Wahrscheinlich peinlich ... Aber hoffentlich auch leicht zu lösen.
Danke!
-
Ich bekomme (meine 2) Temperaturwerte vom Shelly 1PM super in die CCU einfach über Actions. Check.
Aber den Leistungswert habe ich noch nicht in der CCU.
Ich habe die CUXD Geräte neu angelegt. Nun als 40er und 28er, ich denke wie erklärt. Das Skript läuft im Tester durch, aber nur bis zu Stelle wo die URL angezeigt wird. (Habe alle WriteLine aktiviert)
Ausgabe zeigt:
CUXD_CUX4000001_Leistung
Online-Status_CUXD_CUX4000001
110
ShellyPlus1PM ist online
192.168.178.211/rpc/Shelly.GetStatus
___
Habe mir die automatisch angelegte Variable svEnergyCounter_36891_0001DD89AAE77A:6 mal in meiner CCU PocketControl App angesehen und da stand ein Wert drin (336.310 oder so); habe ihn dann mal auf 0 gesetzt, um zu sehen, ob er beim nächsten Abspielen des Skripts im Tester den Wert wieder ändert. Ist aber nicht passiert, auch nicht als ich dem 1PM mal für 1min 1.4kW aufgebrummt habe..
Die andere Variablen stehen auch auf 0
CUXD-RC-19_CUX2801002_Leistung
CUXD_CUX4000001_Leistung
Code! Skript V2.1.2 zur Statusaktualisierung ShellyPlus1PM mit Originalfirmware (c)2021-2022 by 66er (alias Stefan K.) ! Publiziert und Updates auf https://shelly-forum.com/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 .... !ENDE SKRIPT
-
-
Also interested ...
-
Vielen Dank für die Mühe.
Im Skript-Tester sehe ich:110
ShellyPlus1PM ist online
192.168.178.211/rpc/Shelly.GetStatus
Auf der CCU Startseite sehe ich auch den Online-Status - sowohl beim 40er als auch 28er CUxD-Gerät. Es scheint also eine Verbindung zu geben.
Bzgl. Leistungsmessung muss ich nochmal meine Verkabelung kontrollieren - habe das Set aus 1PLUS und 2 Sensoren in meinem Dimplex WW Speicher eingebaut, kann auch die E-Heizung mit dem 1PLUS Kontakt schalten aber sie geht nach ca. 1min wieder aus (nur 6A also kein Überstrom). Es klickt aber im Dimplex, nicht am 1PLUS. Es "brodelt" (rauscht) leicht, sowie ich Strom am Heizstab zuschalte, vielleicht spinnt der 90 Grad Sicherheitssensor in Kombi mit dem Heizstab (nicht oft verwendet). Ich tippe aber auf (dummen) eigenen Fehler.
Ich würde das erstmal elektrisch fixen (bin Elektriker nur etwas aus der Übung aber vorsichtig ) , bevor ich mit der Leistungsmessung weiter spiele - vielleicht geht es ja schon ,allerdings zeigt er in der 1min bis sie aus geht nichts an - aber die CCU ist ja auch nicht die schnellste.
---
Vielleicht eine letze Frage:
Wenn ich den online Status abfrage, um in Programmen unnötige CCU Last zu vermeiden, ist es egal ob ich das am 40er oder 28 mache?
Danke.
-
Danke für die schnelle Reaktion.
zu 3.
mein erster Versuch wurde durch jemand inspiriert der das so gemacht hatte ... (Homematic-Stefan von "verdrahtet" glaube ich)
aber ich bin belehrbar - habe den 28 gelöscht und einen 40er erstellt (Update siehe weiter unten)
direkte Kommunikation zw Shelly und CCU funktioniert auch damit auf Anhieb gut.
zu 2.
mit dem 28er standen noch mehrere Zeilen Nullen in der Skript Ausgabe, mit dem 40er ist es nun leer ...
zu 1.
klar, ist natürlich richtig, sorry, dachte nur da steht ja "ab hier nichts mehr ändern" ist ja für alle gleich
---
Update: Ich merke, ich mache etwas falsch. Ich lese die Anleitungen zum x-ten Mal und verstehe dass ich ein 28er UND ein 40er brauche. Nur noch nicht ganz wie/warum. Ich lese weiter / erneut ...
Okay: Es geht ja nur noch um online Status und Leistung, da Aktionen mit Actions und dem CUcD(40) funktionieren.
Habe jetzt also auch wieder ein 28er.
Im Skript Testfenster steht jetzt:
110
ShellyPlus1PM ist online
192.168.178.211/rpc/Shelly.GetStatus
Das 28 Gerät zeigt den "online" Status an. Die Leistung zeigt es nicht. (s. Anhang)
Code
Alles anzeigen! Skript V2.1.2 zur Statusaktualisierung ShellyPlus1PM mit Originalfirmware (c)2021-2022 by 66er (alias Stefan K.) ! Publiziert und Updates auf https://shelly-forum.com/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.178.211" ; ! IP des ShellyPlus1PM anpassen var shp1name = "CUXD_CUX4000001" ; ! 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 = "CUXD28_Shelly_DIMPLEX:1"; ! Adresse und Kanal des CUxD-Exec-Device angeben var shp1cuxd = "CUXD_Shelly_DIMPLEX: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
-
PLUS 1PM mit Add-on; Shelly App, zeigt gut an, Verknüpfung via Actions funktioniert => CCU3 zeigt Schaltzustand und Temp an.
Ich wollte das Skript nutzen, um auch den online Zustand zu holen, habe aber schon Beim ersten Schritt Probleme. Habe so eine Ahnung, dass es ein simpler Typo oder Parameterfehler ist ... suche aber nun schon Tage und stehe auf dem Schlauch.
Ich nutze Skript V4.1.1 zur Temperaturaktualisierung des Temp-Addon mit Originalfirmware ab Shelly-Firmware 1.7.0 (habe aber auch das 4.1.0 "für OXY" probiert)
Selbst wenn ich nur den ersten Teil, das Auslesen, im Skript-Tester laufen lasse, schreibt er mir nichts ins Output Fenster ...
UND er überschreibt mir den Parameter SWITCH|CMD_SHORT im CUXD mit 0 ...Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen. Code
Alles anzeigenvar url = "http://192.168.178.211/status"; ! IP-Adresse des Shelly mit Temp-Addon anpassen var execta = "CUxD.CUX2801002:1"; ! Adresse und Kanal des CUxD-Exec-Device angeben !Setup der SYSTEMVARIABLEN var temp0 = "Temp_DIMPLEX_1"; !Name der Systemvariablen anpassen var temp1 = "Temp_DIMPLEX_2"; ! Name der Systemvariablen anpassen var temp2 = "Temp_DIMPLEX_3"; !Name der Systemvariablen anpassen !Setup der OFFSET-Werte !*** OFFSET Werte unbedingt im Format x.x (Punkt statt Komma!) eingeben var offset1 = "0.0"; ! Sensor 1 var offset2 = "0.0"; ! Sensor 2 var offset3 = "0.0"; ! Sensor 3 !Setup Anzahl angeschlossene Sensoren var anzahls = "1" ; ! erlaubt sind die Zahlen 1 bis 3 !****ENDE SETUP ********ENDE SETUP ********ENDE SETUP ****** !*****Ab hier NICHTS MEHR ÄNDERN ***** !****Abfrage des Temp-Addon**** 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 t = dom.GetObject(""#execta#".CMD_RETS").State(); dom.GetObject(""#execta#".CMD_SETS").State("0"); WriteLine(Antwort);
Über einen Schubs in die richtige Richtung würde ich mich freuen. Danke.
-
s. ganz unten ... PLUS 1PM hat eigenen Thread ...
--- gelöst ----
Hi, Ich hoffe, der Thread ist noch aktiv ... Habe nirgends sonst Neueres dazu gefunden. Danke erstmal für die gute Arbeit.
Bei mir läuft das Script v4.1.1 ohne Fehlermeldung und die Einbindung des Shelly PLUS 1PM in die CCU mit CUxD geht auch (Taster und Feedback/Action) ABER ...1. ich bekomme nur Nullwerte in der CCU.
Ich habe mal die Write-Zeilen im Script aktiviert und sehe über all Nullen (klar, wenn schon oben nix rein geht ...)
Ich teste das Script im CCU3 Programm "Script-Tester" - da kann man das gut sehen. Ich schätze, es stimmt schon ganz oben etwas mit dem Auslesen nicht.UND ...
2. nachdem das Script lief entweder im Tester oder als Programm, da aktiv), ist der Parameter CMD_SHORT des CuXD Devices plötzlich leer = 0
Ein Hinweis wäre super. Danke!Link gefunden
BeitragShelly Plus 1PM goes Homematic - mit der Originalfirmware
©2021 Stefan K. (alias 66er) - ausführlicher Hinweis dazu am Ende der Anleitung
Alle Rechte vorbehalten!
Getestet auf ShellyPlus 1PM-Firmware:
0.70
Hallo liebe Homematic-Freunde.
Heute geht es um die Einbindung des ShellyPlus 1PM.
Das Ganze funktioniert natürlich wie immer ohne Fremdfirmware.
Die Kopplung hat folgende Möglichkeiten:- Ein- und Ausschalten des Schaltkanals inkl. Rückmeldung, wenn über die App oder per Schalter geschaltet wird
- Überwachung des Onlinestatus, kein
Gast1016. September 2021 um 09:51