FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Eisix am 01 Dezember 2016, 15:33:07

Titel: UserReading
Beitrag von: Eisix am 01 Dezember 2016, 15:33:07
Hallo,

ich möchte zwei readings zu einem neuen userreading addieren

SUMME {ReadingsVal("DEVICE","READING1",0)+ReadingsVal("DEVICE","READING2",0)}

Habe schon diverse Varianten probiert, das userreading wird aber nicht angelegt. In Forum und Wiki haben ich auch keine Lösung gefunden.
Hat hier jemand eine Idee?

Gruß
Eisix


Titel: Antw:UserReading
Beitrag von: Otto123 am 01 Dezember 2016, 15:44:27
Hi Eisix,

also + ist für Zahlen, wenn die Readings Zahlen sind dann nimm einfach ReadingsNum statt ReadingsVal.


Gruß Otto
Titel: Antw:UserReading
Beitrag von: igami am 01 Dezember 2016, 15:48:55
Hallo Eisix,

ein List vom Device hilft meistens.
Wenn das userreading im gleichen device angelegt wird kannst du auch $name verwenden.

Folgendes funktioniert bei mir:

Internals:
   CFGFN
   NAME       sum
   NR         115664
   STATE      ???
   TYPE       dummy
   Helper:
     Dblog:
       1:
         Dblog:
           TIME       1480603812.53656
           VALUE      1
       2:
         Dblog:
           TIME       1480603773.61703
           VALUE      2
       Sum:
         Dblog:
           TIME       1480603812.53656
           VALUE      3
   Readings:
     2016-12-01 15:50:12   1               1
     2016-12-01 15:49:33   2               2
     2016-12-01 15:50:12   sum             3
Attributes:
   readingList 1 2
   setList    1 2
   userReadings sum {ReadingsNum($name, "1", 0) + ReadingsNum($name, "2", 0)}
Titel: Antw:UserReading
Beitrag von: Eisix am 01 Dezember 2016, 16:03:27
Kriege es nicht hin  >:(


Internals:
   NAME       UPDATE
   NR         316
   STATE      OK
   TYPE       CustomReadings
   Helper:
     Dblog:
       All:
         Logdb:
           TIME       1480604400.40897
           VALUE      0
       Fhem:
         Logdb:
           TIME       1480604400.40897
           VALUE      0
       Ftui:
         Logdb:
           TIME       1480604400.40897
           VALUE      0
   Readings:
     2016-12-01 15:59:59   FHEM            0
     2016-12-01 15:59:59   FTUI            0
     2016-12-01 15:59:59   state           OK
Attributes:
   event-on-change-reading FHEM,FTUI,ALL
   event-on-update-reading FHEM,FTUI,ALL
   interval   600
   readingDefinitions FHEM:qx(wget -qO - http://fhem.de/fhemupdate/controls_fhem.txt| diff - /opt/fhem/FHEM/controls_fhem.txt |grep ">"|grep "UPD"|wc -l),FTUI:qx(wget -qO - https://raw.githubusercontent.com/knowthelist/fhem-tablet-ui/master/controls_fhemtabletui.txt| diff - /opt/fhem/FHEM/controls_fhemtabletui.txt |grep ">" |grep "UPD"|wc -l)
   userReadings ALL {ReadingsNum($name,"FHEM",0)+ReadingsNum($name,"FTUI",0)}

Titel: Antw:UserReading
Beitrag von: igami am 01 Dezember 2016, 16:10:16
Du hast event-on-change-reading und event-on-update-reading gesetzt, ich weiß nicht wie sich das zusammen verhält.
Was steht denn im EventMonitor?
Titel: Antw:UserReading
Beitrag von: Eisix am 01 Dezember 2016, 16:31:25
event-on-change-reading und event-on-update-reading habe ich zum testen gesetzt. Aber auch einzeln oder ohne, kein Unterschied.


Eventmonitor nach FHEM neustart (intervall auf 60s) sieht für mich korrekt aus.

2016-12-01 16:26:36 CustomReadings UPDATE FHEM: 0
2016-12-01 16:26:36 CustomReadings UPDATE FTUI: 0
2016-12-01 16:26:36 CustomReadings UPDATE ALL: 0
2016-12-01 16:27:36 CustomReadings UPDATE FHEM: 0
2016-12-01 16:27:36 CustomReadings UPDATE FTUI: 0
2016-12-01 16:27:36 CustomReadings UPDATE ALL: 0
2016-12-01 16:28:36 CustomReadings UPDATE FHEM: 0
2016-12-01 16:28:36 CustomReadings UPDATE FTUI: 0
2016-12-01 16:28:36 CustomReadings UPDATE ALL: 0

Reading erscheint aber nicht im device.
Titel: Antw:UserReading
Beitrag von: igami am 01 Dezember 2016, 16:51:25
UserReadings scheinen in CustomReadings nicht zu gehen aufgrund von

  foreach my $r (keys %{$hash->{READINGS}}) {
    if (not $r ~~ @used) {
      delete $hash->{READINGS}{$r};   
    }
  }

Du könntest das einfach als weiteres ReadingsDefinition angeben

ALL:{ReadingsNum($name, "FHEM", 0) + ReadingsNum($name, "FTUI", 0)}

wichtig ist, dass die Definition in geschweifte Klammern gefasst wird um das Komma nicht als Trennzeichen auszuwerten.
Titel: Antw:UserReading
Beitrag von: Eisix am 01 Dezember 2016, 17:01:32
Gute Idee.

Danke geht, da hätte ich auch drauf kommen können. Manchmal sieht man einfach den Wald vor lauter Bäumen nicht  ;D

Gruß
Eisix