FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Elektrolurch am 15 Juli 2020, 11:17:14

Titel: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 307681) line
Beitrag von: Elektrolurch am 15 Juli 2020, 11:17:14
Ich habe da ein kleines Problem.
Ich bekomme immer wieder in unregelmässigen Abständen folgende Fehlermeldung:


2020.07.15 01:12:47 1: PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 307681) line 1.


Die Meldungen kommmen alle paar Stunden, zwei bis fünf mal hintereinander und dann ist wieder Ruhe.
Die einzigen Dinge die ich neu angelegt habe, sind KLF200 Fenster und Rolladen und zwei DOIF dazu.
In beiden DOIF werden Wetterdaten aus dem Internet mit verwendet.

Wie kann ich es anstellen, dass ich mehr Infos zu obiger Fehlermeldung bekomme (Ausgabe der Code-Zeile?

Elektrolurch
Titel: Antw:PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 307681) line
Beitrag von: Otto123 am 15 Juli 2020, 11:19:38
Hi,

Du fragst im DOIF Werte ab die offenbar leer sind.

Also such die Bedingung mit > und schau ob Du Dich verschrieben hast ;)

Gruß Otto
Titel: Antw:PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 307681) line
Beitrag von: Elektrolurch am 15 Juli 2020, 11:24:39
Hallo Otto,

natürlich war das auch zuerst meine Idee, aber das DOIF funktioniert ja korekt:
Außerdem fange ich ja mögliche leere Werte schon ab:

([Bu_Thermostat:desired-temp] eq "off" and [Bu_Thermostat:measured-temp] > 20 and [Bu_Thermostat:measured-temp] > [Ga_Temperatur:temperature] and
[Daemmerung:twilight_weather] and
[Daemmerung:twilight_weather] < 20
)
({ShutterControl_Klima("open")})
(
set Bu_Dachfenster pct 100,
set Gz_Dachfenster pct 100
)
DOELSEIF([Daemmerung:twilight_weather] and
[Daemmerung:twilight_weather] > 20 and
[Bu_Dachfenster:pct] > 10)
(
set Bu_Dachfenster securedVentilation,
set Gz_Dachfenster securedVentilation
)
({ShutterControl_Klima("close")}
)


Ich würde ja gerne sehen, woher die perl - Warnung ja wirklich kommt?

Elektrolurch
Titel: Antw:PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 307681) line
Beitrag von: Otto123 am 15 Juli 2020, 11:32:23
Von einem dieser Readings welches offenbar in diesem Moment leer ist.
[Bu_Thermostat:measured-temp] > 20 and
[Bu_Thermostat:measured-temp] >
[Ga_Temperatur:temperature]
[Daemmerung:twilight_weather] > 20 and
[Bu_Dachfenster:pct] > 10)

Wenn Du 'leer' abfangen willst musst Du ne oder eg nehmen.
Also String1="" String2="voll"
(String1 ne "")
Titel: Antw:PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 307681) line
Beitrag von: Elektrolurch am 15 Juli 2020, 11:39:05
Gibt es keine Möglichkeit, den perl - Ausdruck bei einer Fehlermeldung auszugeben?
Ich bin ja noch nicht einmal sicher, ob es dieses DOIF ist....
Titel: Antw:PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 307681) line
Beitrag von: JoWiemann am 15 Juli 2020, 12:19:27
Zitat von: Elektrolurch am 15 Juli 2020, 11:39:05
Gibt es keine Möglichkeit, den perl - Ausdruck bei einer Fehlermeldung auszugeben?
Ich bin ja noch nicht einmal sicher, ob es dieses DOIF ist....

In den global Settings stacktrace einschalten. Dann siehts Du von wo der Fehler kommt.

Grüße Jörg
Titel: Antw:PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 307681) line
Beitrag von: Otto123 am 15 Juli 2020, 12:53:33
Es ist eine Warnung ;)

Dein DOIF funktioniert (scheinbar) denn Perl nimmt dann für 'leer' im numerischen Vergleich 0 wie man leicht testen kann:
{ "" > 3 }
{ "" < 3 }
{ "" > -3 }



Ich vermute die Wetterdaten ;) eventuell werden readings temporär gelöscht und dann wieder befüllt. Dein DOIF (oder was anderes) grätscht da dazwischen.

Titel: Antw:PERL WARNING: Argument "" isn't numeric in numeric gt (>) at (eval 307681) line
Beitrag von: Elektrolurch am 15 Juli 2020, 15:42:12
Danke

attr global stacktrace 1

war hilfreich.
Es war ein anderes DOIF, als ich dachte und bei genaueren hinsehen war da bei einem Namen ein Tippfehler drin....
Ok, gefunden.

Elektrolurch