Autor Thema: vorschlag: erweiterung von sleep / warten ein event  (Gelesen 649 mal)

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19110
vorschlag: erweiterung von sleep / warten ein event
« am: 06 Mai 2019, 21:27:04 »
mit dem angehängten patch wird sleep etwas erweitert:
  • um die möglichkeit die zeit auch per timespec oder {perlfunc} anzugeben
    d.h.: sleep 00:05; ...
            sleep {wieLangeSollIchSchlafen()}; ...
  • um die möglichkeit auch auf ein event zu warten
    d.h.: sleep lampe:off; ...
  • die cancel liste gibt jetzt auch event/endzeit mit aus
  • nach ende des sleep wird die id mit geloggt wenn vorhanden
  • nach ende des sleep wird die ausgabe des folgenden kommandos per asyncOutput auch auf CL ausgegeben
    d.h. man kann z.b. per telnet testen ohne ins log schauen zu müssen
  • createNtfyHash ignoriert devices bei denen disable gesetzt ist

 
anmerkungen:
  • bei nicht verwenden des neuen features ist der progammfluss wie vorher.
    d.h. es gibt keine 'strafe' durch das ausführen von zusätzlichen prüfungen oder code.
  • wenn man das event feature verwendet ist der overhead identisch zu einem notify aber ohne das ein delete nötig ist.


hintergrund des ganzen war mein wunsch die bewässerungszonen im garten nacheinander laufen zu lassen. das kann man zwar im prinzip auch über das bisherige sleep, at oder notfy, aber mit den folgenden nachteilen:
  • sleep: wenn sich die einschaltzeiten ändern (on-for-timer im device) muss man die sleep anpassen oder von vornherein genug zeit gelassen haben
  • at: wie bei sleep
  • notify: wenn die reihenfolge nicht immer gleich sein soll (morgens rasen->beet1->beet2 nachmittags nur rasen->beet2) wird es unhandlich

jetzt kann man einfach der reihe nach ein ventil öffnen und danach warten bis es wieder zu ist:
set v1 on-for-timer 600; sleep v1:off; set v2 on-for-timer 300; sleep v2:off; set v3 on-for-timer 300
« Letzte Änderung: 06 Mai 2019, 23:22:17 von justme1968 »
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 4469
Antw:vorschlag: erweiterung von sleep / warten ein event
« Antwort #1 am: 06 Mai 2019, 21:32:28 »
Klasse!
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20234
Antw:vorschlag: erweiterung von sleep / warten ein event
« Antwort #2 am: 06 Mai 2019, 21:41:19 »
Ich habe mir das jetzt nicht angeschaut. Beim Lesen viel mir aber spontan zum Event ein. Gibt es einen Abbruch sollte das erwartete Event nicht kommen?
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.me/MOldenburg
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19110
Antw:vorschlag: erweiterung von sleep / warten ein event
« Antwort #3 am: 06 Mai 2019, 22:02:52 »
nicht eingebaut bzw. automatisch.

das war zumindest für meine anwendungsfälle nicht nötig:
- wenn das event ausbleibt ist entweder etwas schlimmeres nicht in ordnung:
  - die timer laufen alle in den devices direkt weil hm
  - es globale watchdogs die jedes ventil und noch mal ein vorgeschaltetes
    nc hauptventil überwachen und nach gewisser zeit zu machen
- bei den lampen ist es einfach so: wenn das event aus bleibt soll nichts passieren

aber automatisch könnte man auch mehr als ein sleep starten und unterschiedliche events verwenden und dann gegenseitig abbrechen.

hier soll nur der einfache fall abgedeckt werden. eine einfache reihenfolge.
wenn es komplizierter wird ist eher watchdog oder sequence das richtige.

ansonsten: die wartenden sleeps lassen sich benennen und abbrechen, die unbenannten
lassen sich von hand auflisten und abbrechen.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20234
Antw:vorschlag: erweiterung von sleep / warten ein event
« Antwort #4 am: 07 Mai 2019, 04:22:45 »
Danke Dir für die Erklärung. Auf jeden Fall eine sehr gute Erweiterung.
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.me/MOldenburg
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

Offline justme1968

  • Developer
  • Hero Member
  • ****
  • Beiträge: 19110
Antw:vorschlag: erweiterung von sleep / warten ein event
« Antwort #5 am: 07 Mai 2019, 09:45:20 »
@rudi: unabhängig von dem patch hier: mir fällt gerade auf das man in CommandRereadCfg %sleepers auch zurück setzen sollte.

%ntfyHash zurücksetzen passiert zwar vermutlich über den seiteneffekt das neue device angelegt werden. ist aber irgendwie trozdem unschön. ich vermute das noch einiges andere vergessen ist.
FHEM5.4,DS1512+,2xCULv3,DS9490R,HMLAN,2xRasPi
CUL_HM:HM-LC-Bl1PBU-FM,HM-LC-Sw1PBU-FM,HM-SEC-MDIR,HM-SEC-RHS
HUEBridge,HUEDevice:LCT001,LLC001,LLC006,LWL001
OWDevice:DS1420,DS18B20,DS2406,DS2423
FS20:fs20as4,fs20bs,fs20di
AKCP:THS01,WS15
CUL_WS:S300TH

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20459
Antw:vorschlag: erweiterung von sleep / warten ein event
« Antwort #6 am: 08 Mai 2019, 18:17:13 »
Bitte um ein bisschen Geduld, ich brauche dafuer ein/zwei Stunden Zeit mit klaren Kopf.

Offline rudolfkoenig

  • Administrator
  • Hero Member
  • *****
  • Beiträge: 20459
Antw:vorschlag: erweiterung von sleep / warten ein event
« Antwort #7 am: 11 Mai 2019, 20:00:54 »
Habe es modifiziert eingecheckt:
- syntax/doku bleibt unveraendert
- statt die notify Routinen teilweise zu kopieren habe ich ein notify definiert mit TEMPORARY und ignore
- alle sleeps werden in %sleepers eingetragen, und sind damit per cancel anzeigbar/loeschbar.

Bitte testen, und melden falls was nicht passt.

%sleepers und ntfyHash habe ich jetzt in CommandRereadCfg auch zurueckgesetzt.
Gefällt mir Gefällt mir x 2 Liste anzeigen

Online CoolTux

  • Developer
  • Hero Member
  • ****
  • Beiträge: 20234
Antw:vorschlag: erweiterung von sleep / warten ein event
« Antwort #8 am: 12 Mai 2019, 21:05:42 »
Rudi können Deine Änderungen Auswirkungen auf ReadFn oder $hash->{CL} haben. Gibt da Probleme mit dem ESPEasy Modul

https://forum.fhem.de/index.php/topic,100477.msg939268.html#msg939268
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.me/MOldenburg
FHEM GitHub: https://github.com/fhem/
kein Support für cfg Editierer

 

decade-submarginal