Hi,
an meinem Wechselrichter habe ich einen ShellyPM dran. Verbunden mit FHEM via MQTT. Funktioniert auch gut.
Das energy Reading ist ein stetig hochlaufender Zähler der die Wattminuten angibt. Wie bekomme ich jetzt ein Reading hin das mir den Solarertrag pro Tag und Monat errechnet?
Ich habe mir schon "event-aggegator" angesehen, komme damit aber auch nicht weiter....
Hat jemand Ideen oder Links?
Zitat von: Tobias am 02 Mai 2022, 14:25:59
Hi,
an meinem Wechselrichter habe ich einen ShellyPM dran. Verbunden mit FHEM via MQTT. Funktioniert auch gut.
Das energy Reading ist ein stetig hochlaufender Zähler der die Wattminuten angibt. Wie bekomme ich jetzt ein Reading hin das mir den Solarertrag pro Tag und Monat errechnet?
Ich habe mir schon "event-aggegator" angesehen, komme damit aber auch nicht weiter....
Hat jemand Ideen oder Links?
Hallo Tobias,
als erstes solltest Du userreading mit monotonic einrichten, denn bei einem Reset gehen die Zähler vom Shelly immer wieder auf null.
Hier mal mein Shelly2.5 als Muster
defmod shelly02 Shelly 192.168.178.52
attr shelly02 DbLogExclude .*
attr shelly02 DbLogInclude relay.*,power.*,energy.*
attr shelly02 alias Pool
attr shelly02 comment Version 2020.10.19 18:28\
relais_0 => Pool limit 1000 W\
relail_1 => Terrasse Lichterkette limit 100 W
attr shelly02 event-on-change-reading relay.*,energy.*,state,network
attr shelly02 event-on-update-reading power.*
attr shelly02 group PV Eigenverbrauch-Steuerung
attr shelly02 icon taster_ch_1
attr shelly02 mode relay
attr shelly02 model shelly2.5
attr shelly02 room Shelly,Strom->Photovoltaik
attr shelly02 sortby 422
attr shelly02 stateFormat {sprintf("\
<TABLE>\
\
<TR>\
<TD VALIGN=\"TOP\" ALIGN=\"LEFT\" WIDTH=\"50\">\
Status: %s<br>\
WebLink: %s\
</TD>\
\
<TD VALIGN=\"TOP\" ALIGN=\"RIGHT\" WIDTH=\"100\">\
Pool Gesamt 0: %08.2f KWh<br>\
JEL Gesamt 1: %08.2f KWh\
</TD>\
\
<TD VALIGN=\"TOP\" ALIGN=\"RIGHT\" WIDTH=\"70\">\
Relais 0: %s %06.1f Watt<br>\
Relais 1: %s %06.1f Watt<br>\
</TD>\
</TR>\
\
</TABLE>\
" ,\
(ReadingsVal($name,"state","none") eq "OK") ? "<span style='color:#00FF00'>OK</span>":"<span style='color:#FF0000'>Error</span>",\
ReadingsVal($name,"WebLink","none") ,\
ReadingsVal($name,"energy_0_Total",0)/1000,\
ReadingsVal($name,"energy_1_Total",0)/1000,\
(ReadingsVal($name,"relay_0","") eq "off") ? "<span style='color:#FF0000'>off</span>":"<span style='color:#00FF00'>on</span>",\
ReadingsVal($name,"power_0",0),\
(ReadingsVal($name,"relay_1","") eq "off") ? "<span style='color:#FF0000'>off</span>":"<span style='color:#00FF00'>on</span>",\
ReadingsVal($name,"power_1",0)\
)}
attr shelly02 userReadings WebLink:network { my $ip=ReadingsVal($name,"network","");; $ip =~ s/connected to //gs;; $ip =~ s/<[^>]*>//gs;; return("<html><a href='http://".$ip."/'>WEB</a></html>") },\
\
energy_0_Total:energy_0.* monotonic { ReadingsVal($name,"energy_0",0) },\
energy_1_Total:energy_1.* monotonic { ReadingsVal($name,"energy_1",0) }\
attr shelly02 verbose 0
attr shelly02 webCmd |
Und hier mal ein Muster in einem DOIF, allerdings für andere Zähler.
Dort wird der aktuelle Zählerstand in einem reading gespeichert und die Differenz zum laufenden Zählerstand wäre dann der Tages-, Monats- bzw. Jahres Verbrauch.
Die Merke haben bei mir "_init_" im reading Namen.
< snip >
################################################################################################################
## 5 Jeden Morgen die Zählerstände aktualisieren, damit im Schwarm die Statistiken berechnet werden können
##
DOELSEIF
([00:01])
(setreading WR_1_API SW_Meter_init_FeedInGrid_Day [WR_0_KSEM:Active_energy-]) ## 6172
(setreading WR_1_API SW_Meter_init_Grid_Day [WR_0_KSEM:Active_energy+]) ## 4727
({if ($mday eq 1)
{
fhem("setreading WR_1_API SW_Meter_init_FeedInGrid_Month [WR_0_KSEM:Active_energy-]"); ## 5707
fhem("setreading WR_1_API SW_Meter_init_Grid_Month [WR_0_KSEM:Active_energy+]"); ## 4717
if ($yday eq 0)
{
fhem("setreading WR_1_API SW_Meter_init_FeedInGrid_Year [WR_0_KSEM:Active_energy-]"); ## 5241
fhem("setreading WR_1_API SW_Meter_init_Grid_Year [WR_0_KSEM:Active_energy+]"); ## 3517
}
}
}
)
Bei Verwendung der DbLog kannst Du mit DbRep auch jeweils die Differenzen zwischen zwei Zeitpunkten abfragen, da gibt es auch ein Perl Kommando mit dem man geziehlt Werte aus der Datenbank lesen kann.
VG
Christian
Hallo,
hilft Dir das vielleicht weiter?
https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler (https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler)
lg, Gerhard
Zitat von: gestein am 02 Mai 2022, 15:08:59
Hallo,
hilft Dir das vielleicht weiter?
https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler (https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler)
lg, Gerhard
Okay, das verwendet auch einfach die setreading() in DOIF subs, was man auch in einem userreading positionieren könnte.
Aber es hat noch den Vorteil der schönen Anzeige.
Zitat von: gestein am 02 Mai 2022, 15:08:59
Hallo,
hilft Dir das vielleicht weiter?
https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler (https://wiki.fhem.de/wiki/DOIF/Automatisierung#Tages-.2C_Monats-_und_Jahresstatistik_f.C3.BCr_Strom-.2C_Gas-.2C_Wasserz.C3.A4hler_und_andere_Z.C3.A4hler)
lg, Gerhard
Hi Gerhard,
das Beispiel sieht vielversprechend aus.
Kann das sein das die gesammelten Readings alle futsch sind sobald man die DEF anpasst oder FHEM neu startet?
Hallo,
die Readings sollte wie alle anderen auch bei einem Neustart wiederhergestellt werden.
Bei einer Änderung der Definition des DOIFs bin ich mir jetzt nicht sicher.
Muss ich mir heute abend anschauen.
lg, Gerhard
oder man nimmt das statistic modul
Zitat von: gestein am 02 Mai 2022, 16:37:34
Hallo,
die Readings sollte wie alle anderen auch bei einem Neustart wiederhergestellt werden.
Bei einer Änderung der Definition des DOIFs bin ich mir jetzt nicht sicher.
Muss ich mir heute abend anschauen.
Wenn man sich das DOIF im RAW Editor anschaut, dann sind dort doch die setstate am Ende aufgelistet.
Bisher habe ich da noch nichts verloren, es wäre dann aber auch noch in der DbLog zu finden.
Die Grafiken vom uiTable sehen wirklich gut aus.
Bekomme ich die Grafiken irgendwie in TabletUI eingebettet?
Hintergrund: ich greife grundsätzlich nicht direkt in FHEM rein. Zugriff ist nur im lokalen LAN zugelassen. Alles Visuelle habe ich über TabletUI zusammengefasst welches Passwortgesichert auch über Internet erreichbar ist und bei mir im Haus überall via FullyKioskBrowser angezeigt wird.
Zitat von: Tobias am 03 Mai 2022, 09:25:47
Die Grafiken vom uiTable sehen wirklich gut aus.
Bekomme ich die Grafiken irgendwie in TabletUI eingebettet?
Hintergrund: ich greife grundsätzlich nicht direkt in FHEM rein. Zugriff ist nur im lokalen LAN zugelassen. Alles Visuelle habe ich über TabletUI zusammengefasst welches Passwortgesichert auch über Internet erreichbar ist und bei mir im Haus überall via FullyKioskBrowser angezeigt wird.
Dann wirst Du die widgets vom TabletUI verwenden müssen.
Ok,
ganz aufgegeben habe ich es noch nicht. ;)
Ich habe gesehen das man mit folgendem Code den HTML-Code für ein PopUp erstellen kann.
{DOIF_tablePopUp('DOIF_counter','DOIF_counter','rc_PLUS\@orange')}
Ist es dann auch möglich über ein iframe direkt eine fhem-URL die NUR die uiTable aufrufet?
zb: <iframe src="https://192.168.178.10/fhem?detail=DOIF_counter&<was-auch-immer>" width="1000" height="658"></iframe>
Ich verwende das Modul ElectricityCalculator und bin zufrieden
Zitat von: Tobias am 03 Mai 2022, 12:01:15
Ok,
ganz aufgegeben habe ich es noch nicht. ;)
Ich habe gesehen das man mit folgendem Code den HTML-Code für ein PopUp erstellen kann.
{DOIF_tablePopUp('DOIF_counter','DOIF_counter','rc_PLUS\@orange')}
Ist es dann auch möglich über ein iframe direkt eine fhem-URL die NUR die uiTable aufrufet?
zb: <iframe src="https://192.168.178.10/fhem?detail=DOIF_counter&<was-auch-immer>" width="1000" height="658"></iframe>
Eventuell könntest Du das Device im FhemWeb in einen eigenen Raum legen und dann diese URL verwenden, dann wäre aber sicher das Menü an der linken Seite auch mit im iFrame.
Der bessere Weg wäre aber das mit den TabletUI widgets abzubilden, dafür verwendest Du das doch letztendlich :-)
Seit gestern läuft bei mir die PV Anlage (Balkonkraftwerk, aber auf dem Dach installiert). Auch ein zweiter Shelly ist dafür in Betrieb, ein ShellyEM. Der erste (ShellyEM3) tickert bereits seit einiger Zeit im Keller und nimmt meinen Hausstromverbrauch auf.
Während der EM3 das 'energy' Reading nach oben zählt, bleibt das beim EM auf 0 stehen. Wenn ich mir das Device auf der ShellyCloud zum Vergleich ansehe, scheint es korrekte Daten zur Einspeisung zu liefern. Warum triggert FHEM dazu nicht, auch im EventLog passiert nichts? Hat der Firmware Upgrade auf 1.11.8 hier etwas verbogen? Oder kann das nicht mit negativen Werten (wg Einspeisung) rechnen??
/Dank ans Forum schon mal im Voraus.
Zitat von: mcchina am 17 August 2022, 15:34:21
Seit gestern läuft bei mir die PV Anlage (Balkonkraftwerk, aber auf dem Dach installiert). Auch ein zweiter Shelly ist dafür in Betrieb, ein ShellyEM. Der erste (ShellyEM3) tickert bereits seit einiger Zeit im Keller und nimmt meinen Hausstromverbrauch auf.
Während der EM3 das 'energy' Reading nach oben zählt, bleibt das beim EM auf 0 stehen. Wenn ich mir das Device auf der ShellyCloud zum Vergleich ansehe, scheint es korrekte Daten zur Einspeisung zu liefern. Warum triggert FHEM dazu nicht, auch im EventLog passiert nichts? Hat der Firmware Upgrade auf 1.11.8 hier etwas verbogen? Oder kann das nicht mit negativen Werten (wg Einspeisung) rechnen??
/Dank ans Forum schon mal im Voraus.
Merkwürdig ist, dass Dein Relay auf off steht, das würde ich mal auf on setzen, damit auch Strom ins Haus fließen kann.
Warum dann aber Power angezeigt wird verstehe ich jetzt auch nicht.
Dein Shelly Device zeigt auch zwei Power und Energy an, aber nur ein Relay. Eventuell passt das Model nicht so richtig???
Ich habe es mit im Shop mal angesehen und eine oder zwei Messzangen gesehen. Wie ist das bei Dir angeschlossen?
Bisher kannte ich nur den Shelly 1PM in Verbindung mit Balkonmodulen.
VG
Christian
Zitat von: ch.eick am 17 August 2022, 15:47:07
Merkwürdig ist, dass Dein Relay auf off steht, das würde ich mal auf on setzen, damit auch Strom ins Haus fließen kann.
Warum dann aber Power angezeigt wird verstehe ich jetzt auch nicht.
Dein Shelly Device zeigt auch zwei Power und Energy an, aber nur ein Relay. Eventuell passt das Model nicht so richtig???
Ich habe es mit im Shop mal angesehen und eine oder zwei Messzangen gesehen. Wie ist das bei Dir angeschlossen?
Bisher kannte ich nur den Shelly 1PM in Verbindung mit Balkonmodulen.
VG
Christian
Ich nutze den Schaltausgang des EM nicht, sondern betreibe das Gerät lediglich als Strommesseinrichtung. Von den zwei möglichen Zangen, habe ich nur eine direkt an die Zuleitungsphase vom Wechselrichter angeschlossen.
Und ich kann auf dem EM3 im Hausanschlussraum sehen, dass die PV in der Tat auf der einen Phase Strom einspeist.
Zitat von: mcchina am 17 August 2022, 16:13:00
Ich nutze den Schaltausgang des EM nicht, sondern betreibe das Gerät lediglich als Strommesseinrichtung. Von den zwei möglichen Zangen, habe ich nur eine direkt an die Zuleitungsphase vom Wechselrichter angeschlossen.
Und ich kann auf dem EM3 im Hausanschlussraum sehen, dass die PV in der Tat auf der einen Phase Strom einspeist.
Okay, dann bin ich da raus, das kenne ich noch nicht :-)
Bei dem Shelly 1PM kann man das Balkonmodul mit einem Relay noch abschalten und der misst auch in beide Richtungen.
merkwürdig .. auch mit dem 2. Kanal keine Readings von energy_0/1 auf dem ShellyEM.
Beide Kanäle erscheinen trotzdem auf der Shelly Cloud Seite mit vernünftigen Werten.
Und der Use Case ist auch auf den Shelly Support Seiten beschrieben. Wo steckt der Denkfehler??
Dein Shelly hat getrennte Readings. Energy und Returned_Energy.
WEnn nichts verbraucht wird wird bein Energy auch nichts angezeigt. Warum Returned_Energy in deinem Modul nicht angezeigt wird kann ich dir leider nicht sagen.
Ich benutze die templates nicht.
Zitat von: DetlefR am 17 August 2022, 19:22:57
Dein Shelly hat getrennte Readings. Energy und Returned_Energy.
WEnn nichts verbraucht wird wird bein Energy auch nichts angezeigt. Warum Returned_Energy in deinem Modul nicht angezeigt wird kann ich dir leider nicht sagen.
Ich benutze die templates nicht.
Danke Detlef! Das ist des Pudels Kern. das 36_Shelly.pm sieht keine ReturnedEnergy vor.
Wie kann ich herausfinden, wie das Feld heisst, das vom ShellyEM übertragen wird?
Mal sehen, ob ich das von Shelly selbst aus der API Doko ersehen kann.
Zitat von: mcchina am 17 August 2022, 20:11:26
Danke Detlef! Das ist des Pudels Kern. das 36_Shelly.pm sieht keine ReturnedEnergy vor.
Wie kann ich herausfinden, wie das Feld heisst, das vom ShellyEM übertragen wird?
Mal sehen, ob ich das von Shelly selbst aus der API Doko ersehen kann.
aha: shellies/shellyem-<deviceid>/emeter/<i>/returned_energy energy returned to the grid in Watt-minute
ich baue das mal in eine Testversion ein.
Sorry,
ich habe erst später mitbekommen, dass Du die HTTP Version benutzt.
Bei mir läuft das alles über MQTT.
Es gibt da noch "reactive_power" und "total_returned". Vielleicht ist das noch hilfreich.
Zitat von: DetlefR am 17 August 2022, 20:42:07
Sorry,
ich habe erst später mitbekommen, dass Du die HTTP Version benutzt.
Bei mir läuft das alles über MQTT.
Es gibt da noch "reactive_power" und "total_returned". Vielleicht ist das noch hilfreich.
für die Shellies nutze ich auch MQTT. Im verbose Logfile finde ich auch die Readings, die ich suche:
"emeters":[{"power":0.00,"reactive":0.00,"pf":0.00,"voltage":230.41,"is_valid":true,"total":0.0,
"total_returned":613.8},{"power":0.00,"reactive":0.00,"pf":0.00,"voltage":230.41,"is_valid":true,"total":0.0,"total_returned":2.5}
Wie kann ich das in das Device bekommen, ein UserReading hat nicht funktioniert?
Ich denke, entweder das 36_Shelly.pm ändern oder direkt mit MQTT arbeiten. Letzeres habe ich noch nicht gemacht. Hast Du einen Tipp?
ZitatIch denke, entweder das 36_Shelly.pm ändern oder direkt mit MQTT arbeiten. Letzeres habe ich noch nicht gemacht. Hast Du einen Tipp?
Also entweder fragst Du den Professor (Modulautor Prof. Dr. Peter A. Henning), ob er das einbaut oder Du nutzt MQTT.
Wenn Du sowieso schon MQTT im Einsatz hast, ist das sicher der einfachere Weg.