Sleep blockiert fhem

Begonnen von Klinki, 15 Dezember 2014, 14:44:45

Vorheriges Thema - Nächstes Thema

Klinki

Hi,

Ich nutze einen Dummy für den HomeStatus. Wechselt der Status von Off nach On, so soll zuerst ein Ventil geöffnet werden, 2 Minuten warten, dann ein Thermostat mit einem Wert füttern. Zwischendurch ein bisschen Logging...


define VentilHomeStatusAn notify HomeStatus:.* { if ($EVENT ~~ m/on/) { fhem("set KV_Schalter4 on") ;; Log 3, "$NAME: Schalte Ventil on, $EVENT, Setze TagTemp nach 120 Sekunden"  ;; sleep 120 ;; fhem("set TH_Anzeige " . Value("Home_TempTag")) ;;  } }


funktioniert eigentlich tadellos. Nur das ich in den 120 Sekunden Pause nicht mehr auf das Web-Frontend zugreifen kann. Es wird auch nicht aktualisiert.
Im Log ist während der Sleep-Phase auch nichts zu lesen. Da ich über das Web so keinen Befehl absetzen kann, weiß ich auch nicht, ob fhem währenddessen (asynchron) weiter arbeitet.

Ich hatte es eigentlich so verstanden, dass bei Sleep, aufgerufen durch at oder notify, das FHEM dennoch weiter ausgeführt wird.
Oder habe ich da etwas falsch verstanden?

VG

herrmannj

Hallo,

Du rufst das perl sleep auf, das blockiert. verpack das in fhem "", dann gehts

vg
jörg

Klinki

Hatte ich schon mal probiert:


define VentilHomeStatusAn notify HomeStatus:.* { if ($EVENT ~~ m/on/) { fhem("set KV_Schalter4 on") ;; Log 3, "$NAME: Schalte Ventil on, $EVENT, Setze TagTemp nach 120 Sekunden"  ;; fhem("sleep 120") ;; fhem("set TH_Anzeige " . Value("Home_TempTag")) ;;  } }


der Effekt ist aber der Gleiche. Nur das dann auch im Log steht "Sleeping for 120 seconds".
Wenn fhem während den 120 Sekunden weiter arbeitet und nur das Frontend pausiert, wäre mir das egal. Hm...werde es mal ausprobieren..

danke erstmal!

Wernieman

Ansonsten, definiere anstatt des sleep ein at, welches Du 120sec später ausführen lässt. In diesem at dann alles weiter durchführen lassen.
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Cruiser79

In http://forum.fhem.de/index.php?topic=27305.0 schrieb Rudolf dazu
ZitatFHEM-sleep gefolgt von einem Befehl startet dieses Befehl mit einem internen Timer,  ist also sowas wie ein at ohne Namen, und blockiert FHEM nicht. FHEM-sleep ohne ein FHEM-Befehl dahinter ist nichts anderes als ein perl-sleep, und blockiert FHEM. Man sollte die Finger davon lassen.
FHEM auf Raspberry Pi
HM-CFG-LAN mit HM-TC-IT-WM-W-EU, HM-CC-RT-DN, HM-WDS10-TH-O, HM-LC-SW1-FM, HM-LC-Bl1-FM
Signalduino mit Elro AB440, LOGILINK WS0002, IT CMR-1000

Klinki

#5
Danke! So geht´s:


define VentilHomeStatusAn notify HomeStatus:.* { if ($EVENT ~~ m/on/) { fhem("set KV_Schalter4 on") ;; Log 3, "$NAME: Schalte Ventil on, $EVENT, Setze TagTemp nach 120 Sekunden"  ;; fhem("sleep 120 ;; set TH_Anzeige " . Value("Home_TempTag")) ;;  } }


solche Sachen halten ganz schön auf. Ohne die nötige Übung kann fhem ganz schön viel Frust produzieren. Es ist, meiner bescheidenen Meinung nach, nicht weit genug vom Perl abstrahiert und man arbeitet viel mit gemischten Befehlen.

Versteht mich nicht falsch: es ist ein tolles Projekt und ich mache wirklich sehr viel damit. Meine Heizungssteuerung wäre ohne fhem wesentlich aufwändiger und viel teurer geworden!
Aber die ganze Flexibilität wird durch viel Zeit für´s Probieren & Recherchieren erkauft.
Man findet (leider) auch viele Threads in denen trocken und ohne Code-Beispiele diskutiert wird. Das macht es für Meinereiner nicht leichter. Den Satz "benutz mal die Suche" kann ich echt nicht mehr hören! Man muss als Newbie erstmal wissen, was mit einem "das musst Du in fhem packen" gemeint ist. Dann weiß man (vielleicht) auch nach was man suchen muss.

Genug gejammert!

Nochmals vielen Dank für eure Tipps!

PS: Das Gejammer bezieht sich nicht auf diesen Thread!

marvin78

Leider ist dein Gejammer nicht einmal nachvollziehbar. Das hier ist eines der wenigen Foren, in denen tatsächlich auch die 15. Nachfrage zum selben Thema noch ausführlicher behandelt wird, als es nötig wäre. Wenn du hier wirklich Probleme hast, über die Suche, Einsteiger PDF, Commandref und WIKI deine Probleme zu lösen, musst du überlegen, ob FHEM das richtige für dich ist. Es ist keine Klicki-Bunti Lösung. Die gibt es ja aber auch. Wie du richtig erkannt hast ist das meist teuer. In FHEM "bezahlst" du eben mit Hirnschmalz und Eigeninitiative. Vorteil ist: DU kannst dir dein System basteln, wie DU es brauchst oder haben möchtest.

Im Übrigen ist Perl und seine Möglichkeiten, die man in FHEM nutzen kann und das was du als fehlende Abstrahierung bezeichnest, gerade der Vorteil von FHEM. Voraussetzung ist natürlich, dass man sich damit beschäftigt.

Oft wird hier tatsächlich "nur" Hilfe zur Selbsthilfe gegeben und auf vorhandene Themen hingewiesen. Auch das ist sehr gut so. Die Suche für andere wird nur erschwert, wenn man zuviele Anworten zum selben Thema hat.

Ich behaupte: Es gibt so gut wie nichts, was ein Anfänger hier nicht schon nachlesen kann. Das heißt nicht, dass nicht gefragt werden sollte. Aber den Hinweis, dass es die Antwort schon gibt, ist dann ja auch sehr hilfreich. Man weiß dann, dass man nur noch suchen muss. Das ist leicht.

betateilchen

Zitat von: Klinki am 16 Dezember 2014, 07:48:41
solche Sachen halten ganz schön auf. Ohne die nötige Übung kann fhem ganz schön viel Frust produzieren.

Was am meisten aufhält, sind Leute, die nicht willens sind, Dokumentation zu lesen. Das hat weder was mit Abstrahierung noch mit Übung zu tun.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Doggiebert

Klar kriegt man hier den ein oder anderen saloppen Kommentar, ist aber klar - das ist hier auch kein kommerzielles Kundenforum. Auch dass ein FHEM-Senior manchmal einen Ausdruck benutzt, den man als Junior nicht sofort versteht, liegt in der Natur der Sache - das geht mir bei Arzt, Werkstatt und Handwerker genauso. Und der Hinweis auf die Suche ist meistens berechtigt, viele machen sich gar nicht erst die Mühe, sich einzulesen oder ein paar ähnliche Threads zu suchen oder zu lesen, oder es wird erwartet, dass man gleich den vorgefertigten Code geliefert kriegt.

Die Abstraktion von Perl hat man m.E. selbst in der Hand: nimm einfach nur das, was dir die FHEM-commandref liefert - das wäre auch die Empfehlung für den Nutzerkreis, der nicht "programmieren", sondern nur "konfigurieren" will. Dann muss man aber eben auch mit dem vorhandenen Funktionsumfang leben; da kommt man schon ziemlich weit, siehe DOIF etc.
Ich habe sowas schon mal erlebt - der Kunde will eine einfache Abstraktion, stösst an deren Grenzen, fordert immer wieder Erweiterungen, und irgendwann hat man dann die Komplexität einer Programmiersprache erreicht, mit dem Nachteil einer proprietären Syntax. Kann man sich dann auch sparen.

Tja, der Weg vom Newbie zum Experten ist weit und beschwerlich, aber es gibt keine Alternative  8)
SW: FHEM 5.5, Raspian, XBMC, Testinstallation auf Win7
HW: Raspi B, 32GB SD, enocean Pi, RFXTRX433E, BSC - MwC-32, Onkyo TX-NR709, Samsung UE55F8090, Jung LS-Eno, permundo SmartPlug, KDG-FB 6490cable (ohne FHEM)

Klinki

Dem gibt es Nichts hinzuzufügen!  8)

strauch

Ich mag FHEM alleine schon, weil es die Rübe auf trab hält :-).

Aber manchmal muss man schon nach den Infos suchen. Ich versuche dann immer das was ich finde ins FHEMWIKI zu übertragen, aber man muss halt einfach immer an 4 Stellen nachlesen und dann kann man erst weiter. Die 4 Stellen sind IMHO:

commandref
Einsteiger PDF
Forum (leider oft sehr lange Threads)
FhemWiki
FHEM 5.6 VMware mit Debian. 1 CUL für FS20 und HMLAN für Homematic, HM-CC-RT-DN, HM-LC_Sw1PBU-FM, HM-LC-Bl1PBU-FM,  HM-SEC-SC, HM-SEC-SC-2, HM-LC-Sw1-Pl2, HM-Sec-RHS, ASH2200, FHT80B, S20KSE, Sonos, XBMC, FB_Callmonitor, SMLUSB, Arduino Firmata, uvm.