VPN/Proxy erkannt
Es scheint, dass Sie einen VPN- oder Proxy-Dienst verwenden. Bitte beachten Sie, dass die Nutzung eines solchen Dienstes die Funktionalität dieser Webseite einschränken kann.
-
Das könnte an einem Neustart des Shelly liegen. Dabei wird der interne Zähler genullt, wohingegen in der Cloud weiter addiert wird.
Das ließe sich kontrollieren. Durch Aufruf http://192.168.178.77/rpc/Shelly.GetStatus in einem Browser findest du hinter aenergy:total den Verbrauch in Wattminuten. Diesen durch 60.000 teilen, um ihn in kWh umzurechnen. Der berechnete Wert sollte zu dem Wert in der CCU identisch sein.
Zudem gibt es noch die Uptime in Sekunden. Die gibt die Laufzeit seit dem letzten Start an. Das wäre dann auch der Zeitraum, den du mit der Cloud vergleichen kannst.
Um das Nullen beim Neustart abzufangen, müsste das Skript noch erweitert werden.
-
Gibt es eine Möglichkeit zum downgrade auf die 0.11.0-beta3?
Eine Möglichkeit wie bei den Gen1-Geräten gibt es nicht.
Wenn man die Firmware als sie aktuell war heruntergeladen hatte, kann man sie über einen eigenen Server bereitstellen und unter Angabe der Adresse per API oder Webui installieren. Ein paar Infos dazu gibt es z.B. hier.
-
Respekt für die schnelle Umsetzung
Danke 
Ich habe mal versucht, mit dem Skript für den Dimmer2 einen 1PM (Gen1, nicht Plus) auszulesen. Dort funktioniert es ebenfalls. Es kann also sein, dass es noch bei weiteren Shellys der Gen1 funktioniert. Einfach mal Probieren, kann nichts kaputtgehen. 
Bei den Shellys der Gen2 gäbe es auch die Möglichkeit, auf die zyklische Abfrage der Werte Leistung und Arbeit zu verzichten. Bei denen kann man per Skript die Werte bei Änderung an die CCU senden und in eine Variable schreiben lassen.
-
Versuch bitte mal.
Die Variable erstellen und im Skript anpassen nicht vergessen!
! Skript zur Gesamt-Verbrauchsaktualisierung Shelly Dimmer2 V1.0.0
! Copyright by SeRef @ www.shelly-forum.com
! **************************************
string vIP = "192.168.178.74"; ! IP des Dimmer2
string vName = "Dimmer2_Verbrauch"; ! Variablenname für Verbrauch
! **************************************
! ** ab hier braucht nichts geändert zu werden **
var vUrl = "http://" # vIP # "/status";
string stdout = "";
string stderr = "";
real vArbeit = -1.0;
system.Exec("wget -O - -t 1 -T 10 " # vUrl, &stdout, &stderr);
stdout = stdout.Replace("}", ",");
if (stdout.Contains('"meters"')) {
stdout = stdout.StrValueByIndex('"meters"', 1);
if (stdout.Contains('"total"')) {
stdout = stdout.StrValueByIndex('"total"', 1).StrValueByIndex(',', 0).StrValueByIndex(':', 1);
vArbeit = stdout.ToFloat() / 60000;
if (dom.GetObject(vName)) {
dom.GetObject(vName).State(vArbeit);
}
}
}
Alles anzeigen
-
Schön, dass es funktioniert

Das Skript an den Dimmer2 anzupassen, sollte kein großes Problem sein. Da ich allerdings keinen Dimmer2 habe, bräuchte ich von dir die Ausgabe von
http://<IpDimmer2>/status.
-
Wenn es dir nur um die Funkschnittstelle geht, wäre vielleicht der Pro2PM eine Option für dich. Der kann Netzwerk auch über Kupfer. Den kannst du dann per http-Befehl schalten.
-
Ich schaue mal, ob ich das Skript anpassen kann.
Mach' Dir keine unnötige Arbeit. Er hat ja inzwischen selbst das Richtige gepostet! (Beitrag 7) 
Naja, nun doch

! Skript zur Gesamt-Verbrauchsaktualisierung ShellyPlus1PM V1.0.1
! Copyright by SeRef @ www.shelly-forum.com
! **************************************
string vIP = "192.168.178.77"; ! IP des ShellyPlus1PM
string vName = "Waschmaschine_Verbrauch"; ! Variablenname für Verbrauch
! **************************************
! ** ab hier braucht nichts geändert zu werden **
var vUrl = "http://" # vIP # "/rpc/Shelly.GetStatus";
string stdout = "";
string stderr = "";
real vArbeit = -1.0;
system.Exec("wget -O - -t 1 -T 10 " # vUrl, &stdout, &stderr);
if (stdout.Contains('"aenergy":{"total"')) {
stdout = stdout.StrValueByIndex('"aenergy":{"total"', 1).StrValueByIndex(',', 0).StrValueByIndex(':', 2);
vArbeit = stdout.ToFloat() / 1000;
if (dom.GetObject(vName)) {
dom.GetObject(vName).State(vArbeit);
}
}
! Ende Skript
Alles anzeigen
Viel Erfolg!
Edit: Fast vergessen. Dieses Skript sollte zu keinem Blockieren der CCU führen. Kannst du ohne Abfrage, ob Online im Programm verwenden.
-
... und wenn's ganz ohne Schnickedöns sein darf:
Ein
http://<IPCCU>/x.exe?y=dom.GetObject("<Kanalname>").State(1)
Aus
http://<IPCCU>/x.exe?y=dom.GetObject("<Kanalname>").State(0)
IP der CCU und den zu schaltenden Kanalnamen eintragen. Ist ein Leerzeichen im Namen, muss dieses durch %20 ersetzt werden.
-
Hallo LeoHansen,
und vergiss nicht, die Zeile in deinem Programm zu löschen, in dem du das falsche Srkipt vom 1PM aufrufst. Es darf nicht gestartet werden. Es überschreibt sonst die Variable "Waschmaschine_Verbrauch" mit "" (nichts),
-
Das ist das Problem. Ein Skript für einen Shelly 1PM kann für einen Shelly Plus1PM nicht funktionieren. Die Anfrage und Antwort sind verschieden.
Ich schaue mal, ob ich das Skript anpassen kann.
-
Wenn du das "!" in Zeile 23 und/oder 25 entfernt hast, solltest du eigentlich den Antwortstring des Shelly angezeigt bekommen, der scheint bei dir aber nicht zu kommt.
Es handelt sich um einen 1PM und nicht um einen Plus1PM?
Die IP-Adresse des Shelly passt?
Wenn beides Ja, dann stelle bitte mal das Skript ein, mit dem du den Onlinestatus bzw. die Leistung abfragst.
-
Welche Variante der Aktualisierung würdest Du empfehlen?
Wenn in einem anderen Skript schon überprüft wird, ob der Shelly online ist und in einer Variable gespeichert wird (wovon ich laut Screenshot ausgehe) diese im Programm als Bedingung hinzufügen (Wenn Online dann).
Oder das Skript in das Skript, in dem der Onliestatus geprüft wird, mit einfließen lassen.
Bekommst du mittlerweile eine Rückmeldung unter Skript testen?
-
Hallo LeoHansen,
Ich bekomme leider auch keine Rückmeldung oder einen Fehler, sobald ich das Skript teste.
Im Skript sind alle Zeilen mit WriteLine auskommentiert. Um bei Skript testen eine Ausgabe zu bekommen, müssen in den Zeilen mit WriteLine die "!" am Zeilenanfang entfernt werden.
Im Skript schreibst du in die Variable "Waschmaschine_Verbrauch". Existiert diese überhaupt? Im Screenshot heißt eine Variable "Shelly_Verbrauch".
Gruß
SeRef
Edit: So wie du das Skript im Programm verwendest, läufst du Gefahr, dass die CCU bei nicht Erreichbarkeit des Shelly (Offline) bei jedem Aufruf für eine gewisse Zeit blockiert wird und keine anderen Programme ausführt. Die Zeit ist unter anderem davon abhängig, was im verwendetem CuXD Kanal unter EXEC_TIMEOUT eingetragen ist.
-
Hello muety,
the Pro1PM is able to recognize whether it is currently being consumed or feed in. In the case of feed in, the sign is negative.
However, it doesn't seem to measure very accurately. Mine has a deviation of about 9%.
Because of the relay in the Pro1PM and the higher accuracy, I would recommend you to use an EM or 3EM.
greeting
SeRef
-
Braucht der Shelly eine synchronisierte UNIX-Zeit, damit er den Verbrauch rechnen kann?
Dem ist leider so. Der 1PM benötigt nach dem Booten mindestens einmalig die Verbindung zu einem Zeitserver. Eine Verbindung zum Internet ist dazu nicht nötig, ein lokaler sntp kann eingetragen werden.
-
Hallo larsk2,
du hast eine PM.
Gruß
SeRef
-
Hallo mzimmerac,
Ich tippe darauf, dass der Schalter parallel zum Shelly am Motor und nicht an den Eingängen des Shelly angeschlossen ist.
Gruß
SeRef
Da war jemand schneller

-
Das mit dem verkehrt herum anschließen ist weder nötig noch sinnvoll. Macht aber in der Anzeige normal keinen Unterschied. Der merkt es nicht, in welche Richtung der Strom fließt.
Sorry, aber es macht einen Unterschied. Er erkennt die Richtung.
Der Inhalt kann nicht angezeigt werden, da Sie keine Berechtigung haben, diesen Inhalt zu sehen.
Kann es sein, dass du keinen hast und einfach mal vermutet hast?
Die Genauigkeit lässt auch bei mir zu wünschen übrig. Leistung und Arbeit werden bei mir unabhängig von der Firmwareversion ca. 8 bis 9% zu hoch angegeben.
-
Übrigens kann das für den Motor böse enden, wenn der Shelly in die eine Richtung will und gleichzeitig per Taster die andere Richtung angefahren werden soll.
-
Hallo Gavor,
Hatte in einer Anleitung gelesen, dass das geht.
Das geht auch. Allerdings reicht es nicht, einfach die Adresse des Datenpunktes durch den Namen zu ersetzen. Korrekt wäre
http://User:Passwort@192.168.178.8:8181/cuxd.exe?ret=dom.GetObject("Shelly1-Stereo").DPByHssDP("STATE").State(1)
Dann geht es auch über den Namen.
Damit die Änderung über eine andere Schaltquelle als über die CCU auch angezeigt werden, versuche es unter Output switched ON url bitte mal mit
http://User:Passwort@192.168.178.8:8181/cuxd.exe?ret=dom.GetObject("Shelly1-Stereo").DPByHssDP("SET_STATE").State(1)
bzw. unter Output switched Off url mit
http://User:Passwort@192.168.178.8:8181/cuxd.exe?ret=dom.GetObject("Shelly1-Stereo").DPByHssDP("SET_STATE").State(0)
Viel Erfolg
Gruß
SeRef