Hallo,
kann mir bitte jemand behilflich sein, ich komme nicht weiter.
Ich möchte das wenn ich auf der Sonos ein Podcast starte, das ein Sleeptimer gesetzt wird.
Allerdings enthält die Zeile "infoSummarize2" vom Sonos Device, worauf ich triggern will, mehrere Wörter und ich möchte darin nur auf 'Einschlafen' triggern.
Aber das krieg ich irgendwie nicht gebacken. Habe schon nach beispielen gesucht und einiges durchprobiert, aber das funktioniert einfach nicht.
Das Event:
2019-07-26 15:40:55 SONOSPLAYER Sonos_Schlafzimmer infoSummarize2: PLAYING => (EP 444 ~ Brot backen und Kant) 'Einschlafen'
DOIF:
define Sonos_Schlafzimmer_DOIF_1 DOIF ([Sonos_Schlafzimmer:"^infoSummarize2:^.'Einschlafen'$"]) (set Sonos_Schlafzimmer SleepTimer [Sonos_Schlafzimmer:currentTrackDuration])
Viele Grüße
Mark
In der Befehlsreferenz gibt es einen Abschnitt Teilausdrücke abfragen.
Das habe ich mir auch angeschaut, aber so richtig werde ich daraus nicht schlau.
Ich habe das auch schon so probiert:
([Sonos_Schlafzimmer:"^infoSummarize2:^.'Einschlafen$'"])
([Sonos_Schlafzimmer:"^infoSummarize2:*.'Einschlafen'$'"])
Durch die Semilkon erhalte ich ein DOIF Fehler:
2019-07-26 16:53:50 DOIF Sonos_Einschlafen_Sleeptimer error: condition c01: Bad name after Einschlafen', line 1.
Lass ich die Semilkom im Einschlafen weg, taucht der Fehler nicht auf.
([Sonos_Schlafzimmer:"^infoSummarize2:^.Einschlafen$"])
([Sonos_Schlafzimmer:"^infoSummarize2:*.Einschlafen'$"])
([Sonos_Schlafzimmer:"^infoSummarize2] =~ "Einschlafen")
Aber funktionieren tut es trotzdem nicht.
Viele Grüße
Mark
Also.... Regex Syntax
define Sonos_Schlafzimmer_DOIF_1 DOIF ([Sonos_Schlafzimmer:"^infoSummarize2:^.'Einschlafen'$"])
Device = Sonos_Schlafzimmer, bisher alles OK
^infoSummarize2:^.'Einschlafen'$
Event ist dann:
infoSummarize2: PLAYING => (EP 444 ~ Brot backen und Kant) 'Einschlafen'
Da musst Du eine Regex haben, die damit matcht.
^infoSummarize2: ist noch ok
aber danach, wie sollte es dann wieder mit einem ^ Zeichen kommen? Der war schon am Anfang des Dings
Das Zeichen ^ steht für "Anfang des Strings"
Das Zeichen . steht für beliebige Zeichen
Das Zeichen * ist ein Wiederholungszeichen = beliebige Wiederholungen vom vorherigen Zeichen. ":*" bedeutet z.B. beliebige WIederholung von ":", wie z.B. ::::::::
Mach einfach
[Sonos_Schlafzimmer:"^infoSummarize2.*Einschlafen.$"]
Hey amenomade, erstmal vielen Dank für die Hilfe und die Erklärung noch dazu! Mit dem Regex tue ich mich noch schwer.
Ich habe es eingebunden und es funktioniert jetzt endlich, ich saß schon seit ein paar Tagen dran... ::)
Noch mal zum Verständnis, das "$" Zeichen heißt Zeichenfolgeende.
Wenn angenommen das 'Einschlafen' in der Mitte liegen würde, wäre das dann so richtig:
[Sonos_Schlafzimmer:"^infoSummarize2.*Einschlafen.*"]
Viele Grüße
Mark
Ja