avr netio nach fhem 5.8 update kein dht22 auslesen mehr möglich

Begonnen von ghostwriter, 31 Mai 2017, 20:30:48

Vorheriges Thema - Nächstes Thema

ghostwriter

Hallo liebe Forum Gemeinde

Ich habe vor Tagen mein Fhem von Version5.7 auf 5.8 upgedatet, nun kann ich meinen DHT22 nicht mehr richtig auslesen.
Vorher lief es seit Monaten ohne Probleme.

Meine define:
define WEB_MODUL ECMD telnet 192.168.1.90:2701
attr WEB_MODUL classdefs ONEWIRE=/opt/fhem/FHEM/onewire.classdef:DHT22=/opt/fhem/FHEM/dht22.classdef:RELAIS=/opt/fhem/FHEM/relais.classdef:IO=/opt/fhem/FHEM/io.classdef
attr WEB_MODUL room Keller


define DHT_22 ECMDDevice DHT22 0
attr DHT_22 IODev WEB_MODUL
attr DHT_22 event-on-change-reading .*
attr DHT_22 group Temperaturen
attr DHT_22 room Keller
attr DHT_22 sortby 1
attr DHT_22 stateFormat T: temperature H: humidity D:dewpoint
define Messung_DHT at +*00:15 get DHT_22 DHT
attr Messung_DHT group Timer
attr Messung_DHT room Keller


Meine dht22.classdef:
# Uebergabeparameter DHT22 ID 0...n
params devID
# Umsetzung in ECMD Befehle fuer DHT22
get DHT cmd {"dht temp %devID\n\000dht humid %devID\n"}
get DHT expect "-?\d+.\d\n"
get DHT postproc {\
s/(.*)\n(.*)\n/T: $1 H: $2/;\
my $hash  = $defs{%NAME};\
my $temperature = $1;\
my $humidity = $2;\
my $state = $_;\
\
readingsSingleUpdate($hash, "temperature", $temperature, 1);\
readingsSingleUpdate($hash, "humidity", $humidity, 1);\
readingsSingleUpdate($hash, "state", $state, 1);\
\
}


log auszug mit fhem5.8

2017.05.30 21:55:37 5: exec at command Messung_DHT
2017.05.30 21:55:37 5: Cmd: >get DHT_22 DHT<
2017.05.30 21:55:37 5: ECMDDevice: Analyze command >{"dht temp 0\n\000dht humid 0\n"}<
2017.05.30 21:55:37 5: WEB_MODUL: sending command dht temp 0\n\000dht humid 0\n (\144\150\164\040\164\145\155\160\040\060\012\000\144\150\164\040\150\165\155\151\144\040\060\012)
2017.05.30 21:55:37 5: SW: 6468742074656d7020300a006468742068756d696420300a
2017.05.30 21:55:37 5: WEB_MODUL: received answer 22.1\n (\062\062\056\061\012)
2017.05.30 21:55:37 5: Postprocessing "22.1\n (\062\062\056\061\012)" with perl command { s/(.*)\n(.*)\n/T: $1 H: $2/; my $hash  = $defs{DHT_22}; my $temperature = $1; my $humidity = $2; my $state = $_;  readingsSingleUpdate($hash, "temperature", $temperature, 1); readingsSingleUpdate($hash, "humidity", $humidity, 1); readingsSingleUpdate($hash, "state", $state, 1); }.
2017.05.30 21:55:37 5: Starting notify loop for DHT_22, 1 event(s), first is 22.1\n
2017.05.30 21:55:37 5: End notify loop for DHT_22
2017.05.30 21:55:37 5: Postprocessed value is "22.1\n (\062\062\056\061\012)".
2017.05.30 21:55:37 5: Starting notify loop for DHT_22, 2 event(s), first is DHT: 22.1\n
2017.05.30 21:55:37 5: End notify loop for DHT_22
2017.05.30 21:55:37 3: Messung_DHT: DHT 22.1

2017.05.30 21:55:37 5: redefine at command Messung_DHT as +*00:01 get DHT_22 DHT
2017.05.30 21:55:37 5: Starting notify loop for Messung_DHT, 1 event(s), first is Next: 21:56:37
2017.05.30 21:55:37 5: End notify loop for Messung_DHT


log auszug mit der 5.7 Version:
2017.05.30 18:25:03 5: exec at command Messung_DHT
2017.05.30 18:25:03 5: Cmd: >get DHT_22 DHT<
2017.05.30 18:25:03 5: ECMDDevice: Analyze command >{"dht temp 0\n\000dht humid 0\n"}<
2017.05.30 18:25:03 5: WEB_MODUL: command split into 2 parts.
2017.05.30 18:25:03 5: WEB_MODUL: sending command "dht temp 0\n"
2017.05.30 18:25:03 5: SW: 6468742074656d7020300a
2017.05.30 18:25:03 5: WEB_MODUL: received answer "22.5\n"
2017.05.30 18:25:03 5: WEB_MODUL: sending command "dht humid 0\n"
2017.05.30 18:25:03 5: SW: 6468742068756d696420300a
2017.05.30 18:25:03 5: WEB_MODUL: received answer "63.1\n"
2017.05.30 18:25:03 5: Postprocessing "22.5\n63.1\n" with perl command { s/(.*)\n(.*)\n/T: $1 H: $2/; my $hash  = $defs{DHT_22}; my $temperature = $1; my $humidity = $2; my $state = $_;  readingsSingleUpdate($hash, "temperature", $temperature, 1); readingsSingleUpdate($hash, "humidity", $humidity, 1); readingsSingleUpdate($hash, "state", $state, 1); }.
2017.05.30 18:25:03 5: Triggering DHT_22 (1 changes)
2017.05.30 18:25:03 5: Starting notify loop for DHT_22, 1 event(s), first is T: 22.5 H: 63.1
2017.05.30 18:25:03 5: Postprocessed value is "T: 22.5 H: 63.1".
2017.05.30 18:25:03 5: Triggering DHT_22 (1 changes)
2017.05.30 18:25:03 5: Starting notify loop for DHT_22, 1 event(s), first is DHT T: 22.5 H: 63.1
2017.05.30 18:25:03 3: Messung_DHT: DHT T: 22.5 H: 63.1
2017.05.30 18:25:03 5: redefine at command Messung_DHT as +*00:15 get DHT_22 DHT
2017.05.30 18:25:03 5: Triggering Messung_DHT (1 changes)
2017.05.30 18:25:03 5: Starting notify loop for Messung_DHT, 1 event(s), first is Next: 18:40:03


Ich komme irgendwie nicht weiter, meine Vermutung ich muß bestimmt die classdef ändern, weiß aber nicht wie.
Ist das anderen auch schon aufgefallen?
Ich bitte um Hilfe

Gruss

ghostwriter

Hallo liebe Forum Gemeinde

Ich habe zu Test zwecken mal die beiden ecmd.pm und ecmddevice.pm ausgetauscht und siehe es funktioniert wieder.
Also die funktionierte ecmd.pm vom 6.2.16 und ecmddevice vom 8.11.16 gehen.

Ist da etwas grundlegendes geändert worden?

Erstmal ist es so ok, aber die werden doch bei jedem update überschrieben.
Dann muss ich die jedes mal wieder umkopieren?

Gruss

CoolTux

Bitte über das Attribut excludeFromUpdate informieren.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Lonelycat

Servus,

ich steige gerade mit dem avr-net-io ein, schon lange in der Elektronik-Kiste und billig aus der Bucht.
Meine Lösung ist
attr Net_IO_Garage requestSeparator \000
es wird in der 66_EMCD.pm der Wert nicht mehr automatisch gesetzt, aber in der dht22m.classdef verwendet.

Gruß aus Bayern