(gelöst) Nach einem "save" fehlen Zeilen in den Config-Files

Begonnen von wtue, 21 März 2014, 21:24:17

Vorheriges Thema - Nächstes Thema

wtue

Hallo FHEM Gemeinde,

ich habe die Gerätedefinitionen je Gerätegruppe in separate Config-Files ausgelagert und binde diese Dateien mit include in die fhem.cfg ein.


#
# include files mit Geraetedefinitionen
#
include fhem_CUL_0.cfg
# include fhem_HMLAN1.cfg
include fhem_Fritzbox.cfg
include fhem_Rolllaeden.cfg
include fhem_Heizung.cfg
include fhem_Schalter.cfg


Von den oberen beiden include Zeilen ist immer nur eine aktiv, die andere jeweils auskommentiert.

Damit möchte ich schnell zwischen dem CUL und HMLAN als IODev wechseln. Zusätzlich habe ich in den beiden Files noch ein dummy definiert. Beispiel fhem_CUL_0.cfg


#
# Definition des CUL
#
define CUL_0 CUL /dev/ttyACM0@9600 1034
attr CUL_0 hmId F11034
attr CUL_0 rfmode HomeMatic
attr CUL_0 room CUL_HM
attr CUL_0 verbose 3
#
define Funker dummy
set Funker CUL_0
#
#Ende
#


Der dummy enthält den Namen des IODev, den ich im nächsten File verwende. Beispiel fhem_Schalter.cfg auszugsweise

#
# Dimmer Wohnzimmer
#
define EG_Dimmer_WZ CUL_HM 1F6410
attr EG_Dimmer_WZ .devInfo 110100
attr EG_Dimmer_WZ .stc 20
# attr EG_Dimmer_WZ IODev CUL_0
{ fhem "attr EG_Dimmer_WZ IODev " . Value("Funker") }
attr EG_Dimmer_WZ autoReadReg 4_reqStatus
attr EG_Dimmer_WZ expert 2_full
attr EG_Dimmer_WZ firmware 2.1
attr EG_Dimmer_WZ model HM-LC-DIM1T-FM
attr EG_Dimmer_WZ peerIDs 00000000,
attr EG_Dimmer_WZ room Licht
attr EG_Dimmer_WZ serialNr KEQ0002762
attr EG_Dimmer_WZ subType dimmer
attr EG_Dimmer_WZ webCmd toggle:on:off:up:down:statusRequest
define FileLog_EG_Dimmer_WZ FileLog ./log/EG_Dimmer_WZ-%Y-%m.log EG_Dimmer_WZ
attr FileLog_EG_Dimmer_WZ logtype text
attr FileLog_EG_Dimmer_WZ room CUL_HM


Die Zeile mit dem ursprünglichen IODev habe ich auskommentiert und dafür die nächste Zeile eingebaut.

Das Konstrukt funktioniert und es sieht alles gut aus. Wenn ich jetzt aber ein "save config" mache, verschwindet die  Zeile

set Funker CUL_0

aus der fhem_CUL_0.cfg und die Zeile

{ fhem "attr EG_Dimmer_WZ IODev " . Value("Funker") }

aus der Gerätedefinition. Ist das so nicht zulässig oder was habe ich übersehen?

Edit:
Also ich habe mein Vorhaben wie oben beschrieben eingestellt.

Ich habe gelernt das fhem Fehler und Ungereimtheiten in der Konfiguration selbst "repariert". Damit war mein Ansatz von vorneherein zum scheiter verurteilt. Trotzdem war es gut dass ich mich da etwas festgebissen hatte. Das hat mir geholfen fhem etwas besser zu verstehen. Danke an die fhem Entwickler und Unterstützer.   
Raspi B+ mit HM-CFG-USB umgestellt von FB7390 mit CUL
8 HM-CC-RT-DN / 3 HM-LC-Bl1-FM / 10 HM-LC-Bl1PBU-FM / 1 HM-LC-Sw1PBU-FM / HM-LC-DIM1T-FM
3 FBDECT Schaltsteckdosen als Energiemonitore

Puschel74

Hallo,

Beitrag No.: 374

SET hat in der fhem.cfg nichts verloren es sei den es ist in einem Code verbaut.
Und das ist hier nicht der Fall.

Ich kann mich aber auch täuschen.

Grüße
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.

wtue

Danke für die Antwort. Ich habe extra mal etwas gewartet ob vielleicht weitere Antworten kommen. Das set in der fhem.cfg nichts verloren hat, habe ich bisher nicht gelesen.

Die Zeile

{ fhem "attr EG_Dimmer_WZ IODev " . Value("Funker") }

verschwindet ja auch aus der config und scheint so nicht gültig zu sein. Beides funktioniert aber, eben bis zu einem Save.

Ich habe irgendwo (Forum, Einsteiger.pdf, wiki .....) gelesen, dass alle Zeilen der fhem.cfg als Fhem-Code interpretiert werden. Danach müßte es zulässig sein. Mir ist aber auch nicht klar warum dann folgende Zeile nicht funktioniert.

attr EG_Dimmer_WZ IODev . Value("Funker")

Macht es evtl. Sinn diesen Beitrag z.B. nach "Automatisierung" zu verschieben? Ich möchte nicht gesteinigt werden indem ich einen neuen Beitrag erstelle.

Gruß Werner
Raspi B+ mit HM-CFG-USB umgestellt von FB7390 mit CUL
8 HM-CC-RT-DN / 3 HM-LC-Bl1-FM / 10 HM-LC-Bl1PBU-FM / 1 HM-LC-Sw1PBU-FM / HM-LC-DIM1T-FM
3 FBDECT Schaltsteckdosen als Energiemonitore

betateilchen

Zitat von: wtue am 24 März 2014, 11:19:08Das set in der fhem.cfg nichts verloren hat, habe ich bisher nicht gelesen.

Ist aber so. Die Befehle werden bei einem "save" einfach ignoriert, da sie weder ein "define" noch ein "attr" sind.

Und das ist auch gut so.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

wtue

Die Anweisungen sollen nur einmal beim Neustart von fhem oder beim rereadcfg ausgeführt werden. Deshalb habe ich das so versucht.

Wenn das so nicht geht, gehen soll, ungeschickt ist oder was sonst auch immer, sollte ich das in meiner 99_myUtils.pm unterbringen. Gibt es da schon einen fertigen Trigger oder muss ich den Neustart vom Programm erkennen und dann meine Funktion aufrufen die mir die Atribute für die IODev richtig setzt.

Die egentliche Aufgabe steckt ja in
{ fhem "attr EG_Dimmer_WZ IODev " . Value("Funker") }

Ich möchte aus einer entsprechend vorbelegten Variablen bei allen Devices das Attribut IODev setzen.
Raspi B+ mit HM-CFG-USB umgestellt von FB7390 mit CUL
8 HM-CC-RT-DN / 3 HM-LC-Bl1-FM / 10 HM-LC-Bl1PBU-FM / 1 HM-LC-Sw1PBU-FM / HM-LC-DIM1T-FM
3 FBDECT Schaltsteckdosen als Energiemonitore

betateilchen

Es gibt sowohl einen Trigger global:INITIALIZED der nach dem kompletten Start von fhem ausgeführt wird als auch einen Trigger global:REREADCFG (rate mal, wann...) und damit kannst Du einfach notifies steuern.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

wtue

Prima, ich werde entsprechend umbauen.

Zum Thema Initialisierung bei Neustart habe ich nicht wirklich was gefunden, vielleicht auch ungeschickt gesucht. Evtl. gibt es dazu mal etwas im Einsteiger.pdf

Ich markiere mal nicht als gelöst, weil die eigentliche Frage nach dieser Zeile bisher in den Anworten nicht vorkam. Ist das auch kein Weg den man gehen sollte, kann, darf .....

ZitatDie egentliche Aufgabe steckt ja in
Code: [Auswählen]

{ fhem "attr EG_Dimmer_WZ IODev " . Value("Funker") }


Raspi B+ mit HM-CFG-USB umgestellt von FB7390 mit CUL
8 HM-CC-RT-DN / 3 HM-LC-Bl1-FM / 10 HM-LC-Bl1PBU-FM / 1 HM-LC-Sw1PBU-FM / HM-LC-DIM1T-FM
3 FBDECT Schaltsteckdosen als Energiemonitore

betateilchen

Ein Reihenfolgenproblem. Vermutlich versuchst Du einfach, einen Wert zu verwenden, der zu dem Zeitpunkt noch gar nicht existiert.

Pack das einfach mal in ein entsprechendes notify, das nach dem fhem-Start ausgeführt wird.

define n_iodev notify global:(INITIALIZED|REREADCFG) {fhem("attr EG_Dimmer_WZ IODev ".Value('Funker'))}

wobei mir allerdings noch völlig schleierhaft ist, warum Du das überhaupt tun willst.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

wtue

Hallo,
ich möchte zum experimentieren möglichst einfach und schnell von einem IODev auf ein anderes wechseln. Von CUL_0 auf HMLAN1 und umgekehrt. Zuerst wird z.B. Cul_0 eingerichtet, dann der Dummy Funker, dann soll der Funker den Inhalt CUL_0 oder HMLAN1 bekommen. Beim Anlegen der Aktoren soll dann der INhalt aus Funker dem IODev zugewiesen werden.

Übrigens in der Kommadozeile klappt das. Wenn ich den dummy Funker von CUL_0 auf HMLAN1 setze klappt es natürlich nicht, weil HMLAN1 nicht defieniert ist. Es zeigt mir aber, dass ich gar nicht so falsch liege mit meinem Lösungsansatz.
Raspi B+ mit HM-CFG-USB umgestellt von FB7390 mit CUL
8 HM-CC-RT-DN / 3 HM-LC-Bl1-FM / 10 HM-LC-Bl1PBU-FM / 1 HM-LC-Sw1PBU-FM / HM-LC-DIM1T-FM
3 FBDECT Schaltsteckdosen als Energiemonitore