Kommentare in FHEM

Begonnen von Roger, 23 Februar 2015, 13:41:22

Vorheriges Thema - Nächstes Thema

Roger

Lieber Rudi,
seit Version 8066 der fhem.pl werden ja (aus nachvollziehbaren Gründen) Kommentare nur noch mit # am Beginn der Zeile gestattet.
Ich habe bisher an viele Zeilen Kommentare mit # angehängt. Als ich mit FHEM begann, war das für mein Verständnis wichtig und auch noch heute helfen sie mir zu wissen, warum ich etwas so gemacht habe und wozu das Ganze dient.
Ich lasse auch FHEM beim save meine cfg-Dateien _nicht_ verändern: fhem-User hat nur RO-Zugriff darauf

Ich würde es sehr begrüßen, wenn FHEM, wie jede andere Sprache auch, eine Kommentarfunktion hat.  :)
Bisher habe ich diese Möglichkeit insbesondere im Perl-Code bei großen Notify-Konstrukten über etliche Zeilen vermisst und nun sind nur noch Zeilenkommentare möglich.  >:(

Statt # könnte man ja:
// wie bei C, C++, C#, Pascal, Object Pascal, JavaScript, PHP, Java, Bourne-Shell, PowerFlex, Scilab
-- wie bei Ada, AppleScript, SQL, Haskell, VHDL
REM wie bei BASIC, Batch (cmd.exe, ...)
oder etwas FHEM eigenes nehmen.

Wie gesagt: Für mich gehört ein Block- und Zeilen-Kommentar zu eine Programmiersprache.
Wäre schön, wenn Du hier eine Lösung findest (incl. notify).  :)
Roger
Zotac & RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly, Victron

marvin78

Standardantwort: Da FHEM keine Programmiersprache ist, sind Kommentare nicht nötig. Die fhem.cfg ist lediglich ein Gefäß für die Konfiguration, die von FHEM abgelegt wird. Es ist nicht nötig, das zu kommentieren (oder auch dort rein zu schauen). Wenn man einzelne Devices kommentieren möchte, kann mand as im Frontend mit dem Attribut comment machen.

Roger

Na ja, so einfach lass ich mich nicht abspeisen  :D
Kommentare sind überall wichtig. Ich habe z.B. hinter attr Zeilen Erläuterungen wozu das dient:

attr HZ_FritzBox_1 INTERVAL 300 # Abfrage-Interval. Standard ist 300 (Sekunden). Der kleinste mögliche Wert ist 60.
attr HZ_FritzBox_1 telnetTimeOut 10 # Maximale Zeit, bis zu der während einer Telnet-Sitzung auf Antwort gewartet wird. Standard ist 10 s
attr HZ_FritzBox_1 allowShellCommand 1 # Freischalten des get-Befehls "shellCommand"
attr HZ_FritzBox_1 defaultCallerName Hausautomation # Standard-Text, der auf dem angerufenen internen Telefon als "Anrufer" gezeigt wird. Es sind maximal 30 Zeichen erlaubt.
attr HZ_FritzBox_1 ringWithIntern 2 # Um ein Telefon klingeln zu lassen, muss eine Anrufer spezifiziert werden. Normalerweise ist dies die Nummer 50 "ISDN:Wählhilfe".

Kommt noch teilweise aus den Zeiten, wo ich mit FHEM begonnen habe. Aber auch bei für mich neuen Modulen, sehtze ich sie ein. Insbesondere bei großen notify:

define  HA_Move_noti_motion notify .._Move_.:motion..on.* { Log(3,"HA_Move_noti_motion: Bewegung fuer ".$NAME." erkannt");;\
if    ($NAME eq "FL_Move_1")  { Log(2,"HA_Move_noti_motion: Bewegung im Flur erkannt");;\
Log(3,"HA_Move_noti_motion: MP3-Gong Aktion, max. aller 20min");;\
if (!isday()) { Log(3,"HA_Move_noti_motion: Bewegung Flur in der Nacht");;\
fhem("modify at_FL_Move_1_now10 +*00:10");; Log(4,"HA_Move_noti_motion: AT Licht nach Bewegung Flur neu setzen");;\
if ((Value("FL_Licht_un") eq "aus") and\
(Value("FL_Licht_Tr") eq "aus")) { Log(3,"HA_Move_noti_motion: Bewegung im Flur in der Nacht und alle Lichter Flur aus");;\
AutoSchaltenWenn("FL_Licht_un","ein"                                         ,"HA_Move_noti_motion: Bewegung im Flur in der Nacht und alle Lichter aus -> FL_Licht_un: ein");;\
fhem("attr at_FL_Move_1_now10 disable 0");; Log(4,"HA_Move_noti_motion: AT Licht nach Bewegung Flur aktivieren");;\
}\
}\
if (Value("01_Abwesend") eq "ja") { Log(2,"HA_Move_noti_motion: Bewegung Flur trotz Abwesenheit -> eMail");;\
fhem("trigger Macro_eMail_HM moveAlarm");; Log(3,"HA_Move_noti_motion: Alarm-eMail Bewegung bei Abwesenheit senden");;\
}\
}\
elsif ($NAME eq "WZ_Move_2") { Log(2,"HA_Move_noti_motion: Bewegung im Wohnzimmer erkannt");;\
if (isday()) { Log(3,"HA_Move_noti_motion: Bewegung Wohnzimmer am Tag");;\
if ($hour>=8 and $hour<=19) { Log(4,"HA_Move_noti_motion: Bewegung Wohnzimmer zwischen 8:00 und 19:00");;\
if (Value("05_Heimkino_in_Betrieb") eq "nein") { Log(4,"HA_Move_noti_motion: nur wenn Heimkino nicht in Betrieb ist");;\
if (Value("WZ_Steckdose_06_2") ne "ein") { Log(4,"HA_Move_noti_motion: nur wenn Heimkino nicht in Betrieb ist");;\
schaltenFunktion("HA_Dimmer_1","hell","Weihnachtsbaum"               ,"HA_Move_noti_motion: am WE und Feiertags um 10:30 -> Weihnachtsbaum: ein");;\
if (Value("11_Sonnenschutz_Ost") eq "nein") { Log(4,"HA_Move_noti_motion: nur wenn 11_Sonnenschutz_Ost nicht aktiv ist");;\
Jal_move("WZ_Jalo_K","auf"                                       ,"HA_Move_noti_motion: Bewegung Wohnzimmer (9:00-19:00) -> Jalousie Kueche: auf");;\
Jal_move("WZ_Jalo_T","auf"                                       ,"HA_Move_noti_motion: Bewegung Wohnzimmer (9:00-19:00) -> Jalousie Terrasse: auf");;\
Jal_move("WZ_Jalo_S","auf"                                       ,"HA_Move_noti_motion: Bewegung Wohnzimmer (9:00-19:00) -> Jalousie Sofa: auf");;\
}\
if (Value("11_Sonnenschutz_Sued") eq "nein") { Log(4,"HA_Move_noti_motion: nur wenn 11_Sonnenschutz_Sued nicht aktiv ist");;\
Jal_move("LZ_Jalo_S","auf"                                       ,"HA_Move_noti_motion: Bewegung Wohnzimmer (9:00-19:00) -> Jalousie Lesezimmer: auf");;\
}\
if (Value("11_Sonnenschutz_West") eq "nein") { Log(4,"HA_Move_noti_motion: nur wenn 11_Sonnenschutz_West nicht aktiv ist");;\
Jal_move("WZ_Jalo_L","auf"                                       ,"HA_Move_noti_motion: Bewegung Wohnzimmer (9:00-19:00) -> Jalousie Leinwand: auf");;\
}\
}\
}\
}\
}\
else { Log(3,"HA_Move_noti_motion: Bewegung Wohnzimmer in der Nacht");;\
fhem("modify at_WZ_Move_2_now15 +*00:15");; Log(4,"HA_Move_noti_motion: AT Licht nach Bewegung Wohnzimmer neu setzen");;\
if (Value("WZ_Licht_Ti")    ne "ein" and \
(Value("WZ_Licht_So_Sw") eq "aus" or Value("WZ_Licht_So_Sw") eq "MISSING ACK") and \
(Value("WZ_Licht_Tr_Sw") eq "aus" or Value("WZ_Licht_Tr_Sw") eq "MISSING ACK") and \
Value("WZ_Licht_Sp")    ne "ein" and \
ReadingsVal("WZ_Tuer_T","state","n/a") ne "open" and \
Value("WZ_Steckdose_06_2") ne "ein") { Log(4,"HA_Move_noti_motion: es sind alle Lichter im Wohnzimmer aus und Film nicht an und Terassentuer nicht auf");;\
AutoSchaltenWenn("WZ_Licht_Ti","ein"                                     ,"HA_Move_noti_motion: Bewegung Wohnzimmer in der Nacht und alle Lichter aus -> Licht Wohnzimmer Tisch: ein");;\
fhem("attr at_WZ_Move_2_now15 disable 0");; Log(4,"HA_Move_noti_motion: AT Licht nach Bewegung Wohnzimmer aktivieren");;\
}\
if ($hour>=1 and $hour<12) { Log(4,"HA_Move_noti_motion: Bewegung Wohnzimmer in der Nacht, nach 1:00");;\
if (ErgebnisBefehlRueck("PCA","{EigLesen('GA_PCA301_07','Funktion')}") eq  "Lichterkette") { Log(4,"HA_Move_noti_motion: Bewegung Wohnzimmer in der Nacht, nach 1:00, Lichterketten sind installiert");;\
SendBefehl("PCA","{schaltenFunktion( 'GA_PCA301_07','on-for-timer 120','Lichterkette',            'HA_Move_noti_motion: Bewegung Wohnzimmer in der Nacht, nach 1:00 -> Lichterkette: 120s ein')}");;\
}\
else { Log(3,"HA_Move_noti_motion: Bewegung Wohnzimmer in der Nacht, nach 1:00, keine Lichterketten installiert");;\
schaltenFunktion("HA_Steckdose_05","on-for-timer 120","Schuppen"                                 ,"HA_Move_noti_motion: Bewegung Wohnzimmer in der Nacht, nach 1:00 -> Licht Schuppen: 120s ein");;\
}\
}\
}\
if (Value("01_Abwesend") eq "ja") { Log(2,"HA_Move_noti_motion: Bewegung Wohnzimmer trotz Abwesenheit -> eMail");;\
fhem("trigger Macro_eMail_HM moveAlarm");; Log(3,"HA_Move_noti_motion: Alarm-eMail Bewegung bei Abwesenheit senden");;\
}\
}\
elsif ($NAME eq "GA_Move_3") { Log(2,"HA_Move_noti_motion: Bewegung im Carport erkannt");;\
fhem("set HM_Statusanzeige_1_Led_12 led orange");; Log(4,"HA_Move_noti_motion: Anzeige auf Homematic Statusanzeige 16-LEDs");;\
fhem("modify at_GA_Move_3_now10 +*00:10");; Log(4,"HA_Move_noti_motion: AT nach Bewegung Carport neu setzen");;\
fhem("attr   at_GA_Move_3_now10 disable 0");; Log(4,"HA_Move_noti_motion: AT nach Bewegung Carport aktivieren");;\
}\
else { Log(2,"HA_Move_noti_motion: Bewegungsmelder ".$NAME." nicht gefunden, Ereignis: ".$EVENT);;\
}\
if (ReadingsVal($NAME,"Bewegung_von","n/a") eq "n/a") { Log(4,"HA_Move_noti_motion: Wert fuer Bewegung_von fuer ".$NAME." noch nicht gesetzt");;\
fhem("setreading ".$NAME." Bewegung_von ".ReadingsTimestamp($NAME,"state",0));; Log(4,"HA_Move_noti_motion: in Bewegungsmelder ".$NAME." frueheste Bewegung um:".ReadingsTimestamp($NAME, "state", 0)." eintragen");;\
}\
fhem(    "setreading ".$NAME." Bewegung_bis ".ReadingsTimestamp($NAME,"state",0));; Log(4,"HA_Move_noti_motion: in Bewegungsmelder ".$NAME." spaeteste Bewegung um:".ReadingsTimestamp($NAME, "state", 0)." eintragen");;\
}
attr    HA_Move_noti_motion room 53_Notifies,4B_Bewegungsmelder
attr    HA_Move_noti_motion comment Aktion bei Bewegung ausloesen

attr comment nutzte ich auch --> sehe ich dann im Web

Ich weiß nicht, ob ich hier über Sinn, Zweck und Notwendigkeit von Kommentaren reverieren soll/muss  8)
(auch wenn FHEM keine Programmiersprache ist)
Roger
Zotac & RPIs mit 10*FHEM
2*HM-LAN, 2*JeeLink, 2*RS485, SignalESP
HomeMatic, PCA301 Komponenten, ModBus: Stromzähler, Fronius WR, Shelly, Victron

marvin78

Na mein Hinweis geht in die Richtung: Da es die meisten nicht für notwendig halten (begründet), wird sich schwer jemand finden, der das einbaut.

Wuppi68

{#ich bin ein Kommentar
#bla
#fasel
#                                          jetzt ein wenig auffälliger
#dumm
#didel
#dumm
#und Ende hier}
FHEM unter Proxmox als VM

betateilchen

wer die configDB nutzt, muss sich über solchen Mist keine Gedanken mehr machen  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Mitch

So einen "Schachtelcode" wie oben würde ich sowieso nie schreiben, da blickt ja keiner mehr durch.

Wenn schon komplexe Codes, dann am besten auslagern in die myUtils, dann braucht es auch keine Kommentare in der cfg.
FHEM im Proxmox Container

Icinger

Zitatwer die configDB nutzt

Des wär mal was.......den DB-FHEM-User auf ro setzen **rofl**

ZitatIch lasse auch FHEM beim save meine cfg-Dateien _nicht_ verändern: fhem-User hat nur RO-Zugriff darauf
Verwende deine Zeit nicht mit Erklärungen. Die Menschen hören (lesen) nur, was sie hören (lesen) wollen. (c) Paulo Coelho

Mitch

Ich bin ja jetzt auch nicht der Profi, aber wie geht wie geht ein save auf eine RO Datei?  ???
FHEM im Proxmox Container

Wuppi68

Zitat von: Mitch am 23 Februar 2015, 21:43:57
Ich bin ja jetzt auch nicht der Profi, aber wie geht wie geht ein save auf eine RO Datei?  ???
gar nicht :-)
FHEM unter Proxmox als VM

Mitch

War auch mehr ironisch gemeint  ;D
FHEM im Proxmox Container