FHEM Forum

FHEM - Hausautomations-Systeme => Homematic => Thema gestartet von: ritchie am 11 Januar 2016, 22:11:12

Titel: Last State in "MISSING ACK" Routine bearbeiten
Beitrag von: ritchie am 11 Januar 2016, 22:11:12
Hallo Zusammen,

ich möchte gerne in meiner generellen "MISSING ACK" ein weiteres Verhalten einbauen.

Bei der  Retro-Anzeige (http://www.fhemwiki.de/wiki/HM-Dis-TD-T_Retro_Anzeige) reicht ein normale Statusrequest, um die Anzeige wieder auf den Weg zu bringen.


define evtTransmissionError notify .*:.(MISSING.ACK.*|.*NACK.*) { evtHandlerTransmissionErrors($NAME,$EVENT);; }
attr evtTransmissionError room events



#
# Handler for Transmission errors  (No NACK received)
#
sub evtHandlerTransmissionErrors($$)
{
  my $Component = shift;
  my $State = shift;


   given($Component)
   {
   when("AlarmBetriebsAnzeige")   
     { #
     fhem("set ".$Component." statusRequest");
     }
   }
  DebianMail('XXXXXX@YYYYY.de',"FHEM Fehler Uebertragung von ".$Component,
                "Komponente ".$Component." hat den ".$State." gemeldet");
return;
}
#


Wenn ich das gleiche aber mit einer schaltbaren Unterputzdose (http://www.fhemwiki.de/wiki/HM-LC-SW1-FM_Schaltaktor_1-fach_UP) mache, endet das in einem "No Funkquota" und das System macht erst mal auf dem Kanal nichts mehr.
Gehe ich aber hin und sende das gleiche Kommando nach ca. einer Minute nochmals von Hand, scheint das Kommando dann erfolgreich verarbeitet zu werden.

Hier meine Frage:
Wir kann ich feststellen, welches State-Kommando (ein oder aus) an den jeweiligen Tag gesendet wurde. Diesen Status möchte ich dann verzögert nochmals an die entsprechende Komponente senden. Eine Eigenschaft, last Kommand konnte ich nicht finden.

Was sagt;
ZitatdeviceMsg       off (to CUL_0)
aus ?


Viele Grüße

R.





Titel: Antw:Last State in "MISSING ACK" Routine bearbeiten
Beitrag von: Deudi am 12 Januar 2016, 09:39:11
Ich hatte mal einen Schaltaktor, der rumgezickt hatte. Da habe ich dann anstatt den Befehl direkt zu senden immer einen Wrapper aufgerufen, sprich eine Funktion, die den aktuellen Befehl im Device in ein Reading schreibt (last_cmd) und dann den FHEM Befehl ausführt. Dann kann man immer später den Sollzustand ermitteln und darauf reagieren falls ein Missing-Ack oder IOerr kommt.