[gelöst] Ideen gesucht, ein Zählimpuls aus Arducounter jeweils zwei Verbraucher

Begonnen von Fritz Muster, 09 August 2019, 08:38:27

Vorheriges Thema - Nächstes Thema

Fritz Muster

Hallo in die Runde,

ich versuche mich gerade an einem Thema bei dem ich irgendwie nicht in Gang komme, bzw. keinen Ansatz finde. Vielleicht hat ja einer von Euch eine Idee.

Nach Erweiterung meiner Wärmepumpe um die Trinkwassererwärmung möchte ich nun den elektrischen Verbrauch jeweils dem Heizkreis, bzw der Trinkwassererwärmung zuordnen bzw. erfassen. Die elektrische Einspeisung der WP verfügt über einen S0 Zähler welcher an fhem via Arducounter angebunden ist. Die WP liefert die Readings "Trinkwassererwärmung Ein" bzw "Heizkreis Ein".

Ich habe da schon in Richtung HourCounter gedacht, komme da aber nicht weiter da ich ja eine UND Verknüpfung brauche um zu zählen, also z.b. Trinkwassererwärmung Ein UND dann Verbrauch für Trinkwassererwärmung zählen. Soweit ich HourCounter verstehe geht das da nicht mit.

Danke für Eure Denkanstöße!

Grüße Fritz

RasPi 3B+, Stretch, Fhem 5.9, DBlog SQLite
HMLAN, mapleCUN MAX/WMBus, mapleSduino 868/433/868
HM Sensoren/Aktoren ,Technoline TX 29 DTH-IT, TFA 30.3155WD, MAX!
Hour Counter, Astro, EletricityCounter, Statistics, Charting Frontend, TabletUI, Modbus

Otto123

Hallo Fritz,

wenn ich Dich richtig verstehe würde ich zwei UserReadings machen, ich nehme mal als Grundlage meinen Zähler (der Liefert 400 Impulse pro kWh):
ZaehlerHzg monotonic {ReadingsVal("AC","pin4",0)/400 if (ReadingsVal("WP","Trinkwassererwärmung",0) eq "EIN")},ZaehlerWW monotonic {ReadingsVal("AC","pin4",0)/400 if (ReadingsVal("WP","Heizkreis",0) eq "EIN")}

So in der Art, ist bloß eine Idee. Die Readings stimmen so sicher nicht :)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Fritz Muster

Danke Otto!

Werde ich mal ausprobieren, bin aber skeptisch ob das funktioniert. Die ArduCounter Impulse werden doch stetig weiter hochgezählt unabhängig ob gerade Hzg oder TW läuft. Ein Beispiel dazu

Ausgangssituation:  alle Zähler stehen auf 0 Impulse

Heizung geht Ein, ArduCounter beginnt zu zählen von 0 auf 150, das Reading Hzg. zählt mit von 0 bis 150. Nun geht Hzg Aus und TW Ein. Der ArduCounter steht jetzt ja bereits auf 150 (aus der Hzg. Zählung), und wenn jetzt das Reading für TW aktiviert wird übernimmt es doch als ersten Zählerwert die 150 vom ArduCounter und zählt ab 150 weiter.

Aber egal, ich versuche es erst einmal.

Viele Grüße Fritz     
RasPi 3B+, Stretch, Fhem 5.9, DBlog SQLite
HMLAN, mapleCUN MAX/WMBus, mapleSduino 868/433/868
HM Sensoren/Aktoren ,Technoline TX 29 DTH-IT, TFA 30.3155WD, MAX!
Hour Counter, Astro, EletricityCounter, Statistics, Charting Frontend, TabletUI, Modbus

Wuehler

Moin,

Wenn ich das Problem richtig verstanden habe wäre folgendes möglich:
Dummy mit vier readings:
1. zähler gesamt -> wird vom arducounter gesetzt
2. aktiver Kreislauf -> HK oder TW, wird vom Arducounter gesetzt
3. Zähler HK
4. Zähler TW

Dazu ein Notify, dass bei jeder Änderung von 1. aufgerufen wird und je nach aktivem Kreislauf entweder 3. oder 4. inkrementiert.

VG,
Dirk

Otto123

Ich habe bei mir diese beiden Readings damit ich meinen normalen Zählerstand simuliere. Der Arducounter liefert Zählerstände aber die sind ja nicht wie ein normaler kontinuierlicher Zähler. Dies wird es bei mir erst durch monotonic.
Ich starte irgendwann in diesem Leben Arducounter, der liefert irgendwann 100. Mein Zähler steht aber auf 43768. Ich setze also zu dem Zeitpunkt das Reading auf 43768 und von da an ist mein Zählerstand auf dem Zähler und mein Stand im Reading solange synchron bis mal irgendwas dazwischen kommt.
Funtkioniert so bei mir seit Jahren. Wenn Du jetzt die je nach dem ob der "Schalter" links oder rechts liegt das eine oder andere Reading dazuschlägst müsste das doch funktionieren? Aber kann sein das ist ein Denkfehler von mir. Eventuell musst Du die noch Zwischenstände erfassen, die Du je nach dem ob "ein" oder "aus" ist zurücksetzt.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Fritz Muster

Zitat von: Fritz Muster am 09 August 2019, 11:35:15
Ausgangssituation:  alle Zähler stehen auf 0 Impulse

Heizung geht Ein, ArduCounter beginnt zu zählen von 0 auf 150, das Reading Hzg. zählt mit von 0 bis 150. Nun geht Hzg Aus und TW Ein. Der ArduCounter steht jetzt ja bereits auf 150 (aus der Hzg. Zählung), und wenn jetzt das Reading für TW aktiviert wird übernimmt es doch als ersten Zählerwert die 150 vom ArduCounter und zählt ab 150 weiter.

Wie ich befürchtet habe addiert der jeweilige Zähler Hzg/TE bei Zählstart den aktuellen Zählerstand des Gesamtzählers dazu.

Zitat von: Otto123 am 09 August 2019, 14:50:24
Eventuell musst Du die noch Zwischenstände erfassen, die Du je nach dem ob "ein" oder "aus" ist zurücksetzt.

Puhh, das befürchte ich auch. Das geht dann wohl sinnvoller Weise nur über die 99_myUtils!! Bis dato habe ich nur einige (micro)subs hinbekommen, aber man wächst ja bekanntermaßen mit seinen Aufgaben  ;)

Ich werde hier dann mal meine Fortschritte zu dem Thema berichten.

Grüße Fritz

RasPi 3B+, Stretch, Fhem 5.9, DBlog SQLite
HMLAN, mapleCUN MAX/WMBus, mapleSduino 868/433/868
HM Sensoren/Aktoren ,Technoline TX 29 DTH-IT, TFA 30.3155WD, MAX!
Hour Counter, Astro, EletricityCounter, Statistics, Charting Frontend, TabletUI, Modbus

Byte09

Das ässt sich problemlos mit einem MSwitch realisieren. Da kann ich dir heute abend mal was zurechtstricken. Dazu bräuchte ich bitte mal ein list der Beteiligten Geräte.

geussByte09


Gesendet von meinem ELE-L29 mit Tapatalk


Byte09

habe das eben mal bei mir nachgebaut.

letztendlich kannst du das mit 2 userreadings realisieren.

countwasser:zaehler.* {
return ReadingsVal( 'counter', 'countwasser', 0) if ReadingsVal( 'counter', 'verbrauchstyp', '') eq 'heizung';
return ReadingsVal( 'counter', 'countwasser', -5) if ReadingsVal( 'counter', 'zaehler', 0)  < OldReadingsVal( 'counter', 'zaehler', 0);
my $diff = ReadingsVal( 'counter', 'zaehler', 0) - OldReadingsVal( 'counter', 'zaehler', 0);
my $stand = ReadingsVal( 'counter', 'countwasser', 0);
return $stand+$diff if ReadingsVal( 'counter', 'verbrauchstyp', '') eq 'wasser';
},
countheizung:zaehler.* {
return ReadingsVal( 'counter', 'countheizung', 0) if ReadingsVal( 'counter', 'verbrauchstyp', '') eq 'wasser';
return ReadingsVal( 'counter', 'countheizung', 0) if ReadingsVal( 'counter', 'zaehler', 0)  < OldReadingsVal( 'counter', 'zaehler', 0);
my $diff = ReadingsVal( 'counter', 'zaehler', 0) - OldReadingsVal( 'counter', 'zaehler', 0);
my $stand = ReadingsVal( 'counter', 'countheizung', 0);
return $stand+$diff if ReadingsVal( 'counter', 'verbrauchstyp', '') eq 'heizung';
}


diese readings sind natürlich auf mein system ausgelegt und es müsste einiges angepasst werden.

ich habe das ganze auf einem MSwitch simuliert - diesen habe ich nur als 'zähler' genutzt.

wenn du diesen anlegst kannst du anhand dessen aber die funktionsweise nachvollziehen. wie gesagt es geht im grunde nur um die userreadings .

wenn du das MSwitch anschaltest fängt es an hochzuzälen , mit dem dropdownfeld kannst du das reading 'aktiver Kreislauf' simulieren . zugezählt wird immer dem aktuellen 'modus'.

wenn es nicht nachvollziehbar ist kannst du dich gerne melden.

die userreadings kannst du angepasst im grunde direkt im 'Arducounter' anlegen .

gruss Byte09


edit : für das reading 'zähler gesamt' muss das attribut oldreadings gesetzt werden , um hier den zugeschlagenen zählerstand zu ermitteln ( habe ich so gemacht , weil ich nicht weiss, ob der counter wirklich immer nur 1 addiert ??? )

MSwitch - simulierter zähler incl. userreadings etc.
defmod counter MSwitch   # FreeCmd MSwitch_Self
attr counter MSwitch_Debug 0
attr counter MSwitch_Delete_Delays 1
attr counter MSwitch_Expert 1
attr counter MSwitch_Extensions 0
attr counter MSwitch_Help 0
attr counter MSwitch_Ignore_Types notify allowed at watchdog doif fhem2fhem telnet FileLog readingsGroup FHEMWEB autocreate eventtypes readingsproxy svg cul
attr counter MSwitch_Include_Devicecmds 1
attr counter MSwitch_Include_MSwitchcmds 0
attr counter MSwitch_Include_Webcmds 0
attr counter MSwitch_Inforoom MSwitch
attr counter MSwitch_Lock_Quickedit 1
attr counter MSwitch_Mode Full
attr counter MSwitch_Safemode 1
attr counter MSwitch_generate_Events 0
attr counter eventMap /exec_cmd_2 ID 1:reset zaehler/exec_cmd_1 ID 1:reset all/
attr counter oldreadings zaehler
attr counter readingList add zaehler wasser heizung verbrauchstyp oldzaehler
attr counter room 05_test
attr counter setList add:1,2,3,4,5 zaehler wasser heizung verbrauchstyp:wasser,heizung oldzaehler
attr counter stateFormat state\
gesamt: zaehler\
Wasser: countwasser\
Heizung: countheizung
attr counter userReadings countwasser:zaehler.* {\
return ReadingsVal( 'counter', 'countwasser', 0) if ReadingsVal( 'counter', 'verbrauchstyp', '') eq 'heizung';;\
return ReadingsVal( 'counter', 'countwasser', -5) if ReadingsVal( 'counter', 'zaehler', 0)  < OldReadingsVal( 'counter', 'zaehler', 0);;\
my $diff = ReadingsVal( 'counter', 'zaehler', 0) - OldReadingsVal( 'counter', 'zaehler', 0);;\
my $stand = ReadingsVal( 'counter', 'countwasser', 0);;\
return $stand+$diff if ReadingsVal( 'counter', 'verbrauchstyp', '') eq 'wasser';;\
},\
countheizung:zaehler.* {\
return ReadingsVal( 'counter', 'countheizung', 0) if ReadingsVal( 'counter', 'verbrauchstyp', '') eq 'wasser';;\
return ReadingsVal( 'counter', 'countheizung', 0) if ReadingsVal( 'counter', 'zaehler', 0)  < OldReadingsVal( 'counter', 'zaehler', 0);;\
my $diff = ReadingsVal( 'counter', 'zaehler', 0) - OldReadingsVal( 'counter', 'zaehler', 0);;\
my $stand = ReadingsVal( 'counter', 'countheizung', 0);;\
return $stand+$diff if ReadingsVal( 'counter', 'verbrauchstyp', '') eq 'heizung';;\
}\

attr counter webCmd on:off:verbrauchstyp:add:reset all:reset zaehler

setstate counter off\
gesamt: 0\
Wasser: 0\
Heizung: 0
setstate counter 2019-08-14 08:38:46 .Device_Affected FreeCmd-AbsCmd1,FreeCmd-AbsCmd2,MSwitch_Self-AbsCmd1
setstate counter 2019-08-14 08:38:46 .Device_Affected_Details FreeCmd-AbsCmd1#[NF]cmd#[NF]cmd#[NF]{#[nl]my#[sp]$count#[sp]=#[sp]ReadingsVal(#[sp]'counter'#[ko]#[sp]'zaehler'#[ko]#[sp]0)#[se]#[nl]$count=$count#[sp]+#[sp]ReadingsVal(#[sp]'counter'#[ko]#[sp]'add'#[ko]#[sp]0)#[se]#[nl]fhem#[sp]("set#[sp]counter#[sp]zaehler#[sp]$count")#[se]#[nl]}#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]2#[NF]0#[NF]#[NF]0#[NF]0#[NF]1#[ND]FreeCmd-AbsCmd2#[NF]cmd#[NF]cmd#[NF]setreading#[sp]counter#[sp]zaehler#[sp]0#[se]#[nl]setreading#[sp]counter#[sp]countwasser#[sp]0#[se]#[nl]setreading#[sp]counter#[sp]countheizung#[sp]0#[se]#[NF]setreading#[sp]counter#[sp]zaehler#[sp]0#[se]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]00#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]3#[NF]1#[NF]#[NF]0#[NF]0#[NF]1#[ND]MSwitch_Self-AbsCmd1#[NF]on#[NF]del_delays#[NF]#[NF]#[NF]delay1#[NF]delay1#[NF]00#[dp]00#[dp]01#[NF]00#[dp]00#[dp]00#[NF]#[NF]#[NF]0#[NF]0#[NF]1#[NF]0#[NF]#[NF]0#[NF]0#[NF]1
setstate counter 2019-08-12 15:56:46 .Device_Events no_trigger
setstate counter 2019-08-12 15:56:46 .First_init done
setstate counter 2019-08-12 15:56:46 .Trigger_cmd_off no_trigger
setstate counter 2019-08-12 15:56:46 .Trigger_cmd_on no_trigger
setstate counter 2019-08-12 15:56:46 .Trigger_off no_trigger
setstate counter 2019-08-12 15:56:46 .Trigger_on no_trigger
setstate counter 2019-08-12 15:56:46 .V_Check V2.00
setstate counter 2019-08-12 19:04:11 .sortby priority
setstate counter 2019-08-12 15:56:46 Trigger_log off
setstate counter 2019-08-14 08:40:01 add 5
setstate counter 2019-08-14 08:40:22 countheizung 0
setstate counter 2019-08-14 08:40:22 countwasser 0
setstate counter 2019-08-14 08:40:21 last_activation_by manual
setstate counter 2019-08-14 08:40:22 last_cmd 3
setstate counter 2019-08-14 08:40:22 last_exec_cmd   setreading counter zaehler 0;;setreading counter countwasser 0;;setreading counter countheizung 0;;
setstate counter 2019-08-14 08:40:21 state off
setstate counter 2019-08-14 08:40:19 verbrauchstyp heizung
setstate counter 2019-08-14 08:40:22 zaehler 0


Fritz Muster

@Byte09
Respekt! Vor allem für das
Zitat von: Byte09 am 12 August 2019, 17:05:11
habe das eben mal bei mir nachgebaut.

Ich bräuchte dafür Stunde/Tage!

Und einige Dinge verstehe ich trotzdem nicht, obwohl ich mir das jetzt 3 Tage lang angeguckt habe.

Zitat von: Byte09 am 12 August 2019, 17:05:11
return ReadingsVal( 'counter', 'countwasser', -5) if ReadingsVal( 'counter', 'zaehler', 0)  < OldReadingsVal( 'counter', 'zaehler', 0);

Warum -5 als Rückgabewert im Fehlerfall und warum aktueller Zählerstand < (kleiner) als alter Zählerstand. Der aktuelle ist doch immer >(größer) als der alte, ergo wird if nie wahr!

Danke und Grüße
Fritz
RasPi 3B+, Stretch, Fhem 5.9, DBlog SQLite
HMLAN, mapleCUN MAX/WMBus, mapleSduino 868/433/868
HM Sensoren/Aktoren ,Technoline TX 29 DTH-IT, TFA 30.3155WD, MAX!
Hour Counter, Astro, EletricityCounter, Statistics, Charting Frontend, TabletUI, Modbus

Byte09

kurz da handy.

die.5 ist ein fehler... da sollte eine 0 rein.

wenn du den Zähler zurücksetzt tritt die Bedingung kleiner als ein, da auch dann das userreading neu berechnet wird. Nur dafür ist diese Bedingung gedacht.

gruss Bytr09

Gesendet von meinem ELE-L29 mit Tapatalk


Fritz Muster

Zitat von: Byte09 am 16 August 2019, 20:56:11
wenn du den Zähler zurücksetzt tritt die Bedingung kleiner als ein, da auch dann das userreading neu berechnet wird. Nur dafür ist diese Bedingung gedacht.

Ahhh, ich glaube dann hab ich es jetzt. Dann findet die eigentliche Berechnung nur hier statt?!

Zitat von: Byte09 am 16 August 2019, 20:56:11
my $diff = ReadingsVal( 'counter', 'zaehler', 0) - OldReadingsVal( 'counter', 'zaehler', 0);
my $stand = ReadingsVal( 'counter', 'countwasser', 0);

und hier wird dann das Ergebis zurück gegeben

Zitat von: Byte09 am 16 August 2019, 20:56:11
return $stand+$diff if ReadingsVal( 'counter', 'verbrauchstyp', '') eq 'wasser';

Grüße
Fritz
RasPi 3B+, Stretch, Fhem 5.9, DBlog SQLite
HMLAN, mapleCUN MAX/WMBus, mapleSduino 868/433/868
HM Sensoren/Aktoren ,Technoline TX 29 DTH-IT, TFA 30.3155WD, MAX!
Hour Counter, Astro, EletricityCounter, Statistics, Charting Frontend, TabletUI, Modbus

Byte09

Sehr kurz da handy

[emoji106]


gruss Byte09

Gesendet von meinem ELE-L29 mit Tapatalk


Fritz Muster

Hallo in die Runde,

ich habe die letzten Tage genutzt und an dem Thema weitergearbeitet. Der Ansatz von Byte09 hat bei mir nicht funktioniert, die Zählerwerte waren stets viel zu groß. Ich denke das mit dem OldReading kann auch nicht funktionieren. Kann aber auch gut sein das ich zu dusselig bin :-[

Egal, meine Lösung sieht nun so aus: Ich habe 3 monotonic userReadings angelegt (Heizung/Trinkwasser/Standby) und ein notify, welches auf ein Reading der Wärmepumpe (Betriebsmodus:(Heizung/Trinkwasser/Standby) triggert. Wird es getriggert, schreibt es den aktuellen Gesamtzählerstand in ein (Old)Reading. Soll heißen immer wenn eine Umschaltung des Betriebsmodus stattfindet wird der dazugehörige Zählerstand als Reading(Old) gespeichert.

define ntfS0EnergieWpOldTmp notify (mdbsWaermepumpe:Anlage_Betriebsart.*) {my $S0LeistungWp_kWh_old = ReadingsVal("S0CounterWp","S0EnergieWp_kWh",0);;fhem "setreading S0CounterWp S0LeistungWp_kWh_old $S0LeistungWp_kWh_old"}

Im jeweiligen userReading (Heizung/Trinkwasser/Standby) selbst wird dann zunächst geprüft ob der entsprechende Betriebsmodus aktiv ist und wenn ja wird dann der alte gespeicherte Zählerstand vom Gesamtzählerstand subtrahiert. Durch den <modifier> monotonic wird dann der jeweilige ermittelte Wert dem vorhandenen Wert inkrementiert.

##### Standby
S0EnergieWpStdby_kWh monotonic {if (ReadingsVal("mdbsWaermepumpe","Anlage_Betriebsart",0) eq "Stop") {ReadingsNum("S0CounterWp","S0EnergieWp_kWh",0) - ReadingsNum("S0CounterWp","S0LeistungWp_kWh_old",0)}}


##### Trinkwasser
S0EnergieTw_kWh monotonic {if (ReadingsVal("mdbsWaermepumpe","Anlage_Betriebsart",0) eq "Brauchwasser") {ReadingsNum("S0CounterWp","S0EnergieWp_kWh",0) - ReadingsNum("S0CounterWp","S0LeistungWp_kWh_old",0)}}


##### Heizung
S0EnergieHzg_kWh monotonic {if (ReadingsVal("mdbsWaermepumpe","Anlage_Betriebsart",0) eq "Heizung") {ReadingsNum("S0CounterWp","S0EnergieWp_kWh",0) - ReadingsNum("S0CounterWp","S0LeistungWp_kWh_old",0)}}


Das wars, Danke an Alle!

Fritz
RasPi 3B+, Stretch, Fhem 5.9, DBlog SQLite
HMLAN, mapleCUN MAX/WMBus, mapleSduino 868/433/868
HM Sensoren/Aktoren ,Technoline TX 29 DTH-IT, TFA 30.3155WD, MAX!
Hour Counter, Astro, EletricityCounter, Statistics, Charting Frontend, TabletUI, Modbus

Byte09

Zitat von: Fritz Muster am 22 August 2019, 15:11:40
Hallo in die Runde,

ich habe die letzten Tage genutzt und an dem Thema weitergearbeitet. Der Ansatz von Byte09 hat bei mir nicht funktioniert, die Zählerwerte waren stets viel zu groß. Ich denke das mit dem OldReading kann auch nicht funktionieren. Kann aber auch gut sein das ich zu dusselig bin :-[

Egal, meine Lösung sieht nun so aus: Ich habe 3 monotonic userReadings angelegt (Heizung/Trinkwasser/Standby) und ein notify, welches auf ein Reading der Wärmepumpe (Betriebsmodus:(Heizung/Trinkwasser/Standby) triggert. Wird es getriggert, schreibt es den aktuellen Gesamtzählerstand in ein (Old)Reading. Soll heißen immer wenn eine Umschaltung des Betriebsmodus stattfindet wird der dazugehörige Zählerstand als Reading(Old) gespeichert.

define ntfS0EnergieWpOldTmp notify (mdbsWaermepumpe:Anlage_Betriebsart.*) {my $S0LeistungWp_kWh_old = ReadingsVal("S0CounterWp","S0EnergieWp_kWh",0);;fhem "setreading S0CounterWp S0LeistungWp_kWh_old $S0LeistungWp_kWh_old"}

Im jeweiligen userReading (Heizung/Trinkwasser/Standby) selbst wird dann zunächst geprüft ob der entsprechende Betriebsmodus aktiv ist und wenn ja wird dann der alte gespeicherte Zählerstand vom Gesamtzählerstand subtrahiert. Durch den <modifier> monotonic wird dann der jeweilige ermittelte Wert dem vorhandenen Wert inkrementiert.

##### Standby
S0EnergieWpStdby_kWh monotonic {if (ReadingsVal("mdbsWaermepumpe","Anlage_Betriebsart",0) eq "Stop") {ReadingsNum("S0CounterWp","S0EnergieWp_kWh",0) - ReadingsNum("S0CounterWp","S0LeistungWp_kWh_old",0)}}


##### Trinkwasser
S0EnergieTw_kWh monotonic {if (ReadingsVal("mdbsWaermepumpe","Anlage_Betriebsart",0) eq "Brauchwasser") {ReadingsNum("S0CounterWp","S0EnergieWp_kWh",0) - ReadingsNum("S0CounterWp","S0LeistungWp_kWh_old",0)}}


##### Heizung
S0EnergieHzg_kWh monotonic {if (ReadingsVal("mdbsWaermepumpe","Anlage_Betriebsart",0) eq "Heizung") {ReadingsNum("S0CounterWp","S0EnergieWp_kWh",0) - ReadingsNum("S0CounterWp","S0LeistungWp_kWh_old",0)}}


Das wars, Danke an Alle!

Fritz

hmmm ... das kann ich ja so fast gar nicht unkommentiert stehen lassen  ;).

wieso kann denn ein ansatz ( der im Übrigen kein Ansatz sondern eine fertige Lösung ist ) mit oldreadings deines Erachtens nicht funktionieren?

ich habe einen wert von zähler = 1 der der um 1 erhöht wird.
stand somit :

reading 'zähler' = 2
oldreading 'zähler' = 1
Änderung somit ( reading '2' - oldreading '1') =1

addition des wertes der Änderung zu bestehendem counter Heizung oder Trinkwasser ( je nach entsprechendem Reading )

ich vermute .... eigentlich bin ich sicher ..... das es nicht ging , da du das:
Zitat
edit : für das reading 'zähler gesamt' muss das attribut oldreadings gesetzt werden .....
nicht getan hast und somit statt des nicht verfügbarem oldreading
OldReadingsVal( 'counter', 'zaehler', 0); immer 0 angesetzt wurde - somit werden die werte zu gross.

letztendlich zählt aber nur, das du eine Lösung gefunden hast ( wobei ich nicht so ein fan von nicht notwendigen devices ( in diesem Fall das Notify ) bin .

gruss Byte09