Neues Modul: ElectricityCalculator

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

Vorheriges Thema - Nächstes Thema

uxtuner

wenn ich das Attribute "disable" auf "1" setze dann einen Countertick abwarte und anschließend wieder mit "0" aktiviere bekomme ich ein(!) einziges Update - nur auf "1" und gleich wieder auf "0" bringt nichts   :(

Als workaround könnte ich jetzt ein AT setzen ...
Viele Grüße
  Uwe

Intel NUC (VDR & FHEM), QNAP TS-453, OneWire (Temp. Sensor, 8-fach Schalter, Hub, Controller), Ebus (Wolf CGW-2, ISM7i), Fibaro (Flood Sensor, Wall Plug, 4 in 1 Sensor), Qubino (Flush 1D), Shelly (Plug S, H&T, 2.5, 1 PM), Tado (Thermostat V3+)

uxtuner

#316
ich hab mir jetzt als Behelf sowas erstellt:

+*00:05:00 {
fhem("attr Stromverbrauch disable 0");
fhem("define StromcounterAus at +00:02:00 attr Stromverbrauch disable 1");
}


damit wird das Modul alle 5min eingeschaltet und 2min später wieder ausgeschaltet.
Viele Grüße
  Uwe

Intel NUC (VDR & FHEM), QNAP TS-453, OneWire (Temp. Sensor, 8-fach Schalter, Hub, Controller), Ebus (Wolf CGW-2, ISM7i), Fibaro (Flood Sensor, Wall Plug, 4 in 1 Sensor), Qubino (Flush 1D), Shelly (Plug S, H&T, 2.5, 1 PM), Tado (Thermostat V3+)

uxtuner

hab jetzt ein dummy device angelegt und lese die Strom- und Gaswerte vom Dummy. Mittels at hole ich mir den aktuellen Wert jede Minute und kalkuliere den aktuellen Stand mit Offset - damit funktioniert das Modul jetzt 1a


Internals:
   NAME       Stromzaehler
   NR         53
   STATE      71813.015
   TYPE       dummy
   READINGS:
     2018-01-01 09:24:01   Gesamt          71813.015
Attributes:
   Offset     71386
   room       Abrechnung
   stateFormat {ReadingsVal($name,"Gesamt","?")}
   userattr   Offset



Internals:
   COMMAND    {
my $s_counter = (ReadingsVal("Controller","StromGesamt",0))/8;
my $s_offset = (AttrVal("Stromzaehler","Offset",0));
my $s_gesamt=$s_counter+$s_offset;
my $g_counter = (ReadingsVal("Controller","Gas",0));
my $g_offset = (AttrVal("Gaszaehler","Offset",0));
my $g_gesamt=$g_counter+$g_offset;
fhem("setreading Stromzaehler Gesamt $s_gesamt");
fhem("setreading Gaszaehler Gesamt $g_gesamt");
}
   DEF        +*00:01:00 {
my $s_counter = (ReadingsVal("Controller","StromGesamt",0))/8;
my $s_offset = (AttrVal("Stromzaehler","Offset",0));
my $s_gesamt=$s_counter+$s_offset;
my $g_counter = (ReadingsVal("Controller","Gas",0));
my $g_offset = (AttrVal("Gaszaehler","Offset",0));
my $g_gesamt=$g_counter+$g_offset;
fhem("setreading Stromzaehler Gesamt $s_gesamt");
fhem("setreading Gaszaehler Gesamt $g_gesamt");
}
   NAME       at_Zaehlerstaende
   NR         57
   NTM        09:18:01
   PERIODIC   yes
   RELATIVE   yes
   REP        -1
   STATE      Next: 09:18:01
   TIMESPEC   00:01:00
   TRIGGERTIME 1514794681.24004
   TRIGGERTIME_FMT 2018-01-01 09:18:01
   TYPE       at
   READINGS:
     2018-01-01 09:17:01   state           Next: 09:18:01
Attributes:
Viele Grüße
  Uwe

Intel NUC (VDR & FHEM), QNAP TS-453, OneWire (Temp. Sensor, 8-fach Schalter, Hub, Controller), Ebus (Wolf CGW-2, ISM7i), Fibaro (Flood Sensor, Wall Plug, 4 in 1 Sensor), Qubino (Flush 1D), Shelly (Plug S, H&T, 2.5, 1 PM), Tado (Thermostat V3+)

Wolle02

Hallo Igami,

Zitat von: igami am 12 Dezember 2016, 15:53:24
Heute kam mir schon eine Idee, wie man das mit userreadings lösen kann. Sobald das funktioniert werde ich das hier mal vorstellen und würde mich freuen, wenn das dann Bestandteil des Modul wird :)

Deine Ankündigung ist zwar schon über ein Jahr alt, aber hast du hierfür mittlerweile eine funktionierende Lösung? Das würde mich sehr ineteressieren, da ich auch ein "Summen Device" für meine verschiedenen Counter vermisse.

Gruß
Wolle

KernSani

Mir ist gerade ein kleiner typo aufgefallen... Zeile 151:


$hash->{STATE} = "diabled";
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Gerd.Ternes

Erst einmal vielen Dank für das tolle Modul. Bei mir funkioniert es seit rd. 5 Monaten reibungslos.
In der täglichen Anwendung hätte ich noch 2 Bitten/Vorschläge.

1. Wäre es möglich auch die Wochenwerte (und Vorwochenwerte) als Readings einzubauen? Ich habe das jetzt mit einem eigenen zusätzlichen Modul gemacht, denke aber, das es im eigentlichen Modul noch schicker wäre.

2. Ebenfalls berechne ich mir aus den Tagen (Anz. Tage) und den entsprechenden logs (z.B. heute ist der 14. Tag des Monats und der Verbrauch ist xxx kwh) den Tagesverbrauch. (also Verbrauch/Tag/Woche, Verbrauch/Tag/Monat und Verbrauch/Tag/Jahr).

Vielleicht bin ich da auch zu statistisch unterwegs, aber gerade in der Urlaubszeit oder bei Kälteperiosen usw. gucke ich mir das ganz gerne einmal an.

Vielen Dank

Gerd

ext23

#321
Nabend,

kann mir mal gerade jemand auf die Sprünge helfen. Wenn ich in 3 Minuten von 6457 auf 6478 Pulse gewandert bin bei 1Wh/Puls, sind das 21Wh in 3 Minuten, sind also 21*20 = 420Wh, oder?!? Dann kann ich doch sagen, dass derzeit 420W Leistung verbraucht wird oder?

Wieso zeigt der ElectricityCalculator bei mir 232,615W an? (PowerCurrent ist doch sicherlich der Momentanverbrauch oder?).

Ich stehe gerade auf dem Schlauch.

Das HM Gerät meldet 420W. Auf dem Display des Zählers steht aber 240W was sich mit dem deckt was errechnet wurde.

Ich hab jetzt mal in das Modul geschaut:
### Calculate Current Power P = DW/Dt[kWh/s] * 3600[s/h] * 1000 [1/k] / SiPrefixPowerFactor
my $ElectricityCalcPowerCurrent    = ($ElectricityCountReadingValueDelta / $ElectricityCountReadingTimestampDelta) * 3600 * 1000 / $ElectricityCalcDev->{system}{SiPrefixPowerFactor};


Da komme ich auch auf 420W.
21/180000*3600*1000/1 = 420


UPDATE: Ich glaube ich habe das Problem schon gefunden, dieser HomeMatic Zähler sendet gar nicht genau alle 3 Minuten. Das sind auch manchmal 4 oder 5 Minuten. Dann ist die Berechnungsgrundlage natürlich falsch wenn der nach 5 Minuten erst Werte sendet die nur über 3 Minuten gemessen wurden...

/Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

Sailor

Hallo Daniel

Zitat von: ext23 am 17 Januar 2018, 17:58:06
UPDATE: Ich glaube ich habe das Problem schon gefunden, dieser HomeMatic Zähler sendet gar nicht genau alle 3 Minuten. Das sind auch manchmal 4 oder 5 Minuten. Dann ist die Berechnungsgrundlage natürlich falsch wenn der nach 5 Minuten erst Werte sendet die nur über 3 Minuten gemessen wurden...

Das ist natürlich saudumm. Da beim Übertragen der Pulse leider kein genauer Zeitstempel mit übertragen wird sondern immer nur der Eingang im fhem - System geloggt wird, kann das Problem auch nicht behoben werden...

Vergrößre mal das Intervall, dann dürften sich die Durchschnittswerte auch verbessern.

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

ToM_ToM

Hallo Zusammen,

ich habe das jezt auch mal in Betrieb genommen, aber ich verstehe die Commandref noch nicht so ganz.

Wie muss ich denn was setzen?

Zählerstand (Stromzähler): 044680.9
Zählerstand (HM-ES-TX-WM - 1.ENERGY_COUNTER): 298226.6

VG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

Sailor

Hallo Tom

Zitat von: ToM_ToM am 21 Januar 2018, 14:28:09
Wie muss ich denn was setzen?

Versuchs doch einfach mal...

Entweder kommt das richtige Ergebnis fuer den Offset bei a-b oder bei b-a raus.  ;)

Gruss
    Sailor

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

ToM_ToM

ZitatVersuchs doch einfach mal...
Hey Sailor, ich habe das heute schon den ganzen Tag lang hin und her probiert. Aber bei so vielen Readings die man setzen kann, ist das natürlich ziemliches Lotto spielen.
Bekomme auch immer angezeigt dass ich noch über 87.000 Euro mit meinen Finanzen im Plus bin.
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

hermann258

Ich bin zu Blöd für dieses Modul, da steht so viel Murks
Gruß Hermann :)

smoudo

Moin Sailor - erstmal vielen Dank für das tolle Modul.

Hab es definiert und mit den passenden readings gefüttert und schon klappt es.

Seit 2 Tagen habe ich allerdings das Phänomen das zwar PrevRead aktualisiert wird aber CounterCurrent nicht mehr.
das Regex Device liefert sauber alle 60 sekunden neue Werte.
Kann man da etwas steuern? wie ist das mit dem interval des Moduls? Nimmt das den 60 sek. Interval des device normal an oder kann man das irgendwo setzen. Es währe auch möglich die Timings des device zu ändern.
Ich verstehe nur momentan die zusammenhänge noch nicht so ganz.

Viele Grüße

Matze

Sailor

Hallo Tom

Zitat von: ToM_ToM am 21 Januar 2018, 23:03:18
Hey Sailor, ich habe das heute schon den ganzen Tag lang hin und her probiert. Aber bei so vielen Readings die man setzen kann, ist das natürlich ziemliches Lotto spielen.
Bekomme auch immer angezeigt dass ich noch über 87.000 Euro mit meinen Finanzen im Plus bin.

Die Werte stabilisieren sich nach ein paar Lesungen.
Das liegt daran, dass die neuen (richtigen) Werte mit den (falschen) Vorgängerwerten verrechnet werden.

Einfach mal Kaffee trinken gehen und abwarten...
Mache (Monats-) Werte brauchen bis zu einem Monat um richtig angezeigt zu werden...

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

Sailor

Hallo Matze

Zitat von: smoudo am 23 Januar 2018, 20:40:34
Seit 2 Tagen habe ich allerdings das Phänomen das zwar PrevRead aktualisiert wird aber CounterCurrent nicht mehr.
das Regex Device liefert sauber alle 60 sekunden neue Werte.
Kann man da etwas steuern? wie ist das mit dem interval des Moduls? Nimmt das den 60 sek. Interval des device normal an oder kann man das irgendwo setzen. Es währe auch möglich die Timings des device zu ändern.
Ich verstehe nur momentan die zusammenhänge noch nicht so ganz.

Ich verstehe die Zusammenhänge aus dieser Informationslage heraus auch nicht.

Versuche mal anhand deiner Grafiken heraus zu finden, wann genau du keine brauchbaren Ergebnisse mehr bekommst.
Dann versuche dich mal zu erinnern, was du verändert hast.
Was ist mir "current reading". Verändert der sich?

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