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
geht nicht ist keine Fehlermeldung. Was sollen wir uns darunter vorstellen.
Was genau geht denn nicht?
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 :}
Ein userReading wird nur geschrieben wenn ein Event vom Device ausgelöst wird. Hast du ein Wert in dein Dummy gesetzt?
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
Was gibt Dir der Ausdruck in der FHEM Kommandozeile zurück?
{ReadingsNum("TEST", "testerei", 0) + ReadingsNum("TEST2", "testerei", 0)}
Gruß Otto
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..
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
CoolTux mir gehts wie Dir. Ich weiß auch nicht so recht wieso ich jetzt zur Lösung beigetragen habe :D
Ich hätte eher getippt das es mit setreading eh nicht geht. Aber da bin ich mir unsicher.
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 ;)
mach mal bitte ein list von deinem Dummy
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.
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
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..
der speicher deiner hardware ist zu klein. eventuell hilft das attr global blockingCallMax.
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.
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