FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Heimweh am 17 August 2016, 12:44:21

Titel: HTTPMOD und Nachkommastellen
Beitrag von: Heimweh am 17 August 2016, 12:44:21
Ich beiße mir seit Stunden die Zähne aus, finde auch hier im Forum keine Lösung....

Ich lese per HTTPMOD aus meiner Solarsteuerung den Solarertrag aus. Dieser wird mit einem Komma und einer Nachkommastelle ausgegeben (im Reading korrekt),
aber im State werden die Nachkommastellen nicht berücksichtigt. Es ist hinter dem Komma immer eine Null. Weiß jemand Rat?


# ---------------------------
# - ETA SOLARERTRAG GESTERN -
# ---------------------------
#
define ertraggesternEta HTTPMOD http://192.168.178.27:8080/user/var/120/10221/0/0/12769 30
attr ertraggesternEta reading01Name SEG_Eta
attr ertraggesternEta reading01Regex strValue="([\d\d]+)"
attr ertraggesternEta event-min-interval SEG_Eta:82000
attr ertraggesternEta event-on-change-reading .*
attr ertraggesternEta group ETA
attr ertraggesternEta room Heizung
attr ertraggesternEta stateFormat {sprintf("%.2f kW/h",ReadingsVal($name,"SEG_Eta",0))}


Der List dazu sieht so aus:



Internals:
   BUSY       0
   CHANGED
   DEF        http://192.168.178.27:8080/user/var/120/10221/0/0/12769 30
   Interval   30
   LASTSEND   1471430480.3457
   MainURL    http://192.168.178.27:8080/user/var/120/10221/0/0/12769
   ModuleVersion 3.3.0 - 19.6.2016
   NAME       ertraggesternEta
   NR         180
   STATE      13.00 kW/h
   TRIGGERTIME 1471430510.34344
   TRIGGERTIME_FMT 2016-08-17 12:41:50
   TYPE       HTTPMOD
   addr       http://192.168.178.27:8080
   buf        HTTP/1.0 200 OK

Content-Length: 236

Content-Type: application/xml;charset=UTF-8

Cache-Control: no-cache

Date: Wed, 17 Aug 2016 12:37:36 GMT



<?xml version="1.0" encoding="utf-8"?>
<eta version="1.0" xmlns="http://www.eta.co.at/rest/v1">
  <value uri="/user/var/120/10221/0/0/12769" strValue="13,9" unit="kWh" decPlaces="1" scaleFactor="10" advTextOffset="0">139</value>
</eta>

   code       200
   conn
   data
   displayurl http://192.168.178.27:8080/user/var/120/10221/0/0/12769
   header
   host       192.168.178.27
   httpheader HTTP/1.0 200 OK

Content-Length: 236

Content-Type: application/xml;charset=UTF-8

Cache-Control: no-cache

Date: Wed, 17 Aug 2016 12:37:36 GMT
   httpversion 1.0
   hu_blocking 0
   hu_filecount 132
   ignoreredirects 0
   loglevel   4
   path       /user/var/120/10221/0/0/12769
   protocol   http
   redirects  0
   timeout    2
   url        http://192.168.178.27:8080/user/var/120/10221/0/0/12769
   value      0
   QUEUE:
   Readings:
     2016-01-28 11:16:17   AL_Eta          0,0
     2016-08-17 11:35:39   SEG_Eta         13,9
     2016-01-28 10:45:01   SEH_Eta         0,0
     2016-01-28 10:30:57   temp            0,0
   Request:
     data
     header
     ignoreredirects 0
     retryCount 0
     type       update
     url        http://192.168.178.27:8080/user/var/120/10221/0/0/12769
     value      0
   Sslargs:
Attributes:
   event-min-interval SEG_Eta:82000
   event-on-change-reading .*
   group      ETA
   reading01Name SEG_Eta
   reading01Regex strValue="([\d\d]+)"
   room       Heizung
   stateFormat {sprintf("%.2f kW/h",ReadingsVal($name,"SEG_Eta",0))}
   userattr   reading01Name reading01Regex





Titel: Antw:HTTPMOD und Nachkommastellen
Beitrag von: Vize am 17 August 2016, 12:48:48
Mahlzeit,

Schnellschuss:
Ich vermute mal, dass es an dem Komma im Reading liegt (13,9), wo eigentlich ein Punkt erwartet wird.
Dann wird wohl nur die 13 "weitergeschleift"...

Gruß
Andreas
Titel: Antw:HTTPMOD und Nachkommastellen
Beitrag von: Heimweh am 17 August 2016, 13:38:22
Hallo Andreas,

ja das vermute ich auch. Und wie kann ich das lösen?

Titel: Antw:HTTPMOD und Nachkommastellen
Beitrag von: frank am 17 August 2016, 13:53:47
https://forum.fhem.de/index.php/topic,51471.msg449064.html#msg449064 (https://forum.fhem.de/index.php/topic,51471.msg449064.html#msg449064)
Titel: Antw:HTTPMOD und Nachkommastellen
Beitrag von: Heimweh am 17 August 2016, 13:58:21
Hallo Frank, vielen Dank für den link. Damit hatte ich auch schon experimentiert,
dann bekomme ich den Fehler:

Unknown command $val, try help.


define ertraggesternEta HTTPMOD http://192.168.178.27:8080/user/var/120/10221/0/0/12769 30
attr ertraggesternEta reading01Name SEG_Eta
attr ertraggesternEta reading01Regex strValue="([\d\d]+)"
attr ertraggesternEta reading01Expr $val =~ s/,/\./; $val;
attr ertraggesternEta event-min-interval SEG_Eta:82000
attr ertraggesternEta event-on-change-reading .*
attr ertraggesternEta group ETA
attr ertraggesternEta room Heizung
attr ertraggesternEta alias Eta Solar Ertrag gestern
attr ertraggesternEta stateFormat {sprintf("%.2f kW/h",ReadingsVal($name,"SEG_Eta",0))}


Habe ich das evtl. nicht richtig implementiert?
Titel: Antw:HTTPMOD und Nachkommastellen
Beitrag von: frank am 17 August 2016, 14:06:53
habe ich selbst nie genutzt.
dein fhem ist up-to-date?
Titel: Antw:HTTPMOD und Nachkommastellen
Beitrag von: frank am 17 August 2016, 14:12:47
commandref =>
(get|reading)[0-9]*Expr
This is the old syntax for (get|reading)[0-9]*OExpr. It should be replaced by (get|reading)[0-9]*OExpr. The set command upgradeAttributes which becomes visible when the attribute enableControlSet is set to 1, can do this renaming automatically.


versuch mal reading01OExpr.
Titel: Antw:HTTPMOD und Nachkommastellen
Beitrag von: Heimweh am 17 August 2016, 14:29:45
FHEM ist aktuell, habe sicherheitshalber nochmal ein Update gemacht.

Das mit der neuen "Schreibweise" ist bei mir bereits implementiert, auch ein "O" oder eine "0" dazwischen macht keinen Unterschied....


attr ertraggesternEta reading010Name SEG_Eta
attr ertraggesternEta reading010Regex strValue="([\d\d]+)"
attr ertraggesternEta reading010Expr $val =~ s/,/\./; $val;
Titel: Antw:HTTPMOD und Nachkommastellen
Beitrag von: frank am 17 August 2016, 23:27:24
OOOOOhhhh, wie output-expression.
nur dieses attribut ändern, kein "O" bei name, regex oder sonstwo.
Titel: Antw:HTTPMOD und Nachkommastellen
Beitrag von: Heimweh am 18 August 2016, 09:08:00
Hallo Frank.

habe es geändert. Geht aber leider trotzdem nicht. Es kommt immer ein Fehler : Unknown command $val, try help.

Ich habe nun das $val weggelassen:


attr ertraggesternEta reading010Expr $val =~ s/,/\./; $val;


sieht jetzt so aus:


attr ertraggesternEta reading010Expr $val =~ s/,/\./;


Fehler ist nun weg, geht aber trotzdem nicht. Der Wert bleibt unverändert. Im reading stimmts (7,5) - aber State zeigt nur 7.0
Titel: Antw:HTTPMOD und Nachkommastellen
Beitrag von: frank am 18 August 2016, 10:11:53
hm..., seltsam.
dann musst du wohl die userreadings variante aus dem thread nehmen.