FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: choetzu am 04 Februar 2018, 23:43:04

Titel: Event-map zum umwandeln in Zahlen?
Beitrag von: choetzu am 04 Februar 2018, 23:43:04
Hallo,
Ich habe im reading temperature 24.5 C stehen. Nun möchte ich via event-map das C rausfiltern. Ich habs versucht mit

\d\d.\d.\s:{ ReadingsNum("Raumthermostat_SZ_Heatit","temperature","none") }

Geht aber nicht. Wo ist der Denkfehler?
Titel: Antw:Event-map zum umwandeln in Zahlen?
Beitrag von: KernSani am 05 Februar 2018, 00:43:55
Ich bezweifle irgendwie, dass eventmap das richtige Attribut ist... was willst du denn erreichen?
Titel: Antw:Event-map zum umwandeln in Zahlen?
Beitrag von: marvin78 am 05 Februar 2018, 07:11:11
Ein userReading.
Titel: Antw:Event-map zum umwandeln in Zahlen?
Beitrag von: choetzu am 05 Februar 2018, 10:07:38
guten Morgen,

danke für die raschen Antworten.

Es geht um folgendes: Mein Thermostat speichert im Reading "temperature" die Temperatur wie folgt: 24.0 C . Also mit einem C am Schluss. Separat habe ich ein DOIF welches alle Devices mit dem Reading "temperature" auswertet und die Werte vergleicht. Wenn also nun das Reading keine Zahl ist, sondern eben 24.5 C, dann kommt es zu folgender Meldung:

[Sun Feb  4 22:29:06 2018] fhem.pl: Argument "24.5 C" isn't numeric in numeric lt (<) at (eval 5118495) line 1.
Logisch.

userReading kam mir auch in den Sinn, dann muss ich aber ein neues Reading definieren. Und dies geht leider auch nicht, weil ich im DOIF ja auf "temperature" triggere und somit die Fehlermeldung bleibt. Also muss ich das bestehende Reading von 24.5 C in 24.5 umwandeln.

Ich hoffe, ihr versteht, was ich meine ;)
Titel: Antw:Event-map zum umwandeln in Zahlen?
Beitrag von: marvin78 am 05 Februar 2018, 10:10:36
Das wird DOIF sicher können.

Warum du dann im DOIF nicht einfach auf das userReading triggern kannst, ist fraglich.

Grundlagen lernen würde sicher helfen.
Titel: Antw:Event-map zum umwandeln in Zahlen?
Beitrag von: Otto123 am 05 Februar 2018, 10:13:35
Zitat von: choetzu am 05 Februar 2018, 10:07:38
weil ich im DOIF ja auf "temperature" triggere und somit die Fehlermeldung bleibt. Also muss ich das bestehende Reading von 24.5 C in 24.5 umwandeln.
Moin,

und wenn Du im DOIF einfach :d hinter temperature schreibst? Beispiel aus der DOIF Doku (https://fhem.de/commandref_DE.html#DOIF_Filtern_nach_Zahlen)define di_heating DOIF ([adjusting:actuator:d] < 10) (set heating off) DOELSE (set heating on)

Gruß Otto
Titel: Antw:Event-map zum umwandeln in Zahlen?
Beitrag von: choetzu am 05 Februar 2018, 11:01:03
danke Otto, sehr guter Ansatz, daran habe ich noch gar nicht gedacht... ;)

hat aber leider nicht ganz geklappt, oder ich habe was falsches gemacht. Er hat mir zwar das Reading MAX in Rekorde geschrieben, aber es gibt immer noch die Fehlermeldung unten..

hier das DOIF_MAX

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

DOELSEIF 
([":temperature:d",0] > [?Rekorde:$DEVICE_TEMP_max,999]) 
(setreading Rekorde $DEVICE_TEMP_max [$DEVICE:temperature:d])    

DOELSE


und das DOIF_MIN
([":temperature"] 
and [$DEVICE:temperature:d] < [?Rekorde:$DEVICE_TEMP_min]) 
(setreading Rekorde $DEVICE_TEMP_min [$DEVICE:temperature:d])   

DOELSEIF
([":temperature:d",0] < [?Rekorde:$DEVICE_TEMP_min,999]) 
(setreading Rekorde $DEVICE_TEMP_min [$DEVICE:temperature:d])

DOELSE


Die Fehlermeldung bleibt die selbe...

[Mon Feb  5 10:59:14 2018] fhem.pl: Argument "" isn't numeric in numeric lt (<) at (eval 18562) line 1.
Titel: Antw:Event-map zum umwandeln in Zahlen?
Beitrag von: Otto123 am 05 Februar 2018, 11:15:00
Kannst DU  mir das erklären? [":temperature:d",0] die ,0 versteh ich nicht.
Titel: Antw:Event-map zum umwandeln in Zahlen?
Beitrag von: choetzu am 05 Februar 2018, 11:26:11
damit will ich erreichen, dass es ein Reading erstellt, wenn es noch gar keins gibt. Also Wert 0. Hat eigentlich gut geklappt mit den anderen Werten...
Titel: Antw:Event-map zum umwandeln in Zahlen?
Beitrag von: Otto123 am 05 Februar 2018, 11:44:44
Also wenn die Fehlermeldung wirklich von dem DOIF kommt, kann es eigentlich bloß sein das der Wert wirklich leer - also nicht vorhanden ist bzw keine Zahl enthält. Sagt ja die Meldung eigentlich.

Da musst Du Dir einfach mal parallel den Eventmonitor ansschauen und sehen was da wirklich passiert.
Titel: Antw:Event-map zum umwandeln in Zahlen?
Beitrag von: choetzu am 05 Februar 2018, 11:59:32
danke. das hab ich bereits gemacht und nix gefunden.  Ich habe es soeben nochmals reproduziert:

Eintrag Event-Monitor:
2018-02-05 11:55:36 DOIF Rekorde_TEMP_MAX_DOIF cmd_nr: 3
2018-02-05 11:55:36 DOIF Rekorde_TEMP_MAX_DOIF cmd: 3
2018-02-05 11:55:36 DOIF Rekorde_TEMP_MAX_DOIF cmd_event: Raumthermostat_SZ_Heatit
2018-02-05 11:55:36 DOIF Rekorde_TEMP_MAX_DOIF cmd_3
2018-02-05 11:55:36 DOIF Rekorde_TEMP_MIN_DOIF cmd_nr: 3
2018-02-05 11:55:36 DOIF Rekorde_TEMP_MIN_DOIF cmd: 3
2018-02-05 11:55:36 DOIF Rekorde_TEMP_MIN_DOIF cmd_event: Raumthermostat_SZ_Heatit
2018-02-05 11:55:36 DOIF Rekorde_TEMP_MIN_DOIF cmd_3
2018-02-05 11:55:36 ZWave Raumthermostat_SZ_Heatit temperature: 23.5 C


Logeintrag:
[Mon Feb  5 11:55:36 2018] fhem.pl: Argument "" isn't numeric in numeric lt (<) at (eval 21610) line 1.

Ist wie verhext. Macht irgendwie absolut keinen Sinn... Oder übersehen wir was?
Titel: Antw:Event-map zum umwandeln in Zahlen?
Beitrag von: Otto123 am 05 Februar 2018, 12:16:09
Was steht denn hier drin? [?Rekorde:$DEVICE_TEMP_min] ist der leer?
Ich denke es ist das Rekorde_TEMP_MIN_DOIF denn der Fehler ist "" isn't numeric in numeric lt (<)
Und eines der Argumente ist leer, deine erste Fehlermeldung ganz oben war ja anders.
Entweder ist der temperature Wert zeitweise leer - oder ich weiß es nicht.