Shelly 3em pro - Entwicklung Flow/Json Daten (Stromwächter)

So, eingebaut.
Jetzt sieht es besser aus und die Werte werden aktualisiert.
Perfekt, danke.

Hier noch eine Rückmeldung vom Stromwächter-Support:
#############
Wir nutzen alle Werte aus dem API-call /emeter/{index} außer total_*
Feld emeters aus dem API-Call status - siehe Doku API Reference
#############

Das heißt für mich, dass wir die grün eingekreisten Werte nicht „ändern“ müssen und können die Summenbildung aus dem flow auch rausschmeißen (keine Sorge, mach ich selbst :wink: )
Die gelb eingekreisten lassen wir unverändert auf TRUE.
Alle anderen müssten wir ändern bzw. übergeben.

Und da hab ich eine Frage zum Powerfaktor „pf“.
In deiner Beispiel-Rückgabe vom Shelly3EM ist der Powerfaktor negativ (-0.98).
Die Power-Werte sind da auch alle negativ (weil du vermutlich einspeist).
Aber beide Werte negativ ist für mich irgendwie doppelt gemoppelt.
Könntest du bitte mal schauen, welche Werte (am besten alle, also „power“, „pf“, „current“ und „voltage“) zurückgegeben werden, wenn du auf einer Phase einmal einspeist und einmal beziehst?

Da ich von meiner Stromzange keinen PowerFaktor-Wert bekomme, müsste ich diesen Wert dann ggf. fix setzen (auf einen sinnvollen Wert von z.B. 0.98), aber wenn sich das Vorzeichen auch immer ändert, muss ich das berücksichtigen.

Viele Grüße

Ja sehr schön =)

Das mit dem PF ist leider nicht so einfach. Das ist der quotient wirkleistung/gesamtleistung und der zeigt den anteil der scheinleistung (induktive vs kapazitive last). Wir brauchen also ein pendant vom Aeotec. Welche Werte hast du denn da zur verfügung die wir für so eine berechnung heranziehen können?

Beim Aeotec werden nur Spannung, Strom, Leistung und verbrauchte Gesamtenergie zurückgegeben.

Also kein Powerfaktor. Es wird auch nicht zwischen Wirk- und Scheinleistung unterschieden, wir können den Powerfaktor also auch nicht selbst berechnen.

Könntest trotzdem mal schauen, welches Vorzeichen der Powerfaktor beim Shelly3EM hat, wenn bezogen wird und wenn eingespeist wird?
Mir geht es primär um das Vorzeichen.

Ich schau nachher nochmal in die api - zumindest beim 3empro wird richtigerweise im frontend der pf nur positiv dargestellt, auch beim einspeisen…

Jau, danke.
Schau bitte auf jeden Fall auch mal in die Rückgabewerte vom Shelly3EM, wenn du per „IP/status“ abfragst.

Dieses Minuszeichen verwirrt mich :smiley:

Aber: Keine Eile!!

Ich hab ja nur den pro. Das check ich gleich. Für den 3em müssen wir wild rumgooglen. Aber negative pfs machen schlichtweg keinen sinn…

Achso, ich dachte du hast den Shelly3EM…
Okay, dann hatte ich das falsch verstanden…

Wie gesagt, keine Eile.
Ich such selbst ja auch noch.

Viele Grüße und schon mal ein schönes Wochenende!

Also, bei 3em pro ist der PF auch in der api immer positiv. Bei den ersten beiden google hits über den PF beim 3em - da wirds wirklich negativ (shelly 3 em /status json -pro - Google Suche).
Also power wird negativ, pf wird negativ, I und U bleiben allerdings positiv. Sehr wild. Da musst du mal schauen wie der Aeotec meldet - also ob I beim Einspeisen auch positiv bleibt. Wenn nicht, muss dort ein jsonata abs rein. Für den PF würd ichs dann iwie so machen:

Kriegst du das reingeschraubt in den flow?

Genau, ich hab mich da jetzt auch gestern noch tiefer eingelesen.
Generell gibts da im Netz verschiedene „Meinungen“ über den Powerfaktor :slight_smile:
Ich will jetzt gar nicht drüber diskutieren, was richtig oder falsch ist.
Hauptsache ich weiß, was der Shelly3EM konkret zurück gibt.

Und da versteh ich:

  • Voltage immer positiv
  • Strom immer positiv
  • Powerfaktor positiv bei Bezug, negativ bei Erzeugung
  • Leistung Produkt aus den drei oben genannten.

Ok, damit kann ich arbeiten :slight_smile:

Der Aeotec gibt den Strom direkt positiv oder negativ aus.
Da muss ich also dann immer nur den Absolut-Wert übergeben.
Und den Powerfaktor dann auf einen positiven oder negativen Wert setzen, je nach Wert vom Strom.

Japp, das bekomm ich reingeschraubt :slight_smile:

Ich teste dann mal weiter.

PS: Irgendwie haben wir jetzt diesen Thread total gekapert und sind von den allgemeinen Diskussionen total ins Spezielle abgedriftet.
Sorry, das war keine Absicht.
Vll. kann ja jemand mit den entsprechenden Forums-Rechten die Diskussion mal verschieben?

Viele Grüße

Obacht. Das wäre der wirkteil. Nimm einfach den power wert der dir geliefert wird =)

Wär in diesem Fall „für mich“ egal, da ich ja selbst nicht verrechne.
Ich übergebe ja direkt 1:1 den Powerwert.
Aber lieber einmal zu viel drüber nachgedacht, als zu wenig :slight_smile:

Nebenbei bin ich weiter mit dem Stromwächter-Support im Austausch, weil es noch nicht rundläuft.
Der Stromwächter springt immer wieder in den Not-Aus.
Jetzt haben die mal draufgeschaut und folgendes zurück gemeldet:

#################
wir sehen sehr viele JSON_NOT_UPDATED logs vom Stromwächter.
So wie ich das gerade sehe im Log wird versucht jede Sekunde versucht ein Wert abzurufen und wenn in dieser Sekunde kein neuer Wert existiert rechnen wir mit dem Worstcase Werten, um den Leitungsschutz zu garantieren.

Dementsprechend bekommt das Gerät den ersten Wert, geht vom Worstcase aus und rechnet direkt hart gegen und geht immer wieder in den NOTAUS.

Also müsstest du wahrscheinlich die JSON jede 500ms einmal minimal anpassen, was wahrscheinlich echt doof ist da das Smartmeter gar nicht so oft neue Werte liefert.
#################

Dieses „jede Sekunde einmal abfragen“ kommt ja vom Stromwächter selbst, da können wir nichts dran ändern.
Ich kann mir auch ehrlich gesagt nicht vorstellen, dass der „echte“ Shelly3EM bei jeder Abfrage neue (und zwar geänderte) Werte liefert (warum auch?).
Aber falls doch, könnte man ja schon in node-red die Werte immer „minimal“ zufällig ändern.

Ich hab aber erstmal gefragt, ob da nicht irgendwo auch andere Werte. z.B. Zeitstempel, abgefragt werden, die dann für deren interne Verarbeitung benutzt werden.
Sonst könnt ich mir das irgendwie nicht vorstellen.
Aber gut, warten wir ab :slight_smile:

@Wildsparrow evt. kannst du das in einem seperaten Thread verschieben.
Bist ja der einzige MOD von ehemals vieren der noch einigermaßen aktiv ist.

Das wollte ich hören denn es ist nicht egal. Genau hier ist der Unterschied zwischen es brennt oder die Logik vom Wächter schlägt an.

Das mit dem Minimal anpassen ist easy - einfach I und P der einzelnen phasen in einem block nachdem du die werte ersetzt randomisieren. Also nach dem update l3 ein block mit nem jsonata bspw
setze msg.emeters[0].total auf jsonata:(msg.emeters[0].total + $round($random()*3,2))

Macht er wirklich nicht. Im sparmodus alle 5s, im normalen alle 3s. Dazwischen sind alle Anfragen gleich. Deswegen bin ich auch auf den hitchi gewechselt der mindestens jede sekunde - meistens aber nach 0.5 meldet…

Da wir den nie nie nie geändert haben. Würde es auch nur beim ersten connect gehen und danach halt nie nie nie wieder…

Danke @Wildsparrow

1 „Gefällt mir“

Kleines Update vom Support:

Es wird 1x pro Sekunde der Status vom Shelly3EM abgefragt.
Und offenbar wird mit dem „/status“ ein Pull-Request ausgelöst, das den Shelly3EM dazu bringt, dass dieser neue Werte ausspuckt.

Und dann wird einfach nur geprüft, ob die neue JSON-Ausgabe der alten JSON-Ausgabe entspricht.
Falls ja, dann Fehler.
Falls nein, dann alles gut.

Wenn ich es richtig verstehe, dann müsste es ausreichen, wenn einfach nur die „gesamte JSON-Ausgabe“ nicht identisch mit der vorherigen ist.
Dann würd es reichen, wenn ich nur einen Wert minimal ändere, z.B. den Powerfaktor „pf“.
Da warte ich aber noch auf die Bestätigung.

Ich weiß noch nicht, was ich diese Woche schafffe, aber sobald es etwas neues gibt, meld ich mich :slight_smile:

Viele Grüße und einen guten Start in die Woche!

1 „Gefällt mir“

Hi,

ich konnte wieder etwas basteln, und bin jetzt auch einen Schritt weiter.
Die Punkte hab ich alles umgesetzt, also:
Spannung immer positiv
Strom immer positiv (es wird also immer der Absolut-Wert übergeben)
Power positiv bei Verbrauch, negativ bei Erzeugung
PowerFaktor positiv bei Verbrauch, negativ bei Erzeugung

Und der Powerfaktor wird bei jeder Abfrage minimal zufällig geändert.

Also eigentlich so, wie es sein sollte.
Siehe Screenshot (Phase 1 und 3 haben Verbrauch, auf Phase 2 wird eingespeist).

Der Stromwächter läuft auch jetzt stabil und es gibt keine Fehler(meldungen) mehr.
ABER:
Jetzt wird auch Erzeugung als positiver Verbrauch dargestellt (im Dashboard vom Stromwächter).

Ich bin verwirrt… :smiley:

Ich hab den Support mal wieder angeschrieben und gefragt, in welcher Art die Daten erwartet werden.
Mal sehen…

Viele Grüße

UPDATE 31.08.2024:

So, ich glaub, jetzt läuft’s :slight_smile: :+1:

Mich hat am Wochenende (!) noch der Support vom Stromwächter angerufen (die Start-Ups sind auch immer fleißig) und haben die „Probleme“ durchgesprochen.
Dabei konnten wir auch „live“ auf meinen Stromwächter zugreifen und ein bisschen analysieren.

Die Werte (Strom, Spannung, Leistung, Powerfaktor…) werden alle korrekt (und mit den richtigen Vorzeichen) übertragen.
Da ich grad eh auch auf einer Phase eingespeist hab (Sonne sei Dank), konnte man das gut nachvollziehen.
Also: läuft :+1:
Die fehlerhafte Anzeige im Dashboard kommt wohl wirklich von einem noch vorhandenen Fehler in der Stromwächter-Firmware. Das wollen die jetzt abstellen.

Heute konnte ich auch dann zusätzlich noch PV-Erzeugung über den Stromwächter „laufen lassen“ und auch das wird richtig erkannt (nicht aufs Watt genau, aber immerhin).
Und zwar im Dashboard und in der Cloud.
Siehe Screenshots, mit zwei unterschiedlichen PV-Erzeugungswerten.

280 W Input:



70 W Input:



Also an dieser Stelle noch einmal vielen Dank für eure Hilfe!!

Damit komme ich auch direkt zu den nächsten Punkten :slight_smile:

Der Stromwächter-Support hat mir mitgeteilt, dass die bei denen alle ziemlich begeistert sind von unserer Initiative.
Und dass sie es auch befürworten würden, wenn wir den Code der Allgemeinheit zur Verfügung stellen würden, damit noch mehr User davon profitieren können.
Man könnte ja etwas auf Github oder so bereitstellen.
@Poolcat @Micha , was meint ihr?`
Ich find die Idee eigentlich gut.

Und dann noch eine Frage an @micha :
Da das Hauptprogramm jetzt läuft, aber halt noch auf dem alten Notebook (welches kein Stromspar-Wunder ist…), könnten wir uns ja weiter mit der Port- und Datenweiterleitung über den ESP32 beschäftigen, oder?

Kannst du mir nochmal kurz sagen, was du alles noch an Infos brauchst?

Viele Grüße

5 „Gefällt mir“

Hallo @BetaTobi , wenn das ganze jetzt läuft ist das sehr gut. Beim ESP brauchst du dich nicht mit einer Portweiterleitung oder der gleichen beschäftigen, da hier direkt normal der Port 80 verwendet werden kann.

Hi @Micha

stimmt, da ist Port 80 ja Standard.

Nur zum Verständnis:
Ich muss dann mit dem ESP einen Webserver bauen, der dann bei dem „/status“ request als „http response“ den modifizierten JSON-code übergibt, korrekt?

Viele Grüße

Ja genau so sieht es aus.

Okay,

WebServer läuft soweit.
Auch mit Rückantwort.
Allerdings schaff ich es bisher nur „normale“ Strings zurückzugeben.
Das JSON-Format macht mich fertig :smiley:

Hast du da ein Beispiel oder einen Link für eine gute Doku?

Danke und viele Grüße