notify auf global:DEFINED.*

Begonnen von Dodo0815, 02 Dezember 2015, 16:40:25

Vorheriges Thema - Nächstes Thema

Dodo0815

Hallo,

ich habe schon vieles in diesem Forum gefunden, das mir sehr weitergeholfen hat bezüglich FHEM. Danke schonmal an alle ;)

Aber nun zu meiner Frage:

Zurzeit habe ich einen HM-CFG-USB-2 (HomeMatic-Stick) und einige HomeMatic Sensoren. Alles funktioniert wunderbar.
Läuft auf einem Raspberry Pi 2 mit Raspbian Jessie.
FHEM läuft mit ConfigDB und DbLog.

Außerdem habe ich die 99_myUtils verändert, sodass bei jedem neuen Gerät automatisch einige Einstellungen gemacht werden. Dies läuft auch alles einwandfrei.

Um nun jedes Gerät automatisch konfigurieren zu können, habe ich ein Notify angelegt, welches eine "Grundfunktion" in den myUtils aufruft.

Das sieht so aus:
define autocreate autocreate
define newDeviceNotifier notify global:DEFINED.* { DevDefined($NAME, $EVTPART0, $EVTPART1, $EVENT) }

Wie ihr alle lesen könnt, wird, wenn mittels autocreate ein Device kreiert wird, das global:DEFINED Event "geworfen" und durch dieses Notify wird die "DevDefined" Funktion aufgerufen. Soweit so gut.
Wie gesagt, das haut alles noch super hin; fehlerfrei.

Nun zu meinem eigentlichen Problem:

Ich möchte das File-Log komplett abschalten. Ich logge alles in eine SQLiteDB (das funktioniert auch).

Aber:
Wenn ich das FileLog deaktiviere, dann funktioniert mein notify nicht mehr und meine "DevDefined" Funktion wird nie mehr aufgerufen. Habe nun heute schon etliche Neuinstallationen von FHEM durchgeführt.
Immer wenn ich das FileLog deaktivieren möchte, oder löschen, tritt der Zeitpunkt ein, an dem ich diese "global:DEFINED" Events nicht mehr bekomme.

Was mache ich falsch? Kann man das FileLog überhaupt deaktivieren?

Ich hoffe ihr habt da genug Context.. aber eigentlich sind die Perl-Funktionen selbst nicht notwendig denke ich (da sie ja ansonsten funktionieren).
Schlüsselpunkt ist halt mein newDeviceNotifier, der nach dem deaktivieren des FileLogs einfach nicht mehr so tut wie er soll.

Ich hoffe ihr könnt mir da irgendwie weiterhelfen.

Ziel ist es, das FileLog komplett zu deaktivieren und weiterhin über autocreate die Events zu bekommen, wenn ein neues Gerät sich paired.

MfG
Dodo

rudolfkoenig

Was genau heisst: FileLog deaktivieren?
"funktioniert mein notify nicht mehr" kann man auch praeziser formulieren, wenn man den Event-Monitor parallel beobachtet: wird kein Event generiert oder funktioniert der Aufruf nicht.

Dodo0815

Hallo,

Sorry die späte Antwort.

Mit FileLog deaktivieren meine ich folgendes:
Im Punkt FileLog habe ich ein LogFile, welches jeden Tag ein neues File anlegt. Ich möchte dieses Logging deaktivieren. Ich brauche diese Dateien nicht. Beim Logfile kann man das Attribut "disable" auf 1 setzen, womit das Logging gestoppt wird. So passt das auch.

Und das Event wird noch produziert, aber das Notify führt meine Funktion nicht mehr aus. Ich habe nun nach mehrtägigem Probieren herausgefunden warum.
Es ist für mich zwar nicht erklärbar, aber ich schildere es:

Ich hatte mein Script immer erfolgreich unter der Fhem-Version 5.6 am Laufen. Alles funktionierte perfekt.
Dann habe ich auf Fhem 5.7 upgedatet, und dann haben die Fehler begonnen.

Es hat sich herausgestellt, dass beim Notify das "$NAME, $EVENT, etc" nicht die Werte der Variablen übergeben hat, sondern wirklich "$NAME" was dazu führte, dass das Perl-Script abgestürzt ist. ($NAME undefined). Möglich, dass sich mit den Variablen in der neuen Version etwas getan hat, aber ich habe eine unschöne Lösung dafür gefunden, und nun funktioniert es wieder.

Demnach könnte das nun auch geschlossen werden. Ich danke aber trotzdem vielmals.

LG