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 
			
			
			
				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
			
			
			
				Hallo Andreas,
ja das vermute ich auch. Und wie kann ich das lösen?
			
			
			
				https://forum.fhem.de/index.php/topic,51471.msg449064.html#msg449064 (https://forum.fhem.de/index.php/topic,51471.msg449064.html#msg449064)
			
			
			
				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?
			
			
			
				habe ich selbst nie genutzt. 
dein fhem ist up-to-date?
			
			
			
				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. 
			
			
			
				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;
			
			
				OOOOOhhhh, wie output-expression. 
nur dieses attribut ändern, kein "O" bei name, regex oder sonstwo. 
			
			
			
				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
			
			
			
				hm..., seltsam. 
dann musst du wohl die userreadings variante aus dem thread nehmen.