DOIF: Unterschied zwischen den Versionen

Aus FHEMWiki
(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.


Das Modul [[DOIF]] stellt 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 '''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 ==
=== Weiterführende Themen und Beispiele===
* [[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/Labor - ausführbare, praxisnahe Beispiele als Problemlösung zum Experimentieren]]
* [[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/do_always_Alternative_am_Beispiel_einer_Batteriewarnung_via_Telegram]]
* 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!


Emblem-question-yellow.svgAchtung!

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

Helper doif.png (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

FHEM-Modus: Weiterführende Themen und Beispiele

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