userReadings:trigger funktioniert nicht richtig

Begonnen von abc2006, 09 März 2017, 11:54:41

Vorheriges Thema - Nächstes Thema

abc2006

Hi,

ich habe folgendes Device:
ZitatInternals:
   DEF        1/3/5:dpt12 tul
   DEVNAME    KNX10.I06_Heizungszaehler_main
   IODev      tul
   LASTInputDev tul
   MSGCNT     2662
   NAME       KNX10.I06_Heizungszaehler_main
   NR         585
   NTFY_ORDER 50-KNX10.I06
   STATE      6398.591 m³ m3
   TYPE       KNX
   tul_MSGCNT 2662
   tul_RAWMSG C110aw130500000284
   tul_TIME   2017-03-09 11:43:52
   Gaddr:
     1          1/3/5
   Gcode:
     1          1305
   Helper:
     Dblog:
       Lastliterwork:
         Logdb:
           TIME       1489056232.65166
           VALUE      2.32
       Literpromin:
         Logdb:
           TIME       1489056232.65166
           VALUE      18.41
       Total:
         Logdb:
           TIME       1489056232.65166
           VALUE      6398.591
   Model:
     1          dpt12
   Readings:
     2017-03-09 11:43:52   RL              24.75 °C
     2017-03-09 11:43:52   VL              26.75 °C
     2017-03-09 11:43:52   a               18.4146975573683
     2017-03-09 11:43:52   getG1           644
     2017-03-09 11:43:52   last-sender     1/1/10
     2017-03-09 11:43:52   lastliterwork   2.32 Wh
     2017-03-09 11:43:52   literpromin     18.41 l/min
     2017-03-09 11:12:15   offset          6397.947
     2017-03-09 11:43:52   state           644
     2017-03-09 11:43:52   total           6398.591 m³
   Readingsname:
Attributes:
   DbLogInclude lastliterwork,literpromin,total
   IODev      tul
   group      Zähler
   readonly   1
   room       KNX,System
   stateFormat total m3
   userReadings total {sprintf("%.3f m³",ReadingsVal($name,"offset",0)+ReadingsNum($name,"getG1",0)*0.001)},
update_delay:total {ReadingsAge($name, "total",0)},
a differential {ReadingsVal($name,"getG1",0)*60},
literpromin {sprintf("%.2f l/min",int(100*ReadingsVal($name,"a",0))/100)},
VL {sprintf("%.2f °C",ReadingsNum("RE_TEMP_VorlaufHK","temperature",0))},
RL {sprintf("%.2f °C",ReadingsNum("RE_TEMP_RuecklaufHK","temperature",0))},
lastliterwork {my $w= sprintf("%.2f Wh",(ReadingsNum($name,"VL",0)-ReadingsNum($name,"RL",0))*1.16)}
   webCmd     :

Hier habe ich einige UserReadings angelegt, um ein paar Werte zu berechnen, welche ich dann loggen möchte.

Leider werden zwei Events pro "update" erzeugt:

2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main getG1: 659
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main last-sender: 1/1/10
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main 659
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main total: 6398.606 m³
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main a: 18.384853801913
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main literpromin: 18.38 l/min
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main VL: 27.00 °C
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main RL: 24.75 °C
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main lastliterwork: 2.61 Wh
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main getG1: 659
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main last-sender: 1/1/10
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main 659
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main total: 6398.606 m³
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main literpromin: 18.38 l/min
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main VL: 27.00 °C
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main RL: 24.75 °C
2017-03-09 11:44:41.273 KNX KNX10.I06_Heizungszaehler_main lastliterwork: 2.61 Wh


Ich vermutete, dass dies durch die beiden Haupt-Events getG1 und last-sender ausgelöst wird.
Also habe ich meine Events auf "getG1" beschränkt, und nun ausschließlich getG1 bekommen.
Diese aber doppelt:
2017-03-09 11:48:07.632 KNX KNX10.I06_Heizungszaehler_main getG1: 721
2017-03-09 11:48:07.632 KNX KNX10.I06_Heizungszaehler_main getG1: 721


Warum? Ich hab doch bestimmt wieder irgendwo einen Denkfehler drin? (Der mir einfällt, sobald mich jemand drauf hin weist ;./)

Desweiteren habe ich versucht, das triggern der UserReadings auf einzelne Readings zu beschränken:

update_delay:total {ReadingsAge($name, "total",0)},

Abgesehen davon, dass das vermutlich Inhaltlich nicht sinnvoll ist, wird das Reading update_delay bei mir nicht erzeugt. Selbiges Problem hatte ich mit den anderen Readings, bis ich den trigger entfernt habe.

In einem Beitrag habe ich gelesen, dass man aufgrund einer Anpassung nicht mehr :trigger verwenden kann, sondern :trigger.* verwenden muss.

update_delay:total.* {ReadingsAge($name, "total",0)},

Leider funktioniert auch das nicht.
Auch mit

update_delay:total:.* {ReadingsAge($name, "total",0)},

hab ichs nicht hingekriegt. Was mache ich falsch?

Danke und viele Grüße,
Stephan

FHEM nightly auf Intel Atom (lubuntu) mit VDSL 50000 ;-)
Nutze zur Zeit OneWire und KNX