DOIF: Unterschied zwischen den Versionen
Trelle (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung  | 
				Trelle (Diskussion | Beiträge)   (→Perl-Modus:  Link ins Wiki statt Commandref)  | 
				||
| (80 dazwischenliegende Versionen von 8 Benutzern werden nicht angezeigt) | |||
| Zeile 6: | Zeile 6: | ||
|ModOwner=Damian}}  | |ModOwner=Damian}}  | ||
[[  | [[Datei:Helper doif.png|50px]] (ausgesprochen: 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 [[DOIF/Einsteigerleitfaden,_Grundfunktionen_und_Erläuterungen#Ausl.C3.B6ser|'''Auslöser''']] kann die DOIF-Syntax, die Angaben in eckigen Klammern direkt in einem Perl-Ausdruck verwendet werden.  | |||
Das DOIF-Modul verfügt inzwischen über ein [https://wiki.fhem.de/wiki/DOIF/uiTable_Schnelleinstieg '''eigenes WEB-Interface'''], mit dessen Hilfe sich in tabellarischer Darstellung jegliche Informationen visualisieren sowie FHEM-Geräte über Widgets steuern lassen.  | |||
== Voraussetzungen ==  | == Voraussetzungen ==  | ||
| Zeile 13: | Zeile 20: | ||
== Anwendung ==  | == Anwendung ==  | ||
=== Define ===  | === Define ===  | ||
Siehe   | ==== FHEM-Modus ====  | ||
Siehe {{Link2CmdRef|Lang=de|Anker=DOIF_}}  | |||
==== Perl-Modus ====  | |||
Siehe [[DOIF/Perl-Modus]]  | |||
=== Attribute ===  | === Attribute ===  | ||
Siehe   | ==== FHEM-Modus ====  | ||
Siehe {{Link2CmdRef|Lang=de|Anker=DOIF_Attribute}}  | |||
==== Perl-Modus ====  | |||
Siehe [[DOIF/Perl-Modus#Nutzbare_Attribute_im_Perl-Modus]]  | |||
===Kurzreferenz===  | ===Kurzreferenz===  | ||
Siehe   | Siehe {{Link2CmdRef|Lang=de|Anker=DOIF_Kurzreferenz|Label=Kurzreferenz}}  | ||
== Anwendungsbeispiele ==  | == Anwendungsbeispiele ==  | ||
Der Modulautor hat im   | Der Modulautor hat '''im deutschen Teil''' der {{Link2CmdRef|Lang=de|Anker=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 [[:Kategorie:Code Snippets|Code Snippets]] aufnehmen.  | ||
== Links ==  | == Links ==  | ||
* [[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, uvm. (nicht nur) von DOIF  | * [[DOIF/Tipps zur leichteren Bedienung]] Erstellung, Bearbeitung, Syntaxhervorhebung, Klammerprüfung, Suchen&Ersetzen, Zeilennummerierung, uvm. (nicht nur) von DOIF  | ||
* [[DOIFtools]] Tools für DOIF, Eventanalyse für Alle  | |||
* [[DOIF/uiTable_Schnelleinstieg]]  | |||
* [[DOIF/uiTable]]  | |||
* [[Import von Code Snippets]] oder [[Raw definition]]  | |||
=== 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/Ein- und Ausgabe in FHEMWEB und Tablet-UI am Beispiel einer Schaltuhr]]  | ||
* [[DOIF/  | * [[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 {{Link2Forum|Topic=58884|LinkText=Forenthread}}  | |||
=== Perl-Modus: Weiterführende Themen und Beispiele ===  | |||
* DOIF/Logeinträge als Trigger (Auslöser) verwenden {{Link2Forum|Topic=99203|Message=926068|LinkText=Forenthread}}  | |||
* BOTVAC (Neato, Vorwerk) und DOIF: [[BOTVAC#Alle_Maps_in_einem_Reading_anzeigen|Alle Maps in einem Reading anzeigen]] und {{Link2Forum|Topic=51713|Message=933448|LinkText=Forenthread}}  | |||
===Entwicklungshistorie===  | |||
121004  | |||
* {{Link2Forum|Topic=121004|LinkText=Forenthread}} neues Attribut: uiState  | |||
* {{Link2Forum|Topic=114252|LinkText=Forenthread}} neue Feature: wiederholende Ausführungstimer mit Bedingung  | |||
* {{Link2Forum|Topic=111266|LinkText=Forenthread}} neue Features: Generalisierung mit Templates  | |||
* {{Link2Forum|Topic=103401|LinkText=Forenthread}} Umstellung auf NOTIFYDEV-Filter  | |||
* {{Link2Forum|Topic=97320|LinkText=Forenthread}} Neues Feature: event_Readings  | |||
* {{Link2Forum|Topic=95759|LinkText=Forenthread}} Neues Feature: Durchschnitt, Median, Differenz, prozentualer Anstieg  | |||
* {{Link2Forum|Topic=94728|LinkText=Forenthread}} Wochentagsteuerung  | |||
* {{Link2Forum|Topic=88291|LinkText=Forenthread}} memory leak in perl 5.24  | |||
* {{Link2Forum|Topic=87183|LinkText=Forenthread}} Intervalltimer  | |||
* {{Link2Forum|Topic=82523|LinkText=Forenthread}} checkReadingEvent per Default intern gesetzt.  | |||
* {{Link2Forum|Topic=86579|LinkText=Forenthread}} keine Timer-Wiederholungen am gleichen Tag, betrifft  Mehrfachtriggerung bei sunset, sunrise, berechnete Timer, z.B. rand() u.ä.  | |||
* {{Link2Forum|Topic=84969|LinkText=Forenthread}} neue Features: ereignisgesteuertes Perl  | |||
* {{Link2Forum|Topic=81576|LinkText=Forenthread}} neues Attribut: startup, neuer set-Befehl: checkall, neuer get-Befehl: html  | |||
* {{Link2Forum|Topic=77690|LinkText=Forenthread}} neues Attribut: uiTable - DOIF User Interface, neues Attribut: DOIF_Readings  | |||
* {{Link2Forum|Topic=71000|LinkText=Forenthread}} neue Features: Attribut myReadings  | |||
* {{Link2Forum|Topic=70624|LinkText=Forenthread}} Neue Features: Aggregationsfunktion, Filtern nach Zahl mit Nachkommastellen  | |||
* {{Link2Forum|Topic=69392|LinkText=Forenthread}} neue Features: Wochentage mit Namen, Überarbeitung für indirekte Timer  | |||
* {{Link2Forum|Topic=68705|LinkText=Forenthread}} DOIF für Perlprogrammierer (Anm.: an dieser Stelle nicht eingeführt)  | |||
* {{Link2Forum|Topic=68000|LinkText=Forenthread}} neue Features: Perlcode ohne runde Klammern und ohne Semikolon-Dopplung  | |||
* {{Link2Forum|Topic=66153|LinkText=Forenthread}} neue Features: set <DOIF_Modul> cmd_<NR>, Zeitvariablen $md $ymd  | |||
* {{Link2Forum|Topic=63375|LinkText=Forenthread}} neue Features: checkall: timer|event|all, timertrigger, timerintervall   | |||
* {{Link2Forum|Topic=58556|LinkText=Forenthread}} neue Features: Ereignisfilter, Attribut checkall, setList, readingList  | |||
* {{Link2Forum|Topic=56851|LinkText=Forenthread}} Stati, Readings in Zeitfunktionen, set enable  | |||
* {{Link2Forum|Topic=55785|LinkText=Forenthread}} neue Features: disablecondition, Stati bei Zeitfunktionen (Anm.: disablecondition nicht eingeführt)  | |||
* {{Link2Forum|Topic=51117|LinkText=Forenthread}} Möglichkeit auf passende Events zu beschränken  | |||
* {{Link2Forum|Topic=51060|LinkText=Forenthread}} Neue Features - $SELF, $self, cmd-Reading, timerevent, selftrigger ...  | |||
* {{Link2Forum|Topic=49109|LinkText=Forenthread}} DOIF als endlicher Automat (finite state maschine)  | |||
* {{Link2Forum|Topic=48925|LinkText=Forenthread}} serialisierte Timer  | |||
* {{Link2Forum|Topic=46327|LinkText=Forenthread}} neue Features: Generalisierung, $DEVICE, $EVENT, Attribut notexist  | |||
* {{Link2Forum|Topic=43638|LinkText=Forenthread}} Attribut repeatcmd  | |||
* {{Link2Forum|Topic=41859|LinkText=Forenthread}} unabsichtliche Loops unterbunden  | |||
* {{Link2Forum|Topic=39070|LinkText=Forenthread}} wait als sleep Alternative  | |||
* {{Link2Forum|Topic=36889|LinkText=Forenthread}} mehrere DOIF-Zweige (Anm.: nicht eingeführt)  | |||
* {{Link2Forum|Topic=35638|LinkText=Forenthread}} neue Zeit-Features  | |||
* {{Link2Forum|Topic=35045|LinkText=Forenthread}} Zeitraster  | |||
* {{Link2Forum|Topic=34767|LinkText=Forenthread}} indirekte Zeitangaben, readingFnAttributes  | |||
* {{Link2Forum|Topic=34365|LinkText=Forenthread}} indirekte Zeitangaben  | |||
* {{Link2Forum|Topic=30847|LinkText=Forenthread}} relative Zeitangaben, Attribute: do resetwait, cmdpause, repeatsame, uvm.  | |||
* {{Link2Forum|Topic=23833|LinkText=Forenthread}} zur Entstehung dieses Moduls  | * {{Link2Forum|Topic=23833|LinkText=Forenthread}} zur Entstehung dieses Moduls  | ||
<!-- (Modulkategorie wird automatisch gesetzt) -->  | <!-- (Modulkategorie wird automatisch gesetzt) -->  | ||
Aktuelle Version vom 31. Dezember 2021, 17:51 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! | |
 (ausgesprochen: 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.
Das DOIF-Modul verfügt inzwischen über ein eigenes WEB-Interface, mit dessen Hilfe sich in tabellarischer Darstellung jegliche Informationen visualisieren sowie FHEM-Geräte über Widgets steuern lassen.
Voraussetzungen
keine
Anwendung
Define
FHEM-Modus
Siehe commandref/DOIF_
Perl-Modus
Siehe DOIF/Perl-Modus
Attribute
FHEM-Modus
Siehe commandref/DOIF_Attribute
Perl-Modus
Siehe DOIF/Perl-Modus#Nutzbare_Attribute_im_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, Zeilennummerierung, uvm. (nicht nur) von DOIF
 - DOIFtools Tools für DOIF, Eventanalyse für Alle
 - DOIF/uiTable_Schnelleinstieg
 - DOIF/uiTable
 - Import von Code Snippets oder Raw definition
 
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
- DOIF/Logeinträge als Trigger (Auslöser) verwenden Forenthread
 - BOTVAC (Neato, Vorwerk) und DOIF: Alle Maps in einem Reading anzeigen und Forenthread
 
Entwicklungshistorie
121004
- Forenthread neues Attribut: uiState
 - Forenthread neue Feature: wiederholende Ausführungstimer mit Bedingung
 - Forenthread neue Features: Generalisierung mit Templates
 - Forenthread Umstellung auf NOTIFYDEV-Filter
 - Forenthread Neues Feature: event_Readings
 - Forenthread Neues Feature: Durchschnitt, Median, Differenz, prozentualer Anstieg
 - Forenthread Wochentagsteuerung
 - 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 indirekte Zeitangaben, readingFnAttributes
 - Forenthread indirekte Zeitangaben
 - Forenthread relative Zeitangaben, Attribute: do resetwait, cmdpause, repeatsame, uvm.
 - Forenthread zur Entstehung dieses Moduls