HTTPMOD Viessmann Vitodata 100

Begonnen von mrschnulle, 02 August 2018, 19:20:46

Vorheriges Thema - Nächstes Thema

mrschnulle

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

amenomade

"list" vom HTTPMOD Device (anonymisiert) und Logauszüge bitte.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

mrschnulle

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

amenomade

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.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

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


Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

amenomade

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.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

mrschnulle

Hallo amenomade,

ich danke dir für die schnelle Unterstützung, soweit wäre ich nie gekommen. Schade, dass es nicht funktioniert.


LG
Marc

Tomk

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?