Hauptmenü

Notify Sonos STATE

Begonnen von Tommi ratlos, 26 Juli 2019, 10:48:47

Vorheriges Thema - Nächstes Thema

Tommi ratlos

Hallo zusammen,

versuche gerade ein Notify zu erstellen das auslöst wenn Sonos STATE nicht opened ist.
Internals:
   DEF        127.0.0.1:4711 30 8 5
   DELAYTIME  5
   DeviceName 127.0.0.1:4711
   FD         24
   FUUID      4cecbb34-f33a-c08c-1994-064ff9b01da7d401
   INTERVAL   30
   NAME       Sonos
   NOTIFYDEV  global
   NR         378
   NTFY_ORDER 50-Sonos
   PARTIAL   
   STATE      opened
   TYPE       SONOS
   WAITTIME   8
   READINGS:

Notify:
Sonos:.* {
{Log 3, "NTFY_Sonos_Watch EVENT:$EVENT"};;
}


Allerdings gibs es kein EVENT opened es scheint nur beim ändern von "attr disable 0 nach 1"  DISCONNECTED CONNECTED zu geben.

Sonos:STATE:.* {
{Log 3, "NTFY_Sonos_Watch EVENT:$EVENT"};;
}

bringt keinen Logeintrag.

Hintergrund ist das Sonos manchmal die Verbindung verliert und das Notify automatisch disabled 0 und wieder 1 setzen soll.

Wo habe ich meinen Gehirnknoten?

Gruß
Thomas
Pi 3 CUNX868 mit 433 Pigator.

det.

STATE groß geschrieben ist ein Internal und nicht für notify gedacht.  Nimm mal state, das ist ein Reading auf das Du triggern kannst.
LG
det.

Tommi ratlos

ZitatSonos:state:.* {
   {Log 3, "NTFY_Sonos_Watch EVENT:$EVENT"};;
}
auch nix selbst bei
ZitatSonos:.* {
   {Log 3, "NTFY_Sonos_Watch EVENT:$EVENT"};;
}
taucht kein "opened" auf.

Pi 3 CUNX868 mit 433 Pigator.

Beta-User

Wenn es keine Events gibt, gibt es keine Trigger...

Ergänzend: "state" ist sowieso besonders (da gibt es "ein Attribut" für, schau mal in die commandref zu notify). Aber das ist hier nicht der Grund, sondern die Abwesenheit von Events. Kurz: Dieses Problem kann man (vorbehaltlich eventueller Einstellmöglichkeiten dazu aus dem SONOS-Modul) m.E. durch einen Eventhandler auf das "Sonos" nicht direkt lösen, sondern muß ggf. auf Presence-Mechanismen uä. zurückgreifen.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Tommi ratlos

Danke dann muss ich das wohl anders angehen.
Das Reading LastProcessAnswer "LastProcessAnswer: Enthält den letzten Zeitpunkt einer Datenübertragung vom SubProzess zum FHEM-Modul." könnte mich weiterbringen.
LastProcessAnswer: 1564134714
Muss noch mal in mich gehen.
Pi 3 CUNX868 mit 433 Pigator.

TomLee

Hallo,

das DOIF, das nicht wenige nutzen, nimmt doch auch state ?, da hat sich noch keiner über fehlende Events beschwert.

Blöde Frage : Hast du denn den Player mal kurz vom Netz genommen oder einen restart gemacht oder oder .... das das notify überhaupt hätte triggern können ?

Ich komm da nicht ganz mit würde das aber gerne verstehen  ;D

Gruß

Thomas

Tommi ratlos

Hallo,

der Player macht das auch, nur das Sonos Modul selbst anscheinend nicht.
Pi 3 CUNX868 mit 433 Pigator.

Beta-User

Zu diesem speziellen Modul kann ich nichts sagen, das kann und will ich nicht verstehen, für mich sieht das dortige DOIF so aus, als würde da der STATE nichttriggernd abgefragt (? vorneweg) und nur zu einer bestimmten Uhrzeit die Verbindung erneuert. (Warum nimmt man da kein at?...)

Jedenfalls bei notify und ein paar anderen Event-Handlern ist es erforderlich, dass man ihm mitteilen muß, wenn man Events aus dem Reading "state" haben will.

Und da es andere Readings zu geben scheint, wäre schon interessant, wieso das Log-notify nicht getriggert wird. Die sind jedenfalls lt. Code triggern gesetzt.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Tommi ratlos

Hallo,

ist wohl ein Missverständnis.
Sonos:.* {
   {Log 3, "NTFY_Sonos_Watch EVENT:$EVENT"};;
}

triggert Events, anscheinend wird State aber nicht getriggert.

Gruß
Thomas
Pi 3 CUNX868 mit 433 Pigator.

Beta-User

Zeig mal ein list von dem Sonos-Ding...

Und nochmal: "state" ist bei notify besonders. Du hast in die cref geschaut und weißt zwischenzeitlich, welches Attribut ich meine...?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Tommi ratlos

#10
Hier das ListInternals:
   DEF        127.0.0.1:4711 30 8 5
   DELAYTIME  5
   DeviceName 127.0.0.1:4711
   FD         18
   FUUID      5cecbb54-f33f-c08c-1924-088bb9f01da7d401
   INTERVAL   30
   NAME       Sonos
   NOTIFYDEV  global
   NR         378
   NTFY_ORDER 50-Sonos
   PARTIAL   
   STATE      opened
   TYPE       SONOS
   WAITTIME   8
   READINGS:
     2019-07-23 22:51:45   AllPlayer       ['Sonos_Bad','Sonos_Kueche','Sonos_Schlafzimmer','Sonos_Schlafzimmer_RF','Sonos_Wohnzimmer']
     2019-07-23 22:51:45   AllPlayerCount  5
     2019-07-23 22:51:34   AllPlayerNotBonded ['Sonos_Bad','Sonos_Kueche','Sonos_Schlafzimmer','Sonos_Wohnzimmer']
     2019-07-23 22:51:34   AllPlayerNotBondedCount 4
     2019-07-26 13:09:42   LastProcessAnswer 1564139382
     2019-07-26 01:43:19   LastProcessRestart 2019-07-26 01:43:19
     2019-07-26 01:43:19   LastProcessRestartCount 4
     2019-05-28 06:45:47   LineInPlayer    []
     2019-07-24 18:51:42   MasterPlayer    ['Sonos_Kueche','Sonos_Wohnzimmer']
     2019-07-24 18:51:42   MasterPlayerCount 2
     2019-07-26 13:01:32   MasterPlayerNotPlaying ['Sonos_Wohnzimmer']
     2019-07-26 13:01:32   MasterPlayerNotPlayingCount 1
     2019-07-26 13:01:32   MasterPlayerPlaying ['Sonos_Kueche']
     2019-07-26 13:01:32   MasterPlayerPlayingCount 1
     2019-07-23 22:51:04   MusicServicesList {####GEKÜRZT####}
     2019-07-25 02:23:08   MusicServicesListVersion RINCON_347E5C98F44501400:87
     2019-07-26 13:00:17   OFFLINE         1, attr Sonos disable 1
     2019-07-26 01:05:12   ShareIndexInProgress 0
     2019-07-26 13:09:33   ZoneGroupState  <####GEKÜRZT###>
     2019-07-26 13:01:26   state           opened
Attributes:
   DbLogExclude .*
   disable    0
   room       1_A_Sonos_lab,1_LAB,Sonos
   targetSpeakDir /daten/SonosSpeak
   targetSpeakFileTimestamp 1
   targetSpeakMP3FileDir /daten/SonosSpeak
   targetSpeakURL //192.168.115.81/SonosSpeak
   verbose    1
Pi 3 CUNX868 mit 433 Pigator.

Damian

Zitat von: Tommi ratlos am 26 Juli 2019, 13:07:18
Hallo,

ist wohl ein Missverständnis.
Sonos:.* {
   {Log 3, "NTFY_Sonos_Watch EVENT:$EVENT"};;
}

triggert Events, anscheinend wird State aber nicht getriggert.

Gruß
Thomas

Wenn das Sonos-Device Events erzeugt, dann kannst du einfach den Status wie folgt abfragen:

define di_Sonos DOIF ([Sonos] eq "open") (....)


Auszug aus der Commanderf zu DOIF:

ZitatAnwendungsbeispiel: Einfache Ereignissteuerung, "remotecontrol" ist hier ein Device, es wird in eckigen Klammern angegeben. Ausgewertet wird der Status des Devices - nicht das Event.

define di_garage DOIF ([remotecontrol] eq "on") (set garage on) DOELSEIF ([remotecontrol] eq "off") (set garage off)

Das Modul wird getriggert, sobald das angegebene Device hier "remotecontrol" ein Event erzeugt. Das geschieht, wenn irgendein Reading oder der Status von "remotecontrol" aktualisiert wird. Ausgewertet wird hier der Zustand des Status von remotecontrol nicht das Event selbst. ...


Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

TomLee

#12
Sry, nachdenken vorm schreiben wär schon angedacht.
Das mit dem DOIF ist nur eine Statusabfrage und den Player vom Netz nehmen war Schwachsinn.



Weshalb jetzt umschwencken auf DOIF
Wenn du jetzt im Notify Empfänger das Attribut addStateEvent setzt und im SONOS-Modul einmal DEF und direkt wieder modify Sonos verbindet sich das Modul neu und es gibt in state ein Event und in deinem Log sollte auch was stehen.

Tommi ratlos

Hallo nochmal,

habe mir erstmal mit einem AT und einem Dummy geholfen. Jetzt triggert eben der dummy.
Internals:
   CFGFN     
   COMMAND    {
my $DMYSTATE;;
$DMYSTATE = InternalVal('Sonos','STATE','0');;
fhem("setstate DMY_Sonos $DMYSTATE");;
fhem("trigger DMY_Sonos $DMYSTATE");;
}
   DEF        +*00:00:32 {
my $DMYSTATE;;
$DMYSTATE = InternalVal('Sonos','STATE','0');;
fhem("setstate DMY_Sonos $DMYSTATE");;
fhem("trigger DMY_Sonos $DMYSTATE");;
}
   FUUID      5d3aeb0b-f33f-c08c-f2ef-b55432ec1845045b
   NAME       AT_Sonos_Watch
   NR         817
   NTM        15:18:37
   PERIODIC   yes
   RELATIVE   yes
   REP        -1
   STATE      Next: 15:18:37
   TIMESPEC   00:00:32
   TRIGGERTIME 1564147117.42749
   TRIGGERTIME_FMT 2019-07-26 15:18:37
   TYPE       at
   Helper:
     DBLOG:
       state:
         logdb:
           TIME       1564142347.09735
           VALUE      Next
   READINGS:
     2019-07-26 15:18:05   state           Next: 15:18:37
Attributes:
   DbLogExclude .*
   room       1_A_Sonos_lab,AT,Sonos
Pi 3 CUNX868 mit 433 Pigator.

Beta-User

 :o Warum setzt du nicht einfach nur das bereits genannte Attribut beim notify?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors