FHEM > Anfängerfragen

[gelöst] Differenz zweier Reading in Reading schreiben

(1/2) > >>

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

--- Code: ---(setreading WaschMa_Pwr Verbrauch_alt [WaschMa_Pwr:energy]
--- Ende Code ---
schreiben.
Beim Ende des Waschvorganges lasse ich dann mit

--- Code: ---(setreading WaschMa_Pwr Verbrauch_neu [WaschMa_Pwr:energy]
--- Ende Code ---
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


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


--- Code: ---Test_Verbrauch {ReadingsVal("WaschMa_Pwr","Verbrauch_neu ",0)-ReadingsVal("WaschMa_Pwr","Verbrauch_alt",0)}
--- Ende Code ---

--- Code: ---Verbrauch difference { ReadingsVal("WaschMa","Verbrauch_alt",0) }
--- Ende Code ---

VIelen Dank
Hoffi

Otto123:
Hi,

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

Das würde aber als userReadings gehen, kann ich leider nicht ersehen wie Du getestet hast.

--- Code: ---Test_Verbrauch {ReadingsVal("WaschMa_Pwr","Verbrauch_neu ",0) - ReadingsVal("WaschMa_Pwr","Verbrauch_alt",0)}
--- Ende Code ---

Für ein setreading würde es so gehen:

--- Code: ---setreading WaschMa_Pwr Test_Verbrauch {(ReadingsVal("WaschMa_Pwr","Verbrauch_neu ",0) - ReadingsVal("WaschMa_Pwr","Verbrauch_alt",0))}
--- Ende Code ---

Gruß Otto

Thoffi1978:
Hallo Otto,

ich habe habe über die Eingabe

--- Code: ---setreading WaschMa_Pwr Verbrauch_alt 2000
--- Ende Code ---
bzw.

--- Code: ---setreading WaschMa_Pwr Verbrauch_neu 2033
--- Ende Code ---

eingegeben.

Ich bekomme aber ein Ergebnis mit dem ich nicht gerechnet habe

--- Code: ---Verbrauch       -2000
--- Ende Code ---

Anbei List von WaschMa_Pwr:

--- Code: ---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)}
--- Ende Code ---

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

Beta-User:
MMn. fehlt hier - mal wieder - ein sauberer Trigger für das userReading...

--- Code: ---Test_Verbrauch:Verbrauch_neu.* {ReadingsVal("WaschMa_Pwr","Verbrauch_neu",0) - ReadingsVal("WaschMa_Pwr","Verbrauch_alt",0)}
--- Ende Code ---

Navigation

[0] Themen-Index

[#] Nächste Seite

Zur normalen Ansicht wechseln