Hauptmenü

Mehrzeilige Eingaben?

Begonnen von jw9, 11 Januar 2021, 12:53:10

Vorheriges Thema - Nächstes Thema

jw9

Hallo allerseits,

ich versuche gerade, eine PV-Anlage einzubinden, wie in dieser Anleitung beschrieben.

Das Einbinden der Datenquellen funktioniert soweit, und ich bekomme auch Daten geliefert.

Beim Absatz Anlegen Dummy als Energiebilanz komme ich aber nicht weiter.

Den Block zur Definition des Dum.Energy habe ich als gesamten Block in das Fenster kopiert, das erscheint wenn man das PlusQuadrat neben der Eingabezeile anklickt.

Als Fehlermeldung kommt
Zitat
Missing right curly or square bracket at (eval 16415) line 1, at end of line
syntax error at (eval 16415) line 1, at EOF

Das Problem schien mir zu sein, dass der Code-Block, der mit der Zeile

attr Dum.Energy stateFormat {
beginnt nur zeilenweise gelesen wird. Die Fehlermeldung schien mir also logisch zu sein.

Also habe ich die Zeilen zu einer einzigen Monster-Zeile zusammengefasst. Ergebnis: wieder Fehlermeldung

Missing right curly or square bracket at (eval 17849) line 1, at end of line
syntax error at (eval 17849) line 1, at EOF

Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command my, try help.
Unknown command ", try help.
Unknown command padding-left:5px, try help.
Unknown command font-weight:bold'>aktueller, try help.
Unknown command padding-left:5px, try help.
Unknown command font-weight:bold'>Heute, try help.
Unknown command padding-left:5px, try help.
Unknown command font-weight:bold'>dieser, try help.
Unknown command padding-left:5px, try help.
Unknown command text-align:left, try help.
Unknown command font-weight:bold'>PV-Erzeugung, try help.
Unknown command padding-left:5px'>".$pv.", try help.
Unknown command padding-left:5px'>".$pvd.", try help.
Unknown command padding-left:5px'>".$pvm.", try help.
Unknown command padding-left:5px, try help.
Unknown command text-align:left, try help.
Unknown command font-weight:bold'>Einspeisung, try help.
Unknown command padding-left:5px'>".$gfi.", try help.
Unknown command padding-left:5px'>".$gfid.", try help.
Unknown command padding-left:5px'>".$gfim.", try help.
Unknown command padding-left:5px, try help.
Unknown command text-align:left, try help.
Unknown command font-weight:bold'>Bezug, try help.
Unknown command padding-left:5px'>".$eb.", try help.
Unknown command padding-left:5px'>".$ebd.", try help.
Unknown command padding-left:5px'>".$ebm.", try help.
Unknown command padding-left:5px, try help.
Unknown command text-align:left, try help.
Unknown command font-weight:bold'>Energieverbrauch, try help.
Unknown command padding-left:5px'>".$et.", try help.
Unknown command padding-left:5px'>".$etd.", try help.
Unknown command padding-left:5px'>".$etm.", try help.
Unknown command padding-left:5px, try help.
Unknown command text-align:left, try help.
Unknown command font-weight:bold'>Autarkiequote, try help.
Unknown command padding-left:5px'>".$aq.", try help.
Unknown command padding-left:5px'>".$aqd.", try help.
Unknown command padding-left:5px'>".$aqm.", try help.
Unknown command padding-left:5px, try help.
Unknown command text-align:left, try help.
Unknown command font-weight:bold'>Eigenverbrauchsquote, try help.
Unknown command padding-left:5px'>".$sq.", try help.
Unknown command padding-left:5px'>".$sqd.", try help.
Unknown command padding-left:5px'>".$sqm.", try help.
Unknown command padding-left:5px, try help.
Unknown command text-align:left, try help.
Unknown command font-weight:bold'>Berechnung, try help.
Unknown command padding-left:5px'>".$md.", try help.
Unknown command padding-left:5px'>".$cd.", try help.
Unknown command padding-left:5px'>".$cm.", try help.


Was ist denn der korrekte Weg, solche mehrzeiligen Code-Blöcke einzugeben?

Beta-User

Da hat jemand im Wiki leider RAW-DEF-kompatible Schreibweise an der einen Stelle verwendet, nicht aber durchgängig (und das dann auch noch falsch angekündigt).

Wenn du das über "das grüne Plus" machen willst: Am Zeilenende aller Zeilen bis auf der letzten den Zeilenumbruch maskieren ("\"). Einfacher ist es vermutlich, diesen Attributinhalt dann über das Attribut-Feld reinzukopieren, da braucht man es nicht.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

betateilchen

Hört denn der Unfug mit solchen Monstertexten in Attributen niemals auf?

Ein so langer Codeblock gehört in die 99_myUtils.pm. Basta.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Beta-User

...korrekt...

Und das ganze samt dem weiteren Zusatzcode in eine gepackagte separate myUtils-Datei, die man unter contrib runterladen kann und auch entsprechende cref enthält?

Darfst du gerne bei den Solar-Leuten einkippen ;) ...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

jw9

Vielen Dank erst einmal für die schnellen Antworten!

Das mit den Backslashes hört sich als Workaround erstmal ganz gut an.

Zu der RAW-DEF-Geschichte muss ich wohl noch etwas recherchieren..

Die 99_myUtils.pm wäre eine Datei, die ich selbst erstelle? Und es ist sichergestellt, dass diese Datei auch nicht (von einem Update) überschrieben wird? Wie bindet man solch eine Datei ein? Da muss man mit sicherheit auch irgendwelche Naming-Conventions einhalten etc/pp.

Insgesamt halte ich die Konfiguration über ein Eingabefeld in einem Web-Frontend für sehr unglücklich. Das ist zwar ganz hübsch , wenn man schnell mal was testen möchte. Für eine reproduzierbare oder auch automatisierte Konfiguration ist das aber nicht brauchbar. Ich konfiguriere alle meine Rechner vollautomatisch mit einem (selbstgeschriebenen) System ähnlich cfengine. Das beisst sich mit der interaktiven Konfiguration von fhem.

Die Konfiguration über eine Datei (wie zB 99_wieAuchImmer.pm) käme mir insofern deutlich entgegen. Viel besser wäre es, wenn man die Konfiguration auf viele Dateien innerhalb eines Verzeichnisses verteilen könnte (wie zB /etc/apt/conf.d).

Beta-User

Also: eine "myUtils" ist - im Prinzip - eine automatisch geladene Moduldatei, die Perl-Funktionen bereitstellt, siehe https://wiki.fhem.de/wiki/99_myUtils_anlegen.

Das hat mit der Konfiguration nur dahingehend was zu tun, dass du z.B. eben für stateFormat dann einfach die Funktion aufrufst, statt den kompletten Perl-Code da reinzumalen.

Verteilte cfg geht, Stichwort: "include", aber wenn ich das höre, gruselt es mich, und Einsteigern, die Fragen dieser Art und Güte hier stellen (ist nicht persönlich gemeint), kann man nur raten, die Hände von der cfg zu lassen und definitiv NICHT mit includes anzufangen...
Grund v.a.: über FHEMWEB kann man als Modulautor die Syntax checken und ggf. Hinweise geben, wie es geht.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

betateilchen

Zitat von: jw9 am 11 Januar 2021, 13:56:57
Viel besser wäre es, wenn man die Konfiguration auf viele Dateien innerhalb eines Verzeichnisses verteilen könnte (wie zB /etc/apt/conf.d).

ich geh schonmal Popcorn holen...
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

jw9

Zitat von: Beta-User am 11 Januar 2021, 14:03:58
Also: eine "myUtils" ist - im Prinzip - eine automatisch geladene Moduldatei, die Perl-Funktionen bereitstellt, siehe https://wiki.fhem.de/wiki/99_myUtils_anlegen.

Das hat mit der Konfiguration nur dahingehend was zu tun, dass du z.B. eben für stateFormat dann einfach die Funktion aufrufst, statt den kompletten Perl-Code da reinzumalen.
Soweit klar.

Zitat
Verteilte cfg geht, Stichwort: "include", aber wenn ich das höre, gruselt es mich, und Einsteigern, die Fragen dieser Art und Güte hier stellen (ist nicht persönlich gemeint), kann man nur raten, die Hände von der cfg zu lassen und definitiv NICHT mit includes anzufangen...
Ob "include" das richtige Mittel dazu wäre, sei mal dahingestellt.

Verteilte Config ist ein probates Mittel, um zu verhindern, dass Konfiguration von mehreren Autoritäten (zB ein Teil automatisch generiert, anderer Teil interaktiv) sich nicht gegenseitig in die Quere kommen. Nicht umsonst sieht man immer mehr *.d-Verzeichnisse bei allen Distributionen. Das muss aber nicht zwingend über eine interne include-directive implementiert sein, siehe unten.

Das eigentliche Problem ist vielmehr der Interaktive Charakter der fhem-Konfiguration. Es wäre schon viel geholfen, wenn man das, was man normalerweise in die Eingabezeile bzw ins PlusQuadrat eingibt, an fhem.pl zB über die STDIN und/oder über eine temporäre Datei verfüttern könnte.

Das könnte zB so aussehen:

#! /bin/sh

VERSION=6.0

apt install xxx yyy zzz foo bar baz
wget http://fhem.de/fhem-$VERSION.deb
dpkg -i fhem-$VERSION.deb

cd /opt/fhem && sudo -u fhem /opt/fhem/fhem.pl <<__EOF__
update
shutdown restart
__EOF__

cd /opt/fhem && sudo -u fhem /opt/fhem/fhem.pl <<__EOF__
attr WEB sslVersion TLSv12:!SSLv3
attr WEB HTTPS 1
save
shutdown restart
__EOF__


Oder verteilte Config, wie oben geschrieben:

for i in /meine/configs/fhem.d/*; do sudo -u fhem /opt/fhem/fhem.pl read $i; done


Oder so ähnlich...

Man muss dazu in keinster Weise wissen, wie fhem.cfg aufgebaut ist und welche Prüfungen/Modifikationen fhem.pl beim Abspeichern vornimmt. Im fhem.d-Verzeichmis liegen die Code-Schnipsel so vor, wie sie auf den Wiki-Seiten vorzufinden sind.
Zitat
Grund v.a.: über FHEMWEB kann man als Modulautor die Syntax checken und ggf. Hinweise geben, wie es geht.
Ich sehe hier keinen Widerspruch...

Der Code der aus einer Datei gelesen wird kann doch exakt der gleichen Prüfung/Behandlung unterzogen werden wie wenn er aus dem PlusQuadrat kommt. Ich sehe nicht, warum man da eine andere Behandlung vornehmen sollte.

Und vor Allem: wer Konfiguration automatisch erstellt, ist selbstverständlich auch dafür verantwortlich, dass die generierte Konfiguration auch korrekt ist, und zwar nicht nur in Bezug auf Syntax, sondern vor Allem auch in Bezug auf Verknüpfungen.

jw9

Zitat von: Beta-User am 11 Januar 2021, 12:58:05
Wenn du das über "das grüne Plus" machen willst: Am Zeilenende aller Zeilen bis auf der letzten den Zeilenumbruch maskieren ("\").
Der Backslash hilft leider nicht. Immer noch der gleiche Fehler.

Auch dann, wenn ich beim HTML-Code (String, der sich über viele Zeilen hinwegzieht) die Backslashes weglasse...

Beta-User

...vermutlich hat betateilchen recht und das wird ein Popcorn-Thread...

Ich versuch's trotzdem mal...
Zitat von: jw9 am 11 Januar 2021, 17:29:02
Das eigentliche Problem ist vielmehr der Interaktive Charakter der fhem-Konfiguration. Es wäre schon viel geholfen, wenn man das, was man normalerweise in die Eingabezeile bzw ins PlusQuadrat eingibt, an fhem.pl zB über die STDIN und/oder über eine temporäre Datei verfüttern könnte.
[...]
Das sollte gehen, auch und gerade mit #include. Nach meinem Verständnis ist das (wie auch fast aller Text in fhem.cfg, so man die hat) schlicht "Kommandozeilen-Code".

Zitat von: jw9 am 11 Januar 2021, 17:45:02
Der Backslash hilft leider nicht. Immer noch der gleiche Fehler.

Auch dann, wenn ich beim HTML-Code (String, der sich über viele Zeilen hinwegzieht) die Backslashes weglasse...


Damit ist aber mitnichten beantwortet, ob das auch nur ansatzweise sinnvoll ist.
ZitatMan muss dazu in keinster Weise wissen, wie fhem.cfg aufgebaut ist und welche Prüfungen/Modifikationen fhem.pl beim Abspeichern vornimmt.
Nö, muss man nicht, und in der Regel macht man sich auch 0 Gedanken dazu, v.a., wenn die Konfigurationsdaten in einer Datenbank liegen - wie bei mir hier...
Bie der Eingabe können die Fehler passieren, und dann lädt eben FHEM diese Teile nicht, abgespeichert wird nur, was mal erfolgreich in die Konfiguration geladen wurde, und dazu eben noch die aktuellen Readingwerte (und manche laufenden Timer).

Zitat
Der Code der aus einer Datei gelesen wird kann doch exakt der gleichen Prüfung/Behandlung unterzogen werden wie wenn er aus dem PlusQuadrat kommt. Ich sehe nicht, warum man da eine andere Behandlung vornehmen sollte.
Nope. Wenn nach $init_done bestimmte Eingaben kommen, kann man dem User sagen, dass z.B. das vermeintlich zu steuernde Device nicht exisitert und die Annahme verweigern. Kommt das vor $init_done, kann man noch gar nicht wissen, ob das später noch definiert werden wird, und schreibt dann - so man es als Maintainer gut mit dem User meint - eben was ins Log; dann kann er das da ggf. auch später noch finden, falls er mal das Zieldevice umbenannt oder gelöscht hat usw....

ZitatUnd vor Allem: wer Konfiguration automatisch erstellt, ist selbstverständlich auch dafür verantwortlich, dass die generierte Konfiguration auch korrekt ist, und zwar nicht nur in Bezug auf Syntax, sondern vor Allem auch in Bezug auf Verknüpfungen.
Jo. Von daher: viel Spaß beim Entwickeln einer solchen Lösung ;) .



Den Code im Wiki hatte ich zwischenzeitlich erweitert, nicht, dass da jetzt zwei backslashes stehen... Ansonsten wie gesagt: einfach ohne die Backslashes in das Attribut-Feld eingeben, oder noch besser (du kannst ja Programmieren): Das ganze direkt in myUtils auslagern, fertig die Laube...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Wernieman

Ein Config System wie cfengine (o.Ä.) hat Vorteile, wenn man mehrere Server managen muß. Hier dagegen wir EIN Server administriert.

Teoretisch könntest Du über die telnet-Schnitstelle code "reinpusten". Nur ... wie willst Du ichergehen, das nicht immer der gleiche Code "reingepustet" wird?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

jw9

Zitat von: Beta-User am 11 Januar 2021, 17:51:22
...vermutlich hat betateilchen recht und das wird ein Popcorn-Thread...
Auch ein Pocorn-Thread kann sinnvolle Ergebnisse vorbringen, wenn man nicht komplett aneinander vorbeiredet.

Zitat
Ich versuch's trotzdem mal...Das sollte gehen, auch und gerade mit #include. Nach meinem Verständnis ist das (wie auch fast aller Text in fhem.cfg, so man die hat) schlicht "Kommandozeilen-Code".
Ein Anfang könnte erst einmal sein, sich über den Begriff "Kommandozeile" zu einigen.
Das, was in der fhem.cfg steht, kann ich nicht an eine Shell verfüttern. Können wir uns hier auf den Begriff "Web-Kommandozeile" einigen?

Zitat
ZitatBackslashes helfen nicht
Damit ist aber mitnichten beantwortet, ob das auch nur ansatzweise sinnvoll ist.
Stimmt. Es zeigt aber, dass mehrere (ggf unterschiedliche) Quote-Ebenen nicht von Vorteil sind.

Kopiert man das in ein Attribute-Feld, so werden immer noch mehrere Quote-Ebenen durchlaufen.

Zitat
Zitatmuss nicht wissen, welche Prüfungen/Modifikationen bei Abspeichern vorgenommen werden
Nö, muss man nicht,
Insbesondere auch nicht, weil das nicht ganz dem entspricht, was man ursprünglich in die Web-Kommandozeile gefüttert hat. So ist es zB mit uuid's angereichert. Und auch die Reihenfolge stimmt nicht mehr.

Zitatund in der Regel macht man sich auch 0 Gedanken dazu, v.a., wenn die Konfigurationsdaten in einer Datenbank liegen - wie bei mir hier...
Beschreib doch mal wie Du das organisiert hast?

Möglicherweise liegen wir zwei hier gar nicht so weit auseinander. Deine Config liegt in einer Datenbank, meine in Dateien. Die Frage ist nun, wie man diese Config möglichst schmerzarm in fhem importiert, so dass dabei hinten eine fhem.cfg herausfällt so als ob man es in die Web-Kommandozeile eingegeben hätte.

Zitat
Bie der Eingabe können die Fehler passieren, und dann lädt eben FHEM diese Teile nicht, abgespeichert wird nur, was mal erfolgreich in die Konfiguration geladen wurde, und dazu eben noch die aktuellen Readingwerte (und manche laufenden Timer).
Bei der interaktiven Eingabe können Fehler passieren. Das ist auch einer der Gründe, warum ich allergisch auf manuelle Konfiguration bin. Ich will reproduzierbare Ergebnisse haben.

Zitat
Nope. Wenn nach $init_done bestimmte Eingaben kommen, kann man dem User sagen, dass z.B. das vermeintlich zu steuernde Device nicht exisitert und die Annahme verweigern. Kommt das vor $init_done, kann man noch gar nicht wissen, ob das später noch definiert werden wird, und schreibt dann - so man es als Maintainer gut mit dem User meint - eben was ins Log; dann kann er das da ggf. auch später noch finden, falls er mal das Zieldevice umbenannt oder gelöscht hat usw....
Hier reden wir wohl mächtig aneinander vorbei.

Weder in der Dokumentation noch in Wiki/HOWTOs wird die Konfiguration über fhem.cfg beschrieben. Grundsätzlich wird die Konfiguration über die Web-Kommandozeile beschrieben. Das ist also die Ebene über die wir reden. Wenn man Befehle in die Web-Kommandozeile eingibt, ist $init_done bereits gesetzt, oder nicht?

Soweit ich das überblicke, ist $init_done für Modul-Entwickler. Ich rede aber nicht über die Entwicklung eines Moduls, sondern lediglich davon, die normale Konfiguration non-interaktiv in fhem einkippen zu können. Im Grunde also über nichts anderes als das, was der normale Benutzer mittels Cut'n'Paste ins PlusQuadrat hineinkippt, nur dass es eben non-interaktiv (also über Dateien oder STDIN) erfolgen soll.

Zitat
Jo. Von daher: viel Spaß beim Entwickeln einer solchen Lösung ;) .
Vielen Dank! Diesen Spass habe ich bereits seit 2002. Insbesondere auch weil ich dadurch ohne viel nachzudenken mal schnell eine (produktive!) Kiste plattmachen kann und in kürzester Zeit wieder (mit dem gerade aktuellsten Release) komplett net aufsetzen kann. Alle benötigten Subsysteme werden ohne Weiteres Zutun installiert und wieder konfiguriert.

Zitat
Den Code im Wiki hatte ich zwischenzeitlich erweitert, nicht, dass da jetzt zwei backslashes stehen...
Nein, ich hatte das noch auf Basis des alten Codes gemacht.

Aber auch der geänderte Code aus dem Wiki geht nicht. Nur dass jetzt die Fehlermeldung nicht mehr Zeile 1 nennt sondern Zeile 2.

Mir scheint, dass an einigen Stellen auch die Strichpunkte gedoppelt werden müssten. Die Quoting-Regeln von fhem habe ich mir noch nicht so angetan.

jw9

Zitat von: Wernieman am 11 Januar 2021, 18:05:47
Ein Config System wie cfengine (o.Ä.) hat Vorteile, wenn man mehrere Server managen muß. Hier dagegen wir EIN Server administriert.
Es hat auch Vorteile, wenn man ein und denselben Server mehrfach installiert, aus welchem Grund auch immer.

Und wieso reden wir über EINEN Server?

Wer sagt, dass in einer Installation nur ein fhem-server laufen darf? Aus physikalischen Gegebenheiten würde ich einen in der Garage, einen im Gartenhaus und dann auch noch einen je Stockwerk haben. Ohne automatische Konfiguration befürchte ich jetzt schon, dass ich den Überblick verliere.

Zitat
Teoretisch könntest Du über die telnet-Schnitstelle code "reinpusten". Nur ... wie willst Du ichergehen, das nicht immer der gleiche Code "reingepustet" wird?
Ja, das "idempotent"-Thema. Hast gut aufgepasst.

Aber darüber muss man sich keine Gedanken machen, solang man nur interaktiv konfigurieren kann..

Wernieman

ZitatWer sagt, dass in einer Installation nur ein fhem-server laufen darf? Aus physikalischen Gegebenheiten würde ich einen in der Garage, einen im Gartenhaus und dann auch noch einen je Stockwerk haben.
Soo so viel Leistung braucht FHEM auch nicht, das Du so differenziert arbeiten mußt. Ein Automatisierungs-System brint Dir eigentlich nur etwas, wenn Du die Infos Zentral sammelst ....

ZitatJa, das "idempotent"-Thema. Hast gut aufgepasst.
Deinen Ton nehme ich an, das Du Lust auf Stänkern und nicht auf Lösungen hast. Bin raus ... habe kein Popcorn mehr
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

Beta-User

Zitat von: jw9 am 11 Januar 2021, 20:47:48
Ein Anfang könnte erst einmal sein, sich über den Begriff "Kommandozeile" zu einigen.
OK, gemeint war das "Kommandofeld" entsprechend der Begrifflichkeit im "Quick-Start".

Zitat
Stimmt. Es zeigt aber, dass mehrere (ggf unterschiedliche) Quote-Ebenen nicht von Vorteil sind.
Das mag sein, aber "cfg-Ge-Editiere" war eben früher, und manches (v.a. das RAW-Dingens) wurde später eben erst später implementiert. Afaik. v.a. auch deswegen, weil "man" gemerkt hat, dass sich viele Probleme vermeiden lassen, wenn man den Weg über FHEMWEB zum default macht und dort viele typische Fehler schon bei der Eingabe abgefangen werden.

Zitat
Beschreib doch mal wie Du das organisiert hast?
Ich nutze configDB (s. commandref) und habe "nur" ein einziges System, weil mir das Verteilen und Doppeln von Infos auch zu doof ist; wo sinnvoll, versuche ich Teile der Logik eher dann extern abzubilden, z.B. in Arduino-Code@MySensors und dann einfach die Ergebnisse an FHEM zu übermitteln und FHEM ansonsten möglichst nicht mit Zeug zu belasten, das ich auch anderweitig bequem abgebildet bekomme (die berühmten Mülltonnen, z.B.). Ergo macht FHEM v.a. "Hardware" und grundlegende Automatismen.

Es ist aber ein (bei Neulingen weit verbreiteter) Irrtum, dass sich die Kondiguration nur in der fhem.cfg findet, manche Module lagern ihre (mglichen Konfigurations-) Daten auch woanders.

Ob es Sinn macht, da irgendwas zu Automatisieren beim Erstellen der cfg, kann ich als Nicht-IT'ler nicht beantworten, letztlich _glaube ich_, dass jedes FHEM-System (auch bei mehreren verteilten wie es dir vorschwebt) so individuell ist, dass der Automatisierungsaufwand höher ist wie der Nutzen. Wer eine zentrale Verwaltung und Versionierung will, kann configDB via Netzwerk oder andere Methoden seiner Wahl nutzen, um die Konfiguration von wo auch immer her zu laden.

Zitat
Aber auch der geänderte Code aus dem Wiki geht nicht. Nur dass jetzt die Fehlermeldung nicht mehr Zeile 1 nennt sondern Zeile 2.

Mir scheint, dass an einigen Stellen auch die Strichpunkte gedoppelt werden müssten. Die Quoting-Regeln von fhem habe ich mir noch nicht so angetan.
Vermutlich. Ist nicht meine Baustelle, von daher habe ich meine untauglichen Änderungen im Wiki rückgängig gemacht.
FHEM und die Doku lebt eben auch davon, dass es viele gibt, die daran mitwirken, und da passieren eben auch mal Fehler. Gerade deswegen: (erstmalige) Eingabe via FHEMWEB, und die meisten Probleme sind beseitigt, wenn es mal in der cfg/db enthalten ist...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors