(gelöst) DOIF - Bewegungsmelder und Steuerung der Sonos Boxen

Begonnen von Ronn, 28 Januar 2019, 16:33:21

Vorheriges Thema - Nächstes Thema

Ronn

Hallo,

wie der Betreff schon aussagt, geht es um die Schaltung der einer Sonosbox. Folgenden Code verwende ich dafür:


([06:00-19:00|12345] and [Bad.Sensor:state] eq "motion")
(set Sonos_Bad StartRadio Gay%20FM, set Sonos_Bad Volume 5) (defmod Timer.Bad at +00:03:00 set Sonos_Bad Stop)


Das funktioniert auch soweit. Jetzt ist aber das Problem, dass, wenn eine neue Bewegung erkannt wird, der Stream kurz unterbrochen wird und wieder startet. Jedoch soll die Musik durchlaufen und "defmod" sich nur aktualisieren und die Box dann zum gegebenen Zeitpunkt ausschalten.

Kann  mir jemand kurz auf die Sprünge helfen wo bei mir der Wurm drin ist? 

Besten Dank schon mal.

Paul

Noch die Bedingung rein schalte nur wenn Sonos off. Benutze aber kein DOIF
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Ronn

Hallo Paul,

danke für deinen Hinweis. Das macht erst mal Sinn (warum ich da nicht von alleine drauf gekommen bin??). ich werde nachher mal folgende Variante versuchen:


([06:00-19:00|12345] and [Bad.Sensor:state] eq "motion" and [Sonos_Bad:state] ne "PLAYING")
(set Sonos_Bad StartRadio Gay%20FM, set Sonos_Bad Volume 5) (defmod Timer.Bad at +00:03:00 set Sonos_Bad Stop)


Ich gebe Rückmeldung wenn ich wieder zu Hause bin und getestet habe. Bis hierhin besten Dank erst mal.

Otto123

Hi,

was Du auch machen kannst, mein Flurlicht wird auch nicht nachgetriggert, sondern einfach später ausgeschaltet:
defmod di_Flurlicht DOIF ([PIR1:"motion:.on"] and ([?Tageslicht] eq "0" or [?PIRWg:brightness] < 130)) (set SW01_Sw01 on)(set SW01_Sw01 off)
attr di_Flurlicht do resetwait
attr di_Flurlicht room Flur
attr di_Flurlicht wait 0,180

Also schau nicht auf die Bedingung vorn, der Trick liegt in cmd_1.1 und cmd_1.2 und wait und resetwait.

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Ronn

Hallo Otto,

Danke für deine Rückmeldung. Ich hab jetzt mal deinen Code ausprobiert. Es tritt jetzt der Effekt auf, dass das state ,,Motion" zeitlich einfriert und keine neuen ,,Motion" annimmt. Damit passt sich der Ausschalttimer nicht mehr an. Gib's da nen trick?  :)

Otto123

Zitat von: Ronniedinho am 29 Januar 2019, 18:09:11
Es tritt jetzt der Effekt auf, dass das state ,,Motion" zeitlich einfriert und keine neuen ,,Motion" annimmt.
Den versteh ich nicht!? Wer friert den state ein? Das DOIF? Dein Bad.Sensor?
Was ist Bad.Sensor für ein Gerät?
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Ronn

Also der Sensor ist der bewegungssensor von hue. Der zeigt mir dann immer ,,motion" und ,,nomotion" an. Und bei deiner Variante bleibt das erste erfasste ,,Motion" zeitlich fest. Es wird keine neue (letzte) Bewegung im doif erfasst. Sondern immer nur die erste. Der Sensor an sich ändert sich von ,,Motion" auf ,,nomotion" je nach Bewegung (in den internals). Hab ich das halbwegs sinnvoll beschrieben?  ???

Otto123

Naja den Part musst Du anpassen, der ist für Homematic -> [PIR1:"motion:.on"]

Mach doch einfach Deine Variante (die geht ja) und ändere nur die Ausführung  ::)
define Willi DOIF ([06:00-19:00|12345] and [Bad.Sensor:state] eq "motion" and [Sonos_Bad:state] ne "PLAYING") (set Sonos_Bad StartRadio Gay%20FM, set Sonos_Bad Volume 5) (set Sonos_Bad Stop)
attr Willi do resetwait
attr Willi wait 0,180


Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Ronn

Hallo Otto,

ich hab jetzt noch ein bisschen rumgespielt. Und jetzt passt es. Die Sonos geht bei Bewegung an und startet einen Timer. Sollte wieder eine Bewegung erkannt werden, startet er die Sonos nicht mehr neu (da 1. Bedingung nicht zutrifft) und setzt wieder einen neuen Timer, da die zweite Bedingung auch nicht wahr ist. So passt das erstmal. Hier die Version die funzt:


([Bad.Sensor:state] eq "motion" and [Sonos_Bad:state] ne "PLAYING")
(set Sonos_Bad StartRadio Gay%20FM, set Sonos_Bad Volume 5)
DOELSEIF
([Sonos_Bad:state] eq "PLAYING" and [Bad.Sensor:state] eq "nomotion")
DOELSE
(defmod Timer.BadSonos at +00:01:30 set Sonos_Bad Stop)

Otto123

Und meine Version "Willi" funktioniert nicht? Warum nicht?

:o
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Ronn

wenn ich das richtig gesehen habe, wird der timer zwar immer verlängert aber die musik stoppt dann nach dem ersten Timer. Ich bin gleich zu Hause und kann das mal genau angucken. aber trotzdem vielen Dank für dein/euer Feedback!

Otto123

Kann ich nicht nachvollziehen. Mach mal bitte ein list von dem DOIF "Willi"
Läuft bei mir genauso wie Du das willst.

Ich würde noch den zweiten Trigger in eine reine Abfrage wandeln:[?Sonos_Bad:state] ne "PLAYING"
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Ronn

Hallo, grade nochmals ausprobiert. Die Sonos startet nachdem der timer abgelaufen ist erneut. Aber hier erstmal die Daten:


nternals:
   CFGFN     
   DEF        ([06:00-19:00|12345] and [Bad.Sensor:state] eq "motion" and [Sonos_Bad:state] ne "PLAYING") (set Sonos_Bad StartRadio Gay%20FM, set Sonos_Bad Volume 5) (set Sonos_Bad Stop)
   FUUID      5c51a287-f33f-0fee-56c6-ee6efe9139e05753
   MODEL      FHEM
   NAME       Willi
   NR         3695
   NTFY_ORDER 50-Willi
   STATE      cmd_1_1
   TYPE       DOIF
   READINGS:
     2019-01-30 18:50:29   Device          Sonos_Bad
     2019-01-30 18:50:15   cmd             1.1
     2019-01-30 18:50:15   cmd_event       Sonos_Bad
     2019-01-30 18:50:15   cmd_nr          1
     2019-01-30 18:50:15   cmd_seqnr       1
     2019-01-30 18:50:27   e_Bad.Sensor_state nomotion
     2019-01-30 18:50:20   e_Sonos_Bad_state PLAYING
     2019-01-30 18:49:16   mode            enabled
     2019-01-30 18:50:15   state           cmd_1_1
     2019-01-30 18:31:08   timer_01_c01    31.01.2019 06:00:00|12345
     2019-01-30 18:31:08   timer_02_c01    30.01.2019 19:00:00|12345
     2019-01-30 18:50:15   wait_timer      30.01.2019 18:50:55 cmd_1_2 Sonos_Bad
   Regex:
   attr:
     cmdState:
     wait:
       0:
         0
         40
     waitdel:
   condition:
     0          ::DOIF_time($hash,0,1,$wday,$hms,"12345") and ::ReadingValDoIf($hash,'Bad.Sensor','state') eq "motion" and ::ReadingValDoIf($hash,'Sonos_Bad','state') ne "PLAYING"
   days:
     0          12345
     1          12345
   devices:
     0           Bad.Sensor Sonos_Bad
     all         Bad.Sensor Sonos_Bad
   do:
     0:
       0          set Sonos_Bad StartRadio Gay%20FM, set Sonos_Bad Volume 5
       1          set Sonos_Bad Stop
     1:
   helper:
     event      currentTrackPositionSimulated: 0:00:09,currentTrackPositionSimulatedSec: 9
     globalinit 1
     last_timer 2
     sleepdevice Sonos_Bad
     sleepsubtimer 1
     sleeptimer 0
     timerdev   Sonos_Bad
     timerevent transportState: STOPPED,currentTrackHandle: http://http://icepool.silvacast.com/GAYFM.mp3|<DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:r="urn:schemas-rinconnetworks-com:metadata-1-0/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="-1" parentID="-1" restricted="true"><res protocolInfo="sonos.com-http:*:*:*">x-sonosapi-stream:s96482?sid=254&amp;flags=8224&amp;sn=0</res><r:streamContent></r:streamContent><r:radioShowMd></r:radioShowMd><upnp:albumArtURI>/getaa?s=1&amp;u=x-sonosapi-stream%3as96482%3fsid%3d254%26flags%3d8224%26sn%3d0</upnp:albumArtURI><dc:title>x-sonosapi-stream:s96482?sid=254&amp;flags=8224&amp;sn=0</dc:title><upnp:class>object.item</upnp:class></item></DIDL-Lite>,currentTrackPosition: 0:00:00,currentTrackPositionSec: 0,currentSenderInfo: ,infoSummarize1: Gay FM:,infoSummarize2: STOPPED => Gay FM:,STOPPED
     triggerDev Sonos_Bad
     DOIF_eventas:
       cmd_nr: 1
       cmd_seqnr: 1
       cmd_event: Sonos_Bad
       state: cmd_1_1
     timerevents:
       transportState: STOPPED
       currentTrackHandle: http://http://icepool.silvacast.com/GAYFM.mp3|<DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:r="urn:schemas-rinconnetworks-com:metadata-1-0/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="-1" parentID="-1" restricted="true"><res protocolInfo="sonos.com-http:*:*:*">x-sonosapi-stream:s96482?sid=254&amp;flags=8224&amp;sn=0</res><r:streamContent></r:streamContent><r:radioShowMd></r:radioShowMd><upnp:albumArtURI>/getaa?s=1&amp;u=x-sonosapi-stream%3as96482%3fsid%3d254%26flags%3d8224%26sn%3d0</upnp:albumArtURI><dc:title>x-sonosapi-stream:s96482?sid=254&amp;flags=8224&amp;sn=0</dc:title><upnp:class>object.item</upnp:class></item></DIDL-Lite>
       currentTrackPosition: 0:00:00
       currentTrackPositionSec: 0
       currentSenderInfo:
       infoSummarize1: Gay FM:
       infoSummarize2: STOPPED => Gay FM:
       STOPPED
     timereventsState:
       transportState: STOPPED
       currentTrackHandle: http://http://icepool.silvacast.com/GAYFM.mp3|<DIDL-Lite xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:upnp="urn:schemas-upnp-org:metadata-1-0/upnp/" xmlns:r="urn:schemas-rinconnetworks-com:metadata-1-0/" xmlns="urn:schemas-upnp-org:metadata-1-0/DIDL-Lite/"><item id="-1" parentID="-1" restricted="true"><res protocolInfo="sonos.com-http:*:*:*">x-sonosapi-stream:s96482?sid=254&amp;flags=8224&amp;sn=0</res><r:streamContent></r:streamContent><r:radioShowMd></r:radioShowMd><upnp:albumArtURI>/getaa?s=1&amp;u=x-sonosapi-stream%3as96482%3fsid%3d254%26flags%3d8224%26sn%3d0</upnp:albumArtURI><dc:title>x-sonosapi-stream:s96482?sid=254&amp;flags=8224&amp;sn=0</dc:title><upnp:class>object.item</upnp:class></item></DIDL-Lite>
       currentTrackPosition: 0:00:00
       currentTrackPositionSec: 0
       currentSenderInfo:
       infoSummarize1: Gay FM:
       infoSummarize2: STOPPED => Gay FM:
       state: STOPPED
     triggerEvents:
       currentTrackPositionSimulated: 0:00:09
       currentTrackPositionSimulatedSec: 9
     triggerEventsState:
       currentTrackPositionSimulated: 0:00:09
       currentTrackPositionSimulatedSec: 9
   internals:
   interval:
     0          -1
     1          0
   intervalfunc:
   itimer:
   localtime:
     0          1548910800
     1          1548871200
   readings:
     0           Bad.Sensor:state Sonos_Bad:state
     all         Bad.Sensor:state Sonos_Bad:state
   realtime:
     0          06:00:00
     1          19:00:00
   time:
     0          06:00:00
     1          19:00:00
   timeCond:
     0          0
     1          0
   timer:
     0          0
     1          0
   timers:
     0           0  1
   trigger:
   triggertime:
     1548871200:
       localtime  1548871200
       hash:
     1548910800:
       localtime  1548910800
       hash:
   uiState:
   uiTable:
Attributes:
   do         resetwait
   room       Testgelände
   wait       0,40


Habe die Zeit auf 40 Sekunden mal gesenkt zum testen. Damit es nicht solange dauert. :)

Paul

Änder mal

[?Sonos_Bad:state] ne "PLAYING"

Er startet weil der Sonos meldet aus und das ist ne "PLAYING"
Cubietruck, HM-USB, CUL, FS20, FHT, HUE, Keymatic

Ronn

Hi Paul,
hat den gleichen Effekt, nach dem timer ist die sonos aus.