Coding lesbarer darstellen

Begonnen von Gueco315, 22 März 2017, 13:00:51

Vorheriges Thema - Nächstes Thema

Gueco315

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

Fhem 6.0, JeeLink, CUL 868 auf Raspi 4, Buster, IT-1500, 4x SB_Player, Squeezebox auf Raspi 4, 3x Fritzbox,  WIFI Light, EGPM2LAN, ENIGMA, Sec-SCO,CC-RT-DN,TC-IT-WM-W-EU,SEN-Wa-Od,ES-PMSw1-PW,HM-SE, Sonoff, Shelly,SMA

Thorsten Pferdekaemper

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
FUIP

Mario67

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
FHEM auf Raspberry Pi 4 mit CUL868, WMBUS,
FS20 ST, FS20 AS4-3, FS20 SU-2, FS20 DF, 1-Wire + RS-232: AB Electronics Com Pi RS232, Brandmelder + Fenster: AB Electronics IO Pi 32
BUDERUS GB142 über EMS/AVR-NET-IO, WESTAFLEX WAC250 über RS232, MySensors
mit fhem.cfg & includes glücklich

ToM_ToM

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
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

KernSani

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.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Prof. Dr. Peter Henning

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