DOIF: Unterschied zwischen den Versionen
Trelle (Diskussion | Beiträge) |
Trelle (Diskussion | Beiträge) (Ergänzt Perl-Modus) |
||
Zeile 17: | Zeile 17: | ||
[[Datei:Helper doif.png|50px]] (ausgeprochen: du if, übersetzt: tue wenn) ist ein universelles Modul, welches [[Event|ereignis]]- und zeitgesteuert in Abhängigkeit definierter Bedingungen Anweisungen ausführt. | [[Datei:Helper doif.png|50px]] (ausgeprochen: du if, übersetzt: tue wenn) ist ein universelles Modul, welches [[Event|ereignis]]- und zeitgesteuert in Abhängigkeit definierter Bedingungen Anweisungen ausführt. | ||
Im '''FHEM-Modus''' stellt das Modul [[DOIF]] eine eigene Benutzer-Schnittstelle zur Verfügung ohne Programmierkenntnisse in [https://de.wikipedia.org/wiki/Perl_(Programmiersprache) Perl] unmittelbar vorauszusetzen. Mit diesem Modul ist es möglich, sowohl Ereignis- als auch Zeitsteuerung mit Hilfe logischer Abfragen miteinander zu kombinieren. Damit können komplexere Problemstellungen innerhalb eines [[DOIF]]-Moduls gelöst werden, ohne Perlcode in Kombination mit anderen Modulen programmieren zu müssen. | |||
Im '''Perl-Modus''' bietet das Modul [[DOIF]] die Möglichkeit Perl-Blöcke zeit- und ereignisgesteuert auszuführen. Zur Beschreibung der Auslöser kann die DOIF-Syntax, die Angaben in eckigen Klammern direkt in einem Perl-Ausdruck verwendet werden. | |||
Zeile 25: | Zeile 29: | ||
== Anwendung == | == Anwendung == | ||
=== Define === | === Define === | ||
==== FHEM-Modus ==== | |||
Siehe {{Link2CmdRef|Lang=de|Anker=DOIF_}} | Siehe {{Link2CmdRef|Lang=de|Anker=DOIF_}} | ||
==== Perl-Modus ==== | |||
Siehe {{Link2CmdRef|Lang=de|Anker=DOIF_Perl_Modus}} | |||
=== Attribute === | === Attribute === | ||
==== FHEM-Modus ==== | |||
Siehe {{Link2CmdRef|Lang=de|Anker=DOIF_Attribute}} | Siehe {{Link2CmdRef|Lang=de|Anker=DOIF_Attribute}} | ||
==== Perl-Modus ==== | |||
Siehe {{Link2CmdRef|Lang=de|Anker=DOIF_Attribute_Perl_Modus}} | |||
===Kurzreferenz=== | ===Kurzreferenz=== | ||
Siehe {{Link2CmdRef|Lang=de|Anker=DOIF_Kurzreferenz|Label=Kurzreferenz}} | Siehe {{Link2CmdRef|Lang=de|Anker=DOIF_Kurzreferenz|Label=Kurzreferenz}} | ||
== Anwendungsbeispiele == | == Anwendungsbeispiele == | ||
Zeile 38: | Zeile 47: | ||
== Links == | == Links == | ||
* [[DOIF/Einsteigerleitfaden, Grundfunktionen und Erläuterungen]] | * [[DOIF/Einsteigerleitfaden, Grundfunktionen und Erläuterungen]] | ||
* [[DOIF/Tools und Fehlersuche]] | * [[DOIF/Tools und Fehlersuche]] | ||
* [[DOIF/Tipps zur leichteren Bedienung]] Erstellung, Bearbeitung, Syntaxhervorhebung, Klammerprüfung, Suchen&Ersetzen, Zeileinnummerierung, uvm. (nicht nur) von DOIF | * [[DOIF/Tipps zur leichteren Bedienung]] Erstellung, Bearbeitung, Syntaxhervorhebung, Klammerprüfung, Suchen&Ersetzen, Zeileinnummerierung, uvm. (nicht nur) von DOIF | ||
* [[DOIFtools]] Tools für DOIF, Eventanalyse für Alle | * [[DOIFtools]] Tools für DOIF, Eventanalyse für Alle | ||
* [[DOIF/uiTable]] | * [[DOIF/uiTable]] | ||
* [[DOIF/Import von Code Snippets]] | * [[DOIF/Import von Code Snippets]] | ||
=== FHEM-Modus: Weiterführende Themen und Beispiele === | |||
* [[DOIF/Labor - ausführbare, praxisnahe Beispiele als Problemlösung zum Experimentieren]] | |||
* [[DOIF/Operatorenrangfolge]] | * [[DOIF/Operatorenrangfolge]] | ||
* [[DOIF/Ein- und Ausgabe in FHEMWEB und Tablet-UI am Beispiel einer Schaltuhr]] | * [[DOIF/Ein- und Ausgabe in FHEMWEB und Tablet-UI am Beispiel einer Schaltuhr]] | ||
Zeile 52: | Zeile 62: | ||
* [[DOIF/Zeitspanne zwischen zwei Terminen schalten]] | * [[DOIF/Zeitspanne zwischen zwei Terminen schalten]] | ||
* [[DOIF/do always Alternative am Beispiel einer Rollladenautomatik]] | * [[DOIF/do always Alternative am Beispiel einer Rollladenautomatik]] | ||
* [[DOIF/do_always_Alternative_am_Beispiel_einer_Batteriewarnung_via_Telegram]] | |||
* [[DOIF/Zeitspanne im DOIF und disabledForIntervals im Vergleich]] | * [[DOIF/Zeitspanne im DOIF und disabledForIntervals im Vergleich]] | ||
* [[DOIF/partielle Deaktivierung der Befehlsausführung, Zurücksetzen eines Wait-Timers mit $SELF oder IsDisabled verhindern, im Vergleich]] | * [[DOIF/partielle Deaktivierung der Befehlsausführung, Zurücksetzen eines Wait-Timers mit $SELF oder IsDisabled verhindern, im Vergleich]] | ||
* DOIF/Verwenden von sunrise / sunset in Zeitintervall im {{Link2Forum|Topic=58884|LinkText=Forenthread}} | * DOIF/Verwenden von sunrise / sunset in Zeitintervall im {{Link2Forum|Topic=58884|LinkText=Forenthread}} | ||
=== Perl-Modus: Weiterführende Themen und Beispiele === | |||
===Entwicklungshistorie=== | ===Entwicklungshistorie=== |
Version vom 7. September 2018, 16:11 Uhr
DOIF | |
---|---|
Zweck / Funktion | |
Do ... if ... | |
Allgemein | |
Typ | Hilfsmodul |
Details | |
Dokumentation | EN / DE |
Support (Forum) | Automatisierung/DOIF |
Modulname | 98_DOIF.pm |
Ersteller | Damian |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Für DOIF-Versionen nach 16651 2018-04-23 06:28:53Z Damian ist das Attribut checkReadingEvent intern per default auf 1 gesetzt.
Wenn eine Definitionen aus diesem Grund ein unerwartetes Verhalten zeigt, sollte dort das Attribut checkReadingEvent auf 0 gesetzt werden.
Siehe dazu Forenthread(ausgeprochen: du if, übersetzt: tue wenn) ist ein universelles Modul, welches ereignis- und zeitgesteuert in Abhängigkeit definierter Bedingungen Anweisungen ausführt.
Im FHEM-Modus stellt das Modul DOIF eine eigene Benutzer-Schnittstelle zur Verfügung ohne Programmierkenntnisse in Perl unmittelbar vorauszusetzen. Mit diesem Modul ist es möglich, sowohl Ereignis- als auch Zeitsteuerung mit Hilfe logischer Abfragen miteinander zu kombinieren. Damit können komplexere Problemstellungen innerhalb eines DOIF-Moduls gelöst werden, ohne Perlcode in Kombination mit anderen Modulen programmieren zu müssen.
Im Perl-Modus bietet das Modul DOIF die Möglichkeit Perl-Blöcke zeit- und ereignisgesteuert auszuführen. Zur Beschreibung der Auslöser kann die DOIF-Syntax, die Angaben in eckigen Klammern direkt in einem Perl-Ausdruck verwendet werden.
Voraussetzungen
keine
Anwendung
Define
FHEM-Modus
Siehe commandref/DOIF_
Perl-Modus
Siehe commandref/DOIF_Perl_Modus
Attribute
FHEM-Modus
Siehe commandref/DOIF_Attribute
Perl-Modus
Siehe commandref/DOIF_Attribute_Perl_Modus
Kurzreferenz
Siehe Kurzreferenz
Anwendungsbeispiele
Der Modulautor hat im deutschen Teil der commandref/DOIF eine Vielzahl von einfachen und auch komplexeren Beispielen zur Nutzung von DOIF aufgenommen. Darum wird hier auf weitere Beispiele zu DOIF verzichtet. Ausführliche Code-Beispiele zu DOIF bitte gegebenenfalls als eigene Wiki-Seite unter Code Snippets aufnehmen.
Links
- DOIF/Einsteigerleitfaden, Grundfunktionen und Erläuterungen
- DOIF/Tools und Fehlersuche
- DOIF/Tipps zur leichteren Bedienung Erstellung, Bearbeitung, Syntaxhervorhebung, Klammerprüfung, Suchen&Ersetzen, Zeileinnummerierung, uvm. (nicht nur) von DOIF
- DOIFtools Tools für DOIF, Eventanalyse für Alle
- DOIF/uiTable
- DOIF/Import von Code Snippets
FHEM-Modus: Weiterführende Themen und Beispiele
- DOIF/Labor - ausführbare, praxisnahe Beispiele als Problemlösung zum Experimentieren
- DOIF/Operatorenrangfolge
- DOIF/Ein- und Ausgabe in FHEMWEB und Tablet-UI am Beispiel einer Schaltuhr
- DOIF/Mehrfachnutzung eines Tasters
- DOIF/Zeitgeber Wecker, Kurzzeitwecker, Tageszeitgeber
- DOIF/Zeitspanne zwischen zwei Terminen schalten
- DOIF/do always Alternative am Beispiel einer Rollladenautomatik
- DOIF/do_always_Alternative_am_Beispiel_einer_Batteriewarnung_via_Telegram
- DOIF/Zeitspanne im DOIF und disabledForIntervals im Vergleich
- DOIF/partielle Deaktivierung der Befehlsausführung, Zurücksetzen eines Wait-Timers mit $SELF oder IsDisabled verhindern, im Vergleich
- DOIF/Verwenden von sunrise / sunset in Zeitintervall im Forenthread
Perl-Modus: Weiterführende Themen und Beispiele
Entwicklungshistorie
- Forenthread memory leak in perl 5.24
- Forenthread Intervalltimer
- Forenthread checkReadingEvent per Default intern gesetzt.
- Forenthread keine Timer-Wiederholungen am gleichen Tag, betrifft Mehrfachtriggerung bei sunset, sunrise, berechnete Timer, z.B. rand() u.ä.
- Forenthread neue Features: ereignisgesteuertes Perl
- Forenthread neues Attribut: startup, neuer set-Befehl: checkall, neuer get-Befehl: html
- Forenthread neues Attribut: uiTable - DOIF User Interface, neues Attribut: DOIF_Readings
- Forenthread neue Features: Attribut myReadings
- Forenthread Neue Features: Aggregationsfunktion, Filtern nach Zahl mit Nachkommastellen
- Forenthread neue Features: Wochentage mit Namen, Überarbeitung für indirekte Timer
- Forenthread DOIF für Perlprogrammierer (Anm.: an dieser Stelle nicht eingeführt)
- Forenthread neue Features: Perlcode ohne runde Klammern und ohne Semikolon-Dopplung
- Forenthread neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd
- Forenthread neue Features: checkall: timer|event|all, timertrigger, timerintervall
- Forenthread neue Features: Ereignisfilter, Attribut checkall, setList, readingList
- Forenthread Stati, Readings in Zeitfunktionen, set enable
- Forenthread neue Features: disablecondition, Stati bei Zeitfunktionen (Anm.: disablecondition nicht eingeführt)
- Forenthread Möglichkeit auf passende Events zu beschränken
- Forenthread Neue Features - $SELF, $self, cmd-Reading, timerevent, selftrigger ...
- Forenthread DOIF als endlicher Automat (finite state maschine)
- Forenthread serialisierte Timer
- Forenthread neue Features: Generalisierung, $DEVICE, $EVENT, Attribut notexist
- Forenthread Attribut repeatcmd
- Forenthread unabsichtliche Loops unterbunden
- Forenthread wait als sleep Alternative
- Forenthread mehrere DOIF-Zweige (Anm.: nicht eingeführt)
- Forenthread neue Zeit-Features
- Forenthread Zeitraster
- Forenthread indirekten Zeitangaben, readingFnAttributes
- Forenthread indirekten Zeitangaben
- Forenthread relative Zeitangaben, Attribute: do resetwait, cmdpause, repeatsame, uvm.
- Forenthread zur Entstehung dieses Moduls