Beim ECMD habe ich das Problem, das der Rückgabewert von z.B. Temperaturen oft der vorherigen Messwert zurück gibt.
z.B. zuerst sende ich ein "set Abgas_kalt messen" erhalte als Antwort ein "OK"
Dann sende ich ein "get Abgas_kalt temp" und erhalte auch ein "OK"
Wenn ich jetzt nocheinmal ein "get Abgas_kalt temp" sende erhalte ich den korrekten Wert.
Anbei drei Bild die das vielleicht Verdeutlichen.
Im Plot sieht man den Sägezahn und einen Sprung
Wenn ich die Werte für den Dachs abfrage kommt bei jedem ersten Versuch ein falscher Wert.
Da ich meine Konfiguration nicht ausschließen kann, anbei die zwei classdef und die Konfiguration im fhem.
FHEM Konfiguration:
#Ethersex Schopf
define Schopf ECMD telnet
192.168.255.91:2701attr Schopf classdefs ONEWIRE=/etc/fhem/onewire.classdef
attr Schopf room interface
define Schopf_Temp ECMDDevice ONEWIRE 10799d70010800db
attr Schopf_Temp group Raum Temp
attr Schopf_Temp room Heizung
#Ethersex Dachs
define DACHS ECMD telnet
192.168.255.90:2701attr DACHS classdefs ONEWIRE=/etc/fhem/onewire.classdef:DACHSR=/etc/fhem/dachs.classdef
attr DACHS room interface
define DachsS ECMDDevice DACHSR 0
attr DachsS room Heizung
attr DachS group Dachs
define HZ_Raum ECMDDevice ONEWIRE 1076b470010800f4
attr HZ_Raum group Raum Temp
attr HZ_Raum room Heizung
define RL_Dachs_kalt ECMDDevice ONEWIRE 1076b470010800f4
attr RL_Dachs_kalt group Heizung
attr RL_Dachs_kalt room Heizung
.... weitere 3 1Wire Sensoren ....
Hier die zwei classdef
dachs.classdef:
# Uebergabeparameter DACHs abfragen es gibt 4 Modis
params a
# Umsetzung in ECMD Befehle
# get 0 Modus e8
# get 1 Modus c0
# get 2 Modus 48
# get 3 Modus 50
#
get c0 cmd {"msr1 get 1"}
get e8 cmd {"msr1 get 0"}
get 48 cmd {"msr1 get 2"}
get 50 cmd {"msr1 get 3"}
onewire.classdef:
# Uebergabeparameter Onewire Geräte ID
params devID
# Umsetzung in ECMD Befehle 1w convert = Messung auslösen, 1w get = Tempwert lesen
set messen cmd {"1w convert"}
get temp cmd {"1w get %devID"}