Hauptmenü

Unlesbarer Code in DEF

Begonnen von Eisenberg188, 11 Juni 2020, 10:02:14

Vorheriges Thema - Nächstes Thema

Eisenberg188

Für meine Poolsteuerung habe ich einige DEFs
in DEF schaut mein Code so aus:
(((([smart_pi:Lief1]+[smart_pi:Lief2]+[smart_pi:Lief3])< -1500) and ([STEUERUNG27] eq "on") and ([Strahlung]>200) and ([PUMPE17] eq "off") and (((([PumpZeit:pulseTimePerDay])<21600) and ([WINTER] eq "off")) or ((([PumpZeit:pulseTimePerDay])<9600) and ([WINTER] eq "on")))) or ([NURPUMPE23] eq "on") or ([SALZEIN] eq "on") or ([BADEN] eq "on") or ([wetter_eigheim:TempAussen]<0)) (set PUMPE17 on) (define SALZON at +00:04 set SALZ24 on) (set PumpZeit calc) (delete PUMPEAUSZEIT) (delete SALZAUSZEIT) DOELSE (set PumpZeit calc)

gibt es eine Möglichkeit diese Code strukturiert darzustellen?

Nur zur Info, ich baue meine Poolsteuerung um, daher würde ich alle neu schreiben:
Anstelle eines externen Wasserstandfühler (MINIMUN, SOLL, MAXIMUM) im Überschwallbecken möchte ich einen Höhensensor per Ultraschall (Autoabstandssensor) verwenden.
Einen extern Badeschalter (Pool bleibt offen und pumpt).
Externen Strommeser per I2C der Salzaufbereitung SALTMASTER.
6 Raspi: 3 Fhem, Weewx, SmartPi, Kodi; davis Vintage Pro2; OwnAndroidApps (Maxwell 10)

Otto123

#1
Hi,

die Frage strukturiert für wen? Hier im Forum wäre die wichtigste Struktur Code immer in Code tags zu posten :)
Wie das geht steht hier:https://forum.fhem.de/index.php/topic,71806.0.html
In deiner DEF (DEF Editor) kannst Du beliebige Zeilenumbrüche und Einrückungen vornehmen, die werden im Code ignoriert. Da ist immer viel "Persönlichkeit" dabei. Beispiele im Anhang.
Im FHEMWEB kann der alternative Editor helfen, z.B.:
attr WEB JavaScripts codemirror/fhem_codemirror.js
attr WEB codemirrorParam { "lineNumbers":true }


BTW: Ich finde Du hast etwas "überklammert" ;)

Gruß Otto
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

CoolTux

#2
(
        [smart_pi:Lief1]+[smart_pi:Lief2]+[smart_pi:Lief3]) < -1500
    and [STEUERUNG27] eq "on"
    and [Strahlung] > 200)
    and [PUMPE17] eq "off"
    and [PumpZeit:pulseTimePerDay] < 21600
    and ( [WINTER] eq "off"
        or ( [PumpZeit:pulseTimePerDay]<9600
            and ([WINTER] eq "on" )
        or [NURPUMPE23] eq "on"
        or [SALZEIN] eq "on"
        or [BADEN] eq "on"
        or [wetter_eigheim:TempAussen] < 0
     )
)
(set PUMPE17 on)
  (define SALZON at +00:04 set SALZ24 on)
  (set PumpZeit calc)
  (delete PUMPEAUSZEIT)
  (delete SALZAUSZEIT)

DOELSE
(set PumpZeit calc)


Vielleicht so. Ist bisschen schöner gemacht. Und vor allem ohne die ganzen unnötigen Klammern.
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

Eisenberg188

DANKE für Tips.

Ich dachte Zeilenumbrüche und Einrückungen sind nicht erlaubt.

Um die Klammern und die AND OR - Regel habe ich mich nicht gekümmert. Habe seinerzeit gelernt, sie trotzdem zu machen.
Aber ohne ist es viel schöner. Nur die Wichtigen eben.

6 Raspi: 3 Fhem, Weewx, SmartPi, Kodi; davis Vintage Pro2; OwnAndroidApps (Maxwell 10)

CoolTux

Zitat von: Eisenberg188 am 11 Juni 2020, 11:25:30
DANKE für Tips.

Ich dachte Zeilenumbrüche und Einrückungen sind nicht erlaubt.

Um die Klammern und die AND OR - Regel habe ich mich nicht gekümmert. Habe seinerzeit gelernt, sie trotzdem zu machen.
Aber ohne ist es viel schöner. Nur die Wichtigen eben.

Ich habe es bei mir so ähnlich, nur in klein halt. Probier einfach mal.
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

Damian

Zitat von: Eisenberg188 am 11 Juni 2020, 11:25:30
DANKE für Tips.

Ich dachte Zeilenumbrüche und Einrückungen sind nicht erlaubt.

Um die Klammern und die AND OR - Regel habe ich mich nicht gekümmert. Habe seinerzeit gelernt, sie trotzdem zu machen.
Aber ohne ist es viel schöner. Nur die Wichtigen eben.

Für das Modul DOIF gelten eigene Regeln, die bei anderen Modulen nicht gelten müssen:

https://fhem.de/commandref_DE.html#DOIF_Lesbarkeit_der_Definitionen
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Eisenberg188

Ich habe
fhem.cfg
direkt editiert.

Dann geht die Formatierung verloren, bzw. war es nicht möglich.
6 Raspi: 3 Fhem, Weewx, SmartPi, Kodi; davis Vintage Pro2; OwnAndroidApps (Maxwell 10)

Otto123

Nein geht sie nicht.
Aber direktes Editieren ist eben der falsche Weg.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Tedious

Würde beim direkten editieren (falls Windows-Rechner als Arbeitsplatz) Notepad++ empfhelen, mit dem fhem Sytax-Highlighting. Minimiert definitiv Fehler...
FHEM auf Proxmox-VM (Intel NUC) mit 4xMapleCUN (433,3x868) und Jeelink, HUE, MiLight, Max!, SonOff, Zigbee, Alexa, uvm...

MadMax-FHEM

Wenn bestimmte Module im Einsatz sind (aber mittlerweile ;)  auch unabhängig davon) würde ich Abstand nehmen vom direkten Editieren!

Egal welches System und welcher Editor...

Z.B. alexa-fhem, gassistant, ...

Wurde ja auch bereits "ausgesprochen" und ist vielfach im Forum zu lesen...

Aber: jeder wie er will ;)

Manche nehmen halt dann (zurecht) Abstand bzgl. Hilfestellung...

Weil manche "Probleme" tatsächlich vom manuellen Editieren stammen (können) und dabei zu helfen ist schwer/mühsam/unmöglich...

Aber nur meine Meinung (selbst zu Beginn lange Zeit manuell editiert ;)  aber gibt eigentlich wirklich KEINEN Grund [mehr] das zu tun)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)