DOIF: Default Wert wird nicht berücksichtigt

Begonnen von Schlimbo, 21 März 2019, 10:28:15

Vorheriges Thema - Nächstes Thema

Schlimbo

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

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Schlimbo

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

Damian

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.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF