bekomme NotifyFn in MyUtils nicht zum laufen

Begonnen von disaster123, 26 März 2014, 21:12:02

Vorheriges Thema - Nächstes Thema

disaster123

Hallo,

ich habe folgenden Code in meiner 99_MyUtils.pm warum funktioniert mein NotifyFn nicht?

package main;

use strict;
use warnings;
use POSIX;

sub MyUtils_Initialize($);
sub MyUtils_Notify($$);

sub MyUtils_Initialize($) {
    my ($hash) = @_;

    $hash->{NotifyFn} = "MyUtils_Notify";

    Log3 "MyUtils", 1, "MyUtils INIT!";

return $hash;
}


sub MyUtils_Notify($$) {
    my ($ntfy, $dev) = @_;

    Log3 "MyUtils", 1, "MyUtils_Notify START!";

    return if ($dev->{NAME} ne "global" || !grep(m/^INITIALIZED$/, @{$dev->{CHANGED}}));

    fhem("set HMLAN hmPairForSec 900");
    fhem("set HZ_1OG_Kueche_Clima regSet winOpnDetFall 0.5");
    fhem("set HZ_1OG_Kueche_Clima controlMode auto");
    fhem("set CUL_HM_HM_CC_RT_DN_2494B1 regSet winOpnDetFall 0.5");
    fhem("set CUL_HM_HM_CC_RT_DN_2494B1 controlMode auto");

    delete $modules{MyUtils}{NotifyFn};
}

1;


MyUtils_Notify wird aber nie gestartet.

Grüße Stefan

betateilchen

Zitatwarum funktioniert mein NotifyFn nicht?

Weil 99_MyUtils.pm als Hilfsmodul lediglich eine Funktionsbibliothek ist, und keine Gerätedefinition.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

disaster123

OK - grundsätzlich möchte ich, dass automatisch nach dem INIT aller Geräte bestimmte Kommandos abgearbeitet werden. Wie realisiere ich dies dann?

betateilchen

define blaNotify notify global:INITIALIZED {allesNachDemInit}

und in der 99_MyUtils.pm muss dann natürlich die Funktion allesNachDemInit vorhanden sein:


sub allesNachDemInit {
    fhem("set HMLAN hmPairForSec 900");
    fhem("set HZ_1OG_Kueche_Clima regSet winOpnDetFall 0.5");
    fhem("set HZ_1OG_Kueche_Clima controlMode auto");
    fhem("set CUL_HM_HM_CC_RT_DN_2494B1 regSet winOpnDetFall 0.5");
    fhem("set CUL_HM_HM_CC_RT_DN_2494B1 controlMode auto");
    return;
}


So wirklich viel Sinn ergibt mir das aber nicht, was Du da 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!

betateilchen

Warum um alles in der Welt will jemand hmPairForSec automatisiert setzen, um neue Geräte anzulernen und dann gleichzeitig sofort hinterher Kommandos schicken? Völlig absurd.
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

disaster123


disaster123

Kann mir jemand bitte helfen? Ich möchte gerne nach dem INIT bestimmte Prüfungen / Perl Code ausführen. Wie mache ich das?

marvin78

betateilchen hat dir doch den Weg beschrieben...

disaster123

*urg* das kommt davon wenn man mit dem Handy im Forum liest. Tausend mal sorry und vielen Dank! Genau der Post ist mir durch das Radar gerutscht.

Vielen Dank!

disaster123

#9
super geht alles! Man muss nur wissen, dass die define Zeile erst gegen Ende kommen darf.