FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: tam am 14 Mai 2014, 20:23:38

Titel: Event auslösen in eigenem Modul
Beitrag von: tam am 14 Mai 2014, 20:23:38
Hallo,
ich habe ein das WUE Modul von ELV an den Raspberry Pi angeschlossen und versuche dafür ein kleines Modul zu schreiben, welches signal von einer Fernbedienung erkennt.

Werte Empfangen und im Log ausgeben funktioniert soweit, jedoch weiß ich nicht wie ich ein Event für notify auslöst.
Ich kann dazu nichts konkretes finden, oder ich versteh die zusammenhänge nicht so richtig.

in der config habe ich das so definiert:

#remote
define WUEFS20 WUEFS20 /dev/ttyAMA0

define WUEFS20_BT_3 WUEFS20 1114


define NStehlampe notify (Stehlampe|WUEFS20_BT_3) {\
Log 1, "Value of bt3".$value{WUEFS20_BT_3};;\
if ("%" ne "off") {\
system "sudo python /home/pi/socketsender/intertechnoPy_helper.py 1 0 1 >> $currlogfile 2>&1 &";;\
}\
else {\
system "sudo python /home/pi/socketsender/intertechnoPy_helper.py 1 0 0 >> $currlogfile 2>&1 &";;\
}\
Log 1, "notify wird ausgeführt mit @ %";;\
}


Was muss ich in der Modul_Read-Funktion machen, damit NStehlampe das notify bekommt.

Vielen Dank schonmal für die Hilfe!

Grüße
Titel: Antw:Event auslösen in eigenem Modul
Beitrag von: betateilchen am 14 Mai 2014, 20:46:25
Du musst Deinem Modul die Funktion readingsSingleUpdate() verwenden um z.B. das Reading "state" zu beschreiben.

Titel: Antw:Event auslösen in eigenem Modul
Beitrag von: tam am 14 Mai 2014, 21:19:19
hi,
danke für schnelle Antwort!



       #Log 1, "". Dumper(\$hash);
        my $def = $modules{WUEFS20}{defptr}{"$address"};
        # Log 1, "". Dumper(\$def);
       
       
        if($command == 0x00){
            readingsSingleUpdate($hash,"state","off", 0);
           
        }else{
            readingsSingleUpdate($hash,"state","on", 1);
        }


Ich habe das jetzt mal so ausprobiert, aber ich sehe nicht, dass das notify ausgelöst wird? ist das so richtig?
Und wie gebe ich an, dass das signal auch von dem $def (Quellccode) stammt?

Titel: Antw:Event auslösen in eigenem Modul
Beitrag von: betateilchen am 14 Mai 2014, 21:28:58
readingsSingleUpdate() löst genau dann einen Event aus, wenn der letzte Aufrufparameter eine 1 ist.

Der Name Deines auslösenden Device steckt übrigens in %hash (genauer: in $hash->{NAME} ;)

Titel: Antw:Event auslösen in eigenem Modul
Beitrag von: tam am 14 Mai 2014, 22:54:08
Yeah, jetzt funktioniert es.
Musste es aber so machen: (Liegt aber wahrscheinlich an meinem Modul)

   #Log 1,  " buffer: " . $hash->{buffer};
        Log 1,  " houseCode: " . $houseCode;
        Log 1,  " Adress: " . $address;
        Log 1,  " command: " . $command;
        Log 1,  " time: " . $timer;
       
        my $def = $modules{WUEFS20}{defptr}{"$address"};
       
        if($command == 0){
            readingsSingleUpdate($def,"state","off", 1);
           
           
        }elsif($command==17){
            readingsSingleUpdate($def,"state","on", 1);
           
        }else{}


Muchas Gracias!
Titel: Antw:Event auslösen in eigenem Modul
Beitrag von: Puschel74 am 15 Mai 2014, 19:09:49
Hallo,

und auch hier.

Wenn die Frage gelöst ist bitte den Beitrag entsprechend markieren damit andere sehen das die Frage gelöst wurde.
Danke.

Grüße
Titel: Antw:Event auslösen in eigenem Modul
Beitrag von: tam am 15 Mai 2014, 22:45:16
ok, merk ich mir.
Doch wie mach ich das? Oder hast du das jetzt schon gemacht?