FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Heimweh am 30 August 2019, 12:11:30

Titel: [gelöst] Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Heimweh am 30 August 2019, 12:11:30
Hallo, ich hole mit über httpmod aus meiner Heizung die Außentemperatur ab.
Mit dem folgenden sprintf wird aber eine Komma statt einem Punkt übernommen

{sprintf("%.1f Grad",int(ReadingsVal($name,"AT_Eta",0)))}

Wie kann ich denn das Komma durch einen Punkt ersetzen lassen? Es führt in verschiedensten Modulen zu Problemen wenn ich mein Logfile richtig interpretiere...
(isn't numeric)
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Otto123 am 30 August 2019, 12:29:06
Hi,

passiert bei  mir nicht
{sprintf("%.1f Grad",int(10.2))} aber Gegenfrage: welchen Sinn macht das?
Mit int()schneidest Du die Kommastelle weg, da brauchst Du doch dann auch kein sprintf("%.1f) mehr?

Was gibt denn {ReadingsVal($name,"AT_Eta",0)}zurück?
Du musst natürlich $name ersetzen in das Device wo der Code oben wirklich ausgelöst wird :)

Gruß Otto
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Heimweh am 30 August 2019, 13:54:27
Hallo Otto, um ehrlich zu sein - ich habe mir diese httpmod Abfragen aus Codeschnipseln zusammengeschustert, aus mangeldem Wissen...

Die Heizung gibt folgendes zurück:


<eta xmlns="http://www.eta.co.at/rest/v1"version="1.0">


<value uri="/user/var/40/10241/0/0/12197"strValue="27,6" unit="°C" decPlaces="1"scaleFactor="10"advTextOffset="0">276</value>

</eta>


Und das Device:


Internals:
   BUSY       0
   CHANGED   
   DEF        http://192.168.178.58:8080/user/var/40/10241/0/0/12197 60
   FUUID      5cf64a97-f33f-55ed-e1a9-4aaf472c01afa14b
   Interval   60
   LASTSEND   1567166008.81667
   MainURL    http://192.168.178.58:8080/user/var/40/10241/0/0/12197
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       aussentempEta
   NOTIFYDEV  global
   NR         317
   NTFY_ORDER 50-aussentempEta
   STATE      27.0 Grad
   TRIGGERTIME 1567166068.81577
   TRIGGERTIME_FMT 2019-08-30 13:54:28
   TYPE       HTTPMOD
   addr       http://192.168.178.58:8080
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.178.58:8080/user/var/40/10241/0/0/12197
   header     
   host       192.168.178.58
   httpheader HTTP/1.0 200 OK
Content-Length: 235
Content-Type: application/xml;charset=UTF-8
Cache-Control: no-cache
Date: Fri, 30 Aug 2019 13:53:47 GMT
   httpversion 1.0
   hu_blocking 0
   hu_filecount 5
   hu_port    8080
   hu_portSfx :8080
   ignoreredirects 0
   loglevel   4
   path       /user/var/40/10241/0/0/12197
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.178.58:8080/user/var/40/10241/0/0/12197
   value      0
   QUEUE:
   READINGS:
     2019-08-30 13:53:28   AT_Eta          27,6
     2019-08-30 13:49:31   AT_Eta_avg_day  19.4
     2019-08-30 13:49:31   AT_Eta_avg_month 19.6
     2019-08-30 13:49:31   AT_Eta_cum_day  963472
     2019-08-30 13:49:31   AT_Eta_cum_month 51759229
     2019-08-30 13:19:32   AT_Eta_max_day  27.0
     2019-08-04 19:13:33   AT_Eta_max_month 37.0
     2019-08-30 05:33:04   AT_Eta_min_day  16.0
     2019-08-21 05:08:38   AT_Eta_min_month 8.0
     2019-08-30 13:53:28   temperature     27,6
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.178.58:8080/user/var/40/10241/0/0/12197
     value      0
   defptr:
     readingBase:
       AT_Eta     reading
     readingNum:
       AT_Eta     01
     readingOutdated:
     requestReadings:
       update:
         AT_Eta     reading 01
   sslargs:
Attributes:
   alexaName  aussentemperatur
   alexaRoom  alexaroom
   alias      Eta Aussentemperatur
   enableControlSet 1
   event-min-interval AT_Eta:3600
   event-on-change-reading .*
   genericDeviceType thermometer
   group      ETA Heizung
   icon       temp_temperature
   reading01Name AT_Eta
   reading01Regex strValue="([\d,-]+)"
   room       EG_Temperaturen,Wetter,alexa
   stateFormat {no warnings 'numeric' ; sprintf("%.1f Grad",int(ReadingsVal($name,"AT_Eta",0)))}
   userReadings temperature { ReadingsVal("aussentempEta","AT_Eta",0) }
   userattr   event-min-interval event-on-change-reading reading01Name reading01Regex readingsExpr1 stateFormat verbose

Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: CoolTux am 30 August 2019, 13:58:16
Die Quelle liefert schon ein Komma.
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: amenomade am 30 August 2019, 14:02:52
Ja, und der will einen Punkt ;)
Mit reading01OExpr kann man das Reading umformattieren. Siehe CommandRef

reading01OExpr {$val=~s/,/\./; return $val;}
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Otto123 am 30 August 2019, 14:09:43
aber es gibt das Reading doch -> temperature
{sprintf("%.1f Grad",int(ReadingsVal($name,"temperature",0)))}

Aber um die Frage zu beantworten, zum probieren in der FHEM Kommandozeile:
{my $val=ReadingsVal("aussentempEta","AT_Eta",0);;$val =~ s/,/\./;;$val}
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Heimweh am 30 August 2019, 14:17:05
Zitat von: Otto123 am 30 August 2019, 14:09:43
aber es gibt das Reading doch -> temperature
{sprintf("%.1f Grad",int(ReadingsVal($name,"temperature",0)))}

Ja das Reading gibt es, aber leider mit Komma...

Aber um die Frage zu beantworten, zum probieren in der FHEM Kommandozeile:
{my $val=ReadingsVal(aussentempEta,"AT_Eta",0);;$val =~ s/,/\./;;$val}

Da kommt die Meldung: Bareword "aussentempEta" not allowed while "strict subs" in use at (eval 15717) line 1.
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Heimweh am 30 August 2019, 14:18:29
Zitat von: amenomade am 30 August 2019, 14:02:52
Ja, und der will einen Punkt ;)
Mit reading01OExpr kann man das Reading umformattieren. Siehe CommandRef

reading01OExpr {$val=~s/,/\./; return $val;}

Danke. Das habe ich jetzt mal reingenommen, aber es ist noch immer ein Komma  :-[
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: amenomade am 30 August 2019, 14:25:03
Mach ein reread, und zeig wieder ein "list"
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Otto123 am 30 August 2019, 14:39:40
Zitat von: Heimweh am 30 August 2019, 14:17:05
Da kommt die Meldung: Bareword "aussentempEta" not allowed while "strict subs" in use at (eval 15717) line 1.

Da warst Du zu schnell, habe ich doch noch korrigiert :)

ZitatJa das Reading gibt es, aber leider mit Komma...
Und ich hatte Matsch auf den Augen :( -sorry
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Heimweh am 31 August 2019, 09:36:19
Zitat von: Otto123 am 30 August 2019, 14:39:40
Da warst Du zu schnell, habe ich doch noch korrigiert :)
Und ich hatte Matsch auf den Augen :( -sorry

Guten Morgen Otto, das klappt! Die Temp wird mit Punkt angezeigt. Wohin muss diese Umwandlung in meinem Device?

Zitat von: amenomade

Ich weiss nicht wo ich Deinen Code gestern eingefügt hab, ich habe kein Feld mit Reading01OExpr - nur Name und Regex...
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Otto123 am 31 August 2019, 11:05:20
Moin,
Zitat von: Heimweh am 31 August 2019, 09:36:19
Guten Morgen Otto, das klappt! Die Temp wird mit Punkt angezeigt. Wohin muss diese Umwandlung in meinem Device?
Weiß ich auch nicht, aber dein Original:
{sprintf("%.1f Grad",int(ReadingsVal($name,"AT_Eta",0)))}
sollte so funktionieren (nicht getestet)
{sprintf("%.1f Grad",{my $val=ReadingsVal($name,"AT_Eta",0);$val =~ s/,/\./;return $val})}

Gruß Otto
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: amenomade am 02 September 2019, 00:37:27
Zitat von: amenomade

Ich weiss nicht wo ich Deinen Code gestern eingefügt hab, ich habe kein Feld mit Reading01OExpr - nur Name und Regex...
Das weiss ich auch nicht.
Einfach in der Kommandozeile:
attr aussentempEta reading01OExpr {$val=~s/,/\./; return $val;}
Dann set aussentempEta reread

Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Heimweh am 02 September 2019, 08:10:04
Zitat von: Otto123 am 31 August 2019, 11:05:20
Moin,Weiß ich auch nicht, aber dein Original:
{sprintf("%.1f Grad",int(ReadingsVal($name,"AT_Eta",0)))}
sollte so funktionieren (nicht getestet)
{sprintf("%.1f Grad",{my $val=ReadingsVal($name,"AT_Eta",0);$val =~ s/,/\./;return $val})}

Gruß Otto

Guten Morgen Otto, dass habe ich versucht, klappt leider nicht mit folgendem Fehler  :'(

syntax error at (eval 2382974) line 1, near ";$val "
Global symbol "$val" requires explicit package name (did you forget to declare "my $val"?) at (eval 2382974) line 1.
Global symbol "$val" requires explicit package name (did you forget to declare "my $val"?) at (eval 2382974) line 1.
syntax error at (eval 2382974) line 1, near "})"
syntax error at (eval 2382974) line 1, near "}}"
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Heimweh am 02 September 2019, 08:11:22
Zitat von: amenomade am 02 September 2019, 00:37:27
Das weiss ich auch nicht.
Einfach in der Kommandozeile:
attr aussentempEta reading01OExpr {$val=~s/,/\./; return $val;}
Dann set aussentempEta reread


Das funktioniert auch nicht. Ebenfalls ein Fehler:

Invalid Expression {$val=~s/,/\./
Unknown command return, try help.
Unknown command }, try help.
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: DeeSPe am 02 September 2019, 08:18:16
Zitat von: Heimweh am 02 September 2019, 08:11:22
Das funktioniert auch nicht. Ebenfalls ein Fehler:

Invalid Expression {$val=~s/,/\./
Unknown command return, try help.
Unknown command }, try help.


Semikolon müssen in der Eingabezeile verdoppelt werden.

Gruß
Dan
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Otto123 am 02 September 2019, 08:48:15
Zitat von: Heimweh am 02 September 2019, 08:10:04
Guten Morgen Otto, dass habe ich versucht, klappt leider nicht mit folgendem Fehler  :'(
Moin,

kannst Du bitte mehr Infos liefern? Ein komplettes list von dem Gerät wo Du den Code einträgst.
Die Verwendung von Semikolons und ihren notwendigen Schutz an bestimmten Stellen hast Du beachtet?
https://commandref.fhem.de/#command

Gruß Otto
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Heimweh am 02 September 2019, 11:03:05
Zitat von: DeeSPe am 02 September 2019, 08:18:16
Semikolon müssen in der Eingabezeile verdoppelt werden.

Hallo Dan, hallo Otto, ok das mit den Semikolon hat geklappt. Es gibt aber wieder einen Fehler. Was mach ich bloß falsch?

Internals:
   BUSY       0
   DEF        http://192.168.178.58:8080/user/var/40/10241/0/0/12197 60
   FUUID      5cf64a97-f33f-55ed-e1a9-4aaf472c01afa14b
   Interval   60
   LASTSEND   1567414856.1657
   MainURL    http://192.168.178.58:8080/user/var/40/10241/0/0/12197
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       aussentempEta
   NOTIFYDEV  global
   NR         317
   NTFY_ORDER 50-aussentempEta
   STATE      Error evaluating aussentempEta stateFormat: syntax error at (eval 2484549) line 1, near ";$val "
Global symbol "$val" requires explicit package name (did you forget to declare "my $val"?) at (eval 2484549) line 1.
Global symbol "$val" requires explicit package name (did you forget to declare "my $val"?) at (eval 2484549) line 1.
syntax error at (eval 2484549) line 1, near "$val}"

   TRIGGERTIME 1567414916.16449
   TRIGGERTIME_FMT 2019-09-02 11:01:56
   TYPE       HTTPMOD
   addr       http://192.168.178.58:8080
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.178.58:8080/user/var/40/10241/0/0/12197
   header     
   host       192.168.178.58
   httpheader HTTP/1.0 200 OK
Content-Length: 235
Content-Type: application/xml;charset=UTF-8
Cache-Control: no-cache
Date: Mon, 02 Sep 2019 11:01:14 GMT
   httpversion 1.0
   hu_blocking 0
   hu_filecount 176
   hu_port    8080
   hu_portSfx :8080
   ignoreredirects 0
   loglevel   4
   path       /user/var/40/10241/0/0/12197
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.178.58:8080/user/var/40/10241/0/0/12197
   value      0
   QUEUE:
   READINGS:
     2019-09-02 11:00:56   AT_Eta          17,5
     2019-09-02 11:00:56   AT_Eta_avg_day  14.6
     2019-09-02 11:00:56   AT_Eta_avg_month 19.2
     2019-09-02 11:00:56   AT_Eta_cum_day  580675
     2019-09-02 11:00:56   AT_Eta_cum_month 4074062
     2019-09-02 10:53:55   AT_Eta_max_day  17.0
     2019-09-01 13:04:16   AT_Eta_max_month 25.0
     2019-09-02 04:35:10   AT_Eta_min_day  13.0
     2019-09-02 04:35:10   AT_Eta_min_month 13.0
     2019-09-02 11:00:56   temperature     17,5
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.178.58:8080/user/var/40/10241/0/0/12197
     value      0
   defptr:
     readingBase:
       AT_Eta     reading
     readingNum:
       AT_Eta     01
     readingOutdated:
     requestReadings:
       update:
         AT_Eta     reading 01
   sslargs:
Attributes:
   alexaName  Nelkenweg
   alexaRoom  alexaroom
   alias      Eta Aussentemperatur
   enableControlSet 1
   event-min-interval AT_Eta:3600
   event-on-change-reading .*
   genericDeviceType thermometer
   group      ETA Heizung
   icon       temp_temperature
   reading01Name AT_Eta
   reading01OExpr {$val=~s/,/\./; return $val;}
   reading01Regex strValue="([\d,-]+)"
   room       EG_Temperaturen,alexa
   stateFormat {sprintf("%.1f Grad",{my $val=ReadingsVal($name,"AT_Eta",0);$val =~ s/,/\./;return $val})}
   userReadings temperature { ReadingsVal("aussentempEta","AT_Eta",0) }
   userattr   event-min-interval event-on-change-reading reading01Name reading01OExpr reading01Regex readingsExpr1 stateFormat verbose
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: amenomade am 02 September 2019, 11:06:04
Zitat von: Heimweh am 02 September 2019, 08:11:22
Das funktioniert auch nicht. Ebenfalls ein Fehler:

Invalid Expression {$val=~s/,/\./
Unknown command return, try help.
Unknown command }, try help.


Also, ja, mein Schuld (wobei das "standard" in Fhem ist: in der Kommandozeile müssen die Semikola verdoppelt werden)
Dann einfach
attr aussentempEta reading01OExpr {$val=~s/,/\./;; return $val;;}
set aussentempEta  reread

Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Heimweh am 02 September 2019, 11:13:39
Zitat von: amenomade am 02 September 2019, 11:06:04
Also, ja, mein Schuld (wobei das "standard" in Fhem ist: in der Kommandozeile müssen die Semikola verdoppelt werden)
Dann einfach
attr aussentempEta reading01OExpr {$val=~s/,/\./;; return $val;;}
set aussentempEta  reread


Jetzt geht's  :)  Die Temperatur wird mit einem Punkt dargestellt. Ein Fehler ist aber immer noch da:

Internals:
   BUSY       0
   DEF        http://192.168.178.58:8080/user/var/40/10241/0/0/12197 60
   FUUID      5cf64a97-f33f-55ed-e1a9-4aaf472c01afa14b
   Interval   60
   LASTSEND   1567415516.81084
   MainURL    http://192.168.178.58:8080/user/var/40/10241/0/0/12197
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       aussentempEta
   NOTIFYDEV  global
   NR         317
   NTFY_ORDER 50-aussentempEta
   STATE      Error evaluating aussentempEta stateFormat: syntax error at (eval 337) line 1, near ";$val "
Global symbol "$val" requires explicit package name (did you forget to declare "my $val"?) at (eval 337) line 1.
Global symbol "$val" requires explicit package name (did you forget to declare "my $val"?) at (eval 337) line 1.
syntax error at (eval 337) line 1, near "$val}"

   TRIGGERTIME 1567415576.80966
   TRIGGERTIME_FMT 2019-09-02 11:12:56
   TYPE       HTTPMOD
   addr       http://192.168.178.58:8080
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.178.58:8080/user/var/40/10241/0/0/12197
   header     
   host       192.168.178.58
   httpheader HTTP/1.0 200 OK
Content-Length: 235
Content-Type: application/xml;charset=UTF-8
Cache-Control: no-cache
Date: Mon, 02 Sep 2019 11:12:19 GMT
   httpversion 1.0
   hu_blocking 0
   hu_filecount 1
   hu_port    8080
   hu_portSfx :8080
   ignoreredirects 0
   loglevel   4
   path       /user/var/40/10241/0/0/12197
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.178.58:8080/user/var/40/10241/0/0/12197
   value      0
   QUEUE:
   READINGS:
     2019-09-02 11:12:03   AT_Eta          18.5
     2019-09-02 11:12:03   AT_Eta_avg_day  14.7
     2019-09-02 11:12:03   AT_Eta_avg_month 19.2
     2019-09-02 11:12:03   AT_Eta_cum_day  592786.5
     2019-09-02 11:12:03   AT_Eta_cum_month 4086173.5
     2019-09-02 11:10:56   AT_Eta_max_day  18.5
     2019-09-01 13:04:16   AT_Eta_max_month 25.0
     2019-09-02 04:35:10   AT_Eta_min_day  13.0
     2019-09-02 04:35:10   AT_Eta_min_month 13.0
     2019-09-02 11:12:03   temperature     18.5
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.178.58:8080/user/var/40/10241/0/0/12197
     value      0
   defptr:
     readingBase:
       AT_Eta     reading
     readingNum:
       AT_Eta     01
     readingOutdated:
     requestReadings:
       update:
         AT_Eta     reading 01
   sslargs:
Attributes:
   alexaName  Nelkenweg
   alexaRoom  alexaroom
   alias      Eta Aussentemperatur
   enableControlSet 1
   event-min-interval AT_Eta:3600
   event-on-change-reading .*
   genericDeviceType thermometer
   group      ETA Heizung
   icon       temp_temperature
   reading01Name AT_Eta
   reading01OExpr {$val=~s/,/\./; return $val;}
   reading01Regex strValue="([\d,-]+)"
   room       EG_Temperaturen,alexa
   stateFormat {sprintf("%.1f Grad",{my $val=ReadingsVal($name,"AT_Eta",0);$val =~ s/,/\./;return $val})}
   userReadings temperature { ReadingsVal("aussentempEta","AT_Eta",0) }
   userattr   event-min-interval event-on-change-reading reading01Name reading01OExpr reading01Regex readingsExpr1 stateFormat verbose
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: amenomade am 02 September 2019, 11:35:29
Überleg mal ein bisschen! Du brauchst keine weitere Formattierung, um Koma durch Punkt zu ersetzen, da es schon erledigt ist!
stateFormat AT_Eta Grad
Titel: Antw:Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Heimweh am 02 September 2019, 11:53:17
Zitat von: amenomade am 02 September 2019, 11:35:29
Überleg mal ein bisschen! Du brauchst keine weitere Formattierung, um Koma durch Punkt zu ersetzen, da es schon erledigt ist!
stateFormat AT_Eta Grad

Sorry  :-[  Ich tu mir damit sehr schwer.... Aber jetzt geht es - und ohne Fehler. Ich danke Euch vielmals!!!!
Titel: Antw:[gelöst] Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Otto123 am 02 September 2019, 13:08:47
Wobei ich jetzt ne Weile probiert habe, egal ob man es braucht oder nicht. Warum das nicht funktioniert erschließt sich mir nicht  (aus der DEF):
stateFormat {sprintf("%.1f Grad",{my $val="17,3";$val =~ s/,/\./;return $val})}
Titel: Antw:[gelöst] Umwandlung von Komma nach Punkt / sprintf
Beitrag von: konggress am 03 September 2019, 08:31:54
Ich frage meine ETA schon seit langem so ab, und es funktioniert:
Internals:
   BUSY       0
   DEF        http://192.168.10.31:8080/user/var/48/10241/0/0/12197 300
   FUUID      5c486ab6-f33f-bb37-f666-52ac0e9249133691
   Interval   300
   LASTSEND   1567491872.84439
   MainURL    http://192.168.10.31:8080/user/var/48/10241/0/0/12197
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       h.heizkreis.aussen
   NOTIFYDEV  global
   NR         168
   NTFY_ORDER 50-h.heizkreis.aussen
   STATE      15.5 °C
   TRIGGERTIME 1567492172.84315
   TRIGGERTIME_FMT 2019-09-03 08:29:32
   TYPE       HTTPMOD
   addr       http://192.168.10.31:8080
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.10.31:8080/user/var/48/10241/0/0/12197
   header     
   host       192.168.10.31
   httpheader HTTP/1.0 200 OK
Content-Length: 235
Content-Type: application/xml;charset=UTF-8
Cache-Control: no-cache
Date: Tue, 03 Sep 2019 08:22:18 GMT
   httpversion 1.0
   hu_blocking 0
   hu_filecount 7093
   hu_port    8080
   hu_portSfx :8080
   ignoreredirects 0
   loglevel   4
   path       /user/var/48/10241/0/0/12197
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.10.31:8080/user/var/48/10241/0/0/12197
   value      0
   QUEUE:
   READINGS:
     2019-09-03 08:24:32   HeizkreisAussen 15.5
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.10.31:8080/user/var/48/10241/0/0/12197
     value      0
   defptr:
     readingBase:
       HeizkreisAussen reading
     readingNum:
       HeizkreisAussen 01
     readingOutdated:
     requestReadings:
       update:
         HeizkreisAussen reading 01
   sslargs:
Attributes:
   enableControlSet 1
   group      Heizkreis
   reading01Name HeizkreisAussen
   reading01OExpr $val =~ s/,/\./; $val;
   reading01Regex strValue="(-?[0-9]?[0-9].[0-9])"
   room       Heizung
   stateFormat HeizkreisAussen °C
   userattr   reading01Name reading01OExpr reading01Regex readingsRegex.* stateFormat stateformat
Titel: Antw:[gelöst] Umwandlung von Komma nach Punkt / sprintf
Beitrag von: Heimweh am 03 September 2019, 11:14:26
Zitat von: Otto123 am 02 September 2019, 13:08:47
Wobei ich jetzt ne Weile probiert habe, egal ob man es braucht oder nicht. Warum das nicht funktioniert erschließt sich mir nicht  (aus der DEF):
stateFormat {sprintf("%.1f Grad",{my $val="17,3";$val =~ s/,/\./;return $val})}

Hallo Otto, ich kann es Dir leider auch nicht beantworten... Nachdem ich das stateFormat abgespeckt habe, geht es nun. Jetzt sieht es so aus:

Internals:
   BUSY       0
   CHANGED   
   DEF        http://192.168.178.58:8080/user/var/40/10241/0/0/12197 60
   FUUID      5cf64a97-f33f-55ed-e1a9-4aaf472c01afa14b
   Interval   60
   LASTSEND   1567501918.47348
   MainURL    http://192.168.178.58:8080/user/var/40/10241/0/0/12197
   ModuleVersion 3.5.9 - 13.2.2019
   NAME       aussentempEta
   NOTIFYDEV  global
   NR         317
   NTFY_ORDER 50-aussentempEta
   STATE      19.1 Grad
   TRIGGERTIME 1567501978.47238
   TRIGGERTIME_FMT 2019-09-03 11:12:58
   TYPE       HTTPMOD
   addr       http://192.168.178.58:8080
   auth       0
   buf       
   code       200
   compress   1
   conn       
   data       
   displayurl http://192.168.178.58:8080/user/var/40/10241/0/0/12197
   header     
   host       192.168.178.58
   httpheader HTTP/1.0 200 OK
Content-Length: 235
Content-Type: application/xml;charset=UTF-8
Cache-Control: no-cache
Date: Tue, 03 Sep 2019 11:12:17 GMT
   httpversion 1.0
   hu_blocking 0
   hu_filecount 1439
   hu_port    8080
   hu_portSfx :8080
   ignoreredirects 0
   loglevel   4
   path       /user/var/40/10241/0/0/12197
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.178.58:8080/user/var/40/10241/0/0/12197
   value      0
   QUEUE:
   READINGS:
     2019-09-03 11:11:58   AT_Eta          19.1
     2019-09-03 11:07:57   AT_Eta_avg_day  11.5
     2019-09-03 11:07:57   AT_Eta_avg_month 18.0
     2019-09-03 11:07:57   AT_Eta_cum_day  461245.9
     2019-09-03 11:07:57   AT_Eta_cum_month 5383003.2
     2019-09-03 11:07:57   AT_Eta_max_day  19.1
     2019-09-01 13:04:16   AT_Eta_max_month 25.0
     2019-09-03 05:44:17   AT_Eta_min_day  9.2
     2019-09-03 05:44:17   AT_Eta_min_month 9.2
     2019-09-03 11:11:58   temperature     19.1
   REQUEST:
     data       
     header     
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.178.58:8080/user/var/40/10241/0/0/12197
     value      0
   defptr:
     readingBase:
       AT_Eta     reading
     readingNum:
       AT_Eta     01
     readingOutdated:
     requestReadings:
       update:
         AT_Eta     reading 01
   sslargs:
Attributes:
   alexaName  Nelkenweg
   alexaRoom  alexaroom
   alias      Eta Aussentemperatur
   enableControlSet 1
   event-min-interval AT_Eta:3600
   event-on-change-reading .*
   genericDeviceType thermometer
   group      ETA Heizung
   icon       temp_temperature
   reading01Name AT_Eta
   reading01OExpr {$val=~s/,/\./; return $val;}
   reading01Regex strValue="([\d,-]+)"
   room       EG_Temperaturen,alexa
   stateFormat AT_Eta Grad
   userReadings temperature { ReadingsVal("aussentempEta","AT_Eta",0) }
   userattr   event-min-interval event-on-change-reading reading01Name reading01OExpr reading01Regex readingsExpr1 stateFormat verbose


Danke auch an konggress