Hallo zusammen,
ich habe ein Problem mit den Daten meiner Heizungssteuerung. Die
Steuerung liefert nach dem write eines " " den Inhalt des Displays
zurück. Diese Daten kommen nicht als ein geschlossenener Datensatz an,
sondern in Teilstücken. Entsprechend der Commandref habe ich
das Attribut partial auf 2 gesetzt und ein reading match "auf alles" eingestellt.
Ziel ist es eine Zeile zu erhalten, zum Beispiel
"Di 07 24 9%Ta=- 1� Tk=+66�C5"
Wie man unten im Log sieht, kommen die Daten zerstückelt an und nur der letzte Wert übernommen.
Sieht nahe dran aus, irgendetwas habe ich übersehen oder nicht richtig verstanden.
Ich bin für jeden Tip dankbar.
Gruß Mark
Devices:
define mySerialDevice ECMD serial /dev/ttyUSB0
attr mySerialDevice classdefs HZCOM1=./HZCOM1.classdef
attr mySerialDevice logTraffic 3
attr mySerialDevice partial 2
attr mySerialDevice room 00_devices
attr mySerialDevice verbose 5
define myHZCOM1 ECMDDevice HZCOM1
attr myHZCOM1 IODev mySerialDevice
attr myHZCOM1 comment set myHZCOM1 on
attr myHZCOM1 room 00_devices,Heizung
attr myHZCOM1 verbose 5
HZCOM1.classdef
get v cmd {" "}
reading temp match ".*"
reading temp postproc {$_}
Logauszug:
2015.01.27 19:29:16 5: ECMDDevice: Analyze command >{" "}<
2015.01.27 19:29:16 5: mySerialDevice: sending command " "
2015.01.27 19:29:16 3: mySerialDevice: write " "
2015.01.27 19:29:16 5: SW: 20
2015.01.27 19:29:16 3: mySerialDevice: read "D"
2015.01.27 19:29:16 5: mySerialDevice: Spontaneously received "D"
2015.01.27 19:29:16 5: mySerialDevice dispatch D
2015.01.27 19:29:16 5: mySerialDevice: match regex .* for reading temp of device myHZCOM1 with class HZCOM1
2015.01.27 19:29:16 5: Postprocessing "D" with perl command {$_}.
2015.01.27 19:29:16 5: Postprocessed value is "D".
2015.01.27 19:29:16 3: mySerialDevice: read "i 19:31 \002"
2015.01.27 19:29:16 5: mySerialDevice: Spontaneously received "i 19:31 \002"
2015.01.27 19:29:16 5: mySerialDevice dispatch i 19:31 ^B
2015.01.27 19:29:16 5: mySerialDevice: match regex .* for reading temp of device myHZCOM1 with class HZCOM1
2015.01.27 19:29:16 5: Postprocessing "i 19:31 \002" with perl command {$_}.
2015.01.27 19:29:16 5: Postprocessed value is "i 19:31 \002".
2015.01.27 19:29:16 3: mySerialDevice: read " 16%\rTa="
2015.01.27 19:29:16 5: mySerialDevice: Spontaneously received " 16%\rTa="
2015.01.27 19:29:16 5: mySerialDevice dispatch 16%^MTa=
2015.01.27 19:29:16 5: mySerialDevice: match regex .* for reading temp of device myHZCOM1 with class HZCOM1
2015.01.27 19:29:16 5: Postprocessing " 16%\rTa=" with perl command {$_}.
2015.01.27 19:29:16 5: Postprocessed value is " 16%\rTa=".
2015.01.27 19:29:16 3: mySerialDevice: read "+ 0<DF> Tk="
2015.01.27 19:29:16 5: mySerialDevice: Spontaneously received "+ 0<DF> Tk="
2015.01.27 19:29:16 5: mySerialDevice dispatch + 0<DF> Tk=
2015.01.27 19:29:16 5: mySerialDevice: match regex .* for reading temp of device myHZCOM1 with class HZCOM1
2015.01.27 19:29:16 5: Postprocessing "+ 0<DF> Tk=" with perl command {$_}.
2015.01.27 19:29:16 5: Postprocessed value is "+ 0<DF> Tk=".
2015.01.27 19:29:17 3: mySerialDevice: read "+73<DF>CD\r"
2015.01.27 19:29:17 5: mySerialDevice: Spontaneously received "+73<DF>CD\r"
2015.01.27 19:29:17 5: mySerialDevice dispatch +73<DF>CD
2015.01.27 19:29:17 5: mySerialDevice: match regex .* for reading temp of device myHZCOM1 with class HZCOM1
2015.01.27 19:29:17 5: Postprocessing "+73<DF>CD\r" with perl command {$_}.
2015.01.27 19:29:17 5: Postprocessed value is "+73<DF>CD\r".
Hallo Marc,
auch wenn Dein Post schon etwas älter ist:
Hast Du Dein Problem lösen können? Ich habe nämlich genau das selbe Problem.
Ich empfange zwar Daten über ECMD, diese werden jedoch trotz partial Attribut weiterhin gesplittet.
Vielen Dank und Gruß,
Bernd