Komplett überarbeitetes ECMD und ECMDDevice vom 16.3.2014

Begonnen von kpwg, 20 März 2014, 20:40:17

Vorheriges Thema - Nächstes Thema

ckbln

Zitat von: Tom_S am 28 April 2014, 22:09:01
habe leider gerade kein ethersex mit 1wire Sensoren. Was bekommst du denn ohne postproc?

Hallo Tom_S

ohne postproc bekomme ich die Temperatur richtig angezeigt.
Leider sind dann in der LOG Datei die Leerzeile.

Gruß Christof

Dr. Boris Neubert

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

Tom_S

Zitat
ohne postproc bekomme ich die Temperatur richtig angezeigt.

das ist klar. Schreib bitte mal genau was zurück kommt, und auch die logs.

mfg
RaspberryPI2 + pilight, 3x AVR-NetIO, LW12, LW12HX, LW12FC; MAX-Lan, ESP8266, Arduino, H801, Neopixel, Solaredge, Modbus

ext23

Guten morgen,

ich hab das log mal über Nacht laufen lassen:


2014.04.29 15:52:08 0: AVRNETIO2: write "io get pin 0\n", expect .*
2014.04.29 15:52:08 0: AVRNETIO2: read "port 0: 0x00\n"

2014.04.29 15:53:08 0: AVRNETIO2: write "adc get 7\n", expect .*
2014.04.29 15:53:08 0: AVRNETIO2: read "048 \n"
2014.04.29 15:53:08 0: AVRNETIO2: write "io get pin 0\n", expect .*
2014.04.29 15:53:08 0: AVRNETIO2: read "port 0: 0x00\n"

2014.04.29 15:54:08 0: AVRNETIO2: write "adc get 7\n", expect .*
2014.04.29 15:54:08 0: AVRNETIO2: read "046 \n"
2014.04.29 15:54:08 0: AVRNETIO2: write "1w convert\n"
2014.04.29 15:54:08 0: AVRNETIO2: write "io get pin 0\n", expect .*
2014.04.29 15:54:08 0: AVRNETIO2: read "OK\n"
2014.04.29 15:54:09 0: AVRNETIO2: read "port 0: 0x00\n"

2014.04.29 15:54:10 0: AVRNETIO2: write "1w get 282f1bc3030000d5\n", expect .*
2014.04.29 15:54:10 0: AVRNETIO2: read "31.6\n"
2014.04.29 15:55:08 0: AVRNETIO2: write "adc get 7\n", expect .*
2014.04.29 15:55:08 0: AVRNETIO2: read "047 \n"
2014.04.29 15:55:08 0: AVRNETIO2: write "io get pin 0\n", expect .*
2014.04.29 15:55:08 0: AVRNETIO2: read "port 0: 0x00\n"

Das OK kommt wenn eine andere Abfrage dazwischen funkt so wie ich das sehe. Das OK stammt sicher von dem convert...

Wie ich gelernt habe kann man das also mit dem expect abfragen richtig? Aber ist das so sauber? Wieso schickt der ein erneutes write wenn der vorherige Befehl noch keine Rückgabe geliefert hat? Das kann man doch gar nicht mehr richtig zuordnen dann.

Und dann noch was, ich weiß nicht ob ich ein bissel Gaga bin aber vielleicht kann mir hier einer helfen. Das passiert übrigens erst nach dem großen ECMD Update. Aber eigentlich müsste das ja eher am plot modul liegen .... oO

Schaut mal bitte auf das Foto im Anhang. Auf die Kurve...
Das was unten geloggt wird steht komplett im Log, also ohne Lücken, kontinuierlich, da fehlt nichts ...

Gruß und Danke
Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

ThomasW

Hallo Boris,

habe nochmals die Versuche mit der classdef wiederholt und bin zu diesem Ergebnis gekommen.
Versuch 1
classdef

# Uebergabeparameter Onewire Geräte ID
params devID
# Umsetzung in ECMD Befehle 1w get = Tempwert lesen
get temp cmd {"1w get %devID\n"}
get temp expect "\d+.\d\n"
get temp postproc {  s/\n//g }
get temp postproc {\
my $hash  = $defs{%NAME};\
my $temperature = $_;\
\
readingsSingleUpdate($hash, "temperature", $temperature, 1);\
readingsSingleUpdate($hash, "state", $temperature, 1);\
\
}

Log


temp 29.6

temp 40.6

temp 45.6

temp 38.5

2014.04.30 20:19:57 3: 1w_Messung: temp 30.9
2014.04.30 20:19:57 3: NETIO_01: read "29.6\n"
2014.04.30 20:19:57 3: NETIO_01: write "1w get 28f70cf60400002e\n", expect \d+.\d\n
2014.04.30 20:19:57 3: NETIO_01: read "40.6\n"
2014.04.30 20:19:57 3: NETIO_01: write "1w get 28e79bf50400001b\n", expect \d+.\d\n
2014.04.30 20:19:57 3: NETIO_01: read "45.6\n"
2014.04.30 20:19:57 3: NETIO_01: write "1w get 2853b9f5040000bb\n", expect \d+.\d\n
2014.04.30 20:19:57 3: NETIO_01: read "38.5\n"
2014.04.30 20:19:57 3: NETIO_01: write "1w get 28f999f5040000d0\n", expect \d+.\d\n
2014.04.30 20:19:57 3: NETIO_01: read "30.9\n"
2014.04.30 20:19:57 3: NETIO_01: write "1w get 282805f5040000b5\n", expect \d+.\d\n

Versuch 2
classdef

# Uebergabeparameter Onewire Geräte ID
params devID
# Umsetzung in ECMD Befehle 1w get = Tempwert lesen
get temp cmd {"1w get %devID\n"}
get temp expect "\d+.\d\n"
get temp postproc {  s/\n//g }

Log

temp 1
temp 1
temp 1
temp 1
2014.04.30 20:33:41 3: 1w_Messung: temp 1
2014.04.30 20:33:41 3: NETIO_01: read "29.6\n"
2014.04.30 20:33:41 3: NETIO_01: write "1w get 28f70cf60400002e\n", expect \d+.\d\n
2014.04.30 20:33:41 3: NETIO_01: read "40.6\n"
2014.04.30 20:33:41 3: NETIO_01: write "1w get 28e79bf50400001b\n", expect \d+.\d\n
2014.04.30 20:33:41 3: NETIO_01: read "45.6\n"
2014.04.30 20:33:41 3: NETIO_01: write "1w get 2853b9f5040000bb\n", expect \d+.\d\n
2014.04.30 20:33:41 3: NETIO_01: read "38.5\n"
2014.04.30 20:33:41 3: NETIO_01: write "1w get 28f999f5040000d0\n", expect \d+.\d\n
2014.04.30 20:33:41 3: NETIO_01: read "30.9\n"
2014.04.30 20:33:41 3: NETIO_01: write "1w get 282805f5040000b5\n", expect \d+.\d\n
temp 1
temp 1
temp 1
temp 1
2014.04.30 20:28:41 3: 1w_Messung: temp 1
2014.04.30 20:28:41 3: NETIO_01: read "29.6\n"
2014.04.30 20:28:41 3: NETIO_01: write "1w get 28f70cf60400002e\n", expect \d+.\d\n
2014.04.30 20:28:41 3: NETIO_01: read "40.6\n"
2014.04.30 20:28:41 3: NETIO_01: write "1w get 28e79bf50400001b\n", expect \d+.\d\n
2014.04.30 20:28:41 3: NETIO_01: read "45.6\n"
2014.04.30 20:28:41 3: NETIO_01: write "1w get 2853b9f5040000bb\n", expect \d+.\d\n
2014.04.30 20:28:41 3: NETIO_01: read "38.5\n"
2014.04.30 20:28:41 3: NETIO_01: write "1w get 28f999f5040000d0\n", expect \d+.\d\n
2014.04.30 20:28:41 3: NETIO_01: read "30.9\n"
2014.04.30 20:28:41 3: NETIO_01: write "1w get 282805f5040000b5\n", expect \d+.\d\n

Versuch 3
classdef

# Uebergabeparameter Onewire Geräte ID
params devID
# Umsetzung in ECMD Befehle 1w get = Tempwert lesen
get T cmd {"1w get %devID\n"}
get T expect "\d+.\d\n"
get T postproc {\
s/\n//g;\
my $hash  = $defs{%NAME};\
my $temperature = $_;\
\
readingsSingleUpdate($hash, "temperature", $temperature, 1);\
readingsSingleUpdate($hash, "state", $temperature, 1);\
\
}

Log

temp 29.6
temp 40.6
temp 45.6
temp 38.5
2014.04.30 20:45:50 3: 1w_Messung: temp 30.9
2014.04.30 20:45:50 3: NETIO_01: read "29.6\n"
2014.04.30 20:45:50 3: NETIO_01: write "1w get 28f70cf60400002e\n", expect \d+.\d\n
2014.04.30 20:45:50 3: NETIO_01: read "40.6\n"
2014.04.30 20:45:50 3: NETIO_01: write "1w get 28e79bf50400001b\n", expect \d+.\d\n
2014.04.30 20:45:50 3: NETIO_01: read "45.6\n"
2014.04.30 20:45:50 3: NETIO_01: write "1w get 2853b9f5040000bb\n", expect \d+.\d\n
2014.04.30 20:45:49 3: NETIO_01: read "38.5\n"
2014.04.30 20:45:49 3: NETIO_01: write "1w get 28f999f5040000d0\n", expect \d+.\d\n
2014.04.30 20:45:49 3: NETIO_01: read "30.9\n"
2014.04.30 20:45:49 3: NETIO_01: write "1w get 282805f5040000b5\n", expect \d+.\d\n
temp 29.6
temp 40.6
temp 45.6
temp 38.5
2014.04.30 20:40:50 3: 1w_Messung: temp 30.9
2014.04.30 20:40:50 3: NETIO_01: read "29.6\n"
2014.04.30 20:40:50 3: NETIO_01: write "1w get 28f70cf60400002e\n", expect \d+.\d\n
2014.04.30 20:40:50 3: NETIO_01: read "40.6\n"
2014.04.30 20:40:50 3: NETIO_01: write "1w get 28e79bf50400001b\n", expect \d+.\d\n
2014.04.30 20:40:50 3: NETIO_01: read "45.6\n"
2014.04.30 20:40:50 3: NETIO_01: write "1w get 2853b9f5040000bb\n", expect \d+.\d\n
2014.04.30 20:40:49 3: NETIO_01: read "38.5\n"
2014.04.30 20:40:49 3: NETIO_01: write "1w get 28f999f5040000d0\n", expect \d+.\d\n
2014.04.30 20:40:49 3: NETIO_01: read "30.9\n"
2014.04.30 20:40:49 3: NETIO_01: write "1w get 282805f5040000b5\n", expect \d+.\d\n

Vor zwei Tagen bei den gleichen Versuchen, hatte ich keine Änderungen bei den Leerzeilen. Warum das so war ?
Aber was mir Damals schon aufviel, wie auch hier zu sehen, ist das die Temperaturen über die ganze Zeit gleich bleiben.
Nochmals die Ergebnisse der Versuche mit einem 2ten geöffneten Bowserfenster, im Fenster ist die "Ethersex 1-wire Statusseite".
Versuch 1


temp 38.5

temp 41.6

temp 45.1

temp 41.2

2014.04.30 21:07:14 3: 1w_Messung: temp 30.4
2014.04.30 21:07:14 3: NETIO_01: read "38.5\n"
2014.04.30 21:07:14 3: NETIO_01: write "1w get 28f70cf60400002e\n", expect \d+.\d\n
2014.04.30 21:07:14 3: NETIO_01: read "41.6\n"
2014.04.30 21:07:14 3: NETIO_01: write "1w get 28e79bf50400001b\n", expect \d+.\d\n
2014.04.30 21:07:14 3: NETIO_01: read "45.1\n"
2014.04.30 21:07:14 3: NETIO_01: write "1w get 2853b9f5040000bb\n", expect \d+.\d\n
2014.04.30 21:07:14 3: NETIO_01: read "41.2\n"
2014.04.30 21:07:14 3: NETIO_01: write "1w get 28f999f5040000d0\n", expect \d+.\d\n
2014.04.30 21:07:14 3: NETIO_01: read "30.4\n"
2014.04.30 21:07:14 3: NETIO_01: write "1w get 282805f5040000b5\n", expect \d+.\d\n

temp 38.6

temp 41.6

temp 45.6

temp 41.2

2014.04.30 21:02:14 3: 1w_Messung: temp 30.9
2014.04.30 21:02:14 3: NETIO_01: read "38.6\n"
2014.04.30 21:02:14 3: NETIO_01: write "1w get 28f70cf60400002e\n", expect \d+.\d\n
2014.04.30 21:02:14 3: NETIO_01: read "41.6\n"
2014.04.30 21:02:14 3: NETIO_01: write "1w get 28e79bf50400001b\n", expect \d+.\d\n
2014.04.30 21:02:14 3: NETIO_01: read "45.6\n"
2014.04.30 21:02:14 3: NETIO_01: write "1w get 2853b9f5040000bb\n", expect \d+.\d\n
2014.04.30 21:02:14 3: NETIO_01: read "41.2\n"
2014.04.30 21:02:14 3: NETIO_01: write "1w get 28f999f5040000d0\n", expect \d+.\d\n
2014.04.30 21:02:14 3: NETIO_01: read "30.9\n"
2014.04.30 21:02:14 3: NETIO_01: write "1w get 282805f5040000b5\n", expect \d+.\d\n

Versuch 2

temp 1
temp 1
temp 1
temp 1
2014.04.30 21:18:33 3: 1w_Messung: temp 1
2014.04.30 21:18:33 3: NETIO_01: read "38.3\n"
2014.04.30 21:18:33 3: NETIO_01: write "1w get 28f70cf60400002e\n", expect \d+.\d\n
2014.04.30 21:18:33 3: NETIO_01: read "41.6\n"
2014.04.30 21:18:33 3: NETIO_01: write "1w get 28e79bf50400001b\n", expect \d+.\d\n
2014.04.30 21:18:33 3: NETIO_01: read "43.0\n"
2014.04.30 21:18:33 3: NETIO_01: write "1w get 2853b9f5040000bb\n", expect \d+.\d\n
2014.04.30 21:18:33 3: NETIO_01: read "41.1\n"
2014.04.30 21:18:33 3: NETIO_01: write "1w get 28f999f5040000d0\n", expect \d+.\d\n
2014.04.30 21:18:33 3: NETIO_01: read "29.6\n"
2014.04.30 21:18:33 3: NETIO_01: write "1w get 282805f5040000b5\n", expect \d+.\d\n
temp 1
temp 1
temp 1
temp 1
2014.04.30 21:13:33 3: 1w_Messung: temp 1
2014.04.30 21:13:33 3: NETIO_01: read "38.4\n"
2014.04.30 21:13:33 3: NETIO_01: write "1w get 28f70cf60400002e\n", expect \d+.\d\n
2014.04.30 21:13:33 3: NETIO_01: read "41.6\n"
2014.04.30 21:13:33 3: NETIO_01: write "1w get 28e79bf50400001b\n", expect \d+.\d\n
2014.04.30 21:13:33 3: NETIO_01: read "43.9\n"
2014.04.30 21:13:33 3: NETIO_01: write "1w get 2853b9f5040000bb\n", expect \d+.\d\n
2014.04.30 21:13:33 3: NETIO_01: read "41.1\n"
2014.04.30 21:13:33 3: NETIO_01: write "1w get 28f999f5040000d0\n", expect \d+.\d\n
2014.04.30 21:13:33 3: NETIO_01: read "29.9\n"
2014.04.30 21:13:33 3: NETIO_01: write "1w get 282805f5040000b5\n", expect \d+.\d\n

Versuch 3

temp 38.8
temp 41.6
temp 45.8
temp 41.2
2014.04.30 20:55:50 3: 1w_Messung: temp 31.1
2014.04.30 20:55:50 3: NETIO_01: read "38.8\n"
2014.04.30 20:55:50 3: NETIO_01: write "1w get 28f70cf60400002e\n", expect \d+.\d\n
2014.04.30 20:55:50 3: NETIO_01: read "41.6\n"
2014.04.30 20:55:50 3: NETIO_01: write "1w get 28e79bf50400001b\n", expect \d+.\d\n
2014.04.30 20:55:50 3: NETIO_01: read "45.8\n"
2014.04.30 20:55:50 3: NETIO_01: write "1w get 2853b9f5040000bb\n", expect \d+.\d\n
2014.04.30 20:55:49 3: NETIO_01: read "41.2\n"
2014.04.30 20:55:49 3: NETIO_01: write "1w get 28f999f5040000d0\n", expect \d+.\d\n
2014.04.30 20:55:49 3: NETIO_01: read "31.1\n"
2014.04.30 20:55:49 3: NETIO_01: write "1w get 282805f5040000b5\n", expect \d+.\d\n
temp 38.8
temp 41.6
temp 45.3
temp 41.2
2014.04.30 20:50:50 3: 1w_Messung: temp 29.9
2014.04.30 20:50:50 3: NETIO_01: read "38.8\n"
2014.04.30 20:50:50 3: NETIO_01: write "1w get 28f70cf60400002e\n", expect \d+.\d\n
2014.04.30 20:50:50 3: NETIO_01: read "41.6\n"
2014.04.30 20:50:50 3: NETIO_01: write "1w get 28e79bf50400001b\n", expect \d+.\d\n
2014.04.30 20:50:50 3: NETIO_01: read "45.3\n"
2014.04.30 20:50:50 3: NETIO_01: write "1w get 2853b9f5040000bb\n", expect \d+.\d\n
2014.04.30 20:50:49 3: NETIO_01: read "41.2\n"
2014.04.30 20:50:49 3: NETIO_01: write "1w get 28f999f5040000d0\n", expect \d+.\d\n
2014.04.30 20:50:49 3: NETIO_01: read "29.9\n"
2014.04.30 20:50:49 3: NETIO_01: write "1w get 282805f5040000b5\n", expect \d+.\d\n


Boris, herzlichen Dank daß du unserer (Unwissenden) annimmst.

Beste Grüße Thomas
FHEM auf RPi Rev.2 mit COC, FS20-Module, LAN-Steckdosen, JeeLink - 4x LaCrosse-Sensoren

kpwg

Hallo Thomas,

bezüglich stets gleichbleibender Temperaturwerte ist zu beachten, das meine 1wire.classdef-Beispiele mit aktiviertem Polling im Ethersex getestet wurden! Das Feature ist noch nicht immer Bestandteil von Ethersex; es macht den Umgang mit den dann stets aktuell zur Verfügung stehenden Werten ohne vorheriges 1w convert deutlich einfacher.

Generell sollte zum "Flottmachen" alter classdef's beachtet werden:
- Kommandos und Befehle für ECMD müssen mit \n abgeschlossen werden (sonst "hängt" die Verbindung)
- expect hinzufügen; anfangs einfach mit .* , später spezifisch gestalten (Reguläre Ausdrücke)
- mit logTraffic 0 die Kommunikation beobachten!

Viele Grüße, Ricardo



Gernott

#126
Hallo

Ich habe bei mir folgende Beobachtung gemacht, deshalb hänge ich mich einmal hier mit an:

Im Logfile erscheinen diese Meldungen nach dem Absetzen des 1-wire-Kommandos "convert":

2014.05.01 22:55:47 5: ECMDDevice: Analyze command >{"1w convert\n"}<
2014.05.01 22:55:47 4: ECMDDevice OG_Temp messen
2014.05.01 22:55:48 2: autocreate: define ECMDDevice message OK
2014.05.01 22:55:48 1: ERROR: Unknown module message


Ich vermute, es wird durch die Rückgabe von "OK" nach dem "convert"ausgelöst. Das autocreate erscheint mir auch seltsam.
Kann man das irgendwie abstellen?

Viele Grüße
Gernot

Dr. Boris Neubert

Zitat von: ext23 am 30 April 2014, 08:21:38

Das OK kommt wenn eine andere Abfrage dazwischen funkt so wie ich das sehe. Das OK stammt sicher von dem convert...


Wie schaffst Du es denn überhaupt, den zweiten Befehl zu senden, bevor der erste beendet ist? Also wie löst Du die Kommunikation mit dem Gerät aus?

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

Dr. Boris Neubert

Zitat von: kpwg am 30 April 2014, 22:36:39
Hallo Thomas,

bezüglich stets gleichbleibender Temperaturwerte ist zu beachten, das meine 1wire.classdef-Beispiele mit aktiviertem Polling im Ethersex getestet wurden! Das Feature ist noch nicht immer Bestandteil von Ethersex; es macht den Umgang mit den dann stets aktuell zur Verfügung stehenden Werten ohne vorheriges 1w convert deutlich einfacher.

Generell sollte zum "Flottmachen" alter classdef's beachtet werden:
- Kommandos und Befehle für ECMD müssen mit \n abgeschlossen werden (sonst "hängt" die Verbindung)
- expect hinzufügen; anfangs einfach mit .* , später spezifisch gestalten (Reguläre Ausdrücke)
- mit logTraffic 0 die Kommunikation beobachten!

Viele Grüße, Ricardo

Und, Thomas, es ist nur ein postproc pro Befehl erlaubt (erste classdef falsch) und mit Loglevel 5 zusätzlich zum logTraffic müßte sich der Ablauf noch besser verfolgen lassen.

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

ext23

Zitat von: Dr. Boris Neubert am 02 Mai 2014, 07:08:45
Wie schaffst Du es denn überhaupt, den zweiten Befehl zu senden, bevor der erste beendet ist? Also wie löst Du die Kommunikation mit dem Gerät aus?

Na das wird alles über AT geregelt. Und dann minütlich, also ganz normal eben.

Gruß
Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

Dr. Boris Neubert

Zitat von: ext23 am 02 Mai 2014, 09:55:00
Na das wird alles über AT geregelt. Und dann minütlich, also ganz normal eben.

Zeig mal das define, bitte.

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

ext23

Anbei mal alles was so dazu gehört:

define AVRNETIO2 ECMD telnet 192.168.0.58:2701
attr AVRNETIO2 classdefs adc=/opt/fhem/cfg/AVR-NET-IO_ADC.classdef:ONEWIRE=/opt/fhem/cfg/onewire.classdef:DIn=/opt/fhem/cfg/AVR-NET-IO_DIn.classdef
attr AVRNETIO2 room X_Interface

define ba_Temp_Steuereinheit ECMDDevice ONEWIRE 282f1bc3030000d5
attr ba_Temp_Steuereinheit IODev AVRNETIO2
attr ba_Temp_Steuereinheit room Balkon

define ba_Wassertonne ECMDDevice DIn 0 1
attr ba_Wassertonne IODev AVRNETIO2
attr ba_Wassertonne devStateIcon *leer:Wecker.Immer *voll:Wecker.Wochentags
attr ba_Wassertonne eventMap 0:voll 1:leer
attr ba_Wassertonne room Balkon

define Timer_1Wire_ba_Temp_Steuereinheit at +*00:05:00 set ba_Temp_Steuereinheit messen;; sleep 2;; get ba_Temp_Steuereinheit temp
attr Timer_1Wire_ba_Temp_Steuereinheit room X_Timer

define Timer_ba_Wassertonne at +*00:01:00 get ba_Wassertonne status
attr Timer_ba_Wassertonne room X_Timer


Gruß
Daniel
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

Dr. Boris Neubert

Hallo Daniel,

das ist kurios. Kannst Du bitte den AVRNETIO und die angeschlossenen Geräte mal mit Level 5 loggen lassen, damit wir herausfinden, wie das Reihenfolgeproblem entsteht?

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

tpm88

Hallo zusammen,

gibt es eigentlich eine einfache / elegante Möglichkeit eine geänderte classdef Datei für das ECMD Device neu einzulesen?

Derzeit behelfe ich mir eher unelegant, das Attribut classdef abzuändern und wieder zurück zu ändern. Dabei werden die classdef files neu gelesen.

Gruss
Tobias
Test FHEM Server on RPi, CUL_HM
Prod FHEM Server on Odroid HC1, HM-USB, JeeLink
Devices: diverse HM, IT1500, 1wire, LaCrosse, MQTT

ext23

Mach ich, ich hab übrigens noch die Bodenfeuchte Messung unterschlagen:

define ba_Bodenfeuchte ECMDDevice adc 7
attr ba_Bodenfeuchte IODev AVRNETIO2
attr ba_Bodenfeuchte referenz 603
attr ba_Bodenfeuchte room Balkon
attr ba_Bodenfeuchte schwellwert 70

define Bodenfeuchtemessung at +*00:01 get ba_Bodenfeuchte value
attr Bodenfeuchtemessung room X_Timer


Hier das Log, reicht das so?

2014.05.02 11:42:38 2: autocreate: define ECMDDevice message port 0: 0x0a
2014.05.02 11:42:38 1: ERROR: Unknown module message
2014.05.02 11:42:39 2: After sleep: temp 5.7
2014.05.02 11:43:37 3: Bodenfeuchtemessung: value 23.22
2014.05.02 11:43:37 5: ECMDDevice: Analyze command >{"io get pin 0\n"}<
2014.05.02 11:43:37 4: ECMDDevice ba_Wassertonne status port 0: 0x0a
2014.05.02 11:43:37 3: Timer_ba_Wassertonne: status port 0: 0x0a
2014.05.02 11:44:37 5: AVRNETIO2: sending command "adc get 7\n"
2014.05.02 11:44:37 5: AVRNETIO2: write "adc get 7\n", expect .*
2014.05.02 11:44:37 5: SW: 6164632067657420370a
2014.05.02 11:44:37 5: AVRNETIO2: read "089 \n"
2014.05.02 11:44:37 5: AVRNETIO2: received answer "089 \n"
2014.05.02 11:44:37 3: Bodenfeuchtemessung: value 22.72
2014.05.02 11:44:37 5: ECMDDevice: Analyze command >{"io get pin 0\n"}<
2014.05.02 11:44:37 5: AVRNETIO2: sending command "io get pin 0\n"
2014.05.02 11:44:37 5: AVRNETIO2: write "io get pin 0\n", expect .*
2014.05.02 11:44:37 5: SW: 696f206765742070696e20300a
2014.05.02 11:44:37 5: AVRNETIO2: read "port 0: 0x0a\n"
2014.05.02 11:44:37 5: AVRNETIO2: received answer "port 0: 0x0a\n"
2014.05.02 11:44:37 4: ECMDDevice ba_Wassertonne status port 0: 0x0a
2014.05.02 11:44:37 3: Timer_ba_Wassertonne: status port 0: 0x0a
2014.05.02 11:45:37 5: AVRNETIO2: sending command "adc get 7\n"
2014.05.02 11:45:37 5: AVRNETIO2: write "adc get 7\n", expect .*
2014.05.02 11:45:37 5: SW: 6164632067657420370a
2014.05.02 11:45:37 5: AVRNETIO2: read "088 \n"
2014.05.02 11:45:37 5: AVRNETIO2: received answer "088 \n"
2014.05.02 11:45:37 3: Bodenfeuchtemessung: value 22.55
2014.05.02 11:45:37 5: ECMDDevice: Analyze command >{"io get pin 0\n"}<
2014.05.02 11:45:37 5: AVRNETIO2: sending command "io get pin 0\n"
2014.05.02 11:45:37 5: AVRNETIO2: write "io get pin 0\n", expect .*
2014.05.02 11:45:37 5: SW: 696f206765742070696e20300a
2014.05.02 11:45:37 5: AVRNETIO2: read "port 0: 0x0a\n"
2014.05.02 11:45:37 5: AVRNETIO2: received answer "port 0: 0x0a\n"
2014.05.02 11:45:37 4: ECMDDevice ba_Wassertonne status port 0: 0x0a
2014.05.02 11:45:37 3: Timer_ba_Wassertonne: status port 0: 0x0a
2014.05.02 11:46:37 5: AVRNETIO2: sending command "adc get 7\n"
2014.05.02 11:46:37 5: AVRNETIO2: write "adc get 7\n", expect .*
2014.05.02 11:46:37 5: SW: 6164632067657420370a
2014.05.02 11:46:37 5: AVRNETIO2: read "090 \n"
2014.05.02 11:46:37 5: AVRNETIO2: received answer "090 \n"
2014.05.02 11:46:37 3: Bodenfeuchtemessung: value 23.88
2014.05.02 11:46:37 5: ECMDDevice: Analyze command >{"io get pin 0\n"}<
2014.05.02 11:46:37 5: AVRNETIO2: sending command "io get pin 0\n"
2014.05.02 11:46:37 5: AVRNETIO2: write "io get pin 0\n", expect .*
2014.05.02 11:46:37 5: SW: 696f206765742070696e20300a
2014.05.02 11:46:37 5: AVRNETIO2: read "port 0: 0x0a\n"
2014.05.02 11:46:37 5: AVRNETIO2: received answer "port 0: 0x0a\n"
2014.05.02 11:46:37 4: ECMDDevice ba_Wassertonne status port 0: 0x0a
2014.05.02 11:46:37 3: Timer_ba_Wassertonne: status port 0: 0x0a
2014.05.02 11:47:37 5: AVRNETIO2: sending command "adc get 7\n"
2014.05.02 11:47:37 5: AVRNETIO2: write "adc get 7\n", expect .*
2014.05.02 11:47:37 5: SW: 6164632067657420370a
2014.05.02 11:47:37 5: AVRNETIO2: read "08C \n"
2014.05.02 11:47:37 5: AVRNETIO2: received answer "08C \n"
2014.05.02 11:47:37 3: Bodenfeuchtemessung: value 23.22
2014.05.02 11:47:37 5: ECMDDevice: Analyze command >{"1w convert\n"}<
2014.05.02 11:47:37 5: AVRNETIO2: sending command "1w convert\n"
2014.05.02 11:47:37 5: AVRNETIO2: write "1w convert\n"
2014.05.02 11:47:37 5: SW: 317720636f6e766572740a
2014.05.02 11:47:37 4: ECMDDevice ba_Temp_Steuereinheit messen
2014.05.02 11:47:37 5: ECMDDevice: Analyze command >{"io get pin 0\n"}<
2014.05.02 11:47:37 5: AVRNETIO2: sending command "io get pin 0\n"
2014.05.02 11:47:37 5: AVRNETIO2: write "io get pin 0\n", expect .*
2014.05.02 11:47:37 5: SW: 696f206765742070696e20300a
2014.05.02 11:47:38 5: AVRNETIO2: read "OK\n"
2014.05.02 11:47:38 5: AVRNETIO2: received answer "OK\n"
2014.05.02 11:47:38 4: ECMDDevice ba_Wassertonne status OK
2014.05.02 11:47:38 3: Timer_ba_Wassertonne: status OK
2014.05.02 11:47:38 5: AVRNETIO2: read "port 0: 0x0a\n"
2014.05.02 11:47:38 5: AVRNETIO2: Spontaneously received "port 0: 0x0a\n"
2014.05.02 11:47:38 5: AVRNETIO2 dispatch port 0: 0x0a
2014.05.02 11:47:38 2: autocreate: define ECMDDevice message port 0: 0x0a
2014.05.02 11:47:38 1: ERROR: Unknown module message
2014.05.02 11:47:39 5: ECMDDevice: Analyze command >{"1w get 282f1bc3030000d5\n"}<
2014.05.02 11:47:39 5: AVRNETIO2: sending command "1w get 282f1bc3030000d5\n"
2014.05.02 11:47:39 5: AVRNETIO2: write "1w get 282f1bc3030000d5\n", expect .*
2014.05.02 11:47:39 5: SW: 31772067657420323832663162633330333030303064350a
2014.05.02 11:47:39 5: AVRNETIO2: read "5.6\n"
2014.05.02 11:47:39 5: AVRNETIO2: received answer "5.6\n"
2014.05.02 11:47:39 4: ECMDDevice ba_Temp_Steuereinheit temp 5.6
2014.05.02 11:47:39 2: After sleep: temp 5.6
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)