Autor Thema: [gelöst] Fehler mit adc.classdef, Timingproblem wie beseitigen?  (Gelesen 5867 mal)

Offline franky08

  • Hero Member
  • *****
  • Beiträge: 4243
  • jetzt DBLog befreit
Hallo folgende classdef liefert im Log ständig Warnungen:

get value cmd {"adc get %PortID\n"}
params PortID
get value expect ".*"
get value postproc {\
 my $hexval = hex(trim("$_"));\
 my $hash  = $defs{%NAME};\
 readingsSingleUpdate($hash, "state", $hexval, 1);\
}

Und im Log:
2015.05.05 17:23:01 1: AVRNETIO: illegal spec expect".*" for get value for class ADC in file /opt/fhem/adc.classdef.
und
2015.05.05 17:40:00 1: PERL WARNING: Illegal hexadecimal digit 'O' ignored at (eval 231) line 1.
2015.05.05 17:40:00 3: eval: { my $hexval = hex(trim("$_")); my $hash  = $defs{MP_2}; readingsSingleUpdate($hash, "state", $hexval, 1);}

Gibt es eine Möglichkeit das abzustellen?

VG
Frank
« Letzte Änderung: 04 Juni 2015, 23:26:11 von franky08 »
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.tem ZBOX nano FHEM2FHEM an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5107
  • Are we just self-replicating DNA?
Antw:Fehler in adc.classdef, wie beseitigen?
« Antwort #1 am: 05 Mai 2015, 19:56:21 »
Hallo,

ich vermute, dass sich in die Zeile

get value expect ".*"
ein Sonderzeichen eingeschlichen hat. Lösche die Zeile bitte aus der classdef und tippe sie neu ein.

Viele Grüße
Boris
Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline franky08

  • Hero Member
  • *****
  • Beiträge: 4243
  • jetzt DBLog befreit
Antw:Fehler in adc.classdef, wie beseitigen?
« Antwort #2 am: 05 Mai 2015, 20:25:13 »
Habe die adc.classdef jetzt noch einmal per "Hand" eingegeben aber im Log immer noch:

2015.05.05 20:21:00 1: PERL WARNING: Illegal hexadecimal digit 'O' ignored at (eval 1546) line 1.
2015.05.05 20:21:00 3: eval: { my $hexval = hex(trim("$_")); my $hash  = $defs{MP_2}; readingsSingleUpdate($hash, "state", $hexval, 1);}

Was mir auffällt "Illegal hexadecimal digit 'O'" wo kommt das O her? Das ist natürlich kein hex. Dachte erst das ist eine Null, scheint aber wirklich ein Buchstabe O zu sein. Da müsste ja irgendwoher ein 4F = O kommen.

VG
Frank
« Letzte Änderung: 05 Mai 2015, 20:36:35 von franky08 »
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.tem ZBOX nano FHEM2FHEM an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink

Offline Dr. Boris Neubert

  • Global Moderator
  • Hero Member
  • ****
  • Beiträge: 5107
  • Are we just self-replicating DNA?
Antw:Fehler in adc.classdef, wie beseitigen?
« Antwort #3 am: 05 Mai 2015, 21:00:53 »
Hallo,

das mit dem O musst Du selbst herausfinden. Es wird von Deinem Gerät gesendet. Bitte den angehefteten Thread beachten, wie man Detailinformationen zum Datenverkehr aus ECMD herauskitzelt.

Grüße
Boris

Globaler Moderator, Developer, aktives Mitglied des FHEM e.V. (Marketing, Verwaltung)
Bitte keine unaufgeforderten privaten Nachrichten!

Offline franky08

  • Hero Member
  • *****
  • Beiträge: 4243
  • jetzt DBLog befreit
Antw:Fehler in adc.classdef, wie beseitigen?
« Antwort #4 am: 05 Mai 2015, 22:58:47 »
Hallo hier mal der Log
2015.05.05 21:25:00 0: AVRNETIO: write "adc get 3\n", expect .*
2015.05.05 21:25:00 0: AVRNETIO: read "05E \n"
2015.05.05 21:25:00 0: AVRNETIO: write "ltc1257_set 600\n"
2015.05.05 21:25:00 0: AVRNETIO: read "OK\n"
2015.05.05 21:26:00 0: AVRNETIO: write "adc get 3\n", expect .*
2015.05.05 21:26:00 0: AVRNETIO: read "05D \n"
2015.05.05 21:26:00 0: AVRNETIO: write "ltc1257_set 600\n"
2015.05.05 21:26:00 0: AVRNETIO: read "OK\n"
2015.05.05 21:27:00 0: AVRNETIO: write "ltc1257_set 600\n"
2015.05.05 21:27:00 0: AVRNETIO: write "adc get 3\n", expect .*
2015.05.05 21:27:00 0: AVRNETIO: read "OK\n"
2015.05.05 21:27:00 0: AVRNETIO: read "05D \n"
2015.05.05 21:28:00 0: AVRNETIO: write "adc get 3\n", expect .*
2015.05.05 21:28:00 0: AVRNETIO: read "05F \n"
2015.05.05 21:28:00 0: AVRNETIO: write "ltc1257_set 600\n"
2015.05.05 21:28:00 0: AVRNETIO: read "OK\n"
2015.05.05 21:29:00 0: AVRNETIO: write "ltc1257_set 600\n"
2015.05.05 21:29:00 0: AVRNETIO: write "adc get 3\n", expect .*
2015.05.05 21:29:00 0: AVRNETIO: read "OK\n"
2015.05.05 21:29:00 0: AVRNETIO: read "05D \n"
2015.05.05 21:30:00 0: AVRNETIO: write "ltc1257_set 600\n"
2015.05.05 21:30:00 0: AVRNETIO: write "adc get 3\n", expect .*
2015.05.05 21:30:00 0: AVRNETIO: read "OK\n"
2015.05.05 21:30:00 0: AVRNETIO: read "05E \n"
2015.05.05 21:31:00 0: AVRNETIO: write "ltc1257_set 600\n"
2015.05.05 21:31:00 0: AVRNETIO: write "adc get 3\n", expect .*
2015.05.05 21:31:00 0: AVRNETIO: read "OK\n"
2015.05.05 21:31:00 0: AVRNETIO: read "05E \n"
2015.05.05 21:32:00 0: AVRNETIO: write "ltc1257_set 600\n"
2015.05.05 21:32:00 0: AVRNETIO: write "adc get 3\n", expect .*
2015.05.05 21:32:00 0: AVRNETIO: read "OK\n"
2015.05.05 21:32:00 0: AVRNETIO: read "05F \n"

Das "O" scheint von dem OK\n zu kommen2015.05.05 22:54:00 0: AVRNETIO: write "ltc1257_set 600\n"
2015.05.05 22:54:00 0: AVRNETIO: write "adc get 3\n", expect .*
2015.05.05 22:54:00 0: AVRNETIO: read "OK\n"

Nach dem write ltc1257 kommt die Antwort read verspätet und bringt das read vom adc aus dem Tritt

VG
Frank
« Letzte Änderung: 05 Mai 2015, 23:02:50 von franky08 »
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.tem ZBOX nano FHEM2FHEM an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink

Offline franky08

  • Hero Member
  • *****
  • Beiträge: 4243
  • jetzt DBLog befreit
Antw:Fehler in adc.classdef, wie beseitigen?
« Antwort #5 am: 05 Mai 2015, 23:22:19 »
Das kommt aus der ltc1257.classdef

# Umsetzung in ECMD Befehle
# Ein Uebergabeparameter -> Sollwert
set setDAC params dacValue
set setDAC cmd {"ltc1257_set %dacValue\n"}
set setDAC expect "OK\n"
# Keine Uebergabeparameter
set init cmd {"ltc1257_init\n"}
set init expect "OK\n"
#

VG
Frank
« Letzte Änderung: 06 Mai 2015, 09:39:03 von franky08 »
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.tem ZBOX nano FHEM2FHEM an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink

Offline franky08

  • Hero Member
  • *****
  • Beiträge: 4243
  • jetzt DBLog befreit
Antw:Fehler in adc.classdef, wie beseitigen?
« Antwort #6 am: 05 Mai 2015, 23:55:49 »
Über ein at wird jede Minute eine sub aufgerufen, in dieser werte ich die Differenz von Ist- und Solltemperatur aus und je nachdem wie groß die Differenz ist wird Value vom DAC in das Threshold Modul zurückgeschrieben. Das Threshold Modul steuert dann die Heizung und je nachdem wie groß die Differenztemperatur ist wird wird über DAC Value die Brennerleistung gesteuert.
Ich hatte vergessen das in der sub noch der Rest
if( $stell <= 0 ) {
fhem "set DAC setDAC 600";
}
stand. Somit wurde jede Minute der DAC Wert auf 600 gesetzt, völlig überflüssig da im Threshold:
TH_Sensor_WZ:temperature:0:Temperatur_Tresh_setz_dummy:state |set DAC setDAC 600; set HZ_on_off_dummy off|{HZ_Steuerung_Temp}; set HZ_on_off_dummy on
cmd1_gt ja schon den DAC auf 600 setzt.
Habe das jetzt korrigiert und jetzt taucht die Meldung im Log nur noch auf wenn DAC value neu gesetzt wird, also wenn die Heizung anspringt.

VG
Frank
« Letzte Änderung: 06 Mai 2015, 09:40:31 von franky08 »
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.tem ZBOX nano FHEM2FHEM an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink

Offline franky08

  • Hero Member
  • *****
  • Beiträge: 4243
  • jetzt DBLog befreit
Antw:Fehler in adc.classdef, wie beseitigen?
« Antwort #7 am: 06 Mai 2015, 08:41:14 »
Wie vermutet, wenn die Heizung dann läuft und der DAC minütlich neu gesetzt wird überlagert das read vom ltc1257 mit der Antwort vom adc. Adc bekommt dann als Antwort das OK vom ltc1257 und das ist natürlich nicht korrekt und es kommt zu der Meldung "Illegal hexadecimal digit 'O' ignored at (eval 1546) line 1"

Wie kann ich das timing ändern, so das die readings an das entprechende device gehen?

Ich habe die ltc1257.classdef jetzt mal so geändert und die expect entfernt. Die Log Meldung tritt nun etwas seltener auf.
2015.05.06 10:34:00 0: AVRNETIO: write "adc get 3\n", expect .*
2015.05.06 10:34:00 0: AVRNETIO: read "0A3 \n"
2015.05.06 10:34:00 0: AVRNETIO: write "ltc1257_set 1700\n"
2015.05.06 10:34:00 0: AVRNETIO: read "OK\n"
2015.05.06 10:35:00 0: AVRNETIO: write "adc get 3\n", expect .*
2015.05.06 10:35:00 0: AVRNETIO: read "0A3 \n"
2015.05.06 10:35:00 0: AVRNETIO: write "ltc1257_set 1700\n"
2015.05.06 10:35:00 0: AVRNETIO: read "OK\n"
2015.05.06 10:36:00 0: AVRNETIO: write "adc get 3\n", expect .*
2015.05.06 10:36:00 0: AVRNETIO: read "0A4 \n"
2015.05.06 10:36:00 0: AVRNETIO: write "ltc1257_set 1700\n"
2015.05.06 10:36:00 0: AVRNETIO: read "OK\n"
2015.05.06 10:37:00 1: PERL WARNING: Illegal hexadecimal digit 'O' ignored at (eval 1334) line 1.
2015.05.06 10:37:00 3: eval: { my $hexval = hex(trim("$_")); my $hash  = $defs{MP_2}; readingsSingleUpdate($hash, "state", $hexval, 1);}

Die ltc1257.classdef:
# Umsetzung in ECMD Befehle
# Ein Uebergabeparameter -> Sollwert
set setDAC params dacValue
set setDAC cmd {"ltc1257_set %dacValue\n"}
# Keine Uebergabeparameter
set init cmd {"ltc1257_init\n"}
######################################

Und die adc.classdef:
get value cmd {"adc get %PortID\n"}
params PortID
get value expect ".*"
get value postproc {\
 my $hexval = hex(trim("$_"));\
 my $hash  = $defs{%NAME};\
 readingsSingleUpdate($hash, "state", $hexval, 1);\
}

VG
Frank
« Letzte Änderung: 06 Mai 2015, 10:42:57 von franky08 »
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.tem ZBOX nano FHEM2FHEM an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink

Offline franky08

  • Hero Member
  • *****
  • Beiträge: 4243
  • jetzt DBLog befreit
Antw:Fehler mit adc.classdef, Timingproblem wie beseitigen?
« Antwort #8 am: 08 Mai 2015, 11:54:21 »
Hat keiner eine Idee was man gegen das Timingproblem unternehmen kann oder wie man die Abfrage des ADC erst nach dem write/read vom DAC machen könnte?

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.tem ZBOX nano FHEM2FHEM an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink

Offline kpwg

  • Full Member
  • ***
  • Beiträge: 338
Antw:Fehler mit adc.classdef, Timingproblem wie beseitigen?
« Antwort #9 am: 09 Mai 2015, 21:42:01 »
Hallo Frank,

ich verstehe das Problem, konnte es aber so noch nicht so recht nachstellen. Benutze hier 3x E6 per LAN, dahinter zwei ZBus (RS-485) mit aktuell je einem Device. Einige Devices werden dabei 4-6x je Minute bedient und laufen seit Monaten sehr zuverlässig. Mich wundert das Durcheinander im Log- kannst Du vielleicht mit Wireshark o.ä. loggen, wer der Übeltäter ist?

Viele Grüße, Ricardo

Offline franky08

  • Hero Member
  • *****
  • Beiträge: 4243
  • jetzt DBLog befreit
Antw:Fehler mit adc.classdef, Timingproblem wie beseitigen?
« Antwort #10 am: 09 Mai 2015, 22:15:28 »
@Ricardo
Hab mir gerade mal Wireshark auf dem Mac installiert aber das "erschlägt" mich leider etwas, was die Einstellungen betrifft. Das AVR-NET-IO läuft auf 192.168.2.111 und die fhem Hauptinstanz auf 192.168.2.66. Leider blicke ich es imo nicht wie ich das in Wireshark eingebe.
P.S. Und Wireshark auf dem mac hat die 192.168.2.24

Wie müsste den der Filter in Wireshark gesetzt werden um an die Informationen zu kommen?
VG
Frank
« Letzte Änderung: 10 Mai 2015, 08:36:38 von franky08 »
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.tem ZBOX nano FHEM2FHEM an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink

Offline franky08

  • Hero Member
  • *****
  • Beiträge: 4243
  • jetzt DBLog befreit
Antw:Fehler mit adc.classdef, Timingproblem wie beseitigen?
« Antwort #11 am: 10 Mai 2015, 09:27:25 »
@kpwg
Hallo, hab den Filter mal auf
ip.src == 192.168.2.111 && ip.dst == 192.168.2.66gesetzt aber da wird leider nichts aufgezeichnet.

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.tem ZBOX nano FHEM2FHEM an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink

Offline kpwg

  • Full Member
  • ***
  • Beiträge: 338
Antw:Fehler mit adc.classdef, Timingproblem wie beseitigen?
« Antwort #12 am: 10 Mai 2015, 09:32:33 »
Hängst Du "dazwischen"? Ich habe für solche Fälle immer noch einen alten 10MBit Hub da, mit dem ich mich in die Verbindung zum E6 einklinke und alles mitlese. Oder kann Dein Switch Port-Mirroring? Da kann man auch gut schauen, was so läuft.

Viele Grüße, Ricardo

Offline franky08

  • Hero Member
  • *****
  • Beiträge: 4243
  • jetzt DBLog befreit
Antw:Fehler mit adc.classdef, Timingproblem wie beseitigen?
« Antwort #13 am: 10 Mai 2015, 10:25:56 »
Hallo Ricardo, hab jetzt mal einen Switch mit Mirror dazwischen gehangen und mit Wireshark aufgezeichnet was zwischen AVR-NET-IO 192.168.2.111 und dem Netzwerk läuft, 192.168.2.47 ist ein D-lan Adapter der die Verbindung zwischen meinem Netzwerk und dem AVR-NET-IO Board herstellt.

Hab die capture Datei mal angehangen. Habe die Heizung dann mal gestartet (über setzen einer neuen Soll Temperatur) und das Ganze mal ein paar Minuten laufen lassen.

VG
Frank
Debian Wheezy auf ZBOX nano/ Debian Bullseye auf 2.tem ZBOX nano FHEM2FHEM an 2x RaspiB
22Zoll ViewSonic als Infodislay (WVC)
3xHMLAN mit vccu ,fhem5.8, CCU2,
ECMD an AVR-NET-IO mit DAC u. ADC an Junkers Stetigregelung, Siemens LOGO!8, JeeLink

Offline kpwg

  • Full Member
  • ***
  • Beiträge: 338
Antw:Fehler mit adc.classdef, Timingproblem wie beseitigen?
« Antwort #14 am: 10 Mai 2015, 11:34:28 »
Hallo Frank,

habe mit ip.addr == 192.168.2.111 mal den Traffic zum E6 heraus gefiltert. Ich sehe jedoch nur "ecmd adc get"?

 

decade-submarginal