komplexe Situationen - Wie löst ihr das?

Begonnen von DanielGab, 19 Juli 2017, 13:58:43

Vorheriges Thema - Nächstes Thema

Damian

#15
Aus meiner bescheidenen Erfahrung:

- je schaltbarer Aktor ein DOIF

- Generalisierung von Abfragen, wo es möglich und sinnvoll ist, z. B.

statt: DOIF (T_Keller:temperature] > 21] and [T_Bad:temperatur] > 21 and [T_Wohnzimmer:temperature] > 21 ...) (set ...

z. B.        DOIF ([#"^T_:temperature":temperature:$_ > 21] == 6) (set ...

Ausnahmen bestätigen wie immer die Regel ;)

Irgendwie haben meine DOIF Module selten mehr als drei Zweige - vielleicht bin einfach nicht so anspruchsvoll, was die Automatisation angeht ;)

Und für alles, was komplexer ist, gibt es schon ein Modul oder ich bastele mir eins :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

rabehd

Zitatje schaltbarer Aktor ein DOIF
Ich wurde bestätigt  :D

DOIF ([#"^T_:temperature":temperature:$_ > 21] == 6) (set ... :-[  Wahnsinn was es gibt, wieder was gelernt
Auch funktionierende Lösungen kann man hinterfragen.

CoolTux

Komplexe Geschichten landen bei mir in eine 99_myUtils.
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.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

DanielGab

Ich finde es echt interessant, dass jeder seine Wege hat...
ich hab vor 3 Jahren mit fhem angefangen, da kam gerade das DOIF Modul dazu.
Darauf habe ich mich dann total eingefahren und eben alles damit geregelt.
Und weil es immer funktionierte, hab ich da auch nie weiter gedacht... aber es ist immer dieser große Aufwand, wenn sich was ändert.
Ich probiere jetzt mal etwas anderes aus, gerade was hier vorgeschlagen wurde, ein Device - ein DOIF und auch die Schreibweise von Damian gefällt mir.

Ich sollte mich mal weiter entwickeln [emoji2]

Gesendet von meinem MI 5s mit Tapatalk


Damian

Zitat von: DanielGab am 19 Juli 2017, 22:31:00
Ich finde es echt interessant, dass jeder seine Wege hat...
ich hab vor 3 Jahren mit fhem angefangen, da kam gerade das DOIF Modul dazu.
Darauf habe ich mich dann total eingefahren und eben alles damit geregelt.
Und weil es immer funktionierte, hab ich da auch nie weiter gedacht... aber es ist immer dieser große Aufwand, wenn sich was ändert.
Ich probiere jetzt mal etwas anderes aus, gerade was hier vorgeschlagen wurde, ein Device - ein DOIF und auch die Schreibweise von Damian gefällt mir.

Ich sollte mich mal weiter entwickeln [emoji2]

Gesendet von meinem MI 5s mit Tapatalk

Auch DOIF entwickelt sich weiter, die https://fhem.de/commandref_DE.html#DOIF_aggregation ist noch relativ neu und vermutlich für viele DOIF-Nutzer noch unbekannt.

Und demnächst werden DOIF-Module vermutlich tatsächlich komplexer und mächtiger werden: mit myReadings und eigener WEBUI :)
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

DanielGab

Erstmal danke für die vielen Inputs, die ich hier bekommen habe. Nun habe ich doch einiges, eigentlich so gut wie die ganze Steuerung umgestellt und bin echt happy!

Ich habe eigentlich für jedes Device ein eigenes DOIF angelegt, und jetzt habe ich total viele DOIFs, aber die lassen sich doch viel viel leichter pflegen! Und wenn ich einen Fehler im Betrieb bemerke, dann finde ich den meistens auch gleich und kann ihn ausbessern :-)

Ich freue mich!! Danke

Damian

Zitat von: DanielGab am 11 August 2017, 18:09:02
Erstmal danke für die vielen Inputs, die ich hier bekommen habe. Nun habe ich doch einiges, eigentlich so gut wie die ganze Steuerung umgestellt und bin echt happy!

Ich habe eigentlich für jedes Device ein eigenes DOIF angelegt, und jetzt habe ich total viele DOIFs, aber die lassen sich doch viel viel leichter pflegen! Und wenn ich einen Fehler im Betrieb bemerke, dann finde ich den meistens auch gleich und kann ihn ausbessern :-)

Ich freue mich!! Danke

Wenn die Definitionen sich von Device zu Device etwas unterscheiden, dann ist das vermutlich die einfachste Variante, solange man nicht die einzelnen Definitionen wegen einer globalen Änderung alle anpassen muss.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Prof. Dr. Peter Henning

Egal, ob es nun ein DOIF mit Unmengen an Fallunterscheidungen ist, oder "total viele DOIFS": So etwas ist einfach keine gute Praxis - und deshalb kann ich echt nur empfehlen, sich endlich etwas mit Perl zu befassen.
ZitatAusnahmen bestätigen wie immer die Regel
Hm, da schau Dir aber mal die zweite Hälfte des Zitates an, die kehrt seine Bedeutung nämlich um:
Ausnahmen bestätigen die Regel in den nicht ausgenommenen Fällen. (Marcus Tullius Cicero).

LG

pah




rabehd

Zitat von: Prof. Dr. Peter Henning am 14 August 2017, 07:35:03
kann ich echt nur empfehlen, sich endlich etwas mit Perl zu befassen.
Man könnte auch fordern, dass sich die Leute mit anderen (Kauf-)Lösungen beschäftigen und für FHEM eine Zugangsprüfung eingeführt wird.
Klar macht ein wenig Perl vieles schöner, aber ich finde es gut wenn viele Leute sich mit fhem beschäfigen. Überheblichheit schafft keine Verbreitung.

Außerdem möchte ich hier mal den Leuten danken, die Module entwickeln, hier Hilfe geben und auch weiterentwickeln, wenn ihr eigenes Ziel schon erreicht ist.
Auch funktionierende Lösungen kann man hinterfragen.

Fritz Muster

Zitat von: Prof. Dr. Peter Henning am 14 August 2017, 07:35:03
So etwas ist einfach keine gute Praxis - und deshalb kann ich echt nur empfehlen, sich endlich etwas mit Perl zu befassen.

Mangels Perl Kenntnisse verstehe ich das leider nicht. :-[ Was wäre denn anders/übersichtlicher wenn ich anstatt DOIF`s, notify`s, usw. alles in Perl machen würde?

Danke und Grüße
Fritz
RasPi 3B+, Stretch, Fhem 5.9, DBlog SQLite
HMLAN, mapleCUN MAX/WMBus, mapleSduino 868/433/868
HM Sensoren/Aktoren ,Technoline TX 29 DTH-IT, TFA 30.3155WD, MAX!
Hour Counter, Astro, EletricityCounter, Statistics, Charting Frontend, TabletUI, Modbus

Prof. Dr. Peter Henning

ZitatAußerdem möchte ich hier mal den Leuten danken, die Module entwickeln, hier Hilfe geben und auch weiterentwickeln, wenn ihr eigenes Ziel schon erreicht ist.

Nur zur Erläuterung: Damit meint er mich, weil ich ihm nicht das Modul 95_Astro.pm wunschgemäß geändert habe. Aber gut: Ich kann ihm ja gerne mal meinen Honorarsatz per PM zukommen lassen.

ZitatMangels Perl Kenntnisse verstehe ich das leider nicht

Perl ist aber einfacher zu lernen und logisch konsistenter, als die Syntax der DOIFs.

ZitatWas wäre denn anders/übersichtlicher wenn ich anstatt DOIF`s, notify`s, usw. alles in Perl machen würde

Alles sicher nicht. Aber alles, was komplexer ist:

- mehrfache Bedingungen, kompliziertere Bedingungen mit UND / ODER
- Schleifen und Wiederholungen
- Bearbeitung von Strings

Weitere Vorteile: Offline (außerhalb von FHEM) editierbar, auch mit einem Syntax-empfindlichen Editor. Testbarkeit außerhalb von FHEM. Modularisierbarkeit. Objektorientierung.

usw.

Ich habe hier im Forum irgendwo (und irgendwann) schon einmal als PDF-Datei ein Kapitel über Perl aus dem "Handbuch Programmiersprachen" bereit gestellt. In dem Buch habe ich vor mehr als 10 Jahren zusammen mit einem Kollegen 26 Programmiersprachen kompakt dargestellt. Die Datei müsste mit der Suchfunktion zu finden sein

.
LG

pah

rabehd

Zitat von: Prof. Dr. Peter Henning am 16 August 2017, 16:58:36
... weil ich ihm nicht das Modul 95_Astro.pm wunschgemäß geändert habe. Aber gut: Ich kann ihm ja gerne mal meinen Honorarsatz per PM zukommen lassen.

Danke, nicht nötig. Meine Programmierkenntnisse reichten bisher aus. :)
Auch funktionierende Lösungen kann man hinterfragen.