Wenn kein Vergleich möglich = Device anlegen

Begonnen von choetzu, 05 August 2018, 01:45:59

Vorheriges Thema - Nächstes Thema

choetzu

Hallo

ich habe folgendes DOIF.

([":temperature"]
and [$DEVICE:temperature] > [?Rekorde:$DEVICE_TEMP_max])
(setreading Rekorde $DEVICE_TEMP_max [$DEVICE:temperature])     

DOELSE


Es vergleicht 2 Werte und schreibt je nach dem, wenn der Wert höher ist, einen neuen Rekord. Ich wollte dies machen, weil das statistik Modul in die Devices schreibt und zu unübersichtlich ist. So ist es einfacher.

Es funktioniert mit den bestehenden Devices-Temperatursensoren ganz gut. Doch wenn ich ein neues Device erstelle mit einem Reading Temperature, dann kommt immer die Fehlermeldung

[Sun Aug  5 01:31:35 2018] fhem.pl: Argument "" isn't numeric in numeric lt (<) at (eval 17415) line 1.
[Sun Aug  5 01:31:35 2018] fhem.pl: Argument "" isn't numeric in numeric gt (>) at (eval 17417) line 1.
[Sun Aug  5 01:31:35 2018] fhem.pl: Argument "" isn't numeric in numeric gt (>) at (eval 17417) line 1.
[Sun Aug  5 01:31:35 2018] fhem.pl: Argument "" isn't numeric in numeric lt (<) at (eval 17419) line 1.
[Sun Aug  5 01:31:35 2018] fhem.pl: Argument "" isn't numeric in numeric lt (<) at (eval 17419) line 1.


jemand eine Ahnung? Danke.

lg c
Raspi3, EnOcean, Zwave, Homematic


Damian


oder

and [$DEVICE:temperature] > [?Rekorde:$DEVICE_TEMP_max,-99])
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

choetzu

hab ich so gemacht. Es geht aber nicht. es kommt folgende Meldung, welche ich nicht wirklich interpretieren kann. Ich will ja nicht Devices per , separieren, oder?

[Sun Aug  5 15:49:49 2018] fhem.pl: Argument "" isn't numeric in numeric gt (>) at (eval 135351) line 1.
2018.08.05 15:49:49 2: Rekorde_TEMP_MAX_DOIF: setreading Rekorde Water_Control_TEMP_max : Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.

[Sun Aug  5 15:59:52 2018] fhem.pl: Argument "" isn't numeric in numeric lt (<) at (eval 137667) line 1.
2018.08.05 15:59:52 2: Rekorde_HUMIDITY_MIN_DOIF: setreading Rekorde Sensor_HUMIDITY_min : Usage: setreading <name> <reading> <value>
where <name> is a single device name, a list separated by comma (,) or a regexp. See the devspec section in the commandref.html for details.



usw usf

Konkret hat er bei den neuen Devices von Gardena (Sensor, Water_Control), welche beide folgende Readings (Auszug aus Readings) haben:


ambient_temperature-frost_warning             kein Frost        2018-07-27 00:34:50
ambient_temperature-temperature               33                  2018-08-05 15:54:50
humidity-humidity                                       77                  2018-08-05 15:54:50 (nur bei Device Sensor)
soil_temperature-temperature                      27                  2018-08-05 15:59:52 (nur bei Device Sensor)


Ahnung?
Raspi3, EnOcean, Zwave, Homematic

Ellert


choetzu

#5
danke. wir kommen dem ganzen schon näher. ;)

([":temperature"]
and [$DEVICE:temperature] > [?Rekorde:$DEVICE_TEMP_max,-99])
(setreading Rekorde $DEVICE_TEMP_max [$DEVICE:temperature,-99])     

DOELSE


 

Trotzdem kommt folgendes.

[Sun Aug  5 16:31:00 2018] fhem.pl: Argument "" isn't numeric in numeric gt (>) at (eval 144751) line 1.
[Sun Aug  5 16:31:00 2018] fhem.pl: Argument "" isn't numeric in numeric lt (<) at (eval 144756) line 1.
[Sun Aug  5 16:31:00 2018] fhem.pl: Argument "" isn't numeric in numeric gt (>) at (eval 144761) line 1.
[Sun Aug  5 16:31:00 2018] fhem.pl: Argument "" isn't numeric in numeric lt (<) at (eval 144766) line 1.
[Sun Aug  5 16:31:00 2018] fhem.pl: Argument "" isn't numeric in numeric gt (>) at (eval 144771) line 1.
[Sun Aug  5 16:31:00 2018] fhem.pl: Argument "" isn't numeric in numeric lt (<) at (eval 144776) line 1.


Leider weiss ich nicht, welches der 3 Gardena Devices genau gemeint ist. Könnte es an dem Reading ambient_temperature-frost_warning liegen, welches keinen numerischen Wert liefert?

EDIT: mir fällt auf, dass nun alle Rekorde wie folgt die Werte legen..

Sensor_HUMIDITY_max
-99
2018-08-05 16:56:07
Sensor_HUMIDITY_min
99

2018-08-05 16:56:07
Sensor_TEMP_max
-99

2018-08-05 16:56:08
Sensor_TEMP_min
99

2018-08-05 16:56:08
Technik_Klima_HUMIDITY_max
60

2018-06-11 14:23:48
Technik_Klima_HUMIDITY_min
17

2018-02-27 04:40:08
Technik_Klima_TEMP_max
28.7

2018-07-20 17:43:06
Technik_Klima_TEMP_min
18.3

2018-02-26 09:24:19
Water_Control_TEMP_max
-99

2018-08-05 16:56:08
Water_Control_TEMP_min
99

2018-08-05 16:56:08

Raspi3, EnOcean, Zwave, Homematic

Ellert

Gib dem anderen Reading auch einen Default.

choetzu

immer noch nicht

([":temperature"]
and [$DEVICE:temperature,0] > [?Rekorde:$DEVICE_TEMP_max,-99])
(setreading Rekorde $DEVICE_TEMP_max [$DEVICE:temperature,-99])     

DOELSE


Im Reading steht -99

und im Logfile immer noch

[Sun Aug  5 20:36:59 2018] fhem.pl: Argument "" isn't numeric in numeric gt (>) at (eval 201150) line 1.
[Sun Aug  5 20:36:59 2018] fhem.pl: Argument "" isn't numeric in numeric lt (<) at (eval 201155) line 1.
Raspi3, EnOcean, Zwave, Homematic