Hauptmenü

sleep

Begonnen von -user-, 03 Oktober 2020, 16:27:34

Vorheriges Thema - Nächstes Thema

-user-

edit...

amenomade

Ein bischen mehr Infos wäre nicht schlecht.
Wie wird die Funktion aufgerufen? Was genau muss verzögert werden? Wie sieht die Funktion aus?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

MadMax-FHEM

Das geht (verm.) nicht mit sleep.

Sleep blockiert in fhem nur nicht, wenn danach ein fhem-Kommando kommt und kein Perl(Sub)Aufruf...

Aber so geht's:


fhem("defmod atCallLater at +00:05:00 {Test2()}")


Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

betateilchen

Der (simpelstes) Lösungsvorschlag von MadMax-FHEM steht doch da?




Zitat von: MadMax-FHEM am 03 Oktober 2020, 16:46:17
sleep blockiert in fhem nur nicht, wenn danach ein fhem-Kommando kommt

ja, und zwar nur deshalb, weil sleep in diesem Fall selbst ein fhem-Kommando ist und keine perl-Funktion.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Damian

Zitat von: fhempi am 03 Oktober 2020, 17:59:52
Ja, habe ich gesehen, dann wird wieder ein device "at" angelegt oder geht es nicht anders ?

Gibt es keine programmtechnische Lösung in perl ?

Es hängt davon ab, welches Modul du dafür nutzen willst: https://fhem.de/commandref_DE.html#DOIF_set_Exec
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

betateilchen

Zitat von: Damian am 03 Oktober 2020, 18:04:25
Es hängt davon ab, welches Modul du dafür nutzen willst:

Der gewünschte Modulname steht doch im Thread-Titel: 99_myUtils.pm  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

MadMax-FHEM

Zitat von: fhempi am 03 Oktober 2020, 17:59:52
Ja, habe ich gesehen, dann wird wieder ein device "at" angelegt oder geht es nicht anders ?

Gibt es keine programmtechnische Lösung in perl ?

Ja, temporär und was stört daran!?
Es gibt ja nicht mal das "berühmte" rote Fragezeichen ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

betateilchen

Zitat von: fhempi am 03 Oktober 2020, 17:59:52
Gibt es keine programmtechnische Lösung in perl ?

In perl grundsätzlich schon, aber Du willst das ja in FHEM umsetzen.
Dann solltest Du auch die von FHEM vorgesehenen Mechanismen dafür verwenden.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

amenomade

Zitat von: fhempi am 03 Oktober 2020, 17:57:12
Nachdem ich es nochmals ausführlich beschrieben habe, gibt es von Dir jetzt auch einen Vorschlag ?
Ausführlich... naja. Die sub Test1 wird auch selbst aufgerufen und macht irgendwas. Eine sub hängt nicht leer  in der Luft. Und eine sub, die eine andere sub verzögert aufruft... das kann man idR anders lösen, und zwar nicht in myUtils, sondern auf der oberen Ebene.

"einfach warten" ist oft (nicht immer) bei einer schlechten Logik nötig.

Aber gut, wenn das unbedingt so sein soll, ist ja die beste und einfachste Lösung ein at.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Damian

Zitat von: amenomade am 03 Oktober 2020, 18:47:32
Ausführlich... naja. Die sub Test1 wird auch selbst aufgerufen und macht irgendwas. Eine sub hängt nicht leer  in der Luft. Und eine sub, die eine andere sub verzögert aufruft... das kann man idR anders lösen, und zwar nicht in myUtils, sondern auf der oberen Ebene.

"einfach warten" ist oft (nicht immer) bei einer schlechten Logik nötig.

Aber gut, wenn das unbedingt so sein soll, ist ja die beste und einfachste Lösung ein at.

ZitatDer gewünschte Modulname steht doch im Thread-Titel: 99_myUtils.pm  8)

... und da hat ein FHEM-at-Modul genauso viel mit 99_myUtils.pm zu tun, wie jedes andere Modul in FHEM ;)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

betateilchen

Zitat von: Damian am 03 Oktober 2020, 19:08:32
... und da hat ein FHEM-at-Modul genauso viel mit 99_myUtils.pm zu tun, wie jedes andere Modul in FHEM ;)

Stimmt prinzipiell schon.

Eine solche Aufgabenstellung würde ich bei Bedarf weder mit at noch mit DOIF (sowieso nicht) lösen, sondern mit BlockingCall() als FHEM-Bordmittel.

Bisher hatte ich aber noch nie einen Bedarf dafür, eine Funktion aufzurufen, die dann 5 Sekunden sinnlos Zeit totschlägt.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Jamo

#11
Das sollte so gehen:
sub meineErsteSub () {
..
fhem("sleep 300;{mySecodSub();;dothisandthat()}")}
..
}
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence

MadMax-FHEM

Das würde aber doch blockieren.
Und: es war der Wunsch von 5min Verzögerung... ;)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

@fhempi: ja genau, einfach wieder löschen...

Dann kannst du ja ein [gelöst] vorne an den ersten Post dranpappen... :)

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Jamo

#14
Bei mir blockiert das nicht. Einfach mal probieren. Ich habe oben mal das sleep 2 durch sleep 300 ersetzt, damit das 5 Minuten sind.
Die anderen sub ";;dothisandthat()" kann man weglassen, ich wollte nur zeigen, das man die ;; verdoppeln muss wenn man 2 subs hintereinander verzögern will.
Bullseye auf iNUC, Homematic + HMIP(UART/HMUSB), Debmatic, HUEBridge, Zigbee/Conbee III, FB7690, Alexa (fhem-lazy), Livetracking, LaCrosse JeeLink, LoRaWan / TTN / Chirpstack, Sonos, ESPresence