Hallo, ich muss wieder stören,
beim Coding habe ich folgende Problemstellung:
Ich lasse mir mehrmals am Tag Stati von Zuhause zuschicken, funktioniert alles prima. Nur, die Hausautomation wird fast täglich um weitere Aktoren ergänzt.
Die Anpassung an das Coding in der Fhem.cfg Datei gestaltet sich als sehr schwierig.
define Report.Daily DOIF ([07:30] or [12:00] or [{sunset()}] or [22:30])(set Pushover msg 'Check Fenster und Türen' '--- OG ---\nRaum1: [Raum1:state]\nRaum2: [Raum2:state]\nRaum3: [Raum3:state]\n - Rollo: [Raum3-Rollo:state]\nOG Bad: [Bad:state]\n--- GARAGEN ---\nGarage1: [Garage1:state]\nGarage2: [Garage2:state]\n--- EG -........................]' '' 0 '')
attr Report.Daily do always
Ich muss die Ergänzungen/Änderungen immer irgendwie in die cfg reinpfriemeln was sehr fehleranfällig ist.
Wie kann man dies lesbarer mit Zeilenunbrüchen in der cfg-Datei darstellen? Oder hat jemand einen besseren Vorschlag?
Danke vorab
Gruß Günter
Hi,
ja, gar nicht in die fhem.cfg schauen. Dann stört's Dich nicht.
Das ist ernst gemeint: Man schreibt weder etwas in die fhem.cfg noch schaut man sie sich an. Man kann alles über die FHEMWEB-Oberfläche machen. Das hat auch den Vorteil, dass man weniger kaputt macht.
Gruß,
Thorsten
Solche komplexeren Dinge liegen bei mir stets in separaten 99_myUtils[xxx].pm.
Dort sind dann passende Funktionen mit Parametern zu finden (z.B. Namen von Sensoren, Aktoren etc.).
Das führt, zusammen mit der Nutzung von include-Dateien, zu sehr aufgeräumten, sich selbst dokumentieremden CFG-Files.
Gruß,
Mario
Also das DOIF ist doch noch nicht wirklich kompliziert...
Sowas steht bei mir auch alles in der Config.
Und zum Thema "Config nicht anschauen - alles in der Web-Oberfläche eingeben" muss ich sagen, dass das tatsächlich der korrekte und bessere Weg ist. Wird auch von Rudolf König ausdrücklich so empfohlen, da die Weboberfläche auch eine Fehleranalyse durchführt und du dir dadurch dein Config nicht zerschießen kannst.
Wer sich einmal seine über monatelange aufgebaute Config zerschossen hat und den Fehler nicht findet, weiß warum man den Weg übers Web gehen sollte. ;)
Allerdings muss ich zugeben dass ich als Entwickler auch grundsätzlich alles in der Config selbst editiere und dort dokumentiere (mit regelmäßigen Backups vor jeder Änderung).
Das liegt aber zum Teil daran, dass ich mehrere fast identische System in verschiedenen Haushalten laufen habe, und so leicht von A nach B kopieren kann.
Einen Zeilenumbruch kannst du aber meines Wissens mit einem Backslash maskieren wenn ich mich recht erinnere. Also direkt hinter dem Befehl ohne Leerzeichen.
if ("$EVENT" eq "on") {\
fhem("set myDummy currentName Hans");;\
}\
VG, Thomas
in diesem Zusammenhang möchte ich doch gerne mal die DOIF Commandref zitieren:
ZitatDa die Definitionen im Laufe der Zeit recht umfangreich werden können, sollten die gleichen Regeln, wie auch beim Programmieren in höheren Programmiersprachen, beachtet werden. Dazu zählen: das Einrücken von Befehlen, Zeilenumbrüche sowie das Kommentieren seiner Definition, damit man auch später noch die Funktionalität seines Moduls nachvollziehen kann.
Das Modul unterstützt dazu Einrückungen, Zeilenumbrüche an beliebiger Stelle und Kommentierungen beginnend mit ## bis zum Ende der Zeile. Die Formatierungen lassen sich im DEF-Editor der Web-Oberfläche vornehmen.
Erstens: Die Mehrzahl von Status ist nicht "Stati", sondern Status.
Zweitens: Wer komplexe Abläufe in die fhem.cfg schreibt, und diese auch noch manuell ändert, sollte sich über einen Datenverlust nicht wundern. Good practice bedeutet in dem Fall, eine externe Datei mit Perlcode zu verwenden, und Best practice darüber hinaus die Verwendung der configDB.
LG
pah