Habe hier ein Problem mit einer Routine. Und zwar soll eine Sprachansage generiert werden (sende 1 auf Transmitadresse), wenn einer der Kanäle im Heizungsaktor eine 1 für Fehler meldet.
Das sieht dann so aus:
Wenn nun aber auf recieve-Adressen eine 0 gesendet wird, wird trotzdem auf die Transmitadresse eine 1 gesendet und die Sprachmeldung ausgelöst. Ich will aber, dass dieses nur auf die Transmitadresse gesendet, wenn die Recieve-Adresse eine 1 erhält, bei 0 soll nichts passieren. Ich versteh nicht, warum obiger Code nicht funktioniert. Hier der Auszug vom Debug
Das sieht dann so aus:
Code:
####Warnmeldung Heizung heatingWarning => { receive=>['6/4/1','6/4/2','6/4/3','6/4/4','6/4/101','6/4/102','6/4/103','6/4/104','6/4/201','6/4/202','6/4/203','6/4/204','6/4/205','6/4/206','6/4/207','6/4/208','6/4/251','6/4/252','6/4/253'], transmit=>'15/0/50', translate => sub { if(defined $input && int($input) > 0) { 1; } else {return undef;}}, debug=>1},
Code:
Logikprozessor.pl,1.1.254 6/4/252:0 -> $logic{heatingWarning}{receive}(Logik) -> 15/0/50:1
Kommentar