Hallo,
ich habe eine Viessmann Heizung und an der Steuerung eine Vitocom 100 LAN1 Schnittstelle. Über folgenden Link kann ich meine Heizung Fernsteuern und Werte auslesen.
https://vitodata100.viessmann.com/VD100/VD100/Login/Login.aspx
Ich würde dies gerne in meiner FHEM Installation einbinden und über das Modul HTTPMOD darauf zugreifen. Nur leider scheitere ich an dem Login der Seite.
Wäre schön wenn einer von euch mir helfen könnte, es zum laufen zu bekommen.
Viele Grüße Marc
"list" vom HTTPMOD Device (anonymisiert) und Logauszüge bitte.
Hallo hier die List und log.
ich habe noch keine Login Daten eingegeben, da ich ich nicht weiß, welches attr ich nehmen soll...
LG Marc
Internals:
BUSY 0
CHANGED
DEF https://vitodata100.viessmann.com/VD100/Service/Overview.aspx 60
Interval 60
LASTSEND 1533635019.09974
MainURL https://vitodata100.viessmann.com/VD100/Service/Overview.aspx
ModuleVersion 3.5.1 - 5.7.2018
NAME Viessmann
NR 158
STATE ???
TRIGGERTIME 1533635079.09707
TRIGGERTIME_FMT 2018-08-07 11:44:39
TYPE HTTPMOD
addr https://vitodata100.viessmann.com:443
auth 0
code 301
compress 1
conn
data
displayurl https://vitodata100.viessmann.com:443/
header
host vitodata100.viessmann.com
httpheader HTTP/1.1 301 Moved Permanently
connection: close
content-encoding: gzip
content-type: text/html; charset=UTF-8
date: Tue, 07 Aug 2018 09:43:39 GMT
location: https://vitodata100.viessmann.com/VD100
p3p: CP="NON CUR OTPi OUR NOR UNI"
server: Microsoft-IIS/7.5
x-powered-by: ASP.NET
httpversion 1.0
hu_blocking 0
hu_filecount 3666
hu_port 443
hu_portSfx
ignoreredirects 0
loglevel 4
path /
protocol https
redirects 6
timeout 2
url https://vitodata100.viessmann.com:443/
value 0
QUEUE:
READINGS:
REQUEST:
data
header
ignoreredirects 0
retryCount 0
type update
url https://vitodata100.viessmann.com/VD100/Service/Overview.aspx
value 0
sslargs:
Attributes:
get1Name aktualisieren
readingsName.* Brenner-Betriebsstunden 1. Stufe
readingsRegex.* Brenner-Betriebsstunden 1. Stufe[^0-9]+([0-9\,]+)
userattr get1Name
verbose 5
2018.08.07 11:50:01 5: Viessmann: get called with aktualisieren
2018.08.07 11:50:01 5: Viessmann: get found option aktualisieren in attribute get1Name
2018.08.07 11:50:01 4: Viessmann: get will now request aktualisieren, no optional value
2018.08.07 11:50:01 4: Viessmann: AddToQueue adds get1, initial queue len: 0
2018.08.07 11:50:01 5: Viessmann: AddToQueue adds type get1 to URL https://vitodata100.viessmann.com/VD100/Service/Overview.aspx, no data, no headers, retry 0
2018.08.07 11:50:01 5: Viessmann: HandleSendQueue called, qlen = 1
2018.08.07 11:50:01 4: Viessmann: HandleSendQueue sends request type get1 to URL https://vitodata100.viessmann.com/VD100/Service/Overview.aspx, No Data, No Header
timeout 2
2018.08.07 11:50:01 5: HttpUtils url=https://vitodata100.viessmann.com/VD100/Service/Overview.aspx
2018.08.07 11:50:01 5: HttpUtils request header:
GET /VD100/Service/Overview.aspx HTTP/1.0
Host: vitodata100.viessmann.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
2018.08.07 11:50:01 4: https://vitodata100.viessmann.com/VD100/Service/Overview.aspx: HTTP response code 302
2018.08.07 11:50:01 4: HttpUtils https://vitodata100.viessmann.com/VD100/Service/Overview.aspx: Redirect to https://vitodata100.viessmann.com:443/
2018.08.07 11:50:01 5: HttpUtils url=https://vitodata100.viessmann.com:443/
2018.08.07 11:50:02 5: HttpUtils request header:
GET / HTTP/1.0
Host: vitodata100.viessmann.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
2018.08.07 11:50:02 4: https://vitodata100.viessmann.com:443/: HTTP response code 301
2018.08.07 11:50:02 4: HttpUtils https://vitodata100.viessmann.com:443/: Redirect to https://vitodata100.viessmann.com:443/
2018.08.07 11:50:02 5: HttpUtils url=https://vitodata100.viessmann.com:443/
2018.08.07 11:50:02 5: HttpUtils request header:
GET / HTTP/1.0
Host: vitodata100.viessmann.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
2018.08.07 11:50:02 4: https://vitodata100.viessmann.com:443/: HTTP response code 301
2018.08.07 11:50:02 4: HttpUtils https://vitodata100.viessmann.com:443/: Redirect to https://vitodata100.viessmann.com:443/
2018.08.07 11:50:02 5: HttpUtils url=https://vitodata100.viessmann.com:443/
2018.08.07 11:50:02 5: HttpUtils request header:
GET / HTTP/1.0
Host: vitodata100.viessmann.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
2018.08.07 11:50:02 4: https://vitodata100.viessmann.com:443/: HTTP response code 301
2018.08.07 11:50:02 4: HttpUtils https://vitodata100.viessmann.com:443/: Redirect to https://vitodata100.viessmann.com:443/
2018.08.07 11:50:02 5: HttpUtils url=https://vitodata100.viessmann.com:443/
2018.08.07 11:50:02 5: HttpUtils request header:
GET / HTTP/1.0
Host: vitodata100.viessmann.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
2018.08.07 11:50:02 4: https://vitodata100.viessmann.com:443/: HTTP response code 301
2018.08.07 11:50:02 4: HttpUtils https://vitodata100.viessmann.com:443/: Redirect to https://vitodata100.viessmann.com:443/
2018.08.07 11:50:02 5: HttpUtils url=https://vitodata100.viessmann.com:443/
2018.08.07 11:50:02 5: HttpUtils request header:
GET / HTTP/1.0
Host: vitodata100.viessmann.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Length: 0
Content-Type: application/x-www-form-urlencoded
2018.08.07 11:50:02 4: https://vitodata100.viessmann.com:443/: HTTP response code 301
2018.08.07 11:50:02 3: Viessmann: Read callback: Error: https://vitodata100.viessmann.com:443/: Too many redirects
2018.08.07 11:50:02 4: Viessmann: Read callback: request type was get1 retry 0, body empty
2018.08.07 11:50:02 5: Viessmann: ExtractSid called, context get, num 1
2018.08.07 11:50:02 4: Viessmann: CheckAuth decided no authentication required
Also... m.A. kannst Du es vergessen. Ich habe mich registriert und ein bisschen expermentiert:
- Das komische Verfahren der Home Seite (too many redirects) habe ich nicht geschafft, umzugehen. Auch mit attr handleRedirects. Man kann aber direkt in der DEF die Login Seite aufrufen, und da kriegt man zumindest eine http 200 Antwort
- Komplizierte ASPX / Ajax Seit, mit asynchronen Aufrufen.
- die POST Request für das Anmelden ist schon mehr als 1 Seite lang. Alles, was es komplizierter machen kann, ist da: ASP session id, session id, Cookies, Clientstate, ASYNCPOST, usw. Siehe Bild. Ich habe versucht, nur RTBPassword und RTBUser zu schicken, das reicht aber nicht. Auch mit User_ClientState und Password_ClientState dazu, geht es immer noch nicht.
Ich werde in den kommenden Tage ein bisschen weiter gucken, aber mach dir keine grosse Hoffnung.
Hmm... Man kann schon die POST Request viel simplifizieren. Er reicht folgendes als mögliche sid01Data (noch nicht mit Fhem getestet, nur laut BurpSuite):
ctl00%24RSMViessmannLogin=ctl00%24ctl00%24ACPHRight%24DivLoginRightPanel%7Cctl00%24ACPHRight%24RBLogin&__EVENTTARGET=ctl00%24ACPHRight%24RBLogin&__EVENTARGUMENT=&__VIEWSTATE=%2FwEPZwUPOGQ1ZmQxZDhhYzM5NzkzKwn%2BdE5RZfy8seDfHa3%2BJwQGlGI%3D&__VIEWSTATEGENERATOR=FEEF5521&__EVENTVALIDATION=%2FwEdABjg1tj6%2BkureMR3V%2BP3u%2BzprOriSqHhmXYhiz7vkHNzd8Iwfj3V0QJnf1PGfO7aYNfupkyBEMl5KVns8EiMmLa21H1It22fgwW%2FcZKS52g1JWezos78gwp54FBFFHFDGBV2jTn4vfbnP8gIS8NiSn0FmCK60F4XCa9EwgkBG6LtpzPIr52MUvnwpirj0z%2ByG80%2BkWBqhDEf33Jn8FdqDyl%2BDp2VvthSKcLzPV4i2g6zsxsIYI2gw4NFfNGvHDPcnBIYrB73%2BkZ4EK5FKpYWhQXDqDc05zqm%2FbcgM9ATxET37Wz85Pdnz%2B7MSjmvakqZHwPwfpdEIGDGmWvZFWO26rVSAn3xX%2FTW%2BYwSvcxTzCk5BK0z2bJV%2FAHahvBT6bRYvyc1WsGSzSRxcUFi6PABc8hcX1dTJftoBMOCgzG2Kr0lZpcRtSA%2FnirYgKcziEytEZ7BkZYneEk3HV%2BMh6%2BMajaBmsXFfnpfjf3fkwNnXgH7e%2F6XNW01jYuJ1YFyllbl7NjiADrV6GevYbf2HMuZq1kzlmjlVw%3D%3D&ctl00%24ACPHRight%24RTBUser=amenomade%40mymail.com&ctl00_ACPHRight_RTBUser_ClientState=%7B%22enabled%22%3Atrue%2C%22emptyMessage%22%3A%22%22%2C%22validationText%22%3A%22amenomade%40mymail.com%22%2C%22valueAsString%22%3A%22amenomade%40mymail.com%22%2C%22lastSetTextBoxValue%22%3A%22amenomade%40mymail.com%22%7D&ctl00%24ACPHRight%24RTBPassword=mypassword&ctl00_ACPHRight_RTBPassword_ClientState=%7B%22enabled%22%3Atrue%2C%22emptyMessage%22%3A%22%22%2C%22validationText%22%3A%22mypassword%22%2C%22valueAsString%22%3A%22mypassword%22%2C%22lastSetTextBoxValue%22%3A%22mypassword%22%7D&__ASYNCPOST=true&RadAJAXControlID=ctl00_RAMViessmannLogin
Ne, sorry, ich habe es nicht geschafft.
Das "too many redirects" kann man umgehen, indem man das Modul httputils.pm Zeile 824 ändert. Statt: map { $ra=$1 if($_ =~ m/Location:\s*(\S+)$/) } @header;
eher map { $ra=$1 if($_ =~ m/[Ll]ocation:\s*(\S+)$/) } @header;
Aber weiter geht es leider nicht.
Hallo amenomade,
ich danke dir für die schnelle Unterstützung, soweit wäre ich nie gekommen. Schade, dass es nicht funktioniert.
LG
Marc
Hallo, ich wollte dieses Thema nochmal aufwärmen, da ich auch sehr an einer Lösung interessiert wäre. Hat sich hier vielleicht was geändert zwischenzeitlich?