Moin liebe FHEM-Helfer!
Ich bastele schon eine Weile an folgendem Problem und hoffe nun hier auf Hilfe.
Ich möchte in einem hue Bewegungsmelder im devstateicon drei Zustände anzeigen:
- deaktiviert => Internal ,,on" = 0
- aktiv ohne Bewegung => Internal ,,on" = 1 und state = nomotion
- aktiv mit Bewegung => Internal ,,on" = 1 und state = motion
Dafür bastele ich mir mit stateFormat eine Kombination aus reading und internal. Funktioniert soweit.
Problem: Eine Änderung von ,,on" führt nur einmalig beim Anlegen des attr zu einer Änderung von STATE.Habe jetzt schon mit userReadings und Event-on-update-Reading versucht, das zu umgehen, bisher ohne Erfolg.
Internals:
DEF sensor 34 1 IODev=hueBridge
FUUID 5dc7c1c0-f33f-f47b-78b4-8dcb4b9cbe932b0e
FVERSION 31_HUEDevice.pm:0.218370/2020-05-02
ID S34
INTERVAL 1
IODev hueBridge
NAME hueFlurVorneBewegung
NR 390
STATE 1motion
TYPE HUEDevice
lastupdated 2020-06-28 07:03:56
lastupdated_local 2020-06-28 09:03:56
manufacturername Signify Netherlands B.V.
modelid SML001
name Flur vorn
on 0
reachable 1
sensitivity 2
sensitivitymax 2
swversion 6.1.1.27575
type ZLLPresence
uniqueid 00:17:88:01:06:f4:f1:46-02-0406
READINGS:
2020-06-28 09:03:56 aktiv 1
2020-06-28 09:03:56 battery 100
2020-06-28 09:03:56 batteryPercent 100
2020-06-28 09:03:56 reachable 1
2020-06-28 09:03:56 state motion
helper:
devtype S
update_timeout 1
configList:
json:
manufacturername Signify Netherlands B.V.
modelid SML001
name Flur vorn
productname Hue motion sensor
swversion 6.1.1.27575
type ZLLPresence
uniqueid 00:17:88:01:06:f4:f1:46-02-0406
capabilities:
config:
alert none
battery 100
sensitivity 2
sensitivitymax 2
pending:
state:
lastupdated none
presence
swupdate:
lastinstall 2019-08-18T16:47:49
state noupdates
setList:
Attributes:
IODev hueBridge
devStateIcon 1nomotion:message_presence@grey 0.*:message_presence_disabled@grey 1motion:message_presence@red
event-on-update-reading 1
fp_Grundriss7 207,502,0,hueFlurVorneBewegung,
model SML001
room HUEDevice,Flur
stateFormat {InternalVal("hueFlurVorneBewegung","on","1").ReadingsVal("hueFlurVorneBewegung","state","nomotion")}
userReadings aktiv {InternalVal("hueFlurVorneBewegung","on","1");;}
Vielen Dank im Voraus,
Viele Grüße,
Stefan
Es sieht für mich so aus, als wenn das Device grundsätzlich keine Events erzeugt, wenn "on" = 0.
Ich habe das Problem unelegant gelöst, indem ich mit setreading "state" aus dem DOIF heraus auf den gewünschten State setze, wenn der Bewegungsmelder aus diesem DOIF heraus deaktiviert wird.
Nicht schön, aber geht erstmal.
Falls es besser geht, würde ich mich über einen Hinweis freuen.
Zitatevent-on-update-reading 1
lösche mal dieses Attribut, damit werden sämtliche Events verhindert! mit der Regex --> 1
event-on-...-reading 1 ist ja falsch und müsste entfernt werden.
Aber die Änderung eines Internals generiert sowieso kein Event worauf stateFormat reagieren könnte.
Danke für die Hinweise, das war es leider nicht :(
Die falsche Zeile hatte ich als allerletzten Versuch dazugebaut und kurz nach meinem Post schon wieder rausgeworfen.
Zitat von: amenomade am 28 Juni 2020, 20:28:50
Aber die Änderung eines Internals generiert sowieso kein Event worauf stateFormat reagieren könnte.
Dann ist meine Idee, das Internal in stateformat zu nutzen ohnehin zum Scheitern verurteilt? Oder müsste sich STATE zumindest beim nächsten "motion"-Event ändern? Dann habe ich den Verdacht, dass das Device grundsätzlich keine Events erzeugt, wenn das Geräte "ausgeschaltet" / on=0 ist :(
Also, wenn irgendein anderes Event die Kalkulation deines stateFormat triggert, wird er den Internal Wert wieder holen.
Mit event-on-update-reading 1 erzeugte dein Device ja kein Event. Wenn Du das attr gelöscht hast, sollte es doch. Wie sieht jetzt ein "list hueFlurVorneBewegung" aus?
Internals:
DEF sensor 34 1 IODev=hueBridge
FUUID 5dc7c1c0-f33f-f47b-78b4-8dcb4b9cbe932b0e
FVERSION 31_HUEDevice.pm:0.218370/2020-05-02
ID S34
INTERVAL 1
IODev hueBridge
NAME hueFlurVorneBewegung
NR 390
STATE 1nomotion
TYPE HUEDevice
lastupdated 2020-06-28 20:39:55
lastupdated_local 2020-06-28 22:39:55
manufacturername Signify Netherlands B.V.
modelid SML001
name Flur vorn
on 0
reachable 1
sensitivity 2
sensitivitymax 2
swversion 6.1.1.27575
type ZLLPresence
uniqueid 00:17:88:01:06:f4:f1:46-02-0406
READINGS:
2020-06-28 21:35:48 aktiv 1
2020-06-28 22:39:55 battery 100
2020-06-28 22:39:55 batteryPercent 100
2020-06-28 22:39:55 reachable 1
2020-06-28 22:39:55 state nomotion
helper:
devtype S
update_timeout 1
configList:
json:
manufacturername Signify Netherlands B.V.
modelid SML001
name Flur vorn
productname Hue motion sensor
swversion 6.1.1.27575
type ZLLPresence
uniqueid 00:17:88:01:06:f4:f1:46-02-0406
capabilities:
config:
alert none
battery 100
sensitivity 2
sensitivitymax 2
pending:
state:
lastupdated none
presence
swupdate:
lastinstall 2019-08-18T16:47:49
state noupdates
setList:
Attributes:
IODev hueBridge
devStateIcon 1nomotion:message_presence@grey 0.*:message_presence_disabled@grey 1motion:message_presence@red
fp_Grundriss7 207,502,0,hueFlurVorneBewegung,
model SML001
room HUEDevice,Flur
stateFormat {InternalVal("hueFlurVorneBewegung","on","1").ReadingsVal("hueFlurVorneBewegung","state","nomotion")}
Wenn on=0 bekomme ich definitiv keine Events :(
Oben sieht man auch, dass on=0 und STATE=1nomotion statt 0nomotion bleibt.
Ich verstehe immer noch nicht, was Du mit diesem Internal machen willst.
Ein Internal ist ein Wert, den der Entwickler nur intern nutzt.
Weisst Du überhaupt, was dieses "on" Internal für den Entwickler bedeutet, bzw. was soll es für dich bedeuten?
Du kriegst Events wenn Readings aktualisiert werden, sprich bei HUEDevicewenn das Device gepollt wird. Mehr brauchst Du nw. nicht.
ZitatOben sieht man auch, dass on=0 und STATE=1nomotion statt 0nomotion bleibt.
Das bedeutet nur, dass in dem Moment wo das Reading state aktualisiert wurde, "on" auf 1 stand, und dass mittlerweile "on" zurück auf 0 gesetzt wurde.
Moin!
"on" sagt aus, ob der Bewegungsmelder überhaupt scharf geschaltet ist. Das kann ich auch mit einem speziellen set-Befehl verändern, was ich per DOIF unter verschiedenen BeEdingungen auch länger schon mache. Nun würde ich es gern auch visualisieren.
Insofern wäre es eigentlich schön gar nicht unpassend, das "on" als Reading zu haben, gibt es aber leider nicht.
Vielleicht versuche ich es mal im hue-Unterforum.
Zitat von: RockThisParty am 29 Juni 2020, 16:28:36
Das kann ich auch mit einem speziellen set-Befehl verändern, was ich per DOIF unter verschiedenen BeEdingungen auch länger schon mache. Nun würde ich es gern auch visualisieren.
Dann mach einfach gleichzeitig mit deinem set-Befehl ein "setreading hueFlurVorneBewegung <readingsName> <value>" und nutze dieses Reading in deinem stateFormat
EDIT: im hue-Unterforum kannst Du natürlich auch den Modulautor bitten, es als Reading stat als Internal zu implementieren.
ZitatDann mach einfach gleichzeitig mit deinem set-Befehl ein "setreading hueFlurVorneBewegung <readingsName> <value>" und nutze dieses Reading in deinem stateFormat
So in etwa habe ich es ja gelöst. Funktioniert so lange, wie nicht andere Steuerungen (iConnectHueApp) auch eingreifen.
ZitatEDIT: im hue-Unterforum kannst Du natürlich auch den Modulautor bitten, es als Reading stat als Internal zu implementieren.
Mach ich :)
Danke für Deine Unterstützung! :D