Werte per HTTPMOD mit Umrechnung übertragen

Begonnen von Herry-77, 27 September 2020, 13:38:13

Vorheriges Thema - Nächstes Thema

Herry-77

Hallo

Ich möchte gern per HTTPMOD an den Web-Server meines Heizkreisverteilers die Solltemperaturen der einzelnen Räume übergeben.
Der Web Server erwartet dabei die Temperatur als 4-stelligen Wert.

Im Browser funktioniert die Sollwertvorgabe auf 22 °C wie folgt.
http://192.168.178.38/cgi-bin/writeVal.cgi?G4.SollTemp=2200

Im FHEM kann ich das User Reading ,,Buero_Temperatur_Soll" meines HTTMOD Devices ,,Raumtemperaturen_EG_Set" ebenfalls mit
   
Set Raumtemperaturen_EG_Set Buero_Temperatur_Soll 2200 auf die gewünschten 22° setzen.
Um aber eben in FHEM nicht einen 4-stelligen Wert sondern einen Temperaturwert im Format 22.00 °C zu übergeben.
In meiner alten FHEM Installation von 2015 wurde das wie folgt im HTTPMOD über ein Userreading set05Expr $val *100 umrechnet.


Beispiel der Userreadings

set05Expr $val * 100       
set05Max 28
set05Min 8
set05Name Buero_Temperatur_Soll


Die Umrechnung funktioniert nach neu aufgesetztem FHEM nicht mehr.
Der Befehl ,,set Raumtemperaturen_EG_Set Buero_Temperatur_Soll 24" übergibt an den Web-Server tatsächlich nur den Wert 24 und nicht 2400.

Anbei mal das Log File


2020.09.27 13:24:23 5: Raumtemperaturen_EG_Set: set called with Buero_Temperatur_Soll 24

2020.09.27 13:24:23 5: Raumtemperaturen_EG_Set: set found option Buero_Temperatur_Soll in attribute set05Name

2020.09.27 13:24:23 5: Raumtemperaturen_EG_Set: is checking value 24 against min 8

2020.09.27 13:24:23 5: Raumtemperaturen_EG_Set: set is checking value 24 against max 28

2020.09.27 13:24:23 4: Raumtemperaturen_EG_Set: set will now set Buero_Temperatur_Soll -> 24

2020.09.27 13:24:23 5: Raumtemperaturen_EG_Set: AddToQueue adds type set05 to URL http://192.168.178.38/cgi-bin/writeVal.cgi?G4.SollTemp=$val, no data, no headers, retry 0, initial queue len: 0

2020.09.27 13:24:23 5: Raumtemperaturen_EG_Set: HandleSendQueue called, qlen = 1

2020.09.27 13:24:23 4: Raumtemperaturen_EG_Set: HandleSendQueue sends set05 with timeout 2 to http://192.168.178.38/cgi-bin/writeVal.cgi?G4.SollTemp=24, No Data, No Header
2020.09.27 13:24:23 5: HttpUtils url=http://192.168.178.38/cgi-bin/writeVal.cgi?G4.SollTemp=24
2020.09.27 13:24:23 4: IP: 192.168.178.38 -> 192.168.178.38
2020.09.27 13:24:23 5: HttpUtils request header:
GET /cgi-bin/writeVal.cgi?G4.SollTemp=24 HTTP/1.0
Host: 192.168.178.38
User-Agent: fhem
Accept-Encoding: gzip,deflate

2020.09.27 13:24:23 4: http://192.168.178.38/cgi-bin/writeVal.cgi?G4.SollTemp=24: HTTP response code 200
2020.09.27 13:24:23 5: HttpUtils http://192.168.178.38/cgi-bin/writeVal.cgi?G4.SollTemp=24: Got data, length: 2
2020.09.27 13:24:23 5: HttpUtils response header:
HTTP/1.1 200 OK
Server: Keil-EWEB/2.1
Content-Type: text/html
Cache-Control: no-cache
Connection: close
2020.09.27 13:24:23 4: Raumtemperaturen_EG_Set: Read callback: request type was set05 retry 0,
header: HTTP/1.1 200 OK
Server: Keil-EWEB/2.1
Content-Type: text/html
Cache-Control: no-cache
Connection: close, body length 2
2020.09.27 13:24:23 5: Raumtemperaturen_EG_Set: Read callback: body
24
2020.09.27 13:24:23 4: Raumtemperaturen_EG_Set: Read found no charset header (bodyDecode was set to auto)
2020.09.27 13:24:23 5: Raumtemperaturen_EG_Set: GetCookies is looking for Cookies
2020.09.27 13:24:23 5: Raumtemperaturen_EG_Set: ExtractSid called, context set, num 05
2020.09.27 13:24:23 4: Raumtemperaturen_EG_Set: checking for redirects, code=200, ignore=0
2020.09.27 13:24:23 4: Raumtemperaturen_EG_Set: no redirects to handle
2020.09.27 13:24:23 5: Raumtemperaturen_EG_Set: CheckAuth decided no authentication required





Wie gesagt, damals funktionierte das reibungslos aber da ich das lange Zeit nicht mehr angefasst habe kriege ich es gerade nicht hin.
Hat sich am FHEM was geändert oder was könnte das Problem sein.


xenos1984

Siehe Commandref:

http://fhem.de/commandref.html#HTTPMOD

Zitat
(get|reading)[0-9]*OExpr
defines an optional expression that is used in an eval to compute / format a readings value after parsing an HTTP response
The raw value from the parsing will be in the variable $val.
If specified as readingOExpr then the attribute value is a default for all other readings that don't specify an explicit reading[0-9]*Expr.
Please note that the old syntax readingsExpr.* does not work with all features of HTTPMOD and should be avoided. It might go away in a future version of HTTPMOD.
(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.

Also sollte es jetzt set05OExpr statt set05Expr sein.

Herry-77

Hallo xenos1984

erstmal Danke für den Hinweis dass sich das offensichtlich geändert hat.
Das Problem ist nur dass auch die Änderung (auch nach Neustart) keinen Auswirkung hat.
Ein FHEM Update hat auch nichts gebracht,

Die Attribute sind wie folgt gesetzt.

set05Max 28
set05Min 8
set05Name Buero_Temperatur_Soll
set05OExpr $val * 100
set05URL http://192.168.178.38/cgi-bin/writeVal.cgi?G4.SollTemp=$val


Der Befehl:
Set Raumtemperaturen_EG_Set Buero_Temperatur_Soll 22

ruft nach wie vor die folgende URL auf:    
http://192.168.178.38/cgi-bin/writeVal.cgi?G4.SollTemp=22
und nicht wie gewünscht die    
http://192.168.178.38/cgi-bin/writeVal.cgi?G4.SollTemp=2200

Das Attribut enableControlSet 1 oder enableControlSet 0 hat keine Auswirkung.

Herry-77

Gelöst:

Es heißt nicht  set05OExpr sondern set05IExpr

Danke

xenos1984

Ah, stimmt, ich hatte beim kopieren die falsche Zeile erwischt. Du wendest die Funktion ja auf einen Input Parameter an, nicht auf einen Output.