Rückantwort von device auswerten

Begonnen von NeuFehm, 21 Oktober 2015, 11:43:43

Vorheriges Thema - Nächstes Thema

NeuFehm

Liebe FHEM-Gemeinde,

wenn ich einen ASCII-Schaltbefehl zu meinem Relais schicke: #M(E\001\001\000\r\n
, dann antwortet das Relais bei Erfolg mit: !M(E\001\001\000\r\n
(Nicht wundern, die "(" ist eine ASCII-Adresse des Relais)

Nun möchte ich diese Antwort für den Lampen-Status (brennt/brennt nicht) benutzen,
also im oberen Fall soll die "Lampe" in Fhem gelb werden.
Das Grundprinzip werde ich realisieren können, nur beim "reading" habe ich Fragen.

Zunächst hier das log:
2015.10.20 22:13:43 5: mylampe: sending command "#M(E\001\001\000\r\n"
2015.10.20 22:13:43 5: SW: 234d28450101000d0a
2015.10.20 22:13:43 5: mylampe: Spontaneously received "!"
2015.10.20 22:13:43 5: mylampe dispatch !
2015.10.20 22:13:43 5: mylampe: Spontaneously received "M(E\001\001\000\r\n"
2015.10.20 22:13:43 5: mylampe dispatch M(E

2 Fragen:
1. Wo/Wie definiere ich das "Reading" (in der classdef zum device oder in der fhem.cfg)
2. Muss ich Fhem irgendetwas mitteilen, dass es nicht die Antwort aufteilt, denn er hat, so wie ich das log interpretiere
schon nach dem "!" separiert. Eigentlich ist das EINE Antwort....

Danke für Antworten oder Lese-Aufträge ;)
Raspberry Pi B+
RS 485 Schnittstellen: DIGITUS DA-70157, LINKSPTITE RS485/GPIO Shield for Raspberry Pi
RS485 Geräte: Ultraschallsensor für Zisternenfüllstand (Eigenbau), 4x8 Relais-M-Mastermodule (Eigenbau), 6 T-Module (Schalter und 3 analoge Eingänge) (Eigenbau)
sonstige Hardware: 2 Relay Modul

NeuFehm

Hat jemand eine Idee, wie man FHEM sagen kann, dass es den Antowrt-String nicth zerlegt?
!M(E\001\001\000\r\n

2015.10.20 22:13:43 5: mylampe: Spontaneously received "!"
2015.10.20 22:13:43 5: mylampe dispatch !
2015.10.20 22:13:43 5: mylampe: Spontaneously received "M(E\001\001\000\r\n"
2015.10.20 22:13:43 5: mylampe dispatch M(E
Raspberry Pi B+
RS 485 Schnittstellen: DIGITUS DA-70157, LINKSPTITE RS485/GPIO Shield for Raspberry Pi
RS485 Geräte: Ultraschallsensor für Zisternenfüllstand (Eigenbau), 4x8 Relais-M-Mastermodule (Eigenbau), 6 T-Module (Schalter und 3 analoge Eingänge) (Eigenbau)
sonstige Hardware: 2 Relay Modul

NeuFehm

ah....mit
set on expect ".M.*\\r\\n"

Logfile:
2015.10.21 22:09:12 5: mylampe: received answer "!M(E\001\002\001\r\n"
Jetzt muss ich nur noch rausfinden, dass der aus der Antwort ein Schalter 2 (\002)=on (\001) macht.

Hat da jemand eine Idee?
ein postproc?
Raspberry Pi B+
RS 485 Schnittstellen: DIGITUS DA-70157, LINKSPTITE RS485/GPIO Shield for Raspberry Pi
RS485 Geräte: Ultraschallsensor für Zisternenfüllstand (Eigenbau), 4x8 Relais-M-Mastermodule (Eigenbau), 6 T-Module (Schalter und 3 analoge Eingänge) (Eigenbau)
sonstige Hardware: 2 Relay Modul

NeuFehm

Hab immer noch mein Problem :(

Mein EMCD-Device empfängt spontan:
2015.10.27 21:42:42 5: mylampe: Spontaneously received "#M"
2015.10.27 21:42:42 5: mylampe dispatch #M
2015.10.27 21:42:42 5: mylampe: Spontaneously received "(E\005\001\001\r\n!M(E\005\001\001\r\n"
2015.10.27 21:42:42 5: mylampe dispatch (E
!M(E

fhem.cfg:
define mylampe ECMD serial /dev/ttyUSB0@9600
attr mylampe classdefs mylampedevice=/opt/fhem/lampe.classdef
attr mylampe verbose 5
attr mylampe partial 3

lampe.classdef:
reading antwort match "!M\(E\\005\\001\\001\\r\\n"

Warum erkennt der denn nicht den !M(E\005\001\001\r\n als "Antowort" :(

Kann jemand helfen?
Raspberry Pi B+
RS 485 Schnittstellen: DIGITUS DA-70157, LINKSPTITE RS485/GPIO Shield for Raspberry Pi
RS485 Geräte: Ultraschallsensor für Zisternenfüllstand (Eigenbau), 4x8 Relais-M-Mastermodule (Eigenbau), 6 T-Module (Schalter und 3 analoge Eingänge) (Eigenbau)
sonstige Hardware: 2 Relay Modul