Hallo,
ich bekomme ein Notify nicht zum Laufen. Wenn die Alarmanlage ausgeschaltet ist, soll per Sonos zehn Minuten vorher ein Hinweis erklingen, dass die Scharfstellung bevorsteht. Folgenden Code habe ich in verschiedenen Varianten ergebnislos probiert:
defmod n_gleichAlarmzeit notify Alarmanlage:Aus at *22:50:00 set Sonos_Unnamed_Room Speak 30 de In zehn Minuten schaltet sich die Alarmanlage ein
Findet jemand den Fehler?
LG und Dank,
is2late
Sollen wir raten was das Problem ist!!?
Was geht denn nicht?
Fehler im Log?
Wie soll ein at 10 VOR irgendwas laufen was schon passiert ist!?
Wie geschrieben: mit den super detaillierten Infos, lists von beteiligten Geräten, etc. -> keine Ahnung...
Gruß, Joachim
Entschuldigung!
Also: Sonos gibt nicht die gewünschte Meldung ab. Ich bin beim Schreiben meiner Frage davon ausgegangen, dass ein Syntaxfehler oä vorliegt und hab daher in dem Log nicht nachgesehen und auch keine weiteren Infos geliefert. Mittlerweile bin ich von dem Notify abgerückt und hab einfach ein at formuliert:
defmod a_gleichAlarmzeit at *22:50:00 set Sonos_Unnamed_Room Speak 30 de TEXT
Das funktioniert einwandfrei. Jetzt würde ich noch gern die Alarmanlage dort mit einbinden, dh die Sonos-Ansage soll nur erfolgen, wenn die Alarmanlage ausgeschaltet ist. Würde also gern wissen, wie man diese zusätzliche Bedingung mit einbinden kann.
Ich tippe mal auf ein if gemäß folgendem Beispiel:
if ($wday == 3) => ... ob der 3. Wochentag ist, wenn ja dann ...
, weiß aber nicht, wie anzupassen.
LG
Verstehe es so das jeden Tag eine Sprachausgabe erfolgen soll wenn die Alarmanlage noch aus ist:
Zitatdefine n_gleichAlarmzeit at *22:50:00 {if (Value("Alarmanlage") eq "offAUS") {fhem(set Sonos_Unnamed_Room Speak 30 de In zehn Minuten schaltet sich die Alarmanlage ein)}}
Gruß
Thomas
Ja, korrekt. Täglich um 22:50 Uhr, wenn die Alarmanlage aus ist, soll die Ansage erfolgen.
Warum machst du dann nicht ein at um 22:00 (wenn die Uhrzeit FIX ist) und frägst darin ab, ob Aus und machst nur dann die Ansage!?
Funktioniert denn der Speak-Befehl an sich in FHEMWeb!?
Gruß, Joachim
Hallo TomLee,
hab Deinen Code gleich mal probiert, vielen Dank!
Im Raw gibt es dabei folgenden Hinweis:
syntax error at (eval 3340) line 1, near "Speak 30"
@MadMax: Würde ich ja gern, wenn gewusst, wie... ja, die Sonos-Ansagen funktionieren grundsätzlich.
LG
Da haben noch die " gefehlt jetzt:
defmod n_gleichAlarmzeit at *22:50:00 {if (Value("Alarmanlage") eq "offAUS") {fhem("set Sonos_Unnamed_Room Speak 30 de In zehn Minuten schaltet sich die Alarmanlage ein")}}
Funktioniert perfekt, herzlichen Dank!
Zitat von: is2late am 14 Juni 2020, 14:31:30
Funktioniert perfekt, herzlichen Dank!
Sicher ? Hast du es auch getestet ?
Hab das Gefühl du hast wieder nur kopiert, weil oben war
noch ein Fehler drin, zeig mal besser noch ein List oder Raw Definition.
Gewusst wie, naja, so in der Art (NICHT copy/paste, dazu hab ich jetzt zu wenig mitgelesen und es wird ja offenbar eine andere Variante verfolgt ;) ):
Äh, ok, dann doch at und Abfragen ;)
Schneller geschrieben als geselen ;)
...hab ich erst gemerkt, als ich das Beispiel zusammenkopieren wollte ;)
Eine Anmerkung nur:
Value "frägt" STATE ab!!
Also das INTERNAL!
NICHT state (das Reading)...
Ist beeinflussbar duch z.B. stateFormat!
Führt ab und an (oft) dazu, dass "man" sich wundert warum Dinge (plötzlich: STATE ändert sich/wird "beeinflusst") nicht mehr gehen...
Value ist zwar schnell "hingeschrieben" aber, naja...
Ich nutze eher ReadingsVal/ReadingsNum/AttrVal/AttrNum/InternalVal/...
Ja, etwas "mehr zu schreiben" aber dafür weiß man (hoffentlich) GENAU was man bekommt/abfrägt...
Gruß, Joachim
@TomLee: Na hör mal, ich gebe mich doch nicht auf Verdacht zufrieden ;)
Habs natürlich mit aktueller Uhrzeit getestet und es funktioniert. Hier das List:
Internals:
CFGFN
COMMAND {if (Value("Alarmanlage") eq "Aus") {fhem("set Sonos_Unnamed_Room Speak 30 de In zehn Minuten schaltet sich die Alarmanlage ein")}}
DEF *22:50:00 {if (Value("Alarmanlage") eq "Aus") {fhem("set Sonos_Unnamed_Room Speak 30 de In zehn Minuten schaltet sich die Alarmanlage ein")}}
FUUID 5ee61817-f33f-a080-06d6-b20e3bca7ebeeb7c
NAME a_gleichAlarmzeit
NR 401
PERIODIC yes
RELATIVE no
REP -1
STATE Next: 22:50:00
TIMESPEC 22:50:00
TRIGGERTIME 1592167800
TRIGGERTIME_FMT 2020-06-14 22:50:00
TYPE at
READINGS:
2020-06-14 17:31:09 state Next: 22:50:00
Attributes:
Wo siehst Du denn da einen weiteren Fehler?
@Joachim: Danke, hab wieder etwas gelernt.
LG
ZitatNa hör mal, ich gebe mich doch nicht auf Verdacht zufrieden
Is ja gut ;D
Zitat@Joachim: Danke, hab wieder etwas gelernt.
Wirklich, lies nochmal genau was er schrieb, sehe nicht das du seine Empfehlung umgesetzt hast.
{ fhem('set Sonos_Unnamed_Room Speak 30 de In zehn Minuten schaltet sich die Alarmanlage ein') if (ReadingsVal('Alarmanlage','state','') eq 'Aus') }
Zeit für Popcorn :)
Das wäre es mir wert....Komm vorbei und bediene Dich einfach..... ;) Aber Vorsicht, Alarmanlage... 8)
Vielen Dank, Betateilchen
pop :P
Wobei mir die doppelten {} weniger gut gefallen und das Pendant wirklich Ein und nicht An ist
defmod n_gleichAlarmzeit at *22:50:00 {unless (ReadingsVal('Alarmanlage','state','') eq "Ein"){ fhem('set Sonos_Unnamed_Room Speak 30 de In zehn Minuten schaltet sich die Alarmanlage ein')}}
Was ist das denn für eine Alarmanlage, die im Reading 'state' Ein oder Aus liefert???
Zitat von: TomLee am 14 Juni 2020, 20:14:00
Wobei mir die doppelten {} weniger gut gefallen
Warum verwendest Du sie dann in Deinem Beispiel schon wieder?
Wenn Dir die Klammern nicht gefallen, lass sie doch weg...
defmod n_gleichAlarmzeit at *22:50:00 { fhem('set Sonos_Unnamed_Room Speak 30 de In zehn Minuten schaltet sich die Alarmanlage ein') unless (ReadingsVal('Alarmanlage','state','') eq 'Ein') }
oder noch eine Alternative mit noch weniger Klammern:
defmod n_gleichAlarmzeit at *22:50:00 { ReadingsVal('Alarmanlage','state','') eq 'Ein' ? return : fhem('set Sonos_Unnamed_Room Speak 30 de In zehn Minuten schaltet sich die Alarmanlage ein') }
Woher soll man das mit der 2. Variante wissen, hatt ich probiert, schon etwas merkwürdig mit dem return und Doppelpunkt !? Seit wann ein Doppelpunkt nach return ? wär doch eigentlich das "sonst" !? es fehlen bloß die Hochkommas bei return ???
Zitat von: TomLee am 14 Juni 2020, 20:48:21
Woher soll man das mit der 2. Variante wissen
Perl Grundlagen.
Ok, Denkfehler, nach einmal duschen ist das, denk ich, klarer, aber noch nicht getestet, ich vermute einfach nur return gibt nichts, undef oder sonstwas zurück und dann ergibt wieder alles Sinn, muss ich lesen/testen.
Was ist das denn für eine Alarmanlage, die im Reading 'state' Ein oder Aus liefert???
Der Status wird (wie die Zustände aller Sensoren) von der Anlage über eine Action-URL geliefert und dann per Dummy verwertet.
Innerhalb der Action-URL kann ich den Zustand beliebig benennen.
LG is2late