fhem "sleep $sleepTime; { $cmd }"; (gelöst)

Begonnen von chem, 05 Juni 2017, 21:52:28

Vorheriges Thema - Nächstes Thema

chem

Ich möchte ein Perl command mit sleep verzögern, damit es mit anderen FHEM commands die auch über sleep verzögert sind synchron ausgeführt wird.

Dabei möchte ich FHEM ungern blockieren, allerdings gibt die im Betreff gegebene Anweisung

fhem "sleep $sleepTime; { $cmd }";
die Fehlermeldung:
WARNING: sleep without additional commands is deprecated and blocks FHEM

Das funktioniert zwar, aber ich fürchte FHEM ist da blockiert?

Welche andere Lösung gibt es das $cmd um genau $sleepTime verzögert zu starten?

CoolTux

Was ist denn $cmd ? Wenn es auch ein FHEM Befehl ist nimm die { } weg.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

chem

$cmd ist ein perl befehl, daher die Klammern..

dev0

InternalTimer statt sleep verwenden.

chem

Ich habe gerade das Forum nach InternalTimer durchsucht, ausser diesem Thread nichts gefunden. :(

Ich denke mitlerweile das ich für die Perl commands ein at nehmen sollte. Muss dann meine SleepTime entsprechend umrechnen.

CoolTux

InternalTimer findest du in der DevelooerGuide
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

CQuadrat

Ich habe so etwas mit variabler Sleep-Time auch bei mir eingebaut. Bis zum letzten (oder vorletztem) Update bekam ich auch immer die Logmeldung
WARNING: sleep without additional commands is deprecated and blocks FHEM
wenn meine Sleep-Zeit 0 war.

Mittlerweile habe ich diese Log-Meldung nicht mehr.


PS: Ob Dein Fhem blockiert, kannst Du prüfen, wenn Du eine hinreichend lange (aber nicht zu lange!!)  $sleepTime wählst und Du dann das Verhalten Deines Fhem beobachtest.
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), KM271 (per ser2net), SONOS (div. Gimmicks), OneWire, Hue

dev0

#7
Zitat
Ich habe gerade das Forum nach InternalTimer durchsucht, ausser diesem Thread nichts gefunden.
Dann hast Du nicht auf der obersten Forumsebene gesucht oder Dich vertippt.

ungetestet:

InternalTimer($sleepTimer, sub(){eval $cmd}, undef);

chem

#8
Zitat von: CQuadrat am 06 Juni 2017, 14:12:46
Ich habe so etwas mit variabler Sleep-Time auch bei mir eingebaut. Bis zum letzten (oder vorletztem) Update bekam ich auch immer die Logmeldung
WARNING: sleep without additional commands is deprecated and blocks FHEM
wenn meine Sleep-Zeit 0 war.

Mittlerweile habe ich diese Log-Meldung nicht mehr.

Das war es, hatte initial ein sleep 0, jetzt starte ich mit 0.1 und keine Fehlermeldung mehr.

Vielen Dank für die Hilfe!

chem

Zitat von: dev0 am 06 Juni 2017, 14:44:12
Dann hast Du nicht auf der obersten Forumsebene gesucht oder Dich vertippt.

ungetestet:

InternalTimer($sleepTimer, sub(){eval $cmd}, undef);


Ja, ich habs vergessen dass ich nach oben gehen muss für die Suche. Habe den InternalTimer auspropiert, funktioniert aber so nicht. Trotzdem vielen Dank für die Hilfe.

dev0

Du mußt zu $sleepTimer die aktuelle Zeit in Sekunden hinzu addieren, wenn Du das noch nicht gemacht hast: +gettimeofday()
Für detailiertere Hilfe müßtest Du mehr Code oder eine Fehlermeldung posten. Ich bin mir ziemlich sicher das das so funktioniert, auch ohne es getestet zu haben.

CQuadrat

Zitat von: chem am 06 Juni 2017, 21:33:03
Das war es, hatte initial ein sleep 0, jetzt starte ich mit 0.1 und keine Fehlermeldung mehr.

Wann hast Du denn das letzte Update gemacht? Ich habe die Fehler-/Log-Meldung nämlich nicht mehr.
Und dass bei
sleep 0; <irgendein Fhem-Befehl>
die Warnmeldung kommt und bei
sleep 1; <irgendein Fhem-Befehl>
nicht, war ja eher ein Bug (mit dem man leben konnte) in Fhem. Und dieser Bug ist - so wie ich es sehe - gefixt.
FHEM auf Mini-ITX-Server mit Intel Quad-Core J1900:
+ HM: HM-LAN, HM-USB, HM-MOD-UART mit div. HM-Komponenten
+ RFXtrx: Funkwetterstation Bresser mit ext. Thermometer, Regenmesser und Windmesser
+ TUL (KNX-Anbindung), KM271 (per ser2net), SONOS (div. Gimmicks), OneWire, Hue