Warum will jeder DOIF verwenden?

Begonnen von Thorsten Pferdekaemper, 10 Februar 2017, 14:37:15

Vorheriges Thema - Nächstes Thema

Thorsten Pferdekaemper

Hallo,
ich weiß, dass das keine Anfängerfrage ist, aber vielleicht können gerade Anfänger das beantworten: Warum ist DOIF so beliebt? Man liest ständig, dass Leute mit DOIF rumprobieren. Was ist mit dem guten alten notify oder at?
Ich meine diese Frage ernst. Steht vielleicht in irgendeiner Anleitung, dass DOIF besser ist als notify?
Gruß,
   Thorsten
FUIP

Fixel2012

Frage ich mich auch, ich habe vieles mit Notify gelöst.

Zumindest die einfachen Dinge sind mit notify schneller eingerichtet als DOIF.

DOIF ist sehr viel Mächtiger als notify oder at, das ist ein großer Vorteil. Aber wie gesagt für kleine Dinge die nicht so komplex sind reicht doch auch ein notify?
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

igami

Ich nutze DOIF dann, wenn ich mehr als eine Bedingung habe.
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

Thyraz

DOIF ist ja schon so eine Art kleine State-Machine, da es im Standardfall immer eine aktive Bedingung gibt.
Dadurch lässt sich einiges einfacher realisieren.

Auch gibt es viele Special-Features wie z.B. einfach Werte von Readings in einen Befehl einzubauen usw.

Ich verwende auch mehr Notifies als DOIFs, da sie bei simplen Aufgaben sicher etwas weniger Overhead haben.
Aber dort wo ich DOIF verwende bin ich normal sehr froh darüber...

Die Ausmaße der Commandred von DOIF zeigen einem ja schon, dass das Ding eine Art Schweizer Taschenmesser für die kleineren Automatisierungsaufgaben ist. ;)
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Beta-User

Meine Vermutung: der Name ist leicht verständlich: "Mache, wenn...". Darauf bin ich auch erst mal "reingefallen".

An sich finde ich aber zwischenzeitlich oft ein notify (uU. mit alternativen Bedingungen und iVm. einem IF) viel übersichtlicher, Zeitabhängigkeiten kann man dann mit "defmod"-Definitionen und disable-Zeiten lösen.

M.E. wäre es sinnvoll, Anfängern erst mal diese Grundlagen zu erklären, bevor man sie auf DOIF mit seinen vielen (...) Optionen losläßt. Dann würde der eine oder andere vielleicht auch eher programmiertechnisches Verständnis entwickeln.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

betateilchen

was mich an DOIF & Co. am meisten stört, ist die Tatsache, dass die Syntax der Klammernverwendung einfach komplett allem widerspricht, was zu FHEM und perl gehört.
Für mich gehören in perl eckige Klammern zu einem Array, geschweifte Klammern zu einem Hash.
Und in FHEM gibts maximal geschweifte Klammern, um perl Code zu kennzeichnen. Basta.

Zitat von: Beta-User am 10 Februar 2017, 15:01:46
M.E. wäre es sinnvoll, Anfängern erst mal diese Grundlagen zu erklären, bevor man sie auf DOIF mit seinen vielen (...) Optionen losläßt.

*unterschreib*

DOIF verhindert gerade bei Anfängern, das Verständnis für die grundlegenden Funktionsprinzipien von FHEM zu erlernen und anzuwenden. Und wenn man dieses Grundverständnis einmal hat, braucht man DOIF ohnehin nicht mehr.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

marvin78

So sehe ich das auch. Der Support fällt zudem auch nicht leicht, wenn die Leute auf Teufel komm raus DOIF verwenden möchten obwohl manche Ding sicher anders einfacher zu lösen wären. Ich bin zwar der Meinung, dass ich DOIF verstanden habe, trotzdem kommt mir tatsächlich bei keiner Problemstellung der Gedanke "das würde ich mit einem DOIF lösen".

Beta-User

#7
@marvin78
Geht sogar mir schon so...

Noch was fällt mir dazu ein:

Im Einsteigerdokument werden relativ wenige Module erklärt, darunter aber eben auch DOIF! Das wirkt so, als müsse man das kennen und verwenden.

So gesehen sollte man überlegen, ob der Teil nicht raus sollte (ich würde dann auch noch FLOORPLAN vorschlagen, ob das Fritten-Modul drin ist, wäre ggf. zu klären). Das war im Nachhinein jeweils völlig nutzloser Aufwand... (Persönliche Meinung, und v.a. keine Generalkritik an diesem ansonsten wirklich hilfreichen Dokument!)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

r00t2

#8
Zitat von: igami am 10 Februar 2017, 14:50:34
Ich nutze DOIF dann, wenn ich mehr als eine Bedingung habe.
Genau so handhabe ich es auch.

Ist das Vorhaben mit einem DOIF Einzeiler abgefrühstückt oder möchte ich nur auf einen bestimmten Wert eines Readings reagieren, nehme ich DOIF:
Ist die Sonne Untergegangen und ich bin daheim? => Mach das Licht an, ansonsten schließe die Rollos!
Ist die CPU Temperatur > 90°C => Ruf die Feuerwehr!

Brauche ich vielleicht mehrere Abfragen/if-elseifs-else/etc. oder weitere extra definierte Variablen, oder wird das Define allgemein etwas größer, dann verwende ich strukturierte at oder notifies.

Klar gingen die obigen zwei Beispiele auch per notify - aber nicht so kurz und knapp, wie mit einem DOIF.

Gerade das Beispiel in der Commandref mit dem Zufallsverzögerten An- und Abschalten einer Lampe nach Sonnenuntergang und einer definierten Uhrzeit zeigt in meinen Augen, wie mächtig und kompakt DOIF sein kann.
FHEM 6.0 (Raspberry Pi 2 B | Raspberry Pi OS Lite | Perl 5.28.1 | UZB Z-WAVE.Me | Hue Bridge V1 | SIGNALDuino 433 MHz | FritzBox | Kodi | Pioneer AVR | MQTT | Node-RED | Diverse Google Dienste)

Thorsten Pferdekaemper

Hi,

also mal ohne auf die einzelnen Postings einzugehen: DOIF eignet sich für einen bestimmten Komplexitätsgrad, aber eigentlich nicht wirklich für Anfänger. Wenn man aber mal notify und at verstanden hat, dann kann man bestimmte Dinge ggf. schöner mit DOIF erledigen.
Ich wäre auch dafür, DOIF aus allen Anfänger-Dokus rauszunehmen. Ich wundere mich, dass es überhaupt drinsteht.

Vielleicht kann sich auch mal ein wirklicher Anfänger dazu äußern, warum er (oder sie...) DOIF verwendet bzw. verwenden will.

Gruß,
   Thorsten 
FUIP

Otto123

Hallo Thorsten,

wenn man schon mal ein Basic Programm gesehen hat oder ein Regel basiertes IFTTT - versteht man dann zwangsläufig notify? Mir war das am Anfang ziemlich suspekt. Und irgendwas muss man doch machen am Anfang - FHEM ist leer nach der Installation! at kann zwar einfach mal eine Lampe anmachen, aber eine Zusatzbedingung - uih wie geht das denn?
Da ist DOIF schon relativ einfach zu verstehen.
Und Perl Programme in die 99_myUtils schreiben will am Anfang auch keiner.  ::)

Mittlerweile ist für mich notify einfacher und man weiß wenigsten was passiert. Und ich bin völlig bei betateilchen, die unterschiedliche Verwendung von Klammern Semikolons Kommas usw. geht mir irgendwann auf den Geist.

Ich weiß, Du akzeptierst mich wahrscheinlich auch nicht als Anfänger  8)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Fixel2012

#11
Naja, ich denke ich bin noch ein Anfänger ::)

Ich benutze sowohl at, notify als auch DOIF.
DOIF fande ich am Anfang schon recht Schwer! Aber nach einigen Beispielen und Versuchen war es dann verständlich und die Syntax mir bekannt.

Das Problem mit den Klammern und Anführungszeichen im Modul habe ich nicht, da ich leider keine perl Kenntnisse habe;D Ich denke das stört Anfänger recht wenig ;)

Prinzipiell sollte man Anfängern erstmal das notify und at für den einfachen Gebrauch ans Herz legen, und anschließend bei Komplexeren Dingen mit mehreren Bedingungen und co. DOIF nutzen.
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

Mitch

Also ich bezeichne mich selber schon noch als Anfänger und ich benutze alle drei (DOIF, notiy, at) in folgender Reihenfolge:
1. ein Device zu einer bestimmten Zeit schalten: at
2. auf ein Event reagieren und ein Device schalten: notify
3. mehrere Events und Bedingungen, auf die verschieden reagiert werden soll: DOIF

Ich finde grundsätzlich den DOIF um einiges leichter als notify, wenn es um mehrfach Bedingungen/Events geht.
Auch kennt man (bzw. ich), das ganze aus Apps wie IFTTT.
Auch ist mir die Logik noch aus den guten alten Basic Zeiten DO IF und ELSE bekannt.

Ich muss zugeben, ich bin ein Fan von DOIF und mir persönlich hat es schon einiges ziemlich erleichtert.
Die Klammern machen mir keine Probleme. Ich weiß ja, wann ich welche und wie nutzen muss  ;)
FHEM im Proxmox Container

P.A.Trick

DOIF ist schon wirklich mächtig, aber alleine das der Status nach einem Neustart erhalten bleibt, ist ein ungeheurer Vorteil gegen notify & Co.
Ich finde, jeder sollte das nutzen, was ihm am meisten liegt.
Cubietruck,RPI,QNAP Ts-419p+, FS20, FRITZ!DECT200, 7 MAX! Thermostate, 3 MAX! Fensterkontakte, Kodi, CUL V3.3, EM1000S, LW12, LD382, HUE, HM-CFG-USB-2, 1x HM-LC-SW1-FM, 2x HM-LC-SW2-FM, 2x HM-LC-Sw1PBU-FM, 3xHM-LC-Bl1PBU-FM,HM-SEC-RHS, 2xHM-SEC-SD,HM-WDS30-T-O, 3x HM-LC-Dim1TPBU-FM, RPI+AddOn

Ellert

Die Behauptungen der Fragestellung sind sehr subjektiv und die Fakten sind ungenau recherchiert.

ZitatMan liest ständig, dass Leute mit DOIF rumprobieren.

Kann ich nicht bestätigen, es gibt täglich nur wenige neue Fragen, die im Unterforum gestellt werden.

ZitatWarum ist DOIF so beliebt?

DOIF besitzt at und notify Funktionalität. Es stehen mit Stand 10.02.2017 17030 genutzte notify-Module und 9416 at-Module nur 2517 genutzte DOIF-Module gegenüber.
Der DOIF-Anteil beträgt gerade mal 8,7% der betrachteten Module.

Die Betrachtung der Definitionen zeigt ein ähnliches Bild. 224405 notify-Definitionen und 101710 at-Definitionen und nur 36300 DOIF-Definitionen.

Hier liegt der DOIF-Anteil bei 10%.

DOIF ist offensichtlich doch nicht so beliebt, wie die Fragestellung suggeriert.