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
Du musst Deinem Modul die Funktion readingsSingleUpdate() verwenden um z.B. das Reading "state" zu beschreiben.
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?
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} ;)
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!
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
ok, merk ich mir.
Doch wie mach ich das? Oder hast du das jetzt schon gemacht?