Hallo,
ich verzweifele gerade an diesem DOIF, was schon einige Jahre auf dem Buckel hat, mir aber bisher noch nicht aufgefallen war!
Ich verstehe die Fehlermeldung nicht. Sowohl Feuchte als auf Taupunkt sind bei beiden Sensoren nummerische Werte, oder was genau heißt diese Warnung?
Fskt ist, das DOIF arbeitet nicht.
defmod di.01.GH.ss.SA.Ventilator DOIF ([GH.in.1W.DS2438:Feuchte:d2] > 70 and ([GH.in.1W.DS2438:Taupunkt:d2]-1) > [GH.au.WS.DS2450:Taupunkt:d2] )\
(set GH.ss.SA.Ventilator on)\
DOELSEIF ([GH.in.1W.DS2438:Feuchte:d2] <= 70 or ([GH.in.1W.DS2438:Taupunkt:d2]) <= [GH.au.WS.DS2450:Taupunkt:d2])\
(set GH.ss.SA.Ventilator off)
attr di.01.GH.ss.SA.Ventilator alias autom. Belüftung
attr di.01.GH.ss.SA.Ventilator cmdState on|off
attr di.01.GH.ss.SA.Ventilator devStateIcon .*on:general_an@lightgreen .*off:general_aus@red
attr di.01.GH.ss.SA.Ventilator group Scripte
attr di.01.GH.ss.SA.Ventilator icon vent_ventilation_level_automatic
attr di.01.GH.ss.SA.Ventilator room 05-Gartenhaus
setstate di.01.GH.ss.SA.Ventilator on
setstate di.01.GH.ss.SA.Ventilator 2019-12-18 12:50:10 Device GH.in.1W.DS2438
setstate di.01.GH.ss.SA.Ventilator 2019-12-18 12:49:49 cmd 1
setstate di.01.GH.ss.SA.Ventilator 2019-12-18 12:49:49 cmd_event di.01.GH.ss.SA.Ventilator
setstate di.01.GH.ss.SA.Ventilator 2019-12-18 12:49:49 cmd_nr 1
setstate di.01.GH.ss.SA.Ventilator 2019-12-18 12:50:10 e_GH.in.1W.DS2438_Feuchte 90.33
setstate di.01.GH.ss.SA.Ventilator 2019-12-18 12:50:10 e_GH.in.1W.DS2438_Taupunkt 7.3
setstate di.01.GH.ss.SA.Ventilator 2019-12-18 12:49:14 mode enabled
setstate di.01.GH.ss.SA.Ventilator 2019-12-18 12:49:49 state on
setstate di.01.GH.ss.SA.Ventilator 2019-12-18 12:49:48 wait_timer no timer
setstate di.01.GH.ss.SA.Ventilator 2019-12-18 12:53:06 warning condition c01: Argument "" isn't numeric in numeric gt (>)\
Danke und Gruß,
Christian
Hi,
ein Argument ist zum Zeitpunkt der Abfrage leer -> ""
Idee: weil Taupunkt berechnet wird und just in dem Moment erstmal gelöscht wurde bevor er neu schreibt? Eventuell mit kurzem wait arbeiten ...
Gruß Otto
Hi Otto,
danke für die schnelle Antwort. Aber die Werte sind nicht leer!
defmod GH.in.1W.DS2438 OWMULTI DS2438 09DB84000003
attr GH.in.1W.DS2438 DbLogInclude temperature,Feuchte,Taupunkt,absFeuchte
attr GH.in.1W.DS2438 IODev 1Wire
attr GH.in.1W.DS2438 VFunction (161.29 * V / VDD - 25.8065)/(1.0546 - 0.00216 * T)
attr GH.in.1W.DS2438 VName Feuchte
attr GH.in.1W.DS2438 VUnit %
attr GH.in.1W.DS2438 alias DS2438
attr GH.in.1W.DS2438 comment Sensor: SHT35
attr GH.in.1W.DS2438 event-min-interval Feuchte:600,Temperatur:600,Taupunkt:600,absFeuchte:600
attr GH.in.1W.DS2438 group Sensoren
attr GH.in.1W.DS2438 icon temperature_humidity
attr GH.in.1W.DS2438 model DS2438
attr GH.in.1W.DS2438 room 98-1-Wire
attr GH.in.1W.DS2438 stateFormat {sprintf("T: %.2f°C, H: %.2f %%",ReadingsVal("$name","temperature",0),ReadingsVal("$name","Feuchte",0) )}
setstate GH.in.1W.DS2438 T: 8.80°C, H: 88.46 %
setstate GH.in.1W.DS2438 2019-12-18 13:40:47 Feuchte 88.46
setstate GH.in.1W.DS2438 2019-12-18 13:40:47 Taupunkt 7.0
setstate GH.in.1W.DS2438 2019-12-18 13:40:47 VDD 5.00
setstate GH.in.1W.DS2438 2019-12-18 13:40:47 absFeuchte 7.7
setstate GH.in.1W.DS2438 2019-12-18 13:40:47 state Feuchte: 88.46 % (T: 8.8 °C vs: 0.00 V vs.t: 0.00 Vs)
setstate GH.in.1W.DS2438 2019-12-18 13:40:47 temperature 8.8
setstate GH.in.1W.DS2438 2019-12-18 13:40:47 time 0
setstate GH.in.1W.DS2438 2019-12-18 13:40:47 vsense 0
setstate GH.in.1W.DS2438 2019-12-18 13:40:47 vsense.t 0
Auch der andere Sensor hat Werte!
GRuß,
Christian
poste doch bitte mal ein LIST anstatt der RAW DEF.....
Hi,
anbei die Lists und vielen Dank für den Support:
Christian.
DOIF:
Internals:
CFGFN Config/05-Gartenhaus.cfg
DEF ([GH.in.1W.DS2438:Feuchte:d2] > 70 and ([GH.in.1W.DS2438:Taupunkt:d2]-1) > [GH.au.WS.DS2450:Taupunkt:d2] )
(set GH.ss.SA.Ventilator on)
DOELSEIF ([GH.in.1W.DS2438:Feuchte:d2] <= 70 or ([GH.in.1W.DS2438:Taupunkt:d2]) <= [GH.au.WS.DS2450:Taupunkt:d2])
(set GH.ss.SA.Ventilator off)
DOIFDEV ^global$|^GH.au.WS.DS2450$|^GH.in.1W.DS2438$
FUUID 5c6003fa-f33f-48dd-8a13-278669cc49452ca9
MODEL FHEM
NAME di.01.GH.ss.SA.Ventilator
NR 466
NTFY_ORDER 50-di.01.GH.ss.SA.Ventilator
STATE on
TYPE DOIF
VERSION 20744 2019-12-14 10:26:26
READINGS:
2019-12-18 14:06:51 Device GH.in.1W.DS2438
2019-12-18 13:10:10 cmd 1
2019-12-18 13:10:10 cmd_event GH.in.1W.DS2438
2019-12-18 13:10:10 cmd_nr 1
2019-12-18 14:06:51 e_GH.in.1W.DS2438_Feuchte 87.53
2019-12-18 14:06:51 e_GH.in.1W.DS2438_Taupunkt 6.8
2019-12-18 12:49:14 mode enabled
2019-12-18 13:10:10 state on
2019-12-18 14:06:51 warning condition c01: Argument "" isn't numeric in numeric gt (>)
Regex:
accu:
cond:
GH.au.WS.DS2450:
0:
Taupunkt ^GH.au.WS.DS2450$:^Taupunkt:
1:
Taupunkt ^GH.au.WS.DS2450$:^Taupunkt:
GH.in.1W.DS2438:
0:
Feuchte ^GH.in.1W.DS2438$:^Feuchte:
Taupunkt ^GH.in.1W.DS2438$:^Taupunkt:
1:
Feuchte ^GH.in.1W.DS2438$:^Feuchte:
Taupunkt ^GH.in.1W.DS2438$:^Taupunkt:
attr:
cmdState:
0:
on
1:
off
waitdel:
condition:
0 ::ReadingValDoIf($hash,'GH.in.1W.DS2438','Feuchte','','d2') > 70 and (::ReadingValDoIf($hash,'GH.in.1W.DS2438','Taupunkt','','d2')-1) > ::ReadingValDoIf($hash,'GH.au.WS.DS2450','Taupunkt','','d2')
1 ::ReadingValDoIf($hash,'GH.in.1W.DS2438','Feuchte','','d2') <= 70 or (::ReadingValDoIf($hash,'GH.in.1W.DS2438','Taupunkt','','d2')) <= ::ReadingValDoIf($hash,'GH.au.WS.DS2450','Taupunkt','','d2')
do:
0:
0 set GH.ss.SA.Ventilator on
1:
0 set GH.ss.SA.Ventilator off
2:
helper:
DEVFILTER ^global$|^GH.au.WS.DS2450$|^GH.in.1W.DS2438$
NOTIFYDEV global|GH.au.WS.DS2450|GH.in.1W.DS2438
event Feuchte: 87.53,vsense: 0,vsense.t: 0,time: 0,VDD: 5.00,temperature: 8.8,Feuchte: 87.53 % (T: 8.8 °C vs: 0.00 V vs.t: 0.00 Vs),absFeuchte: 7.6,Taupunkt: 6.8
globalinit 1
last_timer 0
sleeptimer -1
timerdev GH.in.1W.DS2438
timerevent Feuchte: 87.53,vsense: 0,vsense.t: 0,time: 0,VDD: 5.00,temperature: 8.8,Feuchte: 87.53 % (T: 8.8 °C vs: 0.00 V vs.t: 0.00 Vs),absFeuchte: 7.6,Taupunkt: 6.8
triggerDev GH.in.1W.DS2438
timerevents:
Feuchte: 87.53
vsense: 0
vsense.t: 0
time: 0
VDD: 5.00
temperature: 8.8
Feuchte: 87.53 % (T: 8.8 °C vs: 0.00 V vs.t: 0.00 Vs)
absFeuchte: 7.6
Taupunkt: 6.8
timereventsState:
Feuchte: 87.53
vsense: 0
vsense.t: 0
time: 0
VDD: 5.00
temperature: 8.8
state: Feuchte: 87.53 % (T: 8.8 °C vs: 0.00 V vs.t: 0.00 Vs)
absFeuchte: 7.6
Taupunkt: 6.8
triggerEvents:
Feuchte: 87.53
vsense: 0
vsense.t: 0
time: 0
VDD: 5.00
temperature: 8.8
Feuchte: 87.53 % (T: 8.8 °C vs: 0.00 V vs.t: 0.00 Vs)
absFeuchte: 7.6
Taupunkt: 6.8
triggerEventsState:
Feuchte: 87.53
vsense: 0
vsense.t: 0
time: 0
VDD: 5.00
temperature: 8.8
state: Feuchte: 87.53 % (T: 8.8 °C vs: 0.00 V vs.t: 0.00 Vs)
absFeuchte: 7.6
Taupunkt: 6.8
internals:
perlblock:
readings:
all GH.in.1W.DS2438:Feuchte GH.in.1W.DS2438:Taupunkt GH.au.WS.DS2450:Taupunkt
trigger:
uiState:
uiTable:
Attributes:
alias autom. Belüftung
cmdState on|off
devStateIcon .*on:general_an@lightgreen .*off:general_aus@red
group Scripte
icon vent_ventilation_level_automatic
room 05-Gartenhaus
DS2438:
Internals:
CFGFN Config/98-1-Wire.cfg
DEF DS2438 09DB84000003
ERRCOUNT 0
ERRSTATE 0
FUUID 5df503ed-f33f-788a-2661-f28484a8c00af383
INTERVAL 300
IODev 1Wire
NAME GH.in.1W.DS2438
NOTIFYDEV global
NR 789
NTFY_ORDER 50-GH.in.1W.DS2438
OW_FAMILY 26
OW_ID 09DB84000003
PRESENT 1
ROM_ID 26.09DB84000003.EC
STATE T: 8.80°C, H: 87.53 %
TYPE OWMULTI
offset 0
Helper:
DBLOG:
Feuchte:
logdb:
TIME 1576674411.61059
VALUE 87.53
Taupunkt:
logdb:
TIME 1576674411.61059
VALUE 6.8
absFeuchte:
logdb:
TIME 1576674411.61059
VALUE 7.6
temperature:
logdb:
TIME 1576674411.61059
VALUE 8.8
READINGS:
2019-12-18 14:06:51 Feuchte 87.53
2019-12-18 14:06:51 Taupunkt 6.8
2019-12-18 14:06:51 VDD 5.00
2019-12-18 14:06:51 absFeuchte 7.6
2019-12-18 14:06:51 state Feuchte: 87.53 % (T: 8.8 °C vs: 0.00 V vs.t: 0.00 Vs)
2019-12-18 14:06:51 temperature 8.8
2019-12-18 14:06:51 time 0
2019-12-18 14:06:51 vsense 0
2019-12-18 14:06:51 vsense.t 0
owg_val:
8.828125
5
3.61
0
0
0
0
tempf:
factor 1
offset 0
Attributes:
DbLogInclude temperature,Feuchte,Taupunkt,absFeuchte
IODev 1Wire
VFunction (161.29 * V / VDD - 25.8065)/(1.0546 - 0.00216 * T)
VName Feuchte
VUnit %
alias DS2438
comment Sensor: SHT35
event-min-interval Feuchte:600,Temperatur:600,Taupunkt:600,absFeuchte:600
group Sensoren
icon temperature_humidity
model DS2438
room 98-1-Wire
stateFormat {sprintf("T: %.2f°C, H: %.2f %%",ReadingsVal("$name","temperature",0),ReadingsVal("$name","Feuchte",0) )}
DS2450
Internals:
ALARM 0
ASYNC 0
CFGFN Config/98-1-Wire.cfg
DEF DS2450 F9DA84000003
ERRCOUNT 0
ERRSTATE 0
FUUID 5df503ed-f33f-788a-24b1-9b41fe1b11c77ad0
INTERVAL 300
IODev 1Wire
NAME GH.au.1W.DS2450
NOTIFYDEV global
NR 783
NTFY_ORDER 50-GH.au.1W.DS2450
OW_FAMILY 20
OW_ID F9DA84000003
PRESENT 1
ROM_ID 20.F9DA84000003.DD
STATE T: 9.98°C, H: 77.82 %
TYPE OWAD
Helper:
DBLOG:
Feuchte:
logdb:
TIME 1576674410.40717
VALUE 77.82
Helligkeit:
logdb:
TIME 1576674410.40717
VALUE 197.63
Luftdruck:
logdb:
TIME 1576674410.40717
VALUE 1003
Taupunkt:
logdb:
TIME 1576674410.40717
VALUE 6.3
Temperatur:
logdb:
TIME 1576674410.40717
VALUE 9.98
absFeuchte:
logdb:
TIME 1576674410.40717
VALUE 7.3
READINGS:
2019-12-18 14:06:50 A 2.638
2019-12-18 14:06:50 B 0.608
2019-12-18 14:06:50 C 2.973
2019-12-18 14:06:50 D 2.508
2019-12-18 14:06:50 Feuchte 77.82
2019-12-18 14:06:50 Helligkeit 197.63
2019-12-18 14:06:50 Luftdruck 1003
2019-12-18 14:06:50 Taupunkt 6.3
2019-12-18 14:06:50 Temperatur 9.98
2019-12-18 14:06:50 absFeuchte 7.3
2019-12-18 14:06:50 state A: 2.638 V B: 0.608 V C: 2.973 V D: 2.508 V
owg_shigh:
0
0
0
0
owg_slow:
0
0
0
0
owg_val:
2.638359375
0.6075
2.972734375
2.508203125
owg_vhigh:
5.1
5.1
5.1
5.1
owg_vlow:
0
0
0
0
tempf:
A:
function VA
B:
function VB
C:
function VC
D:
function VD
Attributes:
AHigh 5.1
ALow 0
BHigh 5.1
BLow 0
CHigh 5.1
CLow 0
DHigh 5.1
DLow 0
DbLogInclude Temperatur,Feuchte,absFeuchte,Taupunkt,Helligkeit,Luftdruck
IODev 1Wire
alias DS2450
comment Sensoren:Helligkeit: MAX44009 Feuchte/Temperatur: SHT 21 Luftdruck: BMP280
event-min-interval Feuchte:600,Temperatur:600,Taupunkt:600,absFeuchte:600, Luftdruck:600, Helligkeit:600
group Sensoren
icon temperature_humidity
model DS2450
room 98-1-Wire
stateFormat {sprintf("T: %.2f°C, H: %.2f %%",ReadingsVal("$name","Temperatur",0),ReadingsVal("$name","Feuchte",0) )}
userReadings Temperatur {sprintf("%0.2f",(ReadingsNum("$name","A",0)-2.56)*128)},
Feuchte {sprintf("%0.2f",ReadingsNum("$name","B",0)*128)},
Helligkeit {sprintf("%0.2f",exp((ReadingsNum("$name","C",0)-2.56)*12.8))} ,
Luftdruck {sprintf("%.d",ReadingsNum("$name","D",0)*400)}
GH.au.1W.DS2450 ist NICHT GH.au.WS.DS2450
Hallo Frank,
super! Danke für Deine "Lesebrille"! Das habe ich komplett überlesen!
Jetzt ist der Fehler auch weg!
Spartacus!
Zitat von: Spartacus am 18 Dezember 2019, 13:46:24
danke für die schnelle Antwort. Aber die Werte sind nicht leer!
Meine Idee stimmte zwar nicht, aber Du hast sie auch nicht verstanden :)
Es geht nicht um den statischen Wert wenn Du ins Device schaust. Es ging mir darum, das z.B. userReadings aus anderen Readings/Werten berechnet werden und u.U. zum Zeitpunkt der Abfrage gerade nicht zur Verfügung stehen oder noch nicht den neuen Wert haben. So was kann vorkommen. ;)
Gruß Otto
Hi Otto,
hm! Dann muss ich doch noch mal nachhaken.....
So wie ich Dich jetzt verstehe:
Zur Zeit meiner Abfrage, kann es vorkommen, dass die Werte gerade in der Berechnung sind und daher das Reading "leer" ist. Ist zwar unwahrscheinlich kann aber vorkommen. Halen dran!
Was m.E. aber nicht sein kann, dass dieser Zustand andauert. Wenn ich das DOIF mit Checkall neu trigger, dann sollte der Fehler doch spätestens beim 2,3 Mal weg sein, oder?
Gruß,
Christian
Hallo Christian,
bei checkall wird es in deinem Fall gehen.
Nehmen wir folgendes an:
Du setzt ein Reading A
Du hast im gleichen Device vielleicht ein UserReading B=A*0.9
Du hast ein DOIF, notify oder was auch immer,
das triggert auf eine Veränderung von A
und fragt im Weiteren B ab
Dann könnte es sein B hat zu dieser Zeit den Wert noch nicht.
Vielleicht ist der Fall konstruiert, ich weiß aber das es ähnliche Fälle hier schon gab.
Gruß Otto
Hi Otto,
dann passt das ja! Vielen Dank für Deinen Support.
Schönen Abend noch,
Christian