userReadings

Begonnen von sweetie-pie, 08 Februar 2013, 09:24:31

Vorheriges Thema - Nächstes Thema

sweetie-pie

Hallo,

ich habe bei einem OWDevice ein userReading angelegt, was die Differenz zwischen zwei Temperaturen bestimmt. Bei einem anderen (nicht offiziellen Modul) habe ich im Prinzip ein identisches userReading angelegt, was aber nicht funktioniert. Sind im Modul noch besondere, programmiertechnische Voraussetzungen zu schaffen???

Geht:
attr DS18B20_15AB2B040000 userReadings differenz { (ReadingsVal("DS18B20_15AB2B040000","temperature",0)-ReadingsVal("DS18B20_688A41040000","temperature",0));; }

Geht nicht:
attr MyVBUSDevice userReadings differenz { (ReadingsVal("MyVBUSDevice","temp08",0)-ReadingsVal("MyVBUSDevice","temp09",0));; }

In der Telnetconsole liefern die Ausdücke folgendes, korrektes Ergebnis:
{ (ReadingsVal("MyVBUSDevice","temp08",0)-ReadingsVal("MyVBUSDevice","temp09",0))}  
-4


Ich bin etwas ratlos... wo werden, in welchem Modul werden denn die Userreading bearbeitet?
Ich könnte das natürlich im Modul direkt programmieren, aber das ist ja nicht Sinn der Übung, oder? ;-)
Ich wollte das VBUS-Modul evtl. etwas generischer gestalten....


Hier nochmal die Devices:
list MyVBUSDevice
Internals:
   CFGFN      
   DEF        192.168.2.223 7053 60
   Host       192.168.2.223
   NAME       MyVBUSDevice
   NR         585
   Port       7053
   STATE      T1: 0 T2: 32.4 T3: 32.1 T7: 37.4 T8: 31.8 T9: 37.2 R1: 0 R3: 0 R5: 0 R6: 0 R7: 0 T10: 37.4
   TYPE       VBUS
   Readings:
     2013-02-08 09:07:30   relay1          0
     2013-02-08 09:07:30   relay2          0
     2013-02-08 09:07:30   relay3          0
     2013-02-08 09:07:30   relay4          0
     2013-02-08 09:07:30   relay5          0
     2013-02-08 09:07:30   relay6          0
     2013-02-08 09:07:30   relay7          0
     2013-02-08 09:07:30   state           T1: 0 T2: 32.4 T3: 32.1 T7: 37.4 T8: 31.8 T9: 37.2 R1: 0 R3: 0 R5: 0 R6: 0 R7: 0 T10: 37.4
     2013-02-08 09:07:30   temp01          0
     2013-02-08 09:07:30   temp02          32.4
     2013-02-08 09:07:30   temp03          32.1
     2013-02-08 09:07:30   temp04          888.8
     2013-02-08 09:07:30   temp05          888.8
     2013-02-08 09:07:30   temp06          888.8
     2013-02-08 09:07:30   temp07          37.4
     2013-02-08 09:07:30   temp08          31.8
     2013-02-08 09:07:30   temp09          37.2
     2013-02-08 09:07:30   temp10          37.4
     Devtype:
       TIME       2013-02-08 09:07:30
       VAL        
   Fhem:
Attributes:
   delay      60
   icon       icoGraph
   room       xHeizung
   userReadings differenz { (ReadingsVal("MyVBUSDevice","temp08",0)-ReadingsVal("MyVBUSDevice","temp09",0)); }

list DS18B20_15AB2B040000
Internals:
   CHANGED    
   DEF        28.15AB2B040000 60
   IODev      MyRemoteOWServer
   NAME       DS18B20_15AB2B040000
   NR         523
   STATE      T 22.1
   TYPE       OWDevice
   Readings:
     2013-02-08 09:08:10   alarm           0
     2013-02-08 09:08:10   differenz       0.1875
     2013-02-08 09:08:10   state           temperature: 22.125  alarm: 0
     2013-02-08 09:08:10   temperature     22.125
     2013-02-06 14:15:57   temphigh        30
     2013-02-06 14:15:49   templow         15
   Fhem:
     address    28.15AB2B040000
     alerting   1
     bus        bus.1
     interfaces temperature
     interval   60
     getters:
       address
       crc8
       family
       fasttemp
       id
       locator
       r_address
       r_id
       r_locator
       temperature
       temperature10
       temperature11
       temperature12
       temperature9
       temphigh
       templow
       type
     polls:
       temperature
     setters:
       temphigh
       templow
     state:
       temperature
Attributes:
   alias      tKamin.O
   event-on-change-reading temperature
   model      DS18B20
   polls      temperature
   room       Heizung.FBH
   stateFormat {sprintf("T %.1f",ReadingsVal("DS18B20_15AB2B040000","temperature",0))}
   userReadings differenz { (ReadingsVal("DS18B20_15AB2B040000","temperature",0)-ReadingsVal("DS18B20_688A41040000","temperature",0)); }


Danke und Gruß
   Holger

rudolfkoenig

Damit userReadings/stateFormat/etc funktionieren, muessen im Modul die readings*Update Funktionen verwendet werden.

sweetie-pie

Vielen Dank, das war der richtige Schubser... Danke!