Hallo!
Wenn ich mit
my $temp = Value("knx.Wetter.Temperatur")
abfrage, hat die Variable "$temp" auch die Einheit mit dabei.
Damit kein ich keinen Vergleich (Größer, kleiner als) durchführen.
Irgendwo im Forum habe ich dann gelesen, dass man mit my $temp = split(/ /, Value("knx.Wetter.Temperatur") )[0] den Wert aufteilen und den ersten Werte (die Zahl) der Variable zuweisen kann (Leerzeichen als Trennzeichen).
Wenn ich das so mache bekomme ich von Fhem beim Speichern folgende Fehlermeldung:
Zitatsyntax error at (eval 117442) line 2, near ")["
Wie kann ich denn nur den Zahlenwert von einem KNX-Gerät abfragen?
Danke und Grüße
NehCoy
Zitat von: NehCoy am 12 August 2019, 18:27:58
Hallo!
Wenn ich mit my $temp = Value("knx.Wetter.Temperatur")
abfrage, hat die Variable "$temp" auch die Einheit mit dabei.
Damit kein ich keinen Vergleich (Größer, kleiner als) durchführen.
Irgendwo im Forum habe ich dann gelesen, dass man mit my $temp = split(/ /, Value("knx.Wetter.Temperatur") )[0] den Wert aufteilen und den ersten Werte (die Zahl) der Variable zuweisen kann (Leerzeichen als Trennzeichen).
Wenn ich das so mache bekomme ich von Fhem beim Speichern folgende Fehlermeldung: Wie kann ich denn nur den Zahlenwert von einem KNX-Gerät abfragen?
Danke und Grüße
NehCoy
kenne mich mit knx devices leider gar nicht aus, daher erstmal die frage : handelt es sich bei ("knx.Wetter.Temperatur") um ein normales reading ?
falls ja wäre ReadingsNum mein mittel der ersten Wahl .
https://wiki.fhem.de/wiki/DevelopmentModuleAPI#ReadingsNum (https://wiki.fhem.de/wiki/DevelopmentModuleAPI#ReadingsNum)
gruss Byte09
Falls ReadingsNum() nicht wie gewünscht funktioniert, kannst Du folgendes probieren:
my $temp = Value("knx.Wetter.Temperatur")+0;
Die perl Warnung im Log kannst Du in diesem Fall getrost ignorieren.
Guten Abend!
Danke für eure Antworten!
Zitat von: Byte09 am 12 August 2019, 18:41:44
handelt es sich bei ("knx.Wetter.Temperatur") um ein normales reading ?
What? "knx.Wetter.Temperatur" ist der Gerätename.
list knx.Wetter.Temperatur:
Internals:
DEF 4/3/6:dpt9.001
DEVNAME knx.Wetter.Temperatur
FIRSTGADNAME g1
FUUID 5c75af8a-f33f-a1f4-4883-7f9494d5235fc80e
GETSTRING g1:noArg
IODev KNX
KNX_MSGCNT 154
KNX_RAWMSG C0111fw04306074e
KNX_TIME 2019-08-12 20:30:39
LASTInputDev KNX
MSGCNT 154
NAME knx.Wetter.Temperatur
NR 25
NTFY_ORDER 50-knx.Wetter.Temperatur
SETSTRING g1:slider,-670760,13415,670760
STATE 18.70 °C
TYPE KNX
GADDETAILS:
g1:
CODE 04306
GROUP 4/3/6
MODEL dpt9.001
NO 1
OPTION
RDNAMEGET getG1
RDNAMEPUT putG1
RDNAMESET setG1
SETLIST :slider,-670760,13415,670760
GADTABLE:
04306 g1
Helper:
DBLOG:
state:
myDatabase:
TIME 1565634639.24668
VALUE 18.70
READINGS:
2019-08-12 20:30:39 getG1 18.70 °C
2019-08-12 20:30:39 last-sender 1/1/31
2019-08-12 20:30:39 state 18.70 °C
Attributes:
IODev KNX
alias Außentemperatur
group Temperatur
listenonly 1
room Wetter
webCmd :
Mit
my $temp = ReadingsNum("knx.Wetter.Temperatur","STATE",0);
oder
my $temp = ReadingsNum("knx.Wetter.Temperatur","value",0);
steht im FHEM-Log:
Zitat2019.08.12 20:35:39 3 : ntfy Temp.=0
Ah! Case-sensitive!
my $temp = ReadingsNum("knx.Wetter.Temperatur","state",0) ;
Damit passt es:
Zitat2019.08.12 20:45:39 3 : ntfy Temp.=19.70
Ziel erreicht!
Danke!
Hallo,
ich habe das selbe Problem mit dem °C im reading. Kann man dieses direkt bei der KNX Abfrag im device schon rausnehmen? Oder wo habt Ihr hier Eure Variable eingefügt?
Gruß
Zitatich habe das selbe Problem mit dem °C im reading. Kann man dieses direkt bei der KNX Abfrag im device schon rausnehmen?
.. kann man!
Wenn man statt dpt9.001 nur dpt9 im define angibt! - siehe cmd-ref.
l.g. erwin
Hallo Erwin,
vielen Dank. Ich hab gestern ja alles probiert aber auf soetwas simples bin ich gar nicht gekommen. Vielen vielen Dank. Das hat mich gestern die halbe Nacht gekostet :-)