Hauptmenü

Übersichlichkeit in cfg

Begonnen von djhans, 31 Januar 2014, 12:14:52

Vorheriges Thema - Nächstes Thema

djhans

Hallo,
habe ein Problem mit der Übersichtlichkeit in cfg-Dateien.
Ich möchte verschiedene Befehle einmalig 5min nach Start von fhem ausführen lassen. Damit das ganze übersichtlich bleibt, habe ich es in einer cfg-Datei strukturiert. per include wird die Datei nun in fhem eingebunden.

# Sound-Einstellung für alle Sonoskomponenten
#
# wird 5min verzögert ausgeführt
#
define a5 at +00:05:00 \
#
# Bad, Play 1
#
set Sonos_Bad Volume 5;;\
set Sonos_Bad Treble 10;;\
set Sonos_Bad Bass 3;;\
set Sonos_Bad Balance 0;;\
set Sonos_Bad Loudness 1;;
#


Leider klappt das nicht. Wenn ich die Kommentare zwischen Define und dem 1. set weglasse, läuft es! Wo liegt das Problem? Oder wie kann man es übersichtlich machen. Die Liste ist in Wahrheit um Einiges länger...

djhans.

Rince

Und wo ist das notify, welches auf global:INITIALICED (so ähnlich, kann grad nicht nachsehen) dein definiertes a5 auslöst?

Die fhem.cfg ist keine autoexec.bat, die der Reihe nach alles ausführt was drinn steht.


Wenn du was definierst, musst dich auch drum kümmern das es irgendwann ausgeführt wird :)
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

Puschel74

Hallo,

Zitathabe ein Problem mit der Übersichtlichkeit in cfg-Dateien.
FHEM hat damit aber kein Problem.

2 Möglichkeiten:
1. Finger weg von der fhem.cfg - FHEM schreibt die Codes schon richtig dort rein.
oder
2. In der fhem.cfg rumfuhrwerken und sich dann aber bitte selbst drum kümmern wenn was nicht klappt.

FHEM benötigt keine Kommentarzeilen - es kann die Codes auch ohne Kommentare interpretieren und ausführen.
Wenn du wirklich Kommentare verwenden willst dann kopier dir die fhem.cfg - streu deine Kommentare ein und druck dir das Ergebniss aus oder speicher dir die Datei dann auf dem Rechner ab.

Ach ja. Wenn du schon in der fhem.cfg "programmierst" dann musst du auch die FHEM-internen Vorgaben kennen und dich daran halten.
Welche das sind?
Keine Ahnung - ich lass FHEM selbst in seiner fhem.cfg rumschreiben.
Ich mach alles über das FHEMWEB.
Warum?
Weil FHEM schon weiss was es wo abspeichert und mir der Aufbau und das Aussehen der fhem.cfg egal sind.

Grüsse
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

Wernieman

Als kleiner "Denkanstoß"

define a5 at +00:05:00 \
#


Du beendest Zeile 1 mit "\" aber in der nächsten Zeile nicht (würde auch nichts bringen). Überlege Dir bitte, was das "\" macht ...
- 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

djhans

Hallo,

sicherlich wird fhem das korrekt wegschreiben... Aber irgendwann will man wissen, was man mal vor Monaten programmiert hat und da sind Kommentare schon hilfreich. Ich kann mir nicht vorstellen, dass jemand nach einem halben Jahr noch durch seine Konfiguration steigt, wenn die nicht kommentiert ist. Das muss doch gehen?

define a5 at +00:05:00 \
# \

funktioniert auch nicht... Die Syntax ist falsch, sagt fhem..oder braucht man für Kommentare auch ein ; ?

djhans

djhans.


betateilchen

innerhalb eines defines funktionieren keine Kommentare.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

jedes device hat ein comment attribut. damit kannst du kommentare ohne files zu editieren.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

betateilchen

es geht aber nicht um einen Kommentar beim Device  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

justme1968

der einmal kram gehört in ein notify auf global:INITIALIZED und das ist ein device.

wenn es im notify zu unübersichtlich wird gehört es in mehrere. das sind wider devices. oder vom notify wird etwas in myUtils aufgerufen und da kann man wieder kommentieren so viel man will.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

betateilchen

ja. Aber eine der vom TE gestellten Fragen war doch eindeutig, warum seine jetzige Lösung nicht funktioniert.

Zitat von: djhans am 31 Januar 2014, 12:14:52Leider klappt das nicht. Wenn ich die Kommentare zwischen Define und dem 1. set weglasse, läuft es! Wo liegt das Problem?

und darauf ist die Antwort: Weil in defines keine Kommentare funktionieren.

Was Du ihm jetzt beschreibst, ist die Antwort auf seinen zweiten Fragenkomplex:

Zitat von: djhans am 31 Januar 2014, 12:14:52Oder wie kann man es übersichtlich machen.

und da könnte ich mir vorstellen, dass diese Antwort nicht wirklich ausführlich genug ist, um wirklich weiterzuhelfen.

Davon abgesehen kann es durchaus auch Anwendungsfälle geben, in denen man eine Ausführung wirklich erst fünf Minuten nach dem FHEM Start haben möchte. Man sollte also in einem solchen Fall ein notify auf global:INITIALIZED definieren, das wiederum ein at definiert, das sich auf den Zeitpunkt INITIALIZED+5min bezieht  8)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

djhans

#10
Hallo Kollegen,
ich verstehe nur Bahnhof!
Eigentlich dachte ich, dass mein Problemchen trivial ist, scheint aber nicht zu sein. Deshalb noch einmal ein Erklärungsversuch mit der Bitte um einen Lösungsvorschlag. Das mit den Kommentaren im define habe ich jetzt verstanden. Ist zwar blöd, aber nicht zu ändern.

Betateilchen hat mein Problem erkannt. Das Sonos System benötigt nach dem fhem Start eine gewisse Zeit, bis es initialisiert ist. Danach möchte ich alle Komponeten mit entprechenden Parametern laden. Also eine Reihe von set Sonos_Bad Volume 3, set Sonos_Schlazimmer Volume 10, etc..-Befehlen.

habe dazu eine Sonos_Sound.cfg gebaut, die ich testweise aus dem Webinterface mit include "Sonos_Sound.cfg" aufgerufen habe. Der Code define a5 at +00:05:00....usw. (siehe oben) funktioniert und nach 5 min wurden die Parameter in das Sonos System geschrieben.

Nun dachte ich halt, man ruft einfach den include aus der fhem.cfg auf und beim Start von fhem ist dann alles prima! Aber das funzt nicht! habe verstanden, dass man einen notify benötigt, der den Code dann ausführt. Aber so richtig komme ich nicht weiter...

Nochmals Danke für Eure unendliche Geduld,
Christian.

Puschel74

Hallo,

Zitatdass jemand nach einem halben Jahr noch durch seine Konfiguration steigt, wenn die nicht kommentiert ist.
Wenn at oder notify mit a5 benannt werden ist kalr das da niemand mehr durchblickt.

Das schöne an FHEM ist aber das man den at (oder notify oder Geräten) sinnige und sprechende Namen geben kann.

Ein
define Sonos_initialized at +00:05:00 ...
sagt einem sicher auch nach 2 Jahren noch worum es geht.

Ein notify auf global:INITIALIZED sollte sich allerdings im Forum mithilfe der Suchfunktion finden lassen.
Wenn dir notify nichts sagt würde ich vorschlagen mal das Einsteiger.pdf, die commandref und die Suchfunktion im Forum zu bemühen.

Grüsse
Zotac BI323 als Server mit DBLog
CUNO für FHT80B, 3 HM-Lan per vCCU, RasPi mit CUL433 für Somfy-Rollo (F2F), RasPi mit I2C(LM75) (F2F), RasPi für Panstamp+Vegetronix +SONOS(F2F)
Ich beantworte keine Supportanfragen per PM! Bitte im Forum suchen oder einen Beitrag erstellen.

djhans

Hallo,
sicher! BEvor die Klamotten irgendwann mal produktiv werden, kriegen sie auch vernünftige Namen. Das ist ein TEst um zu prüfen, was geht und was nicht geht!

Die Dokus zu Notify habe ich bestimmt schon 10 x gelesen, aber offenbar bin ich zu blöd für fhem. notify auf global:INITIALIZED fine ich auch nix zu.
ICh finde es wirklich toll,dass es Leute gibt, die sich bereit erklären einigen DAUs das fhem zu erklären, aber ich habe ein wenig den Eindruck, dass ihr Experten Euch nicht in die DAUs hineinversetzten könnt. Mir fehlen in den Dokus die Zusammenhänge und auch zur Syntax wird nicht viel erklärt. Warum kommt da ein Semikolon hin oder warum geht der Kommentar da gerade nicht. Wann kommt die runde Klammer, wann die Geschweifte...also wenn man gerade mit fhem anfängt is das nicht ganz einfach zu verstehen.

"fhem.cfg ist keine autoexec.bat" habe ich hier gelesen.. OK. das mag sein, aber wie funktioniert es dann?

Egal!
Ich fürchte,  fhem ist eher etwas für Programmierprofis und nichts für einfache Anwender, die schnell mal ein paar Lampen schalten möchten. Es ist einfach zu komplex. Wenn man nicht der Profi ist, dann muss man wohl doch auf kommerzielle Produkte wie Loxone zurückgreifen um zum Ziel zu kommen.

Bitte nicht falsch verstehen, ich finde fhem toll! Aber offenbar nichts für mich, ic durchschaue es einfach nicht....

djhans.

Rince

Na, du sollst ja was lernen dabei. Außerdem ist auch der Anfängerbereich kein Schnellimbiss, der dir dein Wunschmenü kocht. Aber du bekommst hier die Rezepte dafür ;)

Warum die fhem.cfg nicht die autoexec.bat ist:

Selbige wurde bekanntlich beim Start von MS-Dos Zeile für Zeile abgearbeitet, die Befehle jeweils ausgeführt.


Das ist bei der fhem.cfg nicht der Fall.

Die wird beim Start eingelesen. Aber nicht alles, was an Befehlen drinnen steht, wird auch sofort ausgeführt.

define WieAuchImmerDeineRoutineHeissensoll notify global:INITIALIZED set...


Dies bewirkt, dass nach dem Hochfahren (das ist das global:INITIALIZED) ein Befehl ausgeführt wird. Da kommt dein at dann hinten dazu.

Du musst fhem also sagen, dass nach dem Hochfahren was zu tun ist. Dies macht das notify...
Wer zu meinen Posts eine Frage schreibt und auf eine Antwort wartet, ist hiermit herzlich eingeladen mich per PN darauf aufmerksam zu machen. (Bitte mit Link zum betreffenden Thread)

herrmannj

für die cfg gibt es keine Schönheitspreise!

Besser über das frontend arbeiten. Dort sind Kommentare möglich, zum sortieren gibt es Gruppen und Räume (inkl hidden). Das manuelle bearbeiten der cfg löst keine Probleme sondern schafft welche.

vg
Jörg