Internal im stateFormat aktualisiert nicht

Begonnen von RockThisParty, 28 Juni 2020, 09:12:30

Vorheriges Thema - Nächstes Thema

RockThisParty

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

RockThisParty

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.

LuckyDay

Zitatevent-on-update-reading 1

lösche mal dieses Attribut, damit werden sämtliche Events verhindert! mit der Regex --> 1

amenomade

#3
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.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

RockThisParty

#4
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.

RockThisParty

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 :(

amenomade

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?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

RockThisParty

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.

amenomade

#8
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.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

RockThisParty

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.


amenomade

#10
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.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

RockThisParty

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