[gelöst] Reaktion auf eine bestimmte msg.src in einem Write Request auf dem Bus

Begonnen von Juraw, 10 Januar 2015, 16:38:43

Vorheriges Thema - Nächstes Thema

Juraw

Hallo Zusammen,

ich habe eine RPi an dem ich ein TUL habe und den KNX darüber angeschlossen habe. Es funktioniert soweit alles gut. Ich kann auf Events von Bewegungsmeldern reagieren, Lichter an und aus schalten.

Jetzt habe ich z.B. ein Flurlicht, welches von zwei KNX Wandtastern bedient werden kann. Sobald man einen der Taster drückt bekommt man folgendes Event:
EIB Flur_EG_Licht on
oder entsprechend
EIB Flur_EG_Licht off

Ich weiß aber nicht von welchem Schalter der Befehl kam. Wenn ich auf Verbose 5 stelle, kann ich folgendes sehen:
2015.01.10 16:31:25 5: decode_eibd byte len: 1 array size: 1
2015.01.10 16:31:25 5: SimpleRead msg.type: write, msg.src: 1105, msg.dst: 1105
2015.01.10 16:31:25 5: SimpleRead data: 00
2015.01.10 16:31:25 4: SimpleRead: B1105w110500

Der msg.src Parameter interessiert mich dabei. Kann mir einer sagen, ob ich auf ein solches Event bei einer bestimmten msg.src reagieren kann?

Gruß und Danke
Julian

ZeitlerW

Hallo Julian,

naja das würde schon gehen, wenn man die 10_EIB.pm verändert um dafür ein reading zu beschreiben:

In KNX_RAWMSG ist ja die PA eingetragen.

Leider wird wohl das EIB - Modul nicht mehr aktiv gepflegt.

vG
Wolfgang

Juraw

Hey Wolfgang,

der Tip war gut. Ich habe folgendes getan:

10_EIB.pm ab Zeile 342

              # parse/translate by datapoint type
      $v = EIB_ParseByDatapointType($lh,$n,$rawv);

      $lh->{CHANGED}[0] = $v;
      $lh->{STATE} = $v;
      $lh->{RAWSTATE} = $rawv;
      $lh->{LASTGROUP} = $dev;
      $lh->{READINGS}{state}{TIME} = TimeNow();
      $lh->{READINGS}{state}{VAL} = $v;
      $lh->{READINGS}{src}{VAL} = $src; # Hinzugefuegt
            Log 2, "EIB $n $v $msg von $src"; # fuer mich die Daten nochmal ins Log schreiben lassen
 
      push(@list, $n);
      $found = 1;


In fhem.cfg habe ich dann ein notify wie folgt angelegt:


define Test_Licht notify Buero_Licht:on { if ( ReadingsVal("Buero_Licht","src","") eq "110e" ) { fhem("set Flur_EG_Licht on") } }
define Test_Licht2 notify Buero_Licht:off { if ( ReadingsVal("Buero_Licht","src","") eq "110e" ) { fhem("set Flur_EG_Licht off") } }


Wobei 110e der Hexwert der Lichtschalteradresse ist vom Büro. Sobald ich nun das Bürolicht einschalte mit dem Lichtschalter(nicht über FHEM) dann geht das Flur Licht auch an. Der Test funktioniert. Also kann ich das jetzt für was sinnvolleres einsetzen. Hilft dir das auch weiter? Vielleicht schau ich die Tage mal ob ich das etwas hübscher/besser mache und dafür einen Patch einreiche.

Gruß
Julian