Neue Version von HTTPMOD mit neuen Features zum Testen

Begonnen von StefanStrobel, 05 Dezember 2015, 08:31:32

Vorheriges Thema - Nächstes Thema

StefanStrobel

Hallo Manfred,

das Komma ist das Trennzeichen für die Map.
Statt dem Map-Feature könntest Du aber versuchen alles in einer Expression zu konvertieren.

Gruß
   Stefan

ares

Hallo Stefan,

IExpr funktioniert perfekt und erleichtert mir sogar den Rest.
attr ISGweb set00IMap 3.0.0:3.0.0, 3.0.1:3.0.1

Um die bei mir doppelten Angaben mit möglichen Tippfehlern zu vermeiden hätte ich aber erst folgende Version ohne Klartext versucht:
attr ISGweb set00IMap 3.0.0,3.0.1
Die Auswahl im Device sieht erstmal super aus, das Ergebnis ist jedoch, dass 3.0.0 als Ergebnis 3.0.1 ausführt und auf 3.0.1 mit "set value 3.0.1 did not match defined map" antwortet.

Danke
Manfred

ares

Hallo Stefan,

funktionieren Umlaute irgendwie?
attr TEST set00Name Umlaute
attr TEST set00IMap 1:Eintüten


In den Attributen und der Auswahl über den Internals wird es korrekt angezeigt, aber beim Ausführen (auch über die Auswahl) wird ein Fehler ausgegeben:
set TEST Umlaute Eintüten
set value Eint�ten did not match defined map


Danke
Manfred

StefanStrobel

Hallo Manfred,

Das mit den Umlauten muss ich mir mal ansehen. Ich hoffe ich komme am Wochenende dazu.
Bei Deinem vorletzten Post verstehe ich die Intention der Maps leider nicht.
Kann es sein, dass Du gar nichts mappen möchtest und dass ein Hint-Attribut sinnvoller wäre?

Gruss
    Stefan

ares

#349
Hallo Stefan,

stimmt, ich hätte Hint verwenden müssen, das Ergebnis ist aber aus meiner Sicht dennoch falsch.

Viele Grüße
Manfred

ch.eick

#350
Hallo zusammen.

Und schon wieder ein neuer :-)

Ich möchte mich auf der https://cloud.vallox.com Seite anmelden und scheitere bei der Übergabe von username und passwort.

Bei mir ist es momentan so, dass ich über den Browser ein Login machen kann und anschließend z.B. einen get Request mit curl von der Shell aus machen kann.
Dabei wird die komplette Session Autorisierung von mir kopiert und mit keep-alive offen gehalten.

In diesem Zustand kann ich mit get oder post kommunizieren und meine KWL zuhause reagiert auch darauf. Die Daten werden hierbei mit json übertragen und ich kann die modbus Felder mit der Dokumentation entsprechend zuordnen.

Laut trace im Browser soll die Anmeldung als username=user@email.de&passwort=yyyy übergeben werden.

Im Forum habe ich leider nicht viel zu Login, Passwort, Username und co gefunden. Das Beispiel "Example for a multi step login procedure" , so wie die Erläuterungen zu den Attributen von httpmod haben mich leider noch nicht zum Erfolg geführt. Meine Konfigurationserrungenschaften und das FHEM Log kommen dann jetzt im Anschluss.

Ich wäre für jede Hilfe Dankbar
     Christian


So sieht die Konfig im Moment aus

defmod vallox HTTPMOD https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4 60
attr vallox userattr sid1Data sid1Header1 sid1Header2 sid1Header3 sid1URL
attr vallox extractAllJSON 1                                         <==== Das ist für später, da die Daten als json kommen
attr vallox reAuthRegex password-input                                <==== httpmod erkennt schon, dass ein login fällig ist
attr vallox sid1Data username=demo@example&password=demo             <==== es gibt ne demo auf der Seite, da kann jeder dann testen ;-)
attr vallox sid1Header1 Content-Type: text/html
attr vallox sid1Header2 Content-Type application/x-www-form-urlencoded
attr vallox sid1Header3 Accept: */*
attr vallox sid1URL https://cloud.vallox.com/login                    <==== das ist geraten

setstate vallox 2017-03-07 10:19:13 X-Frame-Options 1
[/font][/size][/size]


Und hier ein Ausschnitt aus dem FHEM Log mit debug 5
Im Stream sind auch noch Kommentare von mir "===================="

2017.03.07 17:54:40 4: vallox: GetUpdate called (update)
2017.03.07 17:54:40 4: vallox: update timer modified: will call GetUpdate in 60.0 seconds at 2017-03-07 17:55:40
2017.03.07 17:54:40 4: vallox: AddToQueue adds update, initial queue len: 0
2017.03.07 17:54:40 5: vallox: AddToQueue adds type update to URL https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, no data, no headers, retry 0
2017.03.07 17:54:40 5: vallox: HandleSendQueue called, qlen = 1
2017.03.07 17:54:40 4: vallox: HandleSendQueue sends request type update to URL https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, No Data, No Header,
timeout 2

================ Hier geht der erste Aufruf raus. Laut Doku erst mal ohne Authentifizierung

2017.03.07 17:54:40 4: HttpUtils url=https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
2017.03.07 17:54:40 5: HttpUtils request header:
GET /cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4 HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

================ Der redirect ist auch im Browser zu sehen

2017.03.07 17:54:40 4: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4: HTTP response code 302
2017.03.07 17:54:40 4: HttpUtils https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4: Redirect to https://cloud.vallox.com:443/
2017.03.07 17:54:40 4: HttpUtils url=https://cloud.vallox.com:443/
2017.03.07 17:54:41 5: HttpUtils request header:
GET / HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

================ Code 200 ist schön und die Cookies kommen, sowie der html Anmeldebildschirm

2017.03.07 17:54:41 4: https://cloud.vallox.com:443/: HTTP response code 200
2017.03.07 17:54:41 4: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4222
2017.03.07 17:54:41 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: _csrf=s%3Awn-HXcdToMySDe4XCFUGOWK_.luaMrmxK6rCWaxXv2XfUottdIZ%2FVGMsneFl3YS0wRpQ; Path=/
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Tue, 14 Mar 2017 16:54:41 GMT
Set-Cookie: _csrfToken=KztXkOor-3Uic0SKKyazWncUNyZOz-DtmBWs; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 4222
ETag: W/"107e-+/P7We6FV7Nky49A+4DJyw"
Vary: Accept-Encoding
Date: Tue, 07 Mar 2017 16:54:41 GMT
Connection: close
2017.03.07 17:54:41 4: vallox: Read callback: request type was update retry 0,
Header: HTTP/1.1 200 OK
Set-Cookie: _csrf=s%3Awn-HXcdToMySDe4XCFUGOWK_.luaMrmxK6rCWaxXv2XfUottdIZ%2FVGMsneFl3YS0wRpQ; Path=/
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Tue, 14 Mar 2017 16:54:41 GMT
Set-Cookie: _csrfToken=KztXkOor-3Uic0SKKyazWncUNyZOz-DtmBWs; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 4222
ETag: W/"107e-+/P7We6FV7Nky49A+4DJyw"
Vary: Accept-Encoding
Date: Tue, 07 Mar 2017 16:54:41 GMT
Connection: close,

================ In dem gewusel habe ich dann "password-input" zur Erkennung eines neuen Logins verwendet "attr vallox reAuthRegex password-input"


Body: <!DOCTYPE html><html ng-app="CloudApp"><head><title>MyVallox Cloud</title><!--   Created by ilkka.salminen on 23/09/14.--><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="/layouts/core.min.css?undefined"><!--link(rel='stylesheet', href='/layouts/core.css?#{cacheBreaker}')--><link rel="stylesheet" href="/views/index.min.css?undefined"></head><body><!--Created by ilkka.salminen on 26/09/14.--><div class="header"><div class="row"><div class="logo-always"><img src="/media/logo.png"></div></div></div><div class="main-content"><div class="section demo-area"><div class="row middle"><div class="col-xs-6"><p>Try demo version of MyVallox Cloud</p></div><div class="col-xs-6"><a href="https://cloud.vallox.com:8080/" class="btn btn-block btn-primary">Demo</a></div></div></div><div class="main-image"><div id="main-carousel" data-ride="carousel" class="carousel slide"><ol class="carousel-indicators"><li data-target="#main-carousel" data-slide-to="0" class="active"></li><li data-target="#main-carousel" data-slide-to="1"></li><li data-target="#main-carousel" data-slide-to="2"></li></ol><div role="listbox" class="carousel-inner"><div class="item active"><img src="/media/MyValloxKuvakaruselliKuvatPlain.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>EASY VENTILATION CONTROL</h3>Register your MyVallox ventilation unit with the cloud service and control the ventilation of your home anywhere</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain2.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>HOME OF FRESH AIR</h3>Vallox keeps the indoor air fresh and pure</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain3.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>GOOD VENTILATION IS AN INVESTMENT IN WELL-BEING</h3>and the best insurance for your home</div></div></div></div></div><!--#mobile-titleimageimg(src='/media/MyValloxKuvakaruselliKuvatPlain3.jpg')--></div><div ng-controller="loginController" ng-keypress="enterKey($event)" class="login-area section"><h1>Log in</h1><div ng-show="errors" ng-repeat="error in errors" class="alerts"><div class="alert alert-danger alert-dismissable"><button type="button" data-dismiss="alert" class="close">&times;</button>{{error}}</div></div><form><div class="row"><div class="email-input col-sm-5"><input type="email" placeholder="Email" ng-model="email"></div><div class="password-input col-sm-5"><input type="password" placeholder="Password" ng-model="password"></div><div class="login-buttons col-sm-2"><div class="login-button"><div class="button"><button type="submit" ng-click="login()" class="btn btn-block btn-primary">Log in</button></div></div></div></div></form><div class="extra-row"><a href="/login/forgot/">Forgot your password?</a></div></div><div class="firmware section"><h1>Latest firmware</h1><div class="row"><div class="col-xs-1">v1.8.3</div><div class="col-xs-4"><a href="http://cloud.vallox.com/changelog.txt" target="_blank">Firmware change log</a></div><div class="col-xs-4"><!--a(href='http://cloud.vallox.com/instructions.txt', target="_blank") #{strings.firmware_instructions_link}--></div><div class="col-xs-3"><a href="http://cloud.vallox.com/HSWUPD.BIN" class="btn btn-block btn-primary">Download</a></div></div></div></div><div class="clearfix"></div><!--#debug--><!--Created by ilkka.salminen on 03/02/15.--><div class="cloud-footer"><div class="footer-logo"><img src="/media/logo_sq.png" alt="logo" class="img-responsive"></div><div class="footer-content"><div class="row"><div class="about col-sm-4"><a href="http://www.vallox.com/" target="_blank">About Vallox</a><br><a href="http://www.vallox.com/" target="_blank">Help</a></div><div class="legal col-sm-4"><a href="/terms">Terms and conditions</a><br><a href="/privacy">Privacy policy</a><br><a href="/register_data">Register description</a></div><div class="copyright col-sm-4">&copy; Vallox 2017</div></div></div></div><script src="/layouts/core.min.js"></script><script src="/views/backend.js"></script><script src="/views/index.js"></script><script src="/vendor/bootstrap/js/carousel.js"></script></body></html>no error
2017.03.07 17:54:41 3: vallox: error while parsing JSON data: malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "<!DOCTYPE html><html...") at (eval 3911) line 1.

2017.03.07 17:54:41 5: vallox: ExtractSid called, context reading, num
2017.03.07 17:54:41 5: vallox: CheckAuth is checking buffer with ReAuthRegex password-input                  <====== Der String kommt aus der html Seite
2017.03.07 17:54:41 4: vallox: CheckAuth decided new authentication required                          <===== Das ist ja schon mal gut
2017.03.07 17:54:41 4: vallox: Auth called with Steps: 1
2017.03.07 17:54:41 4: vallox: AddToQueue adds auth1, initial queue len: 0, prio

================ Wie in der httpmod Doku beschrieben erfolgt nun der Zweite Zugriff mit sid Attributen, aber meine sind halt falsch :-(
================Jetzt kommen noch diverse Versuche, bis dann wieder die Loginseite erscheint

2017.03.07 17:54:41 5: vallox: AddToQueue prepends type auth1 to URL https://cloud.vallox.com/login, data username=demo@example&password=demo, header Content-Type: text/html
Content-Type application/x-www-form-urlencoded
Accept: */*, retry 0
2017.03.07 17:54:41 5: vallox: HandleSendQueue called, qlen = 1
2017.03.07 17:54:41 4: vallox: HandleSendQueue sends request type auth1 to URL https://cloud.vallox.com/login,
data: username=demo@example&password=demo,
header: Content-Type: text/html
Content-Type application/x-www-form-urlencoded
Accept: */*,
timeout 2
2017.03.07 17:54:41 4: HttpUtils url=https://cloud.vallox.com/login
2017.03.07 17:54:41 4: vallox: AddToQueue adds update, initial queue len: 0
2017.03.07 17:54:41 5: vallox: AddToQueue adds type update to URL https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, no data, no headers, retry 1
2017.03.07 17:54:41 5: vallox: HandleSendQueue called, qlen = 1
2017.03.07 17:54:41 5: vallox: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2017.03.07 17:54:41 4: vallox: CheckAuth requeued request update after auth, retryCount 0 ...
2017.03.07 17:54:41 5: HttpUtils request header:
POST /login HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Content-Type: text/html
Content-Type application/x-www-form-urlencoded
Accept: */*
Content-Length: 43

2017.03.07 17:54:41 3: vallox: Read callback: request type was auth1 retry 0, no headers, body empty,
Error: https://cloud.vallox.com/login: empty answer received
2017.03.07 17:54:41 5: vallox: ExtractSid called, context sid, num 1
2017.03.07 17:54:42 5: vallox: HandleSendQueue called, qlen = 1
2017.03.07 17:54:42 4: vallox: HandleSendQueue sends request type update to URL https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, No Data, No Header,
timeout 2
2017.03.07 17:54:42 4: HttpUtils url=https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
2017.03.07 17:54:42 5: HttpUtils request header:
GET /cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4 HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2017.03.07 17:54:42 4: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4: HTTP response code 302
2017.03.07 17:54:42 4: HttpUtils https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4: Redirect to https://cloud.vallox.com:443/
2017.03.07 17:54:42 4: HttpUtils url=https://cloud.vallox.com:443/
2017.03.07 17:54:43 5: HttpUtils request header:
GET / HTTP/1.0
Host: cloud.vallox.com
User-Agent: fhem
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2017.03.07 17:54:43 4: https://cloud.vallox.com:443/: HTTP response code 200
2017.03.07 17:54:43 4: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4222
2017.03.07 17:54:43 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: _csrf=s%3AQokX0iKI0OqsCLjsfy-0p2db.qJs5jxd41Gxgyh1sl5zdTWC%2BmMFmZecbDTeZuE%2Fh718; Path=/
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Tue, 14 Mar 2017 16:54:43 GMT
Set-Cookie: _csrfToken=Q8esUzGC-fGrOI5ObbNk98ehF6jAvXNigYRQ; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 4222
ETag: W/"107e-+/P7We6FV7Nky49A+4DJyw"
Vary: Accept-Encoding
Date: Tue, 07 Mar 2017 16:54:43 GMT
Connection: close
2017.03.07 17:54:43 4: vallox: Read callback: request type was update retry 1,
Header: HTTP/1.1 200 OK
Set-Cookie: _csrf=s%3AQokX0iKI0OqsCLjsfy-0p2db.qJs5jxd41Gxgyh1sl5zdTWC%2BmMFmZecbDTeZuE%2Fh718; Path=/
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Tue, 14 Mar 2017 16:54:43 GMT
Set-Cookie: _csrfToken=Q8esUzGC-fGrOI5ObbNk98ehF6jAvXNigYRQ; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 4222
ETag: W/"107e-+/P7We6FV7Nky49A+4DJyw"
Vary: Accept-Encoding
Date: Tue, 07 Mar 2017 16:54:43 GMT
Connection: close,

======================= Da ist die Loginseite wieder

Body: <!DOCTYPE html><html ng-app="CloudApp"><head><title>MyVallox Cloud</title><!--   Created by ilkka.salminen on 23/09/14.--><meta name="viewport" content="width=device-width, initial-scale=1.0"><link rel="stylesheet" href="/layouts/core.min.css?undefined"><!--link(rel='stylesheet', href='/layouts/core.css?#{cacheBreaker}')--><link rel="stylesheet" href="/views/index.min.css?undefined"></head><body><!--Created by ilkka.salminen on 26/09/14.--><div class="header"><div class="row"><div class="logo-always"><img src="/media/logo.png"></div></div></div><div class="main-content"><div class="section demo-area"><div class="row middle"><div class="col-xs-6"><p>Try demo version of MyVallox Cloud</p></div><div class="col-xs-6"><a href="https://cloud.vallox.com:8080/" class="btn btn-block btn-primary">Demo</a></div></div></div><div class="main-image"><div id="main-carousel" data-ride="carousel" class="carousel slide"><ol class="carousel-indicators"><li data-target="#main-carousel" data-slide-to="0" class="active"></li><li data-target="#main-carousel" data-slide-to="1"></li><li data-target="#main-carousel" data-slide-to="2"></li></ol><div role="listbox" class="carousel-inner"><div class="item active"><img src="/media/MyValloxKuvakaruselliKuvatPlain.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>EASY VENTILATION CONTROL</h3>Register your MyVallox ventilation unit with the cloud service and control the ventilation of your home anywhere</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain2.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>HOME OF FRESH AIR</h3>Vallox keeps the indoor air fresh and pure</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain3.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>GOOD VENTILATION IS AN INVESTMENT IN WELL-BEING</h3>and the best insurance for your home</div></div></div></div></div><!--#mobile-titleimageimg(src='/media/MyValloxKuvakaruselliKuvatPlain3.jpg')--></div><div ng-controller="loginController" ng-keypress="enterKey($event)" class="login-area section"><h1>Log in</h1><div ng-show="errors" ng-repeat="error in errors" class="alerts"><div class="alert alert-danger alert-dismissable"><button type="button" data-dismiss="alert" class="close">&times;</button>{{error}}</div></div><form><div class="row"><div class="email-input col-sm-5"><input type="email" placeholder="Email" ng-model="email"></div><div class="password-input col-sm-5"><input type="password" placeholder="Password" ng-model="password"></div><div class="login-buttons col-sm-2"><div class="login-button"><div class="button"><button type="submit" ng-click="login()" class="btn btn-block btn-primary">Log in</button></div></div></div></div></form><div class="extra-row"><a href="/login/forgot/">Forgot your password?</a></div></div><div class="firmware section"><h1>Latest firmware</h1><div class="row"><div class="col-xs-1">v1.8.3</div><div class="col-xs-4"><a href="http://cloud.vallox.com/changelog.txt" target="_blank">Firmware change log</a></div><div class="col-xs-4"><!--a(href='http://cloud.vallox.com/instructions.txt', target="_blank") #{strings.firmware_instructions_link}--></div><div class="col-xs-3"><a href="http://cloud.vallox.com/HSWUPD.BIN" class="btn btn-block btn-primary">Download</a></div></div></div></div><div class="clearfix"></div><!--#debug--><!--Created by ilkka.salminen on 03/02/15.--><div class="cloud-footer"><div class="footer-logo"><img src="/media/logo_sq.png" alt="logo" class="img-responsive"></div><div class="footer-content"><div class="row"><div class="about col-sm-4"><a href="http://www.vallox.com/" target="_blank">About Vallox</a><br><a href="http://www.vallox.com/" target="_blank">Help</a></div><div class="legal col-sm-4"><a href="/terms">Terms and conditions</a><br><a href="/privacy">Privacy policy</a><br><a href="/register_data">Register description</a></div><div class="copyright col-sm-4">&copy; Vallox 2017</div></div></div></div><script src="/layouts/core.min.js"></script><script src="/views/backend.js"></script><script src="/views/index.js"></script><script src="/vendor/bootstrap/js/carousel.js"></script></body></html>no error


============= Okay, ich sehe es ein, es ist noch nix zu parsen, aber das wird schon noch

2017.03.07 17:54:43 3: vallox: error while parsing JSON data: malformed JSON string, neither array, object, number, string or atom, at character offset 0 (before "<!DOCTYPE html><html...") at (eval 3915) line 1.

2017.03.07 17:54:43 5: vallox: ExtractSid called, context reading, num
2017.03.07 17:54:43 5: vallox: CheckAuth is checking buffer with ReAuthRegex password-input
2017.03.07 17:54:43 4: vallox: CheckAuth decided new authentication required
2017.03.07 17:54:43 4: vallox: Authentication still required but no retries left - did last authentication fail?     <==== Das ist nicht schön
2017.03.07 17:54:43 3: vallox: no parsed JSON structure available                               <==== Nach der Anmeldung sollte was kommen
2017.03.07 17:54:43 5: vallox: Read starts parsing response to update with defined readings:
2017.03.07 17:54:43 3: vallox: Read response to update didn't match any Reading
2017.03.07 17:54:43 5: vallox: HandleSendQueue called, qlen = 0

RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

StefanStrobel

Hallo Christian,

vergleich doch einfach die Header, die Du mit HTTPMOD sendest mit denen, die Dein Browser sendet. Dann siehst Du was falsch ist / was fehlt.
Spontan würde ich sagen, dass zumindest die Cookies / CSRF-Tokens fehlen.

unter https://forum.fhem.de/index.php/topic,56455.msg479909.html#msg479909 habe ich auch mal ein komplexeres Beispiel gepostet.

Gruss
    Stefan

ch.eick

Hallo Stefan,

vielen Dank für die Infos.

Mit den cookies und Token hatte ich die Hoffnung, dass httpmod das schon irgendwie selber steuert. Ich verwende halt immer gerne so wenig abweichende Konfigurationen wie möglich, dann sehe ich was unbedingt notwendig ist.

Aus dem anderen Thread https://forum.fhem.de/index.php/topic,68452.msg599313.html#msg599313 habe ich das mit der burp-Suite auch schon übernommen. Es scheint mir für einen Trace schon weit besser geeignet als die Browser Funktionalität. Danke für den Tipp, auch wenn ich ihn schon mehrfach gelesen habe, aber halt nicht beherzigt.

burp-Suite free edition: https://portswigger.net/burp/freedownload

- Hier habe ich das .jar File herunter geladen
- Kurzer check von Java > 1.6 okay
- Starten von "java -jar -Xmx1024m ./burpsuite_free_v1.7.19.jar"
- Im Browser auf den Proxy "127.0.0.1" für alles umstellen
- Im burp unter "Proxy | Intercept | Intercept is On" auf "Intercept is Off" umschalten
- Bei "Proxy | Http history" sieht man dann den gesamten Browser Verkehr
- Mit der rechten Maustaste kann man dann noch "add to Scope" für die gewünschte "http*" Adresse auswählen
- unter Filter "Shop only in Scope" auswählen und schon wird es übersichtlicher

Für die, die es interessiert ich betreibe für die Entwicklung das FHEM in einer Solaris 11.3 nonglobal Zone.
Smartvisu habe ich mit einigem anderen Zeug im Apache untergebracht.
Rpi2 mit FHEM dient dann zur Produktion

Im Moment ist jedoch alles noch im Aufbau und ich möchte zuerst eine gescheite Datenbasis haben.

Gruß
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

ch.eick

Hallo nochmal.

Das Login geht schon mal und wird hier später auch noch eingefügt.

@Stefan: hast Du noch einen Tipp für mein erste reading? Ich muss die folgende Zeile noch im httpmod umsetzen.

GET /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1488987678344 HTTP/1.1

Im log sieht das ganze schon mal so aus

2017.03.08 16:45:22 5: Cmd: >get vallox KWL_Status<
2017.03.08 16:45:22 5: vallox: get called with KWL_Status
2017.03.08 16:45:22 5: vallox: get found option KWL_Status in attribute get01Name
2017.03.08 16:45:22 4: vallox: get will now request KWL_Status, no optional value
2017.03.08 16:45:22 4: vallox: AddToQueue adds get01, initial queue len: 0
2017.03.08 16:45:22 5: vallox: AddToQueue adds type get01 to URL /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4, no data, header Accept: application/json, text/javascript, */*
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, retry 0
2017.03.08 16:45:22 5: vallox: HandleSendQueue called, qlen = 1
2017.03.08 16:45:22 5: vallox: HandleSendQueue is adding Cookies: _csrf=s%3AmA5bv1opXskRAheyG8gtIafl.uAo8iod8fjyCB14w27JVKLqf0CEEr6zacASrct95yJQ; _csrfToken=zfEbQ4nx-boYqbBhu_shyKC4SZbVrY8efBXo; lang=en
2017.03.08 16:45:22 4: vallox: HandleSendQueue sends request type get01 to URL /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4, No Data,
header: Accept: application/json, text/javascript, */*
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: _csrf=s%3AmA5bv1opXskRAheyG8gtIafl.uAo8iod8fjyCB14w27JVKLqf0CEEr6zacASrct95yJQ; _csrfToken=zfEbQ4nx-boYqbBhu_shyKC4SZbVrY8efBXo; lang=en,
timeout 2
2017.03.08 16:45:22 4: HttpUtils url=/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4
2017.03.08 16:45:22 3: vallox: Read callback: request type was get01 retry 0,
Header: HTTP/1.1 200 OK
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Wed, 15 Mar 2017 15:44:32 GMT
Set-Cookie: _csrfToken=zfEbQ4nx-boYqbBhu_shyKC4SZbVrY8efBXo; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 4222
ETag: W/"107e-+/P7We6FV7Nky49A+4DJyw"
Vary: Accept-Encoding
Date: Wed, 08 Mar 2017 15:44:32 GMT
Connection: close, body empty,
Error: /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4: malformed or unsupported URL          <====== da mach ich was falsch
2017.03.08 16:45:22 5: vallox: looking for Cookies in HTTP/1.1 200 OK
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Wed, 15 Mar 2017 15:44:32 GMT
Set-Cookie: _csrfToken=zfEbQ4nx-boYqbBhu_shyKC4SZbVrY8efBXo; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
Content-Length: 4222
ETag: W/"107e-+/P7We6FV7Nky49A+4DJyw"
Vary: Accept-Encoding
Date: Wed, 08 Mar 2017 15:44:32 GMT
Connection: close
2017.03.08 16:45:22 5: vallox: Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Wed, 15 Mar 2017 15:44:32 GMT
2017.03.08 16:45:22 4: vallox: Cookie: lang Wert en Rest Max-Age=604800; Path=/; Expires=Wed, 15 Mar 2017 15:44:32 GMT
2017.03.08 16:45:22 5: vallox: Set-Cookie: _csrfToken=zfEbQ4nx-boYqbBhu_shyKC4SZbVrY8efBXo; Path=/
2017.03.08 16:45:22 4: vallox: Cookie: _csrfToken Wert zfEbQ4nx-boYqbBhu_shyKC4SZbVrY8efBXo Rest Path=/
2017.03.08 16:45:22 5: vallox: ExtractSid called, context get, num 01
2017.03.08 16:45:22 5: vallox: CheckAuth is checking buffer with ReAuthRegex password-input
2017.03.08 16:45:22 4: vallox: CheckAuth decided no authentication required                                                <==== Das ist der Erfolg von heute



Und burp liest das als request mit:

GET /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1488987678344 HTTP/1.1
Host: cloud.vallox.com
User-Agent: Mozilla/5.0 (X11; SunOS i86pc; rv:45.0) Gecko/20100101 Firefox/45.0
Accept: application/json, text/javascript, */*; q=0.01
Accept-Language: de-DE,en-US;q=0.7,en;q=0.3
DNT: 1
x-csrf-token: uE73SS2n-Wiv9MKo0rak7Etar06WiKmUoJnM
X-Requested-With: XMLHttpRequest
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: lang=de; _csrf=s%3A_D-SJhPVdhGh93H3mK0nEY0z.gLnGnlkAqPNtt6PCTEVJhYrHdBgF5zTJGQVZT2ggUcM; _csrfToken=uE73SS2n-Wiv9MKo0rak7Etar06WiKmUoJnM; connect.sid=s%3A1X3hOs2ZyyiM3iZHF47HofLX2a58v80e.HKn9Ynpj8UZlwqNg2y2tGzC2Dq8jhRk8bXSTEggQwFM
Connection: close


Wenn ich das get im burp erneut absende bekomme ich auch immer schön die json Liste mit dem Status meiner KWL.

Viele Grüße
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

Vize

Zitat von: ch.eick am 08 März 2017, 16:50:42
Das Login geht schon mal und wird hier später auch noch eingefügt.

Mach's nicht so spannend Cristian...  ;)

Zeig her dein HTTPMOD-Device mit den login Daten und Attributen!  ;D

Vielleicht kann ich davon was zur Lösung meines login-Problems verwenden.

Gruß
Andreas

unimatrix

Zitat von: StefanStrobel am 08 Februar 2017, 17:38:05
Hallo unimatrix,

vielen Dank für den Hinweis, das baue ich so ein.

Gruss / Thanx
   Stefan

ist das noch geplant? Habe heute ein fhemupdate gemacht und da war mir aufgefallen dass mein FHEM immer abstürzt :)

ch.eick

Hallo Andreas
gaaanz ruhig....es kommt ja, sobald ich ein reading habe. Bin busy im Moment.

Gruß
   Christian
RPI4; Docker; CUNX; Eltako FSB61NP; SamsungTV H-Serie; Sonos; Vallox; Luxtronik; 3x FB7490; Stromzähler mit DvLIR; wunderground; Plenticore 10 mit BYD; EM410; SMAEM; Modbus TCP
Contrib: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/ch.eick

FhemPiUser

Gibt es die Möglichkeit mit einem attribut HTTPMOD zu sagen, dass es nur einen Teil einer HTTP-Seite abrufen soll? Ich möchte eine Webseite parsen, die ziemlich lang ist, benötige aber eigentlich nur die ersten 2kbyte. Optimal wäre, wenn ich ihm sagen könnte, er soll nur die ersten 2 kbyte abrufen...

StefanStrobel

Hallo FhemPiUser,

so eine Möglichkeit gibt es derzeit nicht.

Gruss
    Stefan

StefanStrobel

Hallo Unimatrix,

bei mir hab ich es schon eingebaut, aber bevor ich es einchecke möchte ich noch ein paar andere Kleinigkeiten erweitern, die noch nicht fertig sind.

Gruss
    Stefan