FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: choetzu am 05 August 2018, 01:45:59

Titel: Wenn kein Vergleich möglich = Device anlegen
Beitrag von: choetzu am 05 August 2018, 01:45:59
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
Titel: Antw:Wenn kein Vergleich möglich = Device anlegen
Beitrag von: Ellert am 05 August 2018, 10:03:13
Vielleicht hilft https://fhem.de/commandref_DE.html#DOIF_notexist
Titel: Antw:Wenn kein Vergleich möglich = Device anlegen
Beitrag von: Damian am 05 August 2018, 10:21:51

oder

and [$DEVICE:temperature] > [?Rekorde:$DEVICE_TEMP_max,-99])
Titel: Antw:Wenn kein Vergleich möglich = Device anlegen
Beitrag von: choetzu am 05 August 2018, 16:01:55
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?
Titel: Antw:Wenn kein Vergleich möglich = Device anlegen
Beitrag von: Ellert am 05 August 2018, 16:06:27
Gib auch im Befehl einen Defaultwert an.
Titel: Antw:Wenn kein Vergleich möglich = Device anlegen
Beitrag von: choetzu am 05 August 2018, 16:46:56
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

Titel: Antw:Wenn kein Vergleich möglich = Device anlegen
Beitrag von: Ellert am 05 August 2018, 19:12:34
Gib dem anderen Reading auch einen Default.
Titel: Antw:Wenn kein Vergleich möglich = Device anlegen
Beitrag von: choetzu am 05 August 2018, 20:37:33
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.