[gelöst] Umwandlung von Komma nach Punkt / sprintf

Begonnen von Heimweh, 30 August 2019, 12:11:30

Vorheriges Thema - Nächstes Thema

DeeSPe

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
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

Heimweh

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
RaspberryPi, 8 x Intertechnosteckdosen, ETA PU15 über HTTPMOD, Youless Eneergiemonitor, 8 x Technoline Funk Temperatur / Feuchtesensoren über jeeLink, Fritzbox Anbindung, Homematic Rolladen Aktoren, MAX Heizkörperventile + Cube, SONOFF S20, S26, POW, 4ch, OWD, Alexa-fhem, enOcean / Eltako,

amenomade

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

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Heimweh

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
RaspberryPi, 8 x Intertechnosteckdosen, ETA PU15 über HTTPMOD, Youless Eneergiemonitor, 8 x Technoline Funk Temperatur / Feuchtesensoren über jeeLink, Fritzbox Anbindung, Homematic Rolladen Aktoren, MAX Heizkörperventile + Cube, SONOFF S20, S26, POW, 4ch, OWD, Alexa-fhem, enOcean / Eltako,

amenomade

#20
Überleg mal ein bisschen! Du brauchst keine weitere Formattierung, um Koma durch Punkt zu ersetzen, da es schon erledigt ist!
stateFormat AT_Eta Grad
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Heimweh

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!!!!
RaspberryPi, 8 x Intertechnosteckdosen, ETA PU15 über HTTPMOD, Youless Eneergiemonitor, 8 x Technoline Funk Temperatur / Feuchtesensoren über jeeLink, Fritzbox Anbindung, Homematic Rolladen Aktoren, MAX Heizkörperventile + Cube, SONOFF S20, S26, POW, 4ch, OWD, Alexa-fhem, enOcean / Eltako,

Otto123

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})}
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

konggress

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

Heimweh

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
RaspberryPi, 8 x Intertechnosteckdosen, ETA PU15 über HTTPMOD, Youless Eneergiemonitor, 8 x Technoline Funk Temperatur / Feuchtesensoren über jeeLink, Fritzbox Anbindung, Homematic Rolladen Aktoren, MAX Heizkörperventile + Cube, SONOFF S20, S26, POW, 4ch, OWD, Alexa-fhem, enOcean / Eltako,