Hallo,
bei meinem DOIF wird der default Wert nicht berücksichtigt.
Das Gerät PCA301_1 hat noch kein Reading "power"
Über [PCA301_1:power,0] sollte aber doch bei nicht Vorhandensein des readings als Default Wert "0" genommen werden!?
Jedoch bekomme ich als Warnung:
condition c01: Argument "" isn't numeric in numeric lt (<)
Hier das DOIF dazu:
defmod di_Entfeuchter DOIF (([PCA301_1:power,0] < 3 and [di_Luftfeuchtigkeit] eq "ok") or [structureFenster.wz:state] ne 'all_closed') \
(set PCA301_1 off) \
DOELSEIF \
([di_Luftfeuchtigkeit] eq "hoch" and [structureFenster.wz:state] eq 'all_closed')\
(set PCA301_1 on)
attr di_Entfeuchter cmdState off|on
attr di_Entfeuchter event-on-change-reading none
attr di_Entfeuchter room LaCrosse
attr di_Entfeuchter wait 10:300,0
Verwende ich das Attribut "attr di_Entfeuchter notexist 0"
Bekomme ich keine Warnung.
Es sollte doch aber auch mit dem Default Wert am Reading selbst funktionieren, oder habe ich hier einen Denkfehler?
Aus commandref:
ZitatErsatzwert für nicht existierende Readings oder Status back
Es kommt immer wieder vor, dass in der Definition des DOIF-Moduls angegebene Readings oder Status zur Laufzeit nicht existieren. Der Wert ist dann leer. Bei der Definition von Status oder Readings kann für diesen Fall ein Vorgabewert oder sogar eine Perlberechnung am Ende des Ausdrucks kommagetrennt angegeben werden.
Syntax:
[<device>,<default value>]
oder
[<device>:<reading>,<default value>]
Beispiele:
[lamp,"off"]
[room:temperatur,20]
[brightness,3*[myvalue]+2]
[heating,AttrVal("mydevice","myattr","")]
[[mytime,"10:00"]]
Möchte man stattdessen einen bestimmten Wert global für das gesamte Modul definieren, so lässt sich das über das Attribut notexist bewerkstelligen. Ein angegebener Default-Wert beim Status oder beim Reading übersteuert das "notexist"-Attribut.
Syntax: attr <DOIF-module> notexist "<default value>"
List von PCA301_1:
Internals:
DEF 26D98F 06
FUUID 5c44c6e8-f33f-a2c3-3bb6-fe23e9dff1db4c92
FVERSION 36_PCA301.pm:0.120560/2016-08-22
IODev myJeeLink
LASTInputDev myJeeLink
MSGCNT 1554
NAME PCA301_1
NR 623
PCA301_lastRcv 2019-03-21 10:20:16
PCA301_lastSend 2019-03-21 07:18:36
STATE off
TYPE PCA301
addr 26D98F
channel 06
myJeeLink_MSGCNT 1554
myJeeLink_RAWMSG OK 24 6 4 38 217 143 0 0 0 0 0
myJeeLink_TIME 2019-03-21 10:20:16
Helper:
DBLOG:
state:
logdb:
TIME 1553149116.127
VALUE off
READINGS:
2019-03-19 12:05:36 consumption 0
2019-03-19 12:05:36 consumptionTotal 0.79
2019-03-21 07:18:36 state off
2019-03-21 07:18:36 waitforACK ACK:off
Attributes:
DbLogInclude .*
IODev myJeeLink
devStateIcon on:on:toggle off:off:toggle set.*:light_exclamation:off
event-min-interval power:1800,consumption:1800,consumptionTotal:1800
event-on-change-reading state,power:2,consumption,consumptionTotal
icon measure_power
room PCA301
userReadings consumptionTotal:consumption.* monotonic {ReadingsVal($name,'consumption',0)}
webCmd on:off:toggle:statusRequest
ja, der interne Befehl wird mit einfachen Anführungszeichen für den Defaultwert angegeben, das scheint das Problem zu sein.
Es ist zwar unlogisch aber [PCA301_1:power,"0"] funktioniert ohne Warnung.
Danke für die Info.
Wird das im Modul noch korrigiert? Wenn nicht sollte das zumindest in die Commandref angepasst werden.
Beste Grüße
Schlimbo
Zitat von: Schlimbo am 21 März 2019, 12:07:23
Danke für die Info.
Wird das im Modul noch korrigiert? Wenn nicht sollte das zumindest in die Commandref angepasst werden.
Beste Grüße
Schlimbo
Ich muss es mir noch genauer im Sourcecode anschauen. Mein Ziel wird es sein, Zahlen ohne Anführungszeichen und ohne Warnungen angeben zu können, so wie man es erwartet.