FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: NehCoy am 12 August 2019, 18:27:58

Titel: [gelöst] Perl: Value ohne Einheit von KNX dpt
Beitrag 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:
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
Titel: Antw:Perl: Value ohne Einheit von KNX dpt
Beitrag von: Byte09 am 12 August 2019, 18:41:44
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
Titel: Antw:Perl: Value ohne Einheit von KNX dpt
Beitrag von: betateilchen am 12 August 2019, 19:14:22
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.
Titel: Antw:Perl: Value ohne Einheit von KNX dpt
Beitrag von: NehCoy am 12 August 2019, 20:35:58
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     :

Titel: Antw:Perl: Value ohne Einheit von KNX dpt
Beitrag von: NehCoy am 12 August 2019, 20:39:21
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
Titel: Antw:Perl: Value ohne Einheit von KNX dpt
Beitrag von: NehCoy am 12 August 2019, 20:47:22
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!
Titel: Antw:[gelöst] Perl: Value ohne Einheit von KNX dpt
Beitrag von: netpirat am 02 November 2021, 15:40:28
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ß
Titel: Antw:[gelöst] Perl: Value ohne Einheit von KNX dpt
Beitrag von: erwin am 02 November 2021, 16:10:06
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
Titel: Antw:[gelöst] Perl: Value ohne Einheit von KNX dpt
Beitrag von: netpirat am 02 November 2021, 18:17:19
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 :-)