Neues Modul: ElectricityCalculator

Begonnen von Sailor, 26 August 2016, 21:05:35

Vorheriges Thema - Nächstes Thema

Mellowback

Kannst du mir eine kurze Info geben wo und wie ?

octek0815

Zitat von: Mellowback am 11 Februar 2021, 19:33:33
Kannst du mir eine kurze Info geben wo und wie ?

Linux Kenntnisse vorhanden?

Mellowback


octek0815

Zitat von: Mellowback am 11 Februar 2021, 19:36:52
Ist gegeben

Ok.

Im Ordner /opt/fhem/restoreDir/update gibt es Ordner mit Datum
Hier reinschauen in den Tag wo du das Update durchgeführt hast.
Dann das Modul 73_ElectricityCalculator.pm aus dem Ordner 2021-XX-XX/FHEM nach /opt/fhem/FHEM kopieren (cp) oder verschieben (mv).
Wenn Du kopierest, solltest Du anschließend die Recht mit chown entsprechend prüfen und eventuell korrigieren.
Nun FHEM neu starten oder alternativ mit reload 73_ElectricityCalculator das Modul neu laden.
Wenn Du weiterhin Updates fahren möchtest, könntest Du noch das Updates des einzelnen Moduls blockieren.
Dafür musst Du im Device Global das Attribut exclude_from_update definieren und 73_ElectricityCalculator.pm eintragen.

Fertig.

VG
Olli


Mellowback


octek0815

Zitat von: Sailor am 05 Februar 2021, 19:18:08
Das Verhalten kommt zustande, wenn nach dem neuen aufladen des Moduls noch keine 2 bis 3 Werte eingelesen wurden.

Einfach mal ein bisschen abwarten und dann die Mitternacht abwarten.

Ggf könnt Ihr das Modul mal auf verbose = 5 stellen.

Gruss
    Sailor

Hallo Sailor,

ich habe ein wenig weiter an der Ursache geforscht und kann sagen das die neuen Versionen grundsätzlich funktionieren.

Ich nutze den den ElectricityCalculator für einen Zweirichtungszähler (Bezug und Einspeisung PV) und für die PV Zählung.
Nun hatte ich ja das Update gefahren und dann war beim ElectricityCalculator für die Einspeisung plötzlich der Tageszähler auf null zurückgesetzt (ist unglücklich wenn man das für eine Aufzeichnung verwendet).
Der Auslöser hierfür ist das dein Modul 2-3 Readings braucht bis dann Day1st und DayLast dann auch wirklich 1st und Last werden.
Nun ist es so das je nach Tageszeit, Eigenverbrauch und PV Leistung, es vorkommen kann das gerade nichts eingespeist wird und somit der Counter vom Zähler nicht höher zählt.
Es kommen zwar Readings beim ElectricityCalculator an aber halt ohne einen höheren Wert.
Es reicht also dem ElectricityCalculator nicht 2-3 Readings zu bekommen, sondern diese müssen auch noch immer höher werden.
Dieses Verhalten ist sehr unglücklich, zumal das mir der vorherigen Version nicht so war.
Es würde bedeuten das bei einem nächsten Update das wieder passieren kann, wenn ich z.B. das Update Nachts fahre und ja dann der Zähler nicht hochzählt.

Wäre es möglich das alte Verhalten wieder herzustellen?

Viele Grüße
Oliver

Sailor

Hallo Oliver

Zitat von: octek0815 am 14 Februar 2021, 15:28:17
Nun ist es so das je nach Tageszeit, Eigenverbrauch und PV Leistung, es vorkommen kann das gerade nichts eingespeist wird und somit der Counter vom Zähler nicht höher zählt.
Dieses Verhalten ist sehr unglücklich, zumal das mir der vorherigen Version nicht so war.
Es würde bedeuten das bei einem nächsten Update das wieder passieren kann, wenn ich z.B. das Update Nachts fahre und ja dann der Zähler nicht hochzählt.

Ich glaube hier liegt ein Missverständnis vor.

Auch das Alte Modul hat 2-3 Readings gebraucht um funktionieren zu können.

Das neue Modul hat neue versteckte Readings, die erst angelegt werden wenn einmalig 2-3 Werte am Anfang für deren Initialisierung sorgen.
Das bedeutet, dass du danach keine weiteren Probleme zu erwarten hast, solange du nicht die Readings alle wieder löschst.
Ganz am Anfang beim ersten Mal bekommt man sogar eine Fehlermeldung im Log.
Einfach ignorieren - Die taucht ab dem zweiten Mal nie wieder auf.

Gruß
    Sailor

******************************
Man wird immer besser...

octek0815

Zitat von: Sailor am 15 Februar 2021, 11:30:51
Hallo Oliver

Ich glaube hier liegt ein Missverständnis vor.

Hallo Sailor,

hast vermutlich Recht, und ich kann mich nicht mehr erinnern ob ich nicht damals bei der Erstanlage das selbe Problem hatte.
Es wäre meines Erachtens trotzdem Gut wenn es möglich wäre den Start des Zählens für Day1st und DayLast mit set so zu beeinflussen das ein manuelles set auch wirklich den Startpunkt setzt (forcieren). Gerade in Bezug mit PV wo PV-Erzeugung, PV-Einspeisung und Netz-Bezug nicht immer zählen da nix kommt oder verbraucht wird. Dann ist ein Updates des Moduls schlecht und ich habe dann keinen Einfluss drauf.

Grüße
Olli

dieter114

#683
Zitat von: ByteWriter am 01 März 2020, 15:26:47
Hallo,

Ich benutze den EC um die erzeugte Energie eines Solar Moduls, welche mit einem Sonoff Pow gemessen wird, zu berechnen.
Das hat bisher wunderbar funktioniert.
Ich benutze auch die Module vom Sailor aber warum für eine Solaranlage die du schon mit einem Sonoff Pow ausliest?
Im Pow hast du doch schon jede Menge Statistik drin...

Grüße Wolfdieter
RPi II+III+IV,OWX,div.1W Module,HM Zisterne,div. CUL, sduino MAPLEMINI, div ESPEasy, div Tasmota, MQTT2Server,WU-Upload,TabletUI, Indego,Poolsteuerung mit fhem

Hardy62

#684
Hallo guten Tag,
habe das Problem, dass das Reading (Gesamt) aus dem ich meinen ElectricityCalculator speisen will, stets am Stringanfang das Zeichen "<" mit dabeisteht.
<28109280.6
Das ist das Zeichen vom Hager-Zähler, dass gerade Einspeisung stattfindet.
Wenn ich dieses Reading beim ElectricityCalculator im DEF-Teil verwende, werden keine Werte gezählt.

PV_ZAEHLER:Gesamt:.* 

defmod CN.PVZAEHLER_TEST2 ElectricityCalculator PV_ZAEHLER:Gesamt.*

Es passiert dann einfach ...nichts!

Ich habe schon folgendes versucht
-  mit Perl  {substr(PV_ZAEHLER:Gesamt,1,9)
-  auch DEVICE:READING:d  für Zahl,
-  ReadingsNum("DEVICE","READING",0) und
-  mit einer Regex  \d+\.?\d*  oder auch  ~/.{10}$/

komme aber leider keinen Schritt weiter. Kann mir bitte jemand weiterhelfen ...?
Ich möchte es gerne NICHT mit dem Zwischenschritt eines UserReadings lösen !

Was funktionieren würde:

defmod CN.PVZAEHLER_TEST2 ElectricityCalculator PV_ZAEHLER.*

Man hat dann aber aaasig viele unnütze Readings

Internals:
   list PV_ZAEHLER

   DEF        /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0@9600,8,N,1 SML
   DeviceName /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_0001-if00-port0@9600,8,N,1
   FUUID      5d924a22-f33f-1aca-d415-d4fffe1851ec45be
   MeterType  SML
   NAME       PV_ZAEHLER
   NEXT       2021-03-11 13:40:10
   NR         283
   PARTIAL   
   STATE      PV-Einspeisung: 28109 kWh,  momentan: 3073 W um 11.3.21, 13:39:52.
   TYPE       OBIS
   READINGS:
     2021-02-26 08:45:02   1.0.0.0.9.255   09-AA-BB-BB-DD-00-00-EE-FF-7C
     2021-02-26 08:45:02   129.129.199.130.3.255 HAG
     2021-02-26 08:45:02   129.129.199.130.5.255 CB2E--YYYY--ACD8-5BXX--ZZZZ-3C67--ZZZZ-ZZZZ-AAAA-BBB6--EZZA-ZZZZ--EEEE-01
     2021-03-11 13:39:52   Gesamt          <28109280.6
     2021-03-11 13:39:52   ManufID         HAG
     2021-03-11 13:39:52   PublicKey       ZZZZ-ZZZZ-ZZZZ-ZZZZ-



list 10-CN.PVZAEHLER_TEST2
Internals:
   DEF        PV_ZAEHLER.Gesamt:.*
   FUUID      6049f470-f33f-1aca-9654-f80d5fa59f746072
   NAME       CN.PVZAEHLER_TEST2
   NR         515
   NTFY_ORDER 10-CN.PVZAEHLER_TEST2
   REGEXP     PV_ZAEHLER.Gesamt:.*
   STATE      active
   TYPE       ElectricityCalculator
   OLDREADINGS:
   READINGS:
   helper:
     gets:
     sets:
   system:
     DecimalPlace %.3f
     SiPrefixPowerFactor 1
Attributes:
   BasicPricePerAnnum 0
   Currency   €
   DecimalPlace 3
   ElectricityCounterOffset 0
   ElectricityKwhPerCounts 1
   ElectricityPricePerKWh 0.XXXX
   MonthOfAnnualReading 1
   MonthlyPayment 0
   ReadingDestination CalculatorDevice
   SiPrefixPower kW
   event-on-change-reading .*
   event-on-update-reading .*
   room       PVERTRAG,SML
   stateFormat Erzeugung Vortag: PV_ZAEHLER_GGESAMT_EnergyDayLast kWh | Heute: PV_ZAEHLER_GGESAMT_EnergyDay kWh | Monat: PV_ZAEHLER_GGESAMT_EnergyMonth kWh | Jahr: PV_ZAEHLER_GGESAMT_EnergyYear kWh


Viele Grüße Hardy
Signalduino 433, Intertechno, ISK Zähler mit SML für Verrechnungszähler, Solarmax, ConfigFirmata, ARDMega&Nanos,DS18B20,DHT22,I2C, BME280,S0 Zählimpulse(Stro,Ga,Wa),SDS011 FeinstaubS,Sonoffs,Shellys,Text2Speech,UBA Luftd,Corona-Arc-GIS,RadonEye,CO2-Mess,Ecoflow D2,PV-Überschuß m PID-Regler Heizst

schilli

Hallo zusammen,

Stromzähler und Calculator funktionieren. Aber ich bekomme einfach die Werte von DayLast nicht in einen Plot, obwohl sie im Reading sind.
Kennt jemand das Problem?


Grüße aus Bayern
Christian

Vorhand

Hallo,
Mein Plot zeigt positive und negative Werte für _PowerCurrent.
Meine Kette besteht aus einem S0-Zähler mit 0,5Wh/Imp, einem ESP mit ESPeasy mit Time 100, Counter Type Delta und Mode Type Change.
Die Pulse kommen in fhem an und werden auf den ElectricityCalculator mit ESPEasy_ESP_Easy6_BoilerStrom:Count.* eingespeist.
Hier habe ich 0.0005 als Wertigkeit eingestellt, entsprechend 0,5Wh/Imp.
In beigefügtem Plot ist der BoilerStrom vom Esp und der Boilerstrom (Leistung) vom Calculator dargestellt mit seinen pos. und neg. Werten.
Was mache ich falsch? Hab schon jede Menge probiert - kein Erfolg.
Danke
Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly

ThomasFh

Hallo,

habe den Fritz Dect 200 seit einem Jahr erfolgreich im Einsatz.
Ich logge die Leistung einer mini PV-Anlage damit.
Ich würde die Werte gerne engmaschiger erfassen (just for fun).

Ich kenne das minimale Intervall was die Fritz dect selbst erfassen kann nicht.
Wenn man in  die Fritzbox schaut, sieht man zumindest, dass sich die Werte alle 10 Sekunden ändern, was mir schon reichen würde.

D.h., ich würde dann gerne in FHEM alle 10 sekunden messen.

reicht es hier, wenn man as

eent-min-intervall auf: power:10 setzt?



EM1010PC, EM1000WZ, WS300PC, S300TH, Fritz Dect 200, Victron MPII, Cerbo GX, US3000C

Radium

#688
Hallo,

mein Problem ist, dass der ElectricityCalculator bei ElectricityKwhPerCounts = 0.001 schon bei 3.6kW Power an seine Grenzen stößt. Ich weiß, mit einem 1-phasen Zähler hätte man niemals das Problem, aber meine Wärmepumpe läuft nun mal auf 3 Phasen und der Eltako-Energiezähler gibt leider Wattgenau die S0-Pulse raus obwohl 100 Pulse pro 1kWh angegeben sind (oder liegt darin eventuell auch ein Fehler?) Allerdings erwarte ich im Winter das die Leistungsaufnahme auf bis zu 9kWh bei aktiviertem Durchlauferhitzer den ElectricityCalculator überfordert.

Eine andere Frage ist, wenn ich den GPIO Counter um ein userReading erweitere und dieses neue Reading für den ElectricityCalculator zum Zählen verwende, anstatt dem Standardwert GPIO24:Counter:.* dann GPIO24:CounterDividedBy3:.*, würde das mein Problem lösen? Denn der "CounterDividedBy3" wird trotzdem mit dem gleichen Timestamp geschrieben wie "Counter" auch wenn sich der Wert von "CounterDividedBy3" durch die Umwandlung von Float zum Integer nicht verändert.
Wie funktioniert der ElectricityCalculator beim Zählen? Überprüft er die Wertänderung vom "Counter" oder die Wertänderung des Timestamp?

attr GPIO24 userReadings CounterDividedBy3 { sprintf("%d",ReadingsVal("GPIO24", "Counter",0)/3) }

Sailor

Hallo Radium

Zitat von: Radium am 29 Oktober 2021, 10:50:19
mein Problem ist, dass der ElectricityCalculator bei ElectricityKwhPerCounts = 0.001 schon bei 3.6kW Power an seine Grenzen stößt. Ich weiß, mit einem 1-phasen Zähler hätte man niemals das Problem, aber meine Wärmepumpe läuft nun mal auf 3 Phasen und der Eltako-Energiezähler gibt leider Wattgenau die S0-Pulse raus obwohl 100 Pulse pro 1kWh angegeben sind (oder liegt darin eventuell auch ein Fehler?) Allerdings erwarte ich im Winter das die Leistungsaufnahme auf bis zu 9kWh bei aktiviertem Durchlauferhitzer den ElectricityCalculator überfordert.

Wieso leider? - Von einen Impuls pro Wattstunde können Andere nur träumen.
Die Frage ist, in welchem Zeitraum gibt der Zaehler diese ab.
Zählt dein Counter die Wattstunden, die Kilowattstunden hoch?

Erinnerung: Das Calculator - Modul braucht einen fortlaufend aufaddierenden Zähler.

Zitat von: Radium am 29 Oktober 2021, 10:50:19
Eine andere Frage ist, wenn ich den GPIO Counter um ein userReading erweitere und dieses neue Reading für den ElectricityCalculator zum Zählen verwende, anstatt dem Standardwert GPIO24:Counter:.* dann GPIO24:CounterDividedBy3:.*, würde das mein Problem lösen? Denn der "CounterDividedBy3" wird trotzdem mit dem gleichen Timestamp geschrieben wie "Counter" auch wenn sich der Wert von "CounterDividedBy3" durch die Umwandlung von Float zum Integer nicht verändert.
Wie funktioniert der ElectricityCalculator beim Zählen? Überprüft er die Wertänderung vom "Counter" oder die Wertänderung des Timestamp?

attr GPIO24 userReadings CounterDividedBy3 { sprintf("%d",ReadingsVal("GPIO24", "Counter",0)/3) }

Also hier musst du uns mal bitte hier in Code Tags (#-Taste oben) die Listings (fhem-Befehl: list) deines Counters und deines Calculator-Moduls sowie dein Hardware - Anbindung an deinen (welchen) Zähler.
Mit einem Blick in die Glaskugel können wir dir nicht helfen.

Gruß
    Sailor
******************************
Man wird immer besser...