Hauptmenü

notify Problem

Begonnen von Steffen@Home, 05 Januar 2017, 15:22:47

Vorheriges Thema - Nächstes Thema

Steffen@Home

Hallo Zusammen,

ich würde gerne den DenonAVR "playStatus" meines Receivers an einen dummy state weiterleiten. Habe schon etliches versucht aber es haut nicht hin.
Teilweise hat es mal sporadisch funktioniert aber dann kam leider statt "playing" oder "stopped" immer nur "paused" an, deshalb dachte ich das wäre vlt. der zwischenstatus und ich könnte ein sleep einfügen bevor der EVTPART ausgelesen & weiter gegeben wird.

Danke für Ideen!

Momentan sieht mein Notify so aus.:

Internals:
   CFGFN
   DEF        DenonAVR:playStatus:.* sleep 2;;set DenonAVRplayiRadio $EVTPART1
   NAME       AVRplaystateNotify
   NOTIFYDEV  DenonAVR
   NR         1167
   NTFY_ORDER 50-AVRplaystateNotify
   REGEXP     DenonAVR:playStatus:.*
   STATE      active
   TYPE       notify
   Readings:
     2017-01-05 15:11:34   state           active
Attributes:
   alias      set AVRiRadio state
   comment    setzt den AVRiRadio state auf den aktuellen DenonAVR:playStatus
   room       Wohnen
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

marvin78

Ich würde für sowas immer readingsProxy verwenden. Das spart das notify.

Ohne das genaue Event zu kennen, ist es schwer, hier was zu sagen.  Was sagt der Eventmonitor und das Log?

lists von ALLEN beteiligten Devices können nie schaden.

Steffen@Home

Hallo Marvin,

die Idee dahinter ist meinem dummy "DenonAVRplayiRadio" der mir den Befehl zum AVR sendet um das internet Radio zu starten, auch den korrekten Status zu hinterlegen. Also "playing" oder "stopped"

Jetzt hat er nämlich wenn sich mal überhaupt was an "state" ändert entweder "on" oder "paused".

Das notify "AVRiRadioPlaynotify" führt den Befehl aus ("DenonAVRplayiRadio:on set DenonAVR input iRadio_play") wenn ich den dummy cmd "on" Befehl gebe.

Und nun mein Problemkind ist das notify "AVRplaystateNotify" das mir bei einer Änderung des "playStatus" Attributes des DenonAVR den "state" des dummies "DenonAVRplayiRadio" wie oben auf "playing" oder "stopped" setzen soll.
Eben mit so was in der Art: DenonAVR:playStatus:.* sleep 2;;set DenonAVRplayiRadio $EVTPART1

Vielleicht etwas umständlich aber für meinen Wissensstand dachte ich für mich machbar, wohl doch nicht...  ???

Im Log steht zumindest jetzt was dass er das sleep 2 irgendwie wohl nicht kann:
2017.01.06 10:39:15 3: AVRplaystateNotify return value: Cannot interpret 2;set as seconds
2017.01.06 10:39:15 3: AVRplaystateNotify return value: Cannot interpret 2;set as seconds
2017.01.06 10:39:17 3: AVRplaystateNotify return value: Cannot interpret 2;set as seconds




Habe hier noch einen Auszug der Homebridge gemacht, hier sieht man das ein DenonAVR "playing" irgendwie durchkommt:

[1/6/2017, 10:37:46 AM] [FHEM] DenonAVR is switch
[1/6/2017, 10:37:46 AM] [FHEM] DenonAVR has
[1/6/2017, 10:37:46 AM] [FHEM]   Custom Volume [volume;cached]
[1/6/2017, 10:37:46 AM] [FHEM]   Custom Power [power]
[1/6/2017, 10:37:46 AM] [FHEM]   On [power;on,off]
  2017-01-06 10:37:46 caching: DenonAVR-volume: 19 %
[1/6/2017, 10:37:46 AM] [FHEM]     caching: Custom Volume: 19 (as number; from '19 %')
  2017-01-06 10:37:46 caching: DenonAVR-power: on
[1/6/2017, 10:37:46 AM] [FHEM] DenonAVR-power not a number: on
[1/6/2017, 10:37:46 AM] [FHEM]     caching: On: true (as boolean; from 'on')
[1/6/2017, 10:37:46 AM] [FHEM] homebridgeMapping: On=DenonAVR:playStatus,valueOn=playing,valueOff=stopped,cmdOn=on
[1/6/2017, 10:37:46 AM] [FHEM] DenonAVRplayiRadio is switch
[1/6/2017, 10:37:46 AM] [FHEM] DenonAVRplayiRadio has
[1/6/2017, 10:37:46 AM] [FHEM]   On [DenonAVR.playStatus;on,off]
[1/6/2017, 10:37:46 AM] [FHEM] query: On for DenonAVR-playStatus
[1/6/2017, 10:37:46 AM] [FHEM]   not cached
[1/6/2017, 10:37:46 AM] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=%7BReadingsVal(%22DenonAVR%22,%22playStatus%22,%22%22)%7D&XHR=1


[1/6/2017, 10:37:46 AM] [FHEM] Initializing platform accessory 'DenonAVR'...
[1/6/2017, 10:37:46 AM] [FHEM] creating services for DenonAVR
[1/6/2017, 10:37:46 AM] [FHEM]   information service for DenonAVR
[1/6/2017, 10:37:46 AM] [FHEM]     manufacturer, model and serial number characteristics for DenonAVR
[1/6/2017, 10:37:46 AM] [FHEM]   Switch service for DenonAVR
[1/6/2017, 10:37:46 AM] [FHEM]     Custom Volume characteristic for DenonAVR:volume
[1/6/2017, 10:37:46 AM] [FHEM]     Custom Power characteristic for DenonAVR:power
[1/6/2017, 10:37:46 AM] [FHEM]     On characteristic for DenonAVR:power
[1/6/2017, 10:37:46 AM] [FHEM] Initializing platform accessory 'DenonAVRplayiRadio'...
[1/6/2017, 10:37:46 AM] [FHEM] creating services for DenonAVRplayiRadio
[1/6/2017, 10:37:46 AM] [FHEM]   information service for DenonAVRplayiRadio
[1/6/2017, 10:37:46 AM] [FHEM]     manufacturer, model and serial number characteristics for DenonAVRplayiRadio
[1/6/2017, 10:37:46 AM] [FHEM]   Switch service for DenonAVRplayiRadio
[1/6/2017, 10:37:46 AM] [FHEM]     On characteristic for DenonAVR:playStatus


[1/6/2017, 10:20:29 AM] [FHEM]   value: playing
  2017-01-06 10:20:29 caching: DenonAVR-playStatus: playing
[1/6/2017, 10:20:29 AM] [FHEM]     caching: On: true (as boolean; from 'playing')
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

marvin78

Wenn der Code aus dem DEF kommt, mach mal das zweite Semikolon weg. Also so:

DenonAVR:playStatus:.* sleep 2;set DenonAVRplayiRadio $EVTPART1

Ich würde mir trotz allem readingsProxy anschauen. Das spart das notify.

Steffen@Home

Hallo Marvin, danke!

Werde es heute Abend mal mit dem ; testen.

Das readingsProxy habe ich mir angesehen aber noch nicht verstanden. ;D

Verstehe ich es richtig, dass das readingsProxy meinen Befehl ("set DenonAVR input iRadio_play")  per webCmd absetzen könnte und
gleichzeitig auch den Status des Readings "DenonAVR:playStatus" (playing oder stopped) des DenonAVR Receivers bei Änderung annehmen wird?

define AVRplayiRadioProxy readingsProxy DenonAVR:playStatus
attr AVRplayiRadio webCmd on
attr AVRplayiRadio setFn ($CMD eq "on")?"set DenonAVR input iRadio_play"
attr AVRplayiRadio setList on


Den WebCmd- Befehl kann man dann per setFN angeben?

Hat das proxy auch ein eventMap?
Würde das state (generic device type=switch) gerne dann gegen on(bei playing) bzw. off(bei stopped) tauschen, damit dieser Schalter richtig anzeigt ob an oder aus.

attr AVRplayiRadio eventMap playing:on stopped:off
zusätzlich sollte der PlayStatus "on" auch den Wert off annehmen also on:off , da nur playing on darstellt.
Denke das hier müsste dann auch funktionieren:

attr AVRplayiRadio eventMap playing:on stopped:off on:off


Danke!
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine

Steffen@Home

#5
Ok, das funktioniert so nicht. ???

ReadingsProxy mal angelegt aber es funktioniert eigentlich genau so wenig wie das notify.
Er bekommt den playStatus nur in sehr komischen abständen mit, wenn überhaupt. Wie ist da normalerweise die reaktionszeit?

Wenn ich denAVR stoppe ändert sich gar nichts am proxy, das bekommt er gar nicht mit.

Meistens aber bleibt er wenn er mal was anzeigt immer auf dem zwischenwert "paused" im Übergang von stopped nach playing stehen, genau wie das notify auch.

Am AVR:playStatus sieht man den Wert "paused" nicht weil er vermutlich so schnell umhüpft auf playing aber der proxy bekommt das dann nicht mehr mit.

setFN habe ich wieder entfernt, da es nicht richtig ist.

Wie man dem proxy nun einen Befehl ausführen lassen kann bei z.b. webCmd "on" habe ich auch nicht herausgefunden.

nternals:
   CFGFN
   DEF        DenonAVR:playStatus:.*
   DEVICE     DenonAVR
   NAME       AVRplayiRadioProxy
   NR         21494
   NTFY_ORDER 50-AVRplayiRadioProxy
   READING    playStatus
   STATE      playing
   TYPE       readingsProxy
   Content:
     DenonAVR   1
   Readings:
     2017-01-10 20:20:51   state           playing
Attributes:
   room       Wohnen
   setList    on
   webCmd     on
Pi 1 - FHEM, HM-MOD-RPI-PCB, HM-RT-CC-DN, HM-WDS10-TH-O, HM-Sec-SCo, HM-LC-Sw1PBU-FM, Relais Platine für ext. Ansteuerung, LD382 Wifi LED Controller, DHT
Pi 2 - Kamera, DHT
Pi 3 - FHEM2, Grafana, DHT, Magnet-Sensoren, Relais-Platine