Neues Modul: ElectricityCalculator

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

Vorheriges Thema - Nächstes Thema

Sailor

Hallo minas

Zitat von: minias am 29 Januar 2018, 08:12:20
ich habe selbes verhalten festgestellt, mein ElectricityCalculator zählt nicht bei jedem Impuls.
Was könnte die Ursache dafür sein?

das liegt am Code.
Ich musste eine Fallabfrage machen die lautet
### Continue with calculations only if time difference is larger than 30 seconds to avoid "Illegal division by zero" and erroneous due to small values for divisor
Daher mal das Abfrageintervall auf 35s besser 60s hochsetzen.

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

minias

Hi Sailor,

vielen Dank für die schnelle Antwort.
Wie kann ich das Intervall hochsetzen?

Grüße,
minias

Sailor

Hallo minias

Zitat von: minias am 29 Januar 2018, 11:00:21
vielen Dank für die schnelle Antwort.
Wie kann ich das Intervall hochsetzen?

Am ElectricityCalculator gar nicht, da dieser nur die Werte vom Zählermodul übernimmt.

Das müsstest du wenn, dann nur am Zählermodul einstellen können.

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

minias

Ich nutze als Zählermodul den ArduCounter und dieser berechnet mir den Echtzeitverbrauch.
Wenn ich das Intervall hochschraube aktualisiert sich mein Echtzeitverbrauch langsam.

Hat sich dies erst kürzlich verändert?
### Continue with calculations only if time difference is larger than 30 seconds to avoid "Illegal division by zero" and erroneous due to small values for divisor

Sailor

Hi minas

Zitat von: minias am 29 Januar 2018, 11:24:55
Ich nutze als Zählermodul den ArduCounter und dieser berechnet mir den Echtzeitverbrauch.
Wenn ich das Intervall hochschraube aktualisiert sich mein Echtzeitverbrauch langsam.

Von 30 auf 31s... Naja  8)

Gruss
   Sailor
******************************
Man wird immer besser...

minias

Hi Sailor,

hab ich das falsch verstanden? Ich dachte der ArduCounter meldet ansonsten "live" Impulse. Wie sollten die Intervalle optimal eingestellt sein?
Mein ArduCounter meldet:
M Status: ArduCounter V1.8

normal interval 31000

max interval 60000

min interval 2000

min count 1

pin 4 PCInt pin 20, iMode rising, no min len, count 25497 (+9) in 49774 ms

  first at 2925, last at 47185, avg len 0

pin 6 PCInt pin 22, iMode rising, no min len, count 291 (+0) in 22461 ms

pin 7 PCInt pin 23, iMode rising, no min len, count 420 (+0) in 22481 ms

Next report in 8497 Milliseconds


setstate

Warum ist dieses Limit drin?


### Continue with calculations only if time difference is larger than 30 seconds to avoid "Illegal division by zero" and erroneous due to small values for divisor
if ($ElectricityCountReadingTimestampDelta > 30)
{


Bei einer Setting von ElectricityKwhPerCounts: 0.00125 wird ab einem Verbrauch > 150W nichts mehr berechnet. Dadurch ist PowerDayMin, PowerDayMax, CounterDayLast usw. am Ende falsch.

Um division by zero zu vermeiden, kann man das doch bei der eigentlichen Berechnung machen und nicht pauschal Events verwerfen.

Eigentlich brauche ich TimestampDelta von 1s, um Power-Werte bis zu 4500W anzeigen zu können.

Sailor

Hi setstate

Zitat von: setstate am 07 Februar 2018, 09:59:35
Warum ist dieses Limit drin?
Um division by zero zu vermeiden, kann man das doch bei der eigentlichen Berechnung machen und nicht pauschal Events verwerfen.
Eigentlich brauche ich TimestampDelta von 1s, um Power-Werte bis zu 4500W anzeigen zu können.

Ich weiß auch nicht mehr genau, warum ich mich für diese Variante entschieden habe. Ich kann mich nur erinnern, dass ich damals sehr lange an diesem Problem gebrütet hatte und selbst eval() nichts gebracht hatte.

Sobald ich mit meiner Renovierung fertig bin, kümmere ich mich wieder um meine Module... Versprochen!

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

canis

Grüße hintern Deich, vielen Dank für das Modul
Es funktioniert leider nicht wirklich.
Bei mir zeigt es keine Werte über ca. 1.6 KW an und verachiedet sich nach spätestens 12 Stunden und nach erhöhter Last.
Neustart von FHEM erweckt es nicht wider zum Leben, nur ein Neustart der Raspberry Pi
Viel Glück beim Renoviern, bitte check das mal, wenn du ferig bist
mfG

Sailor

Hallo Canis

Zitat von: canis am 12 Februar 2018, 12:03:23
Es funktioniert leider nicht wirklich.
Bei mir zeigt es keine Werte über ca. 1.6 KW an und verachiedet sich nach spätestens 12 Stunden und nach erhöhter Last.
Neustart von FHEM erweckt es nicht wider zum Leben, nur ein Neustart der Raspberry Pi

Was zeigt der letzte Eintrag im Log-File an, nachdem das System abstürzt?

Gruss
    Sailor
******************************
Man wird immer besser...

canis

Sorry, Problem der Abstürze waren in fehlerhafter Netzwerk- Konfiguration begründet, da ich das Signal hier durch ein anderes Netzwerk routen muß, gerade behoben.

Bleibt aber das Problem, daß die maximale Leistung mit Stromverbrauch_countsOverall_PowerDayMax 1625.806 angezeigt wird, obwohl die Waschmaschine und der Herd weit höhere Verbräuche haben.
Attribute:
BasicPricePerAnnum 0
Currency €
ElectricityCounterOffset 0
ElectricityKwhPerCounts 0.0133
ElectricityPricePerKWh 0.3200
MonthOfAnnualReading 5
MonthlyPayment 0
ReadingDestination CalculatorDevice
SiPrefixPower W

Readings:
Stromverbrauch_countsOverall_CounterCurrent 39.328
Stromverbrauch_countsOverall_CounterDay1st 7.461
Stromverbrauch_countsOverall_CounterDayLast 7.461
Stromverbrauch_countsOverall_CounterMeter1st 0.2793
Stromverbrauch_countsOverall_CounterMeterLast 0.266
Stromverbrauch_countsOverall_CounterMonth1st 0.2793
Stromverbrauch_countsOverall_CounterMonthLast 0.266
Stromverbrauch_countsOverall_CounterYear1st 0.2793
Stromverbrauch_countsOverall_CounterYearLast 0.266
Stromverbrauch_countsOverall_EnergyCostDay 10.197
Stromverbrauch_countsOverall_EnergyCostDayLast -5.384
Stromverbrauch_countsOverall_EnergyCostMeter 12.496
Stromverbrauch_countsOverall_EnergyCostMonth 12.496
Stromverbrauch_countsOverall_EnergyCostYear 12.496
Stromverbrauch_countsOverall_EnergyDay 31.867
Stromverbrauch_countsOverall_EnergyDayLast -16.825
Stromverbrauch_countsOverall_EnergyMeter 39.049
Stromverbrauch_countsOverall_EnergyMonth 39.049
Stromverbrauch_countsOverall_EnergyYear 39.049
Stromverbrauch_countsOverall_FinanceReserve -12.496
Stromverbrauch_countsOverall_MonthMeterReading 10
Stromverbrauch_countsOverall_PowerCurrent 1509.677
Stromverbrauch_countsOverall_PowerDayAver 1199.544
Stromverbrauch_countsOverall_PowerDayMax 1625.806
Stromverbrauch_countsOverall_PowerDayMin 0

LG Canis


Sailor

Hallo canis

Zitat von: canis am 12 Februar 2018, 20:44:44
Bleibt aber das Problem, daß die maximale Leistung mit Stromverbrauch_countsOverall_PowerDayMax 1625.806 angezeigt wird, obwohl die Waschmaschine und der Herd weit höhere Verbräuche haben.

Du scherst Verbrauch mit Leistung über einen Kamm. Das ist nicht zulässig.
Beides ist über die Zeit [t] verbunden.

Es ist durchaus möglich, dass eine mittlere Leistung von 2000W angezeigt wird und der Verbraucher zwischenzeitlich 4000W umgesetzt hat.
Nehmen wir an, dein Herd hat für 30s lang 4000W umgesetzt, das Messintervall ist aber 60s, dann ist die angezeigte Durchschnittsleistung richtigerweise 2000W.

Du musst dann entsprechend das Intervall der Strommessung verkleinern (Derzeit nicht kleiner als 31s - Ich arbeite daran) und dann bekommst du auch größere Spitzenwerte angezeigt.

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

canis

Hi Sailor, danke für die Mühe, zur Bestätigung:
Ich habe mich heute abend 15 Minuten lang mit einer Stoppuhr und einem Tablet vor den Zähler gestellt:
Der Impuls kam alle 24 bis 27 Sekunden, während dieser Zeit hat der ElectricityCalculator kein Reading- Update ausgeführt.
mfG Canis

Sailor

Zitat von: canis am 13 Februar 2018, 22:09:37
Hi Sailor, danke für die Mühe, zur Bestätigung:
Ich habe mich heute abend 15 Minuten lang mit einer Stoppuhr und einem Tablet vor den Zähler gestellt:
Der Impuls kam alle 24 bis 27 Sekunden, während dieser Zeit hat der ElectricityCalculator kein Reading- Update ausgeführt.
mfG Canis

Klar, weil alle kleiner 30 Sekunden... Ich muss mir das mal anschauen.

Gehe mal selber in die ../FHEM/73_ElectricityCalculator.pm Datei und ändere in Zeile 693 den Wert von 30 auf 20.
Dann gibst du in der fhem Kommandozeile ein "reload 73_ElectricityCalculator" ein schaust mal, was passiert...

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

setstate

Ich hatte den Wert auf 1 gesetzt, geht auch  8)