[gelöst] Differenz zweier Reading in Reading schreiben

Begonnen von Thoffi1978, 01 Juli 2020, 22:45:22

Vorheriges Thema - Nächstes Thema

Thoffi1978

Hallo,

ich habe die HM-ES-PMSW1-PL Schaltsteckdose.
Darüber läuft meine Waschmaschine. Jetzt möchte ich gerne den aktuellen der Verbrach den die Waschmaschine hatte per Email zu schicken lassen. Das zuschicken ist nicht das Problem, doch ich bekomme den zuletzt gemessen Verbrauch nicht "gelesen".
In einem DOIF lasse ich beim Start WaMa  mit
(setreading WaschMa_Pwr Verbrauch_alt [WaschMa_Pwr:energy]
schreiben.
Beim Ende des Waschvorganges lasse ich dann mit
(setreading WaschMa_Pwr Verbrauch_neu [WaschMa_Pwr:energy]
den neuen Wert schreiben.

Ich habe jetzt div. Stunden versucht die Differenz zu berechnen. Doch ich komme nicht auf das richtig Ergebnis.

Könnt Ihr mir sagen, wie ich

Verbrauch_neu - Verbrauch_alt = Verbrauch
berechnen kann?
Hier ein paar Beispiele aus meinen Versuchen.

Test_Verbrauch {ReadingsVal("WaschMa_Pwr","Verbrauch_neu ",0)-ReadingsVal("WaschMa_Pwr","Verbrauch_alt",0)}
Verbrauch difference { ReadingsVal("WaschMa","Verbrauch_alt",0) }

VIelen Dank
Hoffi

Otto123

#1
Hi,

Du brauchst zusätzliche Klammern. Nach dem Schema set testzaehler {([testzaehler:state] + 2)}

Das würde aber als userReadings gehen, kann ich leider nicht ersehen wie Du getestet hast.
Test_Verbrauch {ReadingsVal("WaschMa_Pwr","Verbrauch_neu ",0) - ReadingsVal("WaschMa_Pwr","Verbrauch_alt",0)}

Für ein setreading würde es so gehen:
setreading WaschMa_Pwr Test_Verbrauch {(ReadingsVal("WaschMa_Pwr","Verbrauch_neu ",0) - ReadingsVal("WaschMa_Pwr","Verbrauch_alt",0))}

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

Thoffi1978

Hallo Otto,

ich habe habe über die Eingabe
setreading WaschMa_Pwr Verbrauch_alt 2000
bzw.
setreading WaschMa_Pwr Verbrauch_neu 2033

eingegeben.

Ich bekomme aber ein Ergebnis mit dem ich nicht gerechnet habe
Verbrauch       -2000

Anbei List von WaschMa_Pwr:
Internals:
   .triggerUsed 1
   DEF        323A9202
   FUUID      5efa1ae4-f33f-7e98-0b63-78e1f4a4cb844419
   NAME       WaschMa_Pwr
   NOTIFYDEV  global
   NR         449
   NTFY_ORDER 50-WaschMa_Pwr
   STATE      0.06
   TYPE       CUL_HM
   chanNo     02
   device     Steckdose_WaschMa
   .attraggr:
   .attrminint:
   .userReadings:
     HASH(0x59dd6b0)
   OLDREADINGS:
   READINGS:
     2020-07-02 09:31:58   Verbrauch       -2000
     2020-07-02 09:31:52   Verbrauch_alt   2000
     2020-07-02 09:31:58   Verbrauch_neu   2033
     2020-07-02 09:31:36   boot            off
     2020-07-02 09:31:36   current         0
     2020-07-02 09:31:36   eState          E: 1465.4 P: 0.06 I: 0 U: 233.2 f: 49.96
     2020-07-02 09:31:36   energy          1465.4
     2020-07-02 09:31:36   energyCalc      1465.4
     2020-07-02 09:31:36   frequency       49.96
     2020-07-02 09:31:36   power           0.06
     2020-07-02 09:31:36   state           1465.4
     2020-07-02 09:31:36   voltage         233.2
   helper:
     peerFriend
     peerOpt    -:powerMeter
     regLst     1
     cmds:
       TmplKey    :no:1593505556.37455
       TmplTs     1593505556.37455
       cmdKey     :1:0:0::00AC:02
       TmplCmds:
       cmdList:
         clear:[readings|trigger|register|oldRegs|rssi|msgEvents|msgErrors|attack|all]
         getConfig:
         getRegRaw:[List0|List1|List2|List3|List4|List5|List6] ... [-PeerChannel-]
         peerBulk:-peer1,peer2,...- [set|unset]
         regBulk:-list-.-peer- -addr1:data1- -addr2:data2- ...
         regSet:[prep|exec] -regName- -value- ... [-peerChannel-]
         sign:[on|off]
         tplDel:tmplt
     expert:
       def        1
       det        0
       raw        1
       tpl        0
     role:
       chn        1
     tmpl:
Attributes:
   model      HM-ES-PMSW1-PL
   room       Keller
   stateFormat power
   userReadings Verbrauch {ReadingsVal("WaschMa_Pwr","Verbrauch_neu ",0)-ReadingsVal("WaschMa_Pwr","Verbrauch_alt",0)}


Auch bei dem "setreading" von dir erhalte ich -2000


Vielen Dank
Torsten

Otto123

Moin Torsten,

sorry da müssen in dem Fall Leerzeichen dazwischen, habe es oben geändert. Mein "Schema" war schon richtig :)
Offenbar ist der Parser an der Stelle sensibel.

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

Beta-User

MMn. fehlt hier - mal wieder - ein sauberer Trigger für das userReading...
Test_Verbrauch:Verbrauch_neu.* {ReadingsVal("WaschMa_Pwr","Verbrauch_neu",0) - ReadingsVal("WaschMa_Pwr","Verbrauch_alt",0)}
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Thoffi1978

Zitat von: Beta-User am 02 Juli 2020, 09:53:58
MMn. fehlt hier - mal wieder - ein sauberer Trigger für das userReading...
Test_Verbrauch:Verbrauch_neu.* {ReadingsVal("WaschMa_Pwr","Verbrauch_neu",0) - ReadingsVal("WaschMa_Pwr","Verbrauch_alt",0)}

Das hat funktioniert.

Vielen lieben Dank. DANKE