Neues Modul: ElectricityCalculator

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

Vorheriges Thema - Nächstes Thema

awex102

Hallo, kann man das Modul auch mit dblog verwenden (da werden meine Zählerstände reingeschrieben) ?

Bisher habe ich das Modul nur direkt mit dem Zählerdevice verbunden und musste nachdem schon Daten eingelaufen sind die Einheit ändern. Das Modul scheint sensibel darauf zu reagieren: Danach wurden die aufsummierten Werte negativ (durch das / 1000). Kann man das Modul animieren, die Summen auch neu zu berechnen?

Deshalb kam ich auf die DBLog. Dort habe ich historische Werte.

Danke !

Tobias

Hi,
mein Counterdevice hat sich resettet, fängt wieder bei 0 an. Allerings fängt im ElectricityCalculator das Reading CounterCurrent auch wieder bei 0 an. Ist das so gewollt??? Ich dachte es bleibt stabil und rechnet immer weiter auf Grundlage der Veränderung des Counters zum letzten Stand...
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

majorshark

Hallo,

schau Dir mal die userReadings in der Commandref an. Da gibt es eine modifier monotonic.
Zitatmonotonic: wenn die Differenz zw. dem aktuellen und dem vorherigen Wert positiv ist wird diese Differenz zum Reading addiert. Damit lässt sich von einem Zähler der bei Stromverlust zurückgesetzt wird ein monoton wachsender Zähler ableiten.

Das hilft insofern, daß der Zähler im Calculator nicht auf Nul zurückgesetzt wird wenn der Eingangszähler resettet.
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

Tobias

HI majorshark,
das kenne ich, allerdings benutze ich im ElectricityCalculator kein Userreading. Ich war der Meinung das genau dieses resetten im Modul selbst abgefangen wird... Also entweder habe ich bei mir in der Definition einen Fehler oder das Modul macht es wirklich nicht von alleine
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

majorshark

Zitat von: Tobias am 22 Januar 2017, 13:24:08
HI majorshark,
das kenne ich, allerdings benutze ich im ElectricityCalculator kein Userreading. Ich war der Meinung das genau dieses resetten im Modul selbst abgefangen wird... Also entweder habe ich bei mir in der Definition einen Fehler oder das Modul macht es wirklich nicht von alleine
So habe ich auch geglaubt. Aber! Das Modul übernimmt lediglich den Zählerstand, mehr nicht. Das kann auch null sein. Ich habe das Reading in das Device des Hardwarezählers hinzugefügt. Dieses Reading übergebe ich dann an den Calculator.
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

Sailor

Hallo Ihr Beiden

Zitat von: majorshark am 22 Januar 2017, 20:22:01
So habe ich auch geglaubt. Aber! Das Modul übernimmt lediglich den Zählerstand, mehr nicht. Das kann auch null sein. Ich habe das Reading in das Device des Hardwarezählers hinzugefügt. Dieses Reading übergebe ich dann an den Calculator.

Dieses Problem weckt meine Neugier. Vielleicht ließe sich das implementieren.
Könnt Ihr dazu mal genau definieren, wo das Problem liegt?

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

majorshark

Mach ich gerne. Ich zeiche mal meine Konstellation auf.

An meinem Gaszähler habe ich eine Reedkontakt IN-Z61 (http://www.elster.sk/en/product-details/519/en/IN-Z61?fid=F032EA0A896F40B486350FF21BE30E5E#sbox0=;) der die Impulse von diesem abnimmt. Dieser Reedkontakt ist wiederum an einen ESP8266 mit ESPEasy angeschlossen der die Impulse zählt und aller 5min den Zählerstand sendet. Dieser Zählerstand wird dann in einem ESPEASY DEVICE abgebildet. Jedes Event puscht den Zählerstand dann auf den GasCalculator. Dort wir dieser dann mit dem GasCounterOffset zum richtigen Zählerstand addiert.

Wenn jetzt der ESP wegen Stromausfall ausfällt und wieder hochfährt ist der Zählerstand im ESP Null. Dieser Zählerstand wird natürlich bis in den GASCALCULATOR durchgereicht.
Gaaanz schlecht! >:(
Deswegen der Umweg über ein userReading und dem modifier monotonic. Solange der Neue Zählerstand kleiner als der alte Zählerstand ist wird nichts geändert. Da schießt es wenigsten den Zählerstand nicht ins Nirwana. Natürlich kommt man nicht drumherum, die Differenz zu korrigieren.

Dieses "Lösch" Verhalten hat man ja immer wenn der Hardwarezähler seine Daten nicht behält.

Kann auch sein, das ich in meiner Kammer da was übersehen habe, aber wie ich mich erinnern kann ist beim experimentieren der Zählerstand im GasCalculator durcheinander gekommen. Wer weiß was dann am Ende in den Readings steht.

Internals:
   DEF        ESPEasy_IN_Z62:Total.*
   NAME       Gaszaehler
   NR         275
   NTFY_ORDER 10-Gaszaehler
   REGEXP     ESPEasy_IN_Z62:Total.*
   STATE      active
   TYPE       GasCalculator
   Readings:
     2016-12-01 00:01:30   ESPEasy_IN_Z62_Total_CostMonthLast 67.717
     2017-01-23 12:13:33   ESPEasy_IN_Z62_Total_EnergyCostDay 1.662
     2017-01-23 00:02:49   ESPEasy_IN_Z62_Total_EnergyCostDayLast 3.694
     2017-01-23 12:13:33   ESPEasy_IN_Z62_Total_EnergyCostMeter 226.606
     2017-01-23 12:13:33   ESPEasy_IN_Z62_Total_EnergyCostMonth 76.578
     2017-01-01 00:01:04   ESPEasy_IN_Z62_Total_EnergyCostMonthLast 82.310
     2017-01-23 12:13:33   ESPEasy_IN_Z62_Total_EnergyCostYear 76.578
     2017-01-01 00:01:04   ESPEasy_IN_Z62_Total_EnergyCostYearLast 150.027
     2017-01-23 12:13:33   ESPEasy_IN_Z62_Total_EnergyDay 29.413
     2017-01-23 00:02:49   ESPEasy_IN_Z62_Total_EnergyDayLast 65.375
     2017-01-23 12:13:33   ESPEasy_IN_Z62_Total_EnergyMeter 4010.720
     2017-01-23 12:13:33   ESPEasy_IN_Z62_Total_EnergyMonth 1355.370
     2017-01-01 00:01:04   ESPEasy_IN_Z62_Total_EnergyMonthLast 1456.814
     2017-01-23 12:13:33   ESPEasy_IN_Z62_Total_EnergyYear 1355.370
     2017-01-01 00:01:04   ESPEasy_IN_Z62_Total_EnergyYearLast 2655.349
     2017-01-23 12:13:33   ESPEasy_IN_Z62_Total_FinanceReserve 491.074
     2017-01-23 12:13:33   ESPEasy_IN_Z62_Total_Meter 7290.370
     2017-01-23 12:13:33   ESPEasy_IN_Z62_Total_MonthMeterReading 8
     2017-01-23 12:13:33   ESPEasy_IN_Z62_Total_PowerCurrent 11.366
     2017-01-23 12:13:33   ESPEasy_IN_Z62_Total_PowerCurrent_Round 11366
     2017-01-23 12:13:33   ESPEasy_IN_Z62_Total_PowerDayAver 4.407
     2017-01-23 09:43:24   ESPEasy_IN_Z62_Total_PowerDayMax 772.903
     2017-01-23 00:02:49   ESPEasy_IN_Z62_Total_PowerDayMin 0.000
     2017-01-23 00:02:49   ESPEasy_IN_Z62_Total_Vol1stDay 7287.63
     2016-11-04 13:27:11   ESPEasy_IN_Z62_Total_Vol1stMeter 6916.75
     2017-01-01 00:01:04   ESPEasy_IN_Z62_Total_Vol1stMonth 7164.110
     2017-01-01 00:01:04   ESPEasy_IN_Z62_Total_Vol1stYear 7164.110
     2017-01-23 00:02:49   ESPEasy_IN_Z62_Total_VolLastDay 7287.630
     2016-11-04 13:27:11   ESPEasy_IN_Z62_Total_VolLastMeter 6916.750
     2017-01-01 00:01:04   ESPEasy_IN_Z62_Total_VolLastMonth 7164.110
     2017-01-01 00:01:04   ESPEasy_IN_Z62_Total_VolLastYear 7164.110
   System:
     SiPrefixPowerFactor 1
Attributes:
   BasicPricePerAnnum 0
   Currency   €
   GasCounterOffset 7134.25
   GasCubicPerCounts 0.01
   GasNominalHeatingValue 10.734757
   GasPricePerKWh 0.0565
   GaszValue  1
   MonthOfAnnualReading 6
   MonthlyPayment 89.71
   ReadingDestination CalculatorDevice
   SiPrefixPower W
   Volume     m³
   room       3.1_Zaehler
   userReadings ESPEasy_IN_Z62_Total_PowerCurrent_Round {sprintf("%.0f",ReadingsVal("Gaszaehler","ESPEasy_IN_Z62_Total_PowerCurrent","?")*1000)}

Internals:
   DEF        192.168.3.205 80 ESP_Bridge IN_Z62
   ESP_BUILD  142
   ESP_Bridge_MSGCNT 7315
   ESP_Bridge_TIME 2017-01-23 12:18:34
   ESP_SLEEP  0
   ESP_UNIT   5
   HOST       192.168.3.205
   IDENT      IN_Z62
   INTERVAL   300
   IODev      ESP_Bridge
   LASTInputDev ESP_Bridge
   MSGCNT     7315
   NAME       ESPEasy_IN_Z62
   NOTIFYDEV  global
   NR         290
   NTFY_ORDER 50-ESPEasy_IN_Z62
   PORT       80
   STATE      opened
   SUBTYPE    device
   TYPE       ESPEasy
   VERSION    0.8
   Readings:
     2017-01-23 12:18:34   Absolut         15615
     2017-01-23 12:18:34   Count_m3per5min 0.72
     2017-01-23 12:18:34   Differenz       6
     2017-01-23 12:12:25   RSSI            -79
     2017-01-23 12:18:34   Total           15618
     2017-01-23 12:12:18   Uptime          43556
     2017-01-23 12:12:12   Voltage         3.21
     2017-01-23 12:18:34   Zeit            49663
     2017-01-23 12:14:36   presence        present
     2017-01-10 19:11:16   state           opened
   Helper:
     fpc        1484071882
     Intat:
       1:
         FN         ESPEasy_statusRequest
         INTERVAL   301
         TRIGGERTIME 23.01.2017 12:19:36
     Received:
       Absolut    1485170314
       Count      1484292832
       Differenz  1485170314
       RSSI       1485169945
       Time       1484292832
       Total      1484292832
       Uptime     1485169938
       Voltage    1485169932
       Zeit       1485170314
Attributes:
   IODev      ESP_Bridge
   Interval   300
   group      ESPEasy Device
   presenceCheck 1
   readingSwitchText 1
   room       9.7_ESPEasy
   setState   0
   userReadings Count_m3per5min {sprintf("%.2f",ReadingsVal("ESPEasy_IN_Z62","Differenz",0)/100*12);;},
Total monotonic {ReadingsVal("ESPEasy_IN_Z62","Absolut",0)}
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

Sailor

Hi Sharky

Zitat von: majorshark am 23 Januar 2017, 12:25:21
An meinem Gaszähler habe ich eine Reedkontakt IN-Z61 (http://www.elster.sk/en/product-details/519/en/IN-Z61?fid=F032EA0A896F40B486350FF21BE30E5E#sbox0=;) der die Impulse von diesem abnimmt. Dieser Reedkontakt ist wiederum an einen ESP8266 mit ESPEasy angeschlossen der die Impulse zählt und aller 5min den Zählerstand sendet. Dieser Zählerstand wird dann in einem ESPEASY DEVICE abgebildet. Jedes Event puscht den Zählerstand dann auf den GasCalculator. Dort wir dieser dann mit dem GasCounterOffset zum richtigen Zählerstand addiert.

So weit so gut

Zitat von: majorshark am 23 Januar 2017, 12:25:21
Wenn jetzt der ESP wegen Stromausfall ausfällt und wieder hochfährt ist der Zählerstand im ESP Null. Dieser Zählerstand wird natürlich bis in den GASCALCULATOR durchgereicht.
Gaaanz schlecht! >:(

Jau, das ist ganz großer Mist!

Zitat von: majorshark am 23 Januar 2017, 12:25:21
Deswegen der Umweg über ein userReading und dem modifier monotonic. Solange der Neue Zählerstand kleiner als der alte Zählerstand ist wird nichts geändert. Da schießt es wenigsten den Zählerstand nicht ins Nirwana. Natürlich kommt man nicht drumherum, die Differenz zu korrigieren.

Dieses "Lösch" Verhalten hat man ja immer wenn der Hardwarezähler seine Daten nicht behält.

Dies ware somit auch der Fall, sobald man einen Zählerwechsel hat: Der neue Zähler ist auf 0 und der Offset soll dies ja auch abbilden und somit stimmen die Anschlußberechnungen nicht mehr...

Zitat von: majorshark am 23 Januar 2017, 12:25:21
Kann auch sein, das ich in meiner Kammer da was übersehen habe, aber wie ich mich erinnern kann ist beim experimentieren der Zählerstand im GasCalculator durcheinander gekommen. Wer weiß was dann am Ende in den Readings steht.

Ne ne, mit deinem Oberstübschen ist alles in Ordnung, mit Ausnahme, dass der Zähler vielleicht mit einer Kleinen Lithium - Knopfzelle versehen werden sollte:
http://www.hobby-boards.com/store/products/DS2423.html
;)
Ist übrigens meine Lösung für das gleiche Problem!

Ich lasse mir mal was einfallen, wie man einen Zählerwechsel gestalten kann, aber richtig ist es in Eurem Fall, nach dem Stromausfall immer den Offset zu korrigieren.
Der Zählerstand im Calculator-Modul soll ja identisch sein mit dem mechanischen Zähler.

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

majorshark

ZitatNe ne, mit deinem Oberstübschen ist alles in Ordnung, mit Ausnahme, dass der Zähler vielleicht mit einer Kleinen Lithium - Knopfzelle versehen werden sollte:
http://www.hobby-boards.com/store/products/DS2423.html
;)
Ist übrigens meine Lösung für das gleiche Problem!

Der Link funktioniert leider nicht.

Mit der Knopfzelle wird das nicht lange funktionieren. Dafür bedient sich der ESP zu sehr aus der Stromquelle. Nach mikrocontroller.net so um 80mA und im Peak geht er bis knapp 500mA. Selber gemessen habe ich noch nicht. Zumal das ganz schön Oversized ist - ne USV für nen ESP.  :o
Grüße aus Dewitz

VM auf Synology DS718+ mit FHEM 5.9 auf Debian 9.5/32-Bit (stretch)
Nächster Leipziger Stammtisch:

sash.sc

Hallo zusammen.

Habe mir heute einen S0 1Phasen Zähler installiert und diesen über einen WEMOS mit ESPEasy an FHEM angebunden.

Ich bekommen folgende Daten an FHEM gesendet:


  Readings:
     2017-02-05 18:23:00   Count           0.00
     2017-02-05 18:23:00   Time            681151.00
     2017-02-05 18:23:00   Total           6.00
     2017-02-05 18:20:19   presence        present
     2017-02-05 18:23:00   state           Cou: 0.00 Tim: 681151.00 Tot: 6.00


Der Zähler hat 1000 Impulse je KWh.

Ich haben den ElectricityCalculator jetzt so definiert.


Internals:
   CFGFN
   DEF        PowerWamDry:Count|Time|total
   NAME       Stromzaehler
   NR         14115
   NTFY_ORDER 10-Stromzaehler
   REGEXP     PowerWamDry:Count|Time|total
   STATE      active
   TYPE       ElectricityCalculator

Attributes:
   BasicPricePerAnnum 0
   Currency   €
   ElectricityCounterOffset 0
   ElectricityKwhPerCounts 0.001
   ElectricityPricePerKWh 0.25
   MonthOfAnnualReading 5
   MonthlyPayment 0
   ReadingDestination CalculatorDevice
   SiPrefixPower W


Wollte mal fragen, ob das so passt ?

Oder muss ich da noch was beachten bzw ändern ?

Gruß
Sascha
Raspi 4B+ Bullseye ;LaCrosse; HomeMatic; MapleCUL; ZigBee; Signalduino ESP32 ; Shellys; MQTT2; Grafana mit Influxdb

Tobias

Da dürfte nix ankommen, die Def sollte so sein:
PowerWamDry:Count.*
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

fini

Moin,

bekomme den Fehler

jquery.min.js line 2:
Error: Syntax error, unrecognized expression: .dval[informid=myElectricityCalculator-Stromzaehler_1.ENERGY_COUNTER_CounterYear1st


wenn ich z.B mit
set myElectricityCalculator Stromzaehler:1.ENERGY_COUNTER_CounterDay1st
den Wert neu setzen möchte.


Sailor

Moin Fini

Zitat von: fini am 27 Februar 2017, 07:52:48
Moin,

bekomme den Fehler

jquery.min.js line 2:
Error: Syntax error, unrecognized expression: .dval[informid=myElectricityCalculator-Stromzaehler_1.ENERGY_COUNTER_CounterYear1st


wenn ich z.B mit
set myElectricityCalculator Stromzaehler:1.ENERGY_COUNTER_CounterDay1st
den Wert neu setzen möchte.

Und was passiert, wenn du stattdessen
set myElectricityCalculator Stromzaehler_1.ENERGY_COUNTER_CounterDay1st
eingibst?

;)

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

fini

nach drücken mit den set Button kam der Fehler
siehe Anhang

Sailor

Hallo fini

Zitat von: fini am 01 März 2017, 09:39:40
nach drücken mit den set Button kam der Fehler
siehe Anhang

Gib den Text
set myElectricityCalculator Stromzaehler_1.ENERGY_COUNTER_CounterDay1st 123456.789
mal ganz oben in die Kommandozeile ein.

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