FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Gueco315 am 22 März 2017, 13:00:51

Titel: Coding lesbarer darstellen
Beitrag von: Gueco315 am 22 März 2017, 13:00:51
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

Titel: Antw:Coding lesbarer darstellen
Beitrag von: Thorsten Pferdekaemper am 22 März 2017, 13:08:35
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
Titel: Antw:Coding lesbarer darstellen
Beitrag von: Mario67 am 22 März 2017, 13:19:29
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
Titel: Antw:Coding lesbarer darstellen
Beitrag von: ToM_ToM am 22 März 2017, 15:49:06
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
Titel: Antw:Coding lesbarer darstellen
Beitrag von: KernSani am 22 März 2017, 15:58:17
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.
Titel: Antw:Coding lesbarer darstellen
Beitrag von: Prof. Dr. Peter Henning am 22 März 2017, 17:02:31
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