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.