FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: choetzu am 27 Februar 2018, 19:53:23

Titel: UserReadings: Werte addieren geht nicht!
Beitrag von: choetzu am 27 Februar 2018, 19:53:23
Hallo

ich habe 2 Dummies (TEST und TEST2) welche je ein Reading "testerei" haben. Nun möchte ich die Werte der zwei Readings in einem neuen Dummy speichern. Wenn ich nun beim Dummy folgendes eingebe, gehts nicht.

summe {ReadingsNum("TEST", "testerei", 0) + ReadingsNum("TEST2", "testerei", 0)}

Hmm, das sollte doch aber gemäss Forenbeispielen und Wiki gehen...

Lg c
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: CoolTux am 27 Februar 2018, 20:07:35
geht nicht ist keine Fehlermeldung. Was sollen wir uns darunter vorstellen.
Was genau geht denn nicht?
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: choetzu am 27 Februar 2018, 22:22:51
Sorry, die mangelnde Info. Es schreibt mir kein reading summe ins Dummy mit dem UserReading..  und im logfile ist kein Eintrag. Hmm, deshalb gehts nicht :}
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: CoolTux am 27 Februar 2018, 22:30:24
Ein userReading wird nur geschrieben wenn ein Event vom Device ausgelöst wird. Hast du ein Wert in dein Dummy gesetzt?
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: choetzu am 27 Februar 2018, 22:56:48
In TEST gibts den Wert 2 beim Reading testerei. Und bei TEST2 den Wert 5. Beide Dummies haben event-on-change-reading.*

Wenn ich nun setreading TEST testerei 6 mache, dann gibts auch den entspechenden Event, aber es wird nix ins Ummy mit dem userReading geschrieben... komisch
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: Otto123 am 27 Februar 2018, 23:09:38
Was gibt Dir der Ausdruck in der FHEM Kommandozeile zurück?
{ReadingsNum("TEST", "testerei", 0) + ReadingsNum("TEST2", "testerei", 0)}

Gruß Otto
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: choetzu am 27 Februar 2018, 23:14:48
Das korrekte Resultat! :) Ach Otto, mein Fhem-Gott, das wars. Ich muss zweimal readingsNum machen. Komisch nur, dass dies in etlichen Forenbeiträgen mit nur einem readingsNum gemacht wurde..

Herzlichen Dank, Euch beiden..
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: CoolTux am 27 Februar 2018, 23:21:20
Zitat von: choetzu am 27 Februar 2018, 23:14:48
Das korrekte Resultat! :) Ach Otto, mein Fhem-Gott, das wars. Ich muss zweimal readingsNum machen. Komisch nur, dass dies in etlichen Forenbeiträgen mit nur einem readingsNum gemacht wurde..

Herzlichen Dank, Euch beiden..

Die Aussage verstehe ich nicht. In Deinem ersten Post wo Du sagst es geht nicht hast Du doch auch zweimal ReadingsNum
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: Otto123 am 27 Februar 2018, 23:23:13
CoolTux mir gehts wie Dir. Ich weiß auch nicht so recht wieso ich jetzt zur Lösung beigetragen habe  :D
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: CoolTux am 27 Februar 2018, 23:26:55
Ich hätte eher getippt das es mit setreading eh nicht geht. Aber da bin ich mir unsicher.
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: choetzu am 28 Februar 2018, 12:47:01
Zitat von: CoolTux am 27 Februar 2018, 23:21:20
Die Aussage verstehe ich nicht. In Deinem ersten Post wo Du sagst es geht nicht hast Du doch auch zweimal ReadingsNum

oh, Mann, jetzt oute ich mich "erneut" als Pfeiffe.. Ich habe in der Tat zu früh gejubelt. Gestern hat mein Lieblingsclub im Cup den Einzug ins Finale geschafft, deshalb vermutlich grad etwas übermässig positiv resp. zu früh gefreut.

Also, ihr habt natürlich recht. Es geht immer noch nicht. Wenn ich die Zeile eingebe, dann gibts mir das richtige Resultat wieder. Wenn ich es aber in ein UserReading integriere, funktioniert es nicht. Ich kriege sowohl mit setreading oder set einen Event.  Also, bin ich nicht wirklich weiter ;)
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: KernSani am 28 Februar 2018, 12:53:50
mach mal bitte ein list von deinem Dummy
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: crusader am 28 Februar 2018, 12:56:40
Damit ein Userreading berechnet wird, muss die ReadingsUpdate-Routine des Moduls, in dem es definiert ist, auch aufgerufen werden.

Bei Modulen, die über ein Intervall verfügen, ist das regelmäßig der Fall, bei einem Dummy aber nicht.

Du kannst den Aufruf aber erzwingen, wenn Du ein beliebiges Reading des Dummys setzt.
Das sollte imo auch funktionieren, wenn Du den state des Dummys veränderst.
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: CoolTux am 28 Februar 2018, 12:57:00
du musst den dummys die attribute setList und readingList setzen und kannst dann ein set blabla machen. Somit greift auch das userReading. In meiner Testumgebung hat das geklappt
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: choetzu am 28 Februar 2018, 15:25:41
Guten Mittag,

danke für Eure Hilfe, jetzt hat es definitiv geklappt. Folgend nun die Auflösung:

Sonos DOIF: Speichert die Anzahl Sonos Players, welche AN sind
Internals:
   CHANGED   
   NAME       Sonos_AN_Anzahl_DOIF
   NR         382
   NTFY_ORDER 50-Sonos_AN_Anzahl_DOIF
   STATE      0
   TYPE       DOIF
   READINGS:
     2018-02-26 22:29:53   cmd             0
     2018-02-26 22:29:53   mode            enabled
     2018-02-28 15:16:39   state           0
   Regex:
     STATE:
       :
         STATE:
           ""         
   condition:
   devices:
   do:
     0:
   helper:
     DOIF_Readings_events
     event      233.6
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev Steckdose_HM_Regenwasser_SenU
     DOIF_eventas:
       state: 0
     triggerEvents:
       233.6
     triggerEventsState:
       state: 233.6
   itimer:
   uiState:
   uiTable:
Attributes:
   alias      Sonos an
   event-on-change-reading .*
   group      Statistik
   icon       black/svg/volume-up
   room       11_Statistik
   state      [#"":svTransportStatePlay:$_ ==1 and $group eq "Sonos"]


DOIF TV: Speichert die Anzahl TVs, welche AN sind
Internals:
   NAME       TV_AN_Anzahl_DOIF
   NR         298
   NTFY_ORDER 50-TV_AN_Anzahl_DOIF
   STATE      0
   TYPE       DOIF
   READINGS:
     2017-12-06 10:50:21   Device          DB7080
     2017-12-04 19:22:32   cmd             0
     2017-12-06 21:36:22   mode            enable
     2018-02-28 15:14:57   state           0
   Regex:
     STATE:
       :
         STATE:
           "^DB:"     ^DB:
   condition:
   devices:
   do:
     0:
   helper:
     DOIF_Readings_events
     DOIF_eventas
     event      off,channel: -,currentTitle: -
     globalinit 1
     last_timer 0
     sleeptimer -1
     triggerDev DB8000
     triggerEvents:
       off
       channel: -
       currentTitle: -
     triggerEventsState:
       state: off
       channel: -
       currentTitle: -
   itimer:
   uiState:
   uiTable:
Attributes:
   alias      TV an
   event-on-change-reading state
   group      Statistik
   icon       black/svg/tv
   room       11_Statistik
   state      [#"^DB:"::$STATE eq "on"  and $group eq "TV"]


Media Dummy: Hier werden die Werte anhand der notify unten gespeichert.
Internals:
   NAME       Media_Dummy
   NR         383
   STATE      3
   TYPE       dummy
   READINGS:
     2018-02-28 15:20:31   Sonos           2
     2018-02-28 15:20:13   TV              1
     2018-02-28 15:20:31   Total           3
Attributes:
   alias      Media Total
   group      Statistik
   icon       music
   room       11_Statistik
   setList    TV Sonos
   stateFormat Total
   userReadings Total {ReadingsNum("TV_AN_Anzahl_DOIF", "state", 0) + ReadingsNum("Sonos_AN_Anzahl_DOIF", "state", 0)}


Notify TV_AN: Sobald ein TV an ist, wird es auf Media_Dummy übertragen
Internals:
   CFGFN     
   DEF        TV_AN_Anzahl_DOIF:.* setreading Media_Dummy TV [TV_AN_Anzahl_DOIF:state:d]
   NAME       TV_Media_notify
   NOTIFYDEV  TV_AN_Anzahl_DOIF
   NR         556
   NTFY_ORDER 50-TV_Media_notify
   REGEXP     TV_AN_Anzahl_DOIF:.*
   STATE      2018-02-28 15:20:13
   TYPE       notify
   READINGS:
     2018-02-28 15:13:18   state           active
Attributes:


Notify Sonos_AN: Sobald ein Sonos Player an ist, wird es auf Media_Dummy übertragen
Internals:
   CFGFN     
   DEF        Sonos_AN_Anzahl_DOIF:.* setreading Media_Dummy Sonos [Sonos_AN_Anzahl_DOIF:state:d]
   NAME       Sonos_Media_notify
   NOTIFYDEV  Sonos_AN_Anzahl_DOIF
   NR         538
   NTFY_ORDER 50-Sonos_Media_notify
   REGEXP     Sonos_AN_Anzahl_DOIF:.*
   STATE      2018-02-28 15:20:31
   TYPE       notify
   READINGS:
     2018-02-28 15:12:57   state           active
Attributes:


Frage: Kann es sein, dass das Sonos DOIF viel Ressourcen frisst? Seit ich dieses DOIF im Betrieb habe, erhalte ich gelegentlich "Cannot fork: Cannot allocate memory"..  Aus fhemdebug und apptime werde ich nicht schlau..
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: frank am 28 Februar 2018, 15:39:17
der speicher deiner hardware ist zu klein. eventuell hilft das attr global blockingCallMax.
Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: Damian am 28 Februar 2018, 18:24:03

  state      [#"":svTransportStatePlay:$_ ==1 and $group eq "Sonos"]


Das wird deinen PC lahm legen.

Bei jedem Event, werden alle Devices gescannt. Du solltes den Trigger genauer spezifizieren, "" bedeutet alles.

Titel: Antw:UserReadings: Werte addieren geht nicht!
Beitrag von: choetzu am 28 Februar 2018, 21:26:48
Ok, herzlichen dank.!das gilt vermutlich auch für

[#"":state:$_ eq "on" and ($group eq "Dimmer" or $group eq "Licht")]


Das ist schwierig anders einzugrenzen. lg