global Ereignisse ereignen sich nicht so wie erwartet

Begonnen von meikelS, 21 März 2018, 18:55:16

Vorheriges Thema - Nächstes Thema

meikelS

Bin seit ein paar Tagen vom FHEM-Fieber gepackt. Und arbeite mich grade ein.

Ich teste gerade die global:Ereignisse. Habe für verschiedene jeweils ein Notify erstellt nach dem Beispiel:
define meinName notify global:XXX { [i]machwas [/i]}

Wobei das machwasnicht das Problem ist. Das ist bei allen Ereignissen identisch und funktioniert auch.

Meine Frage ist eher: Wann kommt der Event?

global:SAVE
Das ist eigentlich wie erwartet. Wenn man die Config speichert, passiert was.

global:INITIALIZED
Kommt nur, wenn ich FHEM von der Konsole starte. Das erwarte ich aber auch, wenn der Service beim Booten automatisch gestartet wird. Und da passiert leider nichts.

global:SHUTDOWN
Hier passiert nie etwas. Auch nicht, wenn man FHEM über Konsole anhält.

Hab ich hier einen Denkfehler drin. Oder muss/kann man noch an anderer Stelle etwas einstellen?
Don't blame the newbies.

betateilchen

global:INITIALIZED kommt definitiv auch, wenn FHEM als Dienst gestartet wird.


define test notify global:INITIALIZED {Debug "init"}

liefert im Logfile:

2018.03.21 19:24:08 3: telnetPort: port 7072 opened
2018.03.21 19:24:10 3: web: port 8083 opened
2018.03.21 19:24:10 1: DEBUG>init


global:SHUTDOWN funktioniert auch:


define test notify global:SHUTDOWN {Debug "shutdown"}

liefert im Logfile:

2018.03.21 19:25:31 1: DEBUG>shutdown


Also offenbar machst Du etwas falsch, und nicht FHEM :)
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

meikelS

Ich mache nie Fehler. Ich mache Erfahrungen. ;-)

Stimmt. Mit Debug kommt was im Log an. Ich wollte mir halt gerne mit Telegram eine Nachricht schicken, wenn das System hoch- bzw. runterfährt.
Aber anscheindend ist der TelegramBot beim ersten hochfahren noch nicht bzw. beim Shutdown nicht mehr erreichbar.
Wenn ich es über Konsole neu starte kennt er irgendwie den TelegramBot (noch/wieder).
Don't blame the newbies.

CoolTux

Zitat von: meikelS am 22 März 2018, 12:35:37
Ich mache nie Fehler. Ich mache Erfahrungen. ;-)

Stimmt. Mit Debug kommt was im Log an. Ich wollte mir halt gerne mit Telegram eine Nachricht schicken, wenn das System hoch- bzw. runterfährt.
Aber anscheindend ist der TelegramBot beim ersten hochfahren noch nicht bzw. beim Shutdown nicht mehr erreichbar.
Wenn ich es über Konsole neu starte kennt er irgendwie den TelegramBot (noch/wieder).

global:INITIALIZED
bedeutet das FHEM mit dem einlesen der Konfig fertig ist. FHEM ist also dann oben und alle Devices vorhanden.
Du könntest schauen ob Du den set Befehl für Telegramm etwas verzögerst. FHEM sleep setzen.
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

betateilchen

Zitat von: CoolTux am 22 März 2018, 12:39:21
global:INITIALIZED
bedeutet das FHEM mit dem einlesen der Konfig fertig ist. FHEM ist also dann oben und alle Devices vorhanden.

Würdest Du auf diese Behauptung wetten, hättest Du sofort verloren.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

CoolTux

Zitat von: betateilchen am 22 März 2018, 14:13:06
Würdest Du auf diese Behauptung wetten, hättest Du sofort verloren.

Wo und wie ist die Einschränkung? Alle defines der Konfig sind doch dann durch.
global:INITIALIZED
bedeutet das die Konfig abgearbeitet ist, oder etwa nicht?
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

CoolTux


$fhem_started = int(gettimeofday());
DoTrigger("global", "INITIALIZED", 1);

my $osuser = "os:$^O user:".(getlogin || getpwuid($<) || "unknown");
Log 0, "Featurelevel: $featurelevel";
Log 0, "Server started with ".int(keys %defs).
        " defined entities ($attr{global}{version} perl:$] $osuser pid:$$)";


DoTrigger("global", "INITIALIZED", 1);

ist doch fast der letzte Eintrag der Hauptfunktion, bevor die main loop gestartet wird. Oder spielst Du auf etwas anderes an
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

betateilchen

Zitat von: CoolTux am 22 März 2018, 14:34:29
Oder spielst Du auf etwas anderes an

Jepp. Es gibt eine ganze Reihe von Modulen, die auf das global:INIITALIZED warten und DANACH erst die xxx_Define tatsächlich ausführen.

Die Aussage, dass nach dem INITIALIZED alle devices schon vorhanden sind, ist definitiv falsch.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

CoolTux

Zitat von: betateilchen am 22 März 2018, 14:58:02
Jepp. Es gibt eine ganze Reihe von Modulen, die auf das global:INIITALIZED warten und DANACH erst die xxx_Define tatsächlich ausführen.

Die Aussage, dass nach dem INITIALIZED alle devices schon vorhanden sind, ist definitiv falsch.

Ah, ok. Ich habe es versucht allgemein zu halten. Und bezog mich ausschließlich auf die Devices welche in der Konfig stehen.  :)

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

betateilchen

Zitat von: CoolTux am 22 März 2018, 14:59:45
Und bezog mich ausschließlich auf die Devices welche in der Konfig stehen.

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