Leider bekomme ich die Verwendung von sleep in meinen notify nicht richtig hin. Hier ein Beispiel in der Definition eines notify
Cam1:.*snapshots.* sleep 20.0;; {sendSnapshot("$NAME","$EVTPART1") }
Die Fehlermeldungen im Log lauten in etwa
N_blablabla return value: Cannot interpret 20.0; as seonds
Das Problem ist das sleep, ohne dieses hat alles schön funktioniert. Allerdings belastet das Versenden der Snapshots den FHEM-Server, so dass ich den Versand verzögern will.
Muss da noch irgendwo ein Leerzeichen rein?
Klappt das nicht mit ";;"? sondern soll dort stehen ";"? Wenn ja, warum?
Liegt es daran, dass nach dem sleep ein {} Perl-Befehl kommt?
So steht doch auch das Beispiel in der fhemwiki:
define ntfy1 notify Fernbedienung:.* sleep 7.5;; set Lampe $EVENT
Dafür ist das sleep als fhem Befehl nicht vorgesehen.
es darf nur ein ; dort stehen. man kann sleep und perl auf diese art kombinieren.
in fhem wird normalerweise überall ein ; verwendet um kommandos aneinander zu reihen. beim rausschreiben ins config file werden diese verdoppelt und beim einlesen wieder zu einem zusammen gefasst.
an dein meisten stellen sind zwei ; nicht schlimm da die haupt parser schleife hier einfach ein leeres kommando erkennt das dann einfach nichts tut. das sleep kommandos parst seine parameter selber und ist hier etwas pingeliger so das es mit dem ; das übrig bleibt nicht klar kommt.
gruss
andre
Wäre hier ein watchdog nicht angebrachter?
Auch wenn Betateilchen das nicht gerne hört ;D ,aber wegen meiner würde auch ein DOIF mit wait gehen.
Grüße
nein. ein watchdog ist nicht das richtige. der ist dazu da um auf das ausbleiben eines erwarteten events zu reagieren. sleep ist schon genau richtig.
gruss
andre
Erst einmal vielen Dank für die ausführliche Erklärung von justme1968!
Dass das sleep dafür nicht vorgesehen ist, verstehe ich (noch) nicht. Ich habe etwas gesucht, was mir eine Verzögerung ermöglicht und sleep gefunden. Wenn es geeignetere Varianten gibt, bin ich lernfähig.
Wenn also ein watchdog dafür besser sein sollte, probiere ich es gerne damit. Warum ein Watchdog besser ist, muss ich wohl noch irgendwie herausbekommen.
Gesendet von meinem ASUS_Z00AD mit Tapatalk
Jetzt bin ich doch etwas verwirrt!
Gesendet von meinem ASUS_Z00AD mit Tapatalk
wie gesagt: sleep ist genau das richtige.
Zitat von: justme1968 am 19 Januar 2016, 19:01:18
nein. ein watchdog ist nicht das richtige. der ist dazu da um auf das ausbleiben eines erwarteten events zu reagieren. sleep ist schon genau richtig.
gruss
andre
Auch wieder war. Hast Recht André. Also sleep oder DOIF. Da hier ja schon ein fertiges und funktionsfähiges Notify existiert würde ich das sleep nehmen.
Meine Bauchweh diesbezüglich sind da eher persönlicher Natur :)
Grüße