Neue Version von HTTPMOD mit neuen Features zum Testen

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

Vorheriges Thema - Nächstes Thema

der-Lolo

So, nachdem ich den TimeOut auf 3 gesetzt habe funktioniert der Zugriff ohne weitere Log einträge...

ch.eick

#481
Hallo zusammen.

Ich habe da mal wieder ein Problem mit dem Login und dem Handling der $sid

Der Ablauf sollte wie folgt sein:

http://192.168.178.28/data.txt?sid=$sid
  Der StromZaehler Kopf meldet sich mit dem Login Prompt

Nach meiner Definition wird die notwendige Anmeldung erkannt.
http://192.168.178.28/getSID.txt?pwd=MeinPasswort
  Es kommt die Rückmeldung mit der sid als 32 stelliger HEX Code

Die sid1IdRegex [0-9A-F].* habe ich online getestet und würde den 32 stelliger HEX Code auswählen.
Es wird in Data nur der 32 stelliger HEX Code vom StromZaehler Kopf geschickt.

Ob ich dieses Attribut benötige weiß ich nicht:
attr StromZaehler sid1ParseResponse 1

Nun sollte der Aufruf
http://192.168.178.28/data.txt?sid=$sid
wiederholt werden und um die sid ergänzt werden, was jedoch, wie im Log zu sehen ist nicht erfolgt.


Könnte mir hier eventuell jemand helfen?
Ich verwende die Version:
# $Id: 98_HTTPMOD.pm 17736 2018-11-12 19:42:35Z StefanStrobel

Viele Grüße
     Christian


defmod StromZaehler HTTPMOD http://192.168.178.28/data.txt?sid=$sid 0
attr StromZaehler userattr get01Name get01URL sid1IdRegex sid1ParseResponse:0,1 sid1URL
attr StromZaehler get01Name Strom_Status
attr StromZaehler get01URL http://192.168.178.28/data.txt?sid=$sid
attr StromZaehler httpVersion 1.1
attr StromZaehler reAuthRegex Melden Sie sich mit Ihrem Kennwort an
attr StromZaehler showBody 1
attr StromZaehler showError 1
attr StromZaehler sid1IdRegex [0-9A-F].*
attr StromZaehler sid1ParseResponse 1
attr StromZaehler sid1URL http://192.168.178.28/getSID.txt?pwd=MeinPasswort
attr StromZaehler verbose 5


Das FHEM Log:

2018.11.20 15:15:13 5: StromZaehler: get called with Strom_Status
2018.11.20 15:15:13 5: StromZaehler: get found option Strom_Status in attribute get01Name
2018.11.20 15:15:13 4: StromZaehler: get will now request Strom_Status, no optional value
2018.11.20 15:15:13 4: StromZaehler: AddToQueue adds get01, initial queue len: 0
2018.11.20 15:15:13 5: StromZaehler: AddToQueue adds type get01 to URL http://192.168.178.28/data.txt?sid=$sid, no data, no headers, retry 0
2018.11.20 15:15:13 5: StromZaehler: HandleSendQueue called, qlen = 1
2018.11.20 15:15:13 4: StromZaehler: HandleSendQueue sends request type get01 to URL http://192.168.178.28/data.txt?sid=$sid, No Data, No Header
timeout 2
2018.11.20 15:15:13 5: HttpUtils url=http://192.168.178.28/data.txt?sid=$sid
2018.11.20 15:15:13 5: HttpUtils request header:
GET /data.txt?sid=$sid HTTP/1.1
Host: 192.168.178.28
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.11.20 15:15:13 4: http://192.168.178.28/data.txt?sid=$sid: HTTP response code 200
2018.11.20 15:15:13 5: HttpUtils http://192.168.178.28/data.txt?sid=$sid: Got data, length: 1101
2018.11.20 15:15:13 5: HttpUtils response header:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/html
Cache-Control: no-cache
2018.11.20 15:15:13 4: StromZaehler: Read callback: request type was get01 retry 0,
Body: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="refresh" content="130">
<title>DvLIR</title>
<link href="device.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="shadow-one"><div id="shadow-two"><div id="shadow-three"><div id="shadow-four">
<div id="page">

<center><img src="device.gif" alt="Device"><br><br></center>

<div id="title"><div class="right">DvLIR v2.05</div><span id="hello">&nbsp;</span></div>

<div id="Bordernew">

<form method="post" action="login.htm" name="authenticate" id="authenticate">

<br>
<strong > Melden Sie sich mit Ihrem Kennwort an.</strong><br><br>
<p>
<label>Kennwort: </label>
&nbsp;&nbsp;&nbsp;&nbsp;<input Style="width:211px;" type="Password" name="pwd" value="" maxlength="19" ><br>
</p>
<p id="zero">

<button type="submit" id="btnredirect" >Anmelden</button>
</p>
<br>

</form>
</div>

</div></div></div></div></div>

</body>
</html>

2018.11.20 15:15:13 5: StromZaehler: ExtractSid called, context get, num 01
2018.11.20 15:15:13 5: StromZaehler: CheckAuth is checking buffer with ReAuthRegex Melden Sie sich mit Ihrem Kennwort an
2018.11.20 15:15:13 4: StromZaehler: CheckAuth decided new authentication required
2018.11.20 15:15:13 4: StromZaehler: Auth called with Steps: 1
2018.11.20 15:15:13 4: StromZaehler: AddToQueue adds auth1, initial queue len: 0, prio
2018.11.20 15:15:13 5: StromZaehler: AddToQueue prepends type auth1 to URL http://192.168.178.28/getSID.txt?pwd=MeinPasswort, no data, no headers, retry 0
2018.11.20 15:15:13 5: StromZaehler: HandleSendQueue called, qlen = 1
2018.11.20 15:15:13 5: StromZaehler: HandleSendQueue - minSendDelay not over, rescheduling
2018.11.20 15:15:13 4: StromZaehler: AddToQueue adds get01, initial queue len: 1
2018.11.20 15:15:13 5: StromZaehler: AddToQueue adds type get01 to URL http://192.168.178.28/data.txt?sid=$sid, no data, no headers, retry 1
2018.11.20 15:15:13 5: StromZaehler: HandleSendQueue called, qlen = 2
2018.11.20 15:15:13 5: StromZaehler: HandleSendQueue - minSendDelay not over, rescheduling
2018.11.20 15:15:13 4: StromZaehler: CheckAuth requeued request get01 after auth, retryCount 0 ...
2018.11.20 15:15:14 5: StromZaehler: HandleSendQueue called, qlen = 2
2018.11.20 15:15:14 4: StromZaehler: HandleSendQueue sends request type auth1 to URL http://192.168.178.28/getSID.txt?pwd=MeinPasswort, No Data, No Header
timeout 2
2018.11.20 15:15:14 5: HttpUtils url=http://192.168.178.28/getSID.txt?pwd=MeinPasswort
2018.11.20 15:15:14 5: HttpUtils request header:
GET /getSID.txt?pwd=MeinPasswort HTTP/1.1
Host: 192.168.178.28
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.11.20 15:15:14 4: http://192.168.178.28/getSID.txt?pwd=qgE9WFNW: HTTP response code 200
2018.11.20 15:15:14 5: HttpUtils http://192.168.178.28/getSID.txt?pwd=qgE9WFNW: Got data, length: 32
2018.11.20 15:15:14 5: HttpUtils response header:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/plain
Cache-Control: no-cache
2018.11.20 15:15:14 4: StromZaehler: Read callback: request type was auth1 retry 0,
Body: 23CDE0758DA6C417D113C5920122A9F8                               <================ :-)
2018.11.20 15:15:14 5: StromZaehler: ExtractSid called, context sid, num 1
2018.11.20 15:15:14 4: StromZaehler: ExtractSid set sid to              <================ :-(
2018.11.20 15:15:15 5: StromZaehler: HandleSendQueue called, qlen = 1
2018.11.20 15:15:15 4: StromZaehler: HandleSendQueue sends request type get01 to URL http://192.168.178.28/data.txt?sid=$sid, No Data, No Header
timeout 2
2018.11.20 15:15:15 5: HttpUtils url=http://192.168.178.28/data.txt?sid=$sid   <======== :-(
2018.11.20 15:15:15 5: HttpUtils request header:
GET /data.txt?sid=$sid HTTP/1.1
Host: 192.168.178.28
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.11.20 15:15:15 4: http://192.168.178.28/data.txt?sid=$sid: HTTP response code 200
2018.11.20 15:15:15 5: HttpUtils http://192.168.178.28/data.txt?sid=$sid: Got data, length: 1101
2018.11.20 15:15:15 5: HttpUtils response header:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/html
Cache-Control: no-cache
2018.11.20 15:15:15 4: StromZaehler: Read callback: request type was get01 retry 1,
Body: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>
<meta http-equiv="refresh" content="130">
<title>DvLIR</title>
<link href="device.css" rel="stylesheet" type="text/css" />
</head>

<body>
<div id="shadow-one"><div id="shadow-two"><div id="shadow-three"><div id="shadow-four">
<div id="page">

<center><img src="device.gif" alt="Device"><br><br></center>

<div id="title"><div class="right">DvLIR v2.05</div><span id="hello">&nbsp;</span></div>

<div id="Bordernew">

<form method="post" action="login.htm" name="authenticate" id="authenticate">

<br>
<strong > Melden Sie sich mit Ihrem Kennwort an.</strong><br><br>
<p>
<label>Kennwort: </label>
&nbsp;&nbsp;&nbsp;&nbsp;<input Style="width:211px;" type="Password" name="pwd" value="" maxlength="19" ><br>
</p>
<p id="zero">

<button type="submit" id="btnredirect" >Anmelden</button>
</p>
<br>

</form>
</div>

</div></div></div></div></div>

</body>
</html>

2018.11.20 15:15:15 5: StromZaehler: ExtractSid called, context get, num 01
2018.11.20 15:15:15 5: StromZaehler: CheckAuth is checking buffer with ReAuthRegex Melden Sie sich mit Ihrem Kennwort an
2018.11.20 15:15:15 4: StromZaehler: CheckAuth decided new authentication required
2018.11.20 15:15:15 4: StromZaehler: Authentication still required but no retries left - did last authentication fail?
2018.11.20 15:15:15 5: StromZaehler: ExtractReading for context get, num 01 - no individual parse definition
2018.11.20 15:15:15 5: StromZaehler: Read starts parsing response to get01 with defined readings:
2018.11.20 15:15:15 3: StromZaehler: Read response to get01 didn't match any Reading
2018.11.20 15:15:15 5: StromZaehler: 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

ch.eick

#482
Hallo zusammen,

ich habe mal eine zusätzliche Log Message im Modul eingefügt und dann folgendes festgestellt.

# Extract SID
# called from _Read
###################################
sub HTTPMOD_ExtractSid($$$$)
{
    my ($hash, $buffer, $context, $num) = @_;
    my $name = $hash->{NAME};

    Log3 $name, 5, "$name: ExtractSid called, context $context, num $num";
    my $regex   = AttrVal($name, "idRegex", "");
    my $json    = AttrVal($name, "idJSON", "");
    my $xpath   = AttrVal($name, "idXPath", "");
    my $xpathst = AttrVal($name, "idXPath-Strict", "");

    $regex   = HTTPMOD_GetFAttr($name, $context, $num, "IDRegex", $regex);
    $regex   = HTTPMOD_GetFAttr($name, $context, $num, "IdRegex", $regex);
    Log3 $name, 5, "$name: ExtractSid called, regex $regex";                                 < ========= Ich möchte die Regex sehen




Bisherige Regex:

2018.11.21 09:57:12 5: HttpUtils http://192.168.178.28/getSID.txt?pwd=MeinPasswort: Got data, length: 32
2018.11.21 09:57:12 5: HttpUtils response header:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/plain
Cache-Control: no-cache
2018.11.21 09:57:12 4: StromZaehler: Read callback: request type was auth1 retry 0,
Body: 40304CE3E4DAB2D6278F94EA8E692420
2018.11.21 09:57:12 5: StromZaehler: ExtractSid called, context sid, num 1
2018.11.21 09:57:12 5: StromZaehler: ExtractSid called, regex [0-9A-F].*                   <============== Das war die bisherige Regex
2018.11.21 09:57:12 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/98_HTTPMOD.pm line 2378.     <==== :-(
2018.11.21 09:57:12 4: StromZaehler: ExtractSid set sid to
2018.11.21 09:57:13 5: StromZaehler: HandleSendQueue called, qlen = 1
2018.11.21 09:57:13 4: StromZaehler: HandleSendQueue sends request type get01 to URL http://192.168.178.28/data.txt?sid=$sid, No Data, No Header


Neue Regex:

2018.11.21 09:58:49 5: HttpUtils http://192.168.178.28/getSID.txt?pwd=qgE9WFNW: Got data, length: 32
2018.11.21 09:58:49 5: HttpUtils response header:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/plain
Cache-Control: no-cache
2018.11.21 09:58:49 4: StromZaehler: Read callback: request type was auth1 retry 0,
Body: 2CEB86EA9C4DBFF2232A89F877F5BA7B
2018.11.21 09:58:49 5: StromZaehler: ExtractSid called, context sid, num 1
2018.11.21 09:58:49 5: StromZaehler: ExtractSid called, regex ([0-9A-F].*)                      <============== Neue Regex als Gruppe
2018.11.21 09:58:49 4: StromZaehler: ExtractSid set sid to 1.1 200 OK                            <============== Meine SID steht leider nicht im Header, sondern im Body
2018.11.21 09:58:50 5: StromZaehler: HandleSendQueue called, qlen = 1
2018.11.21 09:58:50 4: StromZaehler: HandleSendQueue sends request type get02 to URL http://192.168.178.28/info.txt?sid=1.1 200 OK        <====== schon mal gut


Ich werde dann jetzt mal im Forum suchen. Wenn jemand jedoch einen Tipp hat, wie ich die SID aus dem Body, zur richtigen Zeit in die SID Variable bekomme, dann ist alles herzlich willkommen.

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

Na geht doch :-)

Ich habe die Lösung nun gefunden.

- Es wird natürlich Header und Body durchsucht.
- Wichtig ist jedoch, dass natürlich der erste Treffer genommen wird, was in meinem Fall die erste Zeile im Header ist.
- Die Regex darf nicht zu allgemein gewählt sein, was in diesem Fall schon etwas schwierig ist, da die SID im Body keine Kennzeichnung hat
  und somit einfach nur ein 32 stelliger HEX String ist.

Aus diesem Grung lautet die Regex nun wie folgt:

([0-9A-F]{32})

Die entspricht allen Ziffern oder die Großbuchstaben von A bis F in einer Folge von 32 Stellen.

Das Ergebnis sieht dann so aus:

2018.11.21 10:22:17 5: HttpUtils http://192.168.178.28/getSID.txt?pwd=MeinPasswort: Got data, length: 32
2018.11.21 10:22:17 5: HttpUtils response header:
HTTP/1.1 200 OK
Connection: close
Content-Type: text/plain
Cache-Control: no-cache
2018.11.21 10:22:17 4: StromZaehler: Read callback: request type was auth1 retry 0,
Body: BD69979CB0F0CC430C000CC3ACE8D67D
2018.11.21 10:22:17 5: StromZaehler: ExtractSid called, context sid, num 1
2018.11.21 10:22:17 5: StromZaehler: ExtractSid called, regex ([0-9A-F]{32})
2018.11.21 10:22:17 4: StromZaehler: ExtractSid set sid to BD69979CB0F0CC430C000CC3ACE8D67D
2018.11.21 10:22:18 5: StromZaehler: HandleSendQueue called, qlen = 1
2018.11.21 10:22:18 4: StromZaehler: HandleSendQueue sends request type get02 to URL http://192.168.178.28/info.txt?sid=BD69979CB0F0CC430C000CC3ACE8D67D, No Data, No Header


Vielen Dank für's mitlesen und die Animation es selber lösen zu wollen. Manchmal muss man etwas schreiben und zusammenfassen, um es dann selbst zu verstehen.
Ich hoffe dass es auch Euch helfen wird.

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

buennerbernd

Zitat von: StefanStrobel am 30 Mai 2016, 22:10:13
Hallo buennerbernd,

in der neuen Version (hier gepostet) kannst Du per

attr device readingEncode utf8


auch für alle Readings, die im zyklischen Update per extractAllJSON erzeugt werden, die Ausgabe in utf8 erreichen.
Entsprechend würde man bei einem get z.B. get01Encode utf8 angeben, wenn get01ExtractAllJSON spezifiziert wurde.

Beim Parsen per Regex wäre das nicht nötig, da ich keine Zeichensatzkonvertierung ohne Attribut eingebaut habe.

HTTPMOD verwendet aber für das Parsen von JSON und XPath fertige Bibliotheken (z.B. libjson-perl), die offenbar die Eingabedaten konvertieren. Deshalb klappt es bei Dir nicht, obwohl die Ausgangsdaten bereits als utf8 geliefert werden.
Mit obigem Attribut sollte das Problem aber gelöst sein.

Gruss
    Stefan

Besser spät, als nie...
Ich habe erst gestern deine Anwort bemerkt.
Kappt! Danke  :)

Viele Grüße,
Stefan.
Modulentwickler von KLF200 und KLF200Node

frank

warum verhinderst du das polling nicht, wenn das radio offline ist?
FHEM: 6.0(SVN) => Pi3(buster)
IO: CUL433|CUL868|HMLAN|HMUSB2|HMUART
CUL_HM: CC-TC|CC-VD|SEC-SD|SEC-SC|SEC-RHS|Sw1PBU-FM|Sw1-FM|Dim1TPBU-FM|Dim1T-FM|ES-PMSw1-Pl
IT: ITZ500|ITT1500|ITR1500|GRR3500
WebUI [HMdeviceTools.js (hm.js)]: https://forum.fhem.de/index.php/topic,106959.0.html

StefanStrobel

Hallo,

anbei eine neue Version, die setExtensions eingebaut hat und daher auch attrTemplate unterstützt.
Falls es jemand testen möchte, muss er allerdings erst noch Templates definieren, sonst sieht man davon nichts.

Gruss
   Stefan


Beta-User

Hallo zusammen,

vorab herzlichen Dank für's Aufgreifen der Anregung!

Anbei ein erstes template für clever-tanken.de, das funktioniert mit der HTTPMOD-Version aus dem vorigen Thread. Einfach (in der Regel) nach /opt/fhem/FHEM/lib/AttrTemplate kopieren, (Rechte beachten).

templates sind dazu gedacht, funktionierende Konfigurationen auf einfachem Weg für die Allgemeinheit nutzbar zu machen, ohne dass man sich das notwendige Wissen irgendwo aus den Untiefen des Forums oder sonstwo zusammensuchen muss. Weiter kann es hilfreich sein, auf das eine oder andere Muster zugreifen zu können, um daraus was neues basteln zu können ;) .

Wenn jemand weitere Vorschläge für templates hat, bitte einfach melden und am besten eine RAW-Definition (oder ein "list -r <device>") mitliefern :) . Ansonsten gilt das hier geschriebene sinngemäß, ich übernehme gerne für's erste das Hochladen ins svn, wäre aber auch nicht böse, wenn sich jemand anderes meldet...

@StefanStrobel: Was als Ergänzung nett wäre: Wenn als Attribut "model" verwendbar wäre; damit ist dann in den FHEM-Statistiken nachvollziehbar, ob das feature jemand nutzt :) .

Gruß und viel Spaß mit den templates, ein paar weitere habe ich noch eingesammelt, aber noch nicht getestet, update folgt.

Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

StefanStrobel

Hier mit zusätzlichem Attribut "model".

Gruss
   Stefan

Beta-User

 :)
Dann mal hier eine erweiterte Sammlung für "model", neben Spritpreis ist aktuell drin:
- ORF-Wetter
- homebridge-videodoorbell
- RESOL Solaranlage
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

ch.eick

#490
Hallo zusammen.
Nach langer Zeit habe ich mein Thema mit der Vallox KWL wieder aufgenommen. Ich habe neu begonnen den http Ablauf mit Burp zu analysieren, komme jedoch beim Login nicht weiter. Mein Versuch der Steuerung der Vallox KWL ziehlt auf die Kommunikation mit der Vallox Cloud. Der Versuch direkt die KWL mit http anzusprechen ist leider gescheitert.
Hier zu beginn ein funktionierendes Beispiel aus dem Burp repeater:
POST

POST /login HTTP/1.1
Host: cloud.vallox.com
Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc
Cookie: _csrf=s%3AbYuUftm2hMBM5dwB5lIHXkJH.kVEfDWomdNPO2DIOucEjX8BM9543%2FjHDtR0hXlylAWI; lang=de; _csrfToken=5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc; connect.sid=s%3AJQk9_2cWuleAiThm_C2jkwIoEoIRxrh0.ZUcSrQXFs%2BZU%2B%2Fci0xs2JCOecjHpLM7Xg4pCxXmGoWM
Content-Length: 45

username=<Username>&password=<Passwort>

Response

HTTP/1.1 200 OK
Vary: X-HTTP-Method-Override, Accept-Encoding
set-cookie: lang=de; Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:36:34 GMT
set-cookie: _csrfToken=EPW51Eyj-o0LlTNk9TVWOzyj-dGan1b5kZ7g; Path=/
set-cookie: connect.sid=s%3AEGzl75NUcx4unsQwt5lQhfgPJtuy1bkD.NtBmyxBh%2B9cuIIXzQ%2FnYd%2BC2UMztgOBupIG1N8m0X1w; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 74
ETag: W/"4a-iFjmKaXUGUWpK3TUuWr9AQ"
Date: Fri, 28 Dec 2018 13:36:34 GMT
Connection: keep-alive

{"success":true,"errors":[],"errfor":{},"message":"","nexturl":"/account"}

Hierbei ist die Ausgabe "success":true die positive Rückmeldung.

Als nächstes kann man dann z.B. eine log Abfrage mit "all" starten:

GET /api/logs/432C7775-3FDA-430A-920A-97B591B5F2C4/all HTTP/1.1
Host: cloud.vallox.com
x-csrf-token: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc
Cookie: _csrf=s%3AbYuUftm2hMBM5dwB5lIHXkJH.kVEfDWomdNPO2DIOucEjX8BM9543%2FjHDtR0hXlylAWI; lang=de; _csrfToken=EPW51Eyj-o0LlTNk9TVWOzyj-dGan1b5kZ7g; connect.sid=s%3AEGzl75NUcx4unsQwt5lQhfgPJtuy1bkD.NtBmyxBh%2B9cuIIXzQ%2FnYd%2BC2UMztgOBupIG1N8m0X1w
Content-Length: 6

Dann bekommt man solch eine Ausgabe, die ich im Datenteil gekürzt habe:

HTTP/1.1 200 OK
set-cookie: lang=de; Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:39:51 GMT
set-cookie: _csrfToken=oID16ior-Op6S0El6zMbEMNGD64y6VhfEC00; Path=/
set-cookie: connect.sid=s%3AEGzl75NUcx4unsQwt5lQhfgPJtuy1bkD.NtBmyxBh%2B9cuIIXzQ%2FnYd%2BC2UMztgOBupIG1N8m0X1w; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
Cache-Control: no-cache, must-revalidate
Content-Type: application/json; charset=utf-8
Content-Length: 1819471
ETag: W/"1bc34f-37Y/k7f9OdoTLiRBYO+pqw"
Vary: Accept-Encoding
Date: Fri, 28 Dec 2018 13:39:52 GMT
Connection: keep-alive

{"errors":null,"data":[["2017-12-28T13:46:00.000Z",20,8,5,17,0,58],["2017-12-28T13:56:00.000Z",20,8,5,17,0,57],["2017-12-28T14:06:00.000Z",20,8,5,17,0,57],["2017-12-28T14:16:00.000Z",20,8,5,17,0,57],["2017-12-28T14:26:00.000Z",20,8,5,17,0,57],["2017-12-28T14:36:00.000Z",20,8,5,17,0,56],["2017-12-28T14:46:00.000Z",20,8,5,17,0,57],["2017-12-28T14:56:00.000Z",20,8,5,17,0,57],["2017-12-28T15:06:00.000Z",20,7,4,17,0,56],["2017-12-28T15:16:00.000Z",20,7,4,17,0,56],

snip

["2018-12-28T12:12:00.000Z",20,6,1,19,0,54],["2018-12-28T12:22:00.000Z",20,6,1,19,0,54],["2018-12-28T12:32:00.000Z",20,6,1,18,0,54]]}


Soweit so gut und nun meine HTTPMOD Konfiguration:

defmod vallox_cloud HTTPMOD https://cloud.vallox.com:443/login 0

attr vallox_cloud httpVersion 1.1
attr vallox_cloud enableCookies 1
attr vallox_cloud handleRedirects 1

attr vallox_cloud queueDelay 3
attr vallox_cloud showBody 1
attr vallox_cloud showError 1
attr vallox_cloud timeout 5
attr vallox_cloud verbose 5

attr vallox_cloud get01Name KWL_All
attr vallox_cloud get01URL https://cloud.vallox.com:443/api/logs/432C7775-3FDA-430A-920A-97B591B5F2C4/all

attr vallox_cloud getHeader1 X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc

# Für das Login
attr vallox_cloud reAuthRegex loginController
attr vallox_cloud sid1Data username=<Username>&password=<Passwort>
attr vallox_cloud sid1Header1 Referer: https://cloud.vallox.com/
attr vallox_cloud sid1Header2 Content-Type: application/x-www-form-urlencoded;; charset=UTF-8
attr vallox_cloud sid1Header3 X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc
attr vallox_cloud sid1URL https://cloud.vallox.com/login


Wenn ich nun ein "get vallox_cloud KWL_Status" aufrufe kommen folgende Log Meldungen:

2018.12.28 14:57:19 5: vallox_cloud: get called with KWL_Status
2018.12.28 14:57:19 5: vallox_cloud: get found option KWL_Status in attribute get02Name
2018.12.28 14:57:19 4: vallox_cloud: get will now request KWL_Status, no optional value
2018.12.28 14:57:19 4: vallox_cloud: AddToQueue adds get02, initial queue len: 0
2018.12.28 14:57:19 5: vallox_cloud: AddToQueue adds type get02 to URL https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784, no data, header Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, retry 0
2018.12.28 14:57:19 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.28 14:57:19 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784)
2018.12.28 14:57:19 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value V2XGC8dY-ZoWS3v93x1E8x1QZrLs1UXs5yDI (key _csrfToken;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784)
2018.12.28 14:57:19 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3ALvzl30GcNr-1WMpDNeVGuOchS51Ebcl4.mcGDdZZ0jERK5bk0yfOpDaTXLeG6nd40y2ImuCHmjc4 (key connect.sid;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784)
2018.12.28 14:57:19 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value en (key lang;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784)
2018.12.28 14:57:19 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=V2XGC8dY-ZoWS3v93x1E8x1QZrLs1UXs5yDI; connect.sid=s%3ALvzl30GcNr-1WMpDNeVGuOchS51Ebcl4.mcGDdZZ0jERK5bk0yfOpDaTXLeG6nd40y2ImuCHmjc4; lang=en
2018.12.28 14:57:19 4: vallox_cloud: HandleSendQueue sends request type get02 to URL https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784, No Data,
header: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=V2XGC8dY-ZoWS3v93x1E8x1QZrLs1UXs5yDI; connect.sid=s%3ALvzl30GcNr-1WMpDNeVGuOchS51Ebcl4.mcGDdZZ0jERK5bk0yfOpDaTXLeG6nd40y2ImuCHmjc4; lang=en
timeout 5
2018.12.28 14:57:19 5: HttpUtils url=https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784
2018.12.28 14:57:19 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.28 14:57:20 5: HttpUtils request header:
GET /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784 HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=V2XGC8dY-ZoWS3v93x1E8x1QZrLs1UXs5yDI; connect.sid=s%3ALvzl30GcNr-1WMpDNeVGuOchS51Ebcl4.mcGDdZZ0jERK5bk0yfOpDaTXLeG6nd40y2ImuCHmjc4; lang=en
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.12.28 14:57:20 4: https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784: HTTP response code 302
2018.12.28 14:57:20 5: HttpUtils https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784: Got data, length: 23
2018.12.28 14:57:20 5: HttpUtils response header:
HTTP/1.1 302 Found
set-cookie: lang=en; Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:21 GMT
set-cookie: _csrfToken=VepUHVO7-Yef8SyniTCIJg4hcOJLRhQ8ggkk; Path=/
set-cookie: connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
X-Auth-Required: true
Location: /
Vary: Accept, Accept-Encoding
Content-Type: text/plain; charset=utf-8
Content-Length: 23
Date: Fri, 28 Dec 2018 13:57:21 GMT
Connection: close
2018.12.28 14:57:20 4: vallox_cloud: Read callback: request type was get02 retry 0,
Body: Found. Redirecting to /
2018.12.28 14:57:20 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.28 14:57:20 4: vallox_cloud: GetCookies parsed Cookie: lang Wert en Rest Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:21 GMT
2018.12.28 14:57:20 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert VepUHVO7-Yef8SyniTCIJg4hcOJLRhQ8ggkk Rest Path=/
2018.12.28 14:57:20 4: vallox_cloud: GetCookies parsed Cookie: connect.sid Wert s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg Rest Path=/; HttpOnly
2018.12.28 14:57:20 5: vallox_cloud: ExtractSid called, context get, num 02
2018.12.28 14:57:20 4: vallox_cloud: checking for redirects, code=302, ignore=0
2018.12.28 14:57:20 4: vallox_cloud: https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4?cb=1546002433784: Redirect (1) to https://cloud.vallox.com:443/
2018.12.28 14:57:20 4: vallox_cloud: AddToQueue adds get02, initial queue len: 0, prio
2018.12.28 14:57:20 5: vallox_cloud: AddToQueue prepends type get02 to URL https://cloud.vallox.com:443/, no data, header Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, retry 0
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value VepUHVO7-Yef8SyniTCIJg4hcOJLRhQ8ggkk (key _csrfToken;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg (key connect.sid;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value en (key lang;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=VepUHVO7-Yef8SyniTCIJg4hcOJLRhQ8ggkk; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
2018.12.28 14:57:20 4: vallox_cloud: HandleSendQueue sends request type get02 to URL https://cloud.vallox.com:443/, No Data,
header: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=VepUHVO7-Yef8SyniTCIJg4hcOJLRhQ8ggkk; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
timeout 5
2018.12.28 14:57:20 5: HttpUtils url=https://cloud.vallox.com:443/
2018.12.28 14:57:20 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.28 14:57:20 5: HttpUtils request header:
GET / HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=VepUHVO7-Yef8SyniTCIJg4hcOJLRhQ8ggkk; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.12.28 14:57:20 4: https://cloud.vallox.com:443/: HTTP response code 200
2018.12.28 14:57:20 5: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4169
2018.12.28 14:57:20 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:22 GMT
Set-Cookie: _csrfToken=zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
ETag: W/"1049-UbjnUEcK4sCkOD8a4iXojg"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Fri, 28 Dec 2018 13:57:22 GMT
Connection: close
Transfer-Encoding: chunked
2018.12.28 14:57:20 4: vallox_cloud: Read callback: request type was get02 retry 0,
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.8</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></div><div class="copyright col-sm-4">&copy; Vallox 2018</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>
2018.12.28 14:57:20 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.28 14:57:20 4: vallox_cloud: GetCookies parsed Cookie: lang Wert en Rest Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:22 GMT
2018.12.28 14:57:20 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0 Rest Path=/
2018.12.28 14:57:20 5: vallox_cloud: ExtractSid called, context get, num 02
2018.12.28 14:57:20 4: vallox_cloud: checking for redirects, code=200, ignore=0
2018.12.28 14:57:20 4: vallox_cloud: no redirects to handle
2018.12.28 14:57:20 5: vallox_cloud: CheckAuth is checking buffer with ReAuthRegex loginController
2018.12.28 14:57:20 4: vallox_cloud: CheckAuth decided new authentication required
2018.12.28 14:57:20 4: vallox_cloud: Auth called with Steps: 1
2018.12.28 14:57:20 4: vallox_cloud: AddToQueue adds auth1, initial queue len: 0, prio
2018.12.28 14:57:20 5: vallox_cloud: AddToQueue prepends type auth1 to URL https://cloud.vallox.com/login, data username=<Username>&password=<Passwort>, header Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc, retry 0
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /login)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0 (key _csrfToken;, destination path is /login)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg (key connect.sid;, destination path is /login)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value en (key lang;, destination path is /login)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
2018.12.28 14:57:20 4: vallox_cloud: HandleSendQueue sends request type auth1 to URL https://cloud.vallox.com/login,
data: username=<Username>&password=<Passwort>,
header: Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
timeout 5
2018.12.28 14:57:20 5: HttpUtils url=https://cloud.vallox.com/login
2018.12.28 14:57:20 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.28 14:57:20 4: vallox_cloud: AddToQueue adds get02, initial queue len: 0
2018.12.28 14:57:20 5: vallox_cloud: AddToQueue adds type get02 to URL https://cloud.vallox.com:443/, no data, header Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4, retry 1
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2018.12.28 14:57:20 4: vallox_cloud: CheckAuth requeued request get02 after auth, retryCount 0 ...
2018.12.28 14:57:20 5: HttpUtils request header:
POST /login HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
Content-Length: 45

2018.12.28 14:57:20 4: https://cloud.vallox.com/login: HTTP response code 302
2018.12.28 14:57:20 5: HttpUtils https://cloud.vallox.com/login: Got data, length: 23
2018.12.28 14:57:20 5: HttpUtils response header:
HTTP/1.1 302 Found
Vary: X-HTTP-Method-Override, Accept, Accept-Encoding
Location: /
Content-Type: text/plain; charset=utf-8
Content-Length: 23
Date: Fri, 28 Dec 2018 13:57:22 GMT
Connection: close
2018.12.28 14:57:20 4: vallox_cloud: Read callback: request type was auth1 retry 0,
Body: Found. Redirecting to /
2018.12.28 14:57:20 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.28 14:57:20 5: vallox_cloud: ExtractSid called, context sid, num 1
2018.12.28 14:57:20 4: vallox_cloud: checking for redirects, code=302, ignore=0
2018.12.28 14:57:20 4: vallox_cloud: https://cloud.vallox.com/login: Redirect (1) to https://cloud.vallox.com:443/
2018.12.28 14:57:20 4: vallox_cloud: AddToQueue adds auth1, initial queue len: 1, prio
2018.12.28 14:57:20 5: vallox_cloud: AddToQueue prepends type auth1 to URL https://cloud.vallox.com:443/, no data, header Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc, retry 0
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue called, qlen = 2
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0 (key _csrfToken;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg (key connect.sid;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value en (key lang;, destination path is /)
2018.12.28 14:57:20 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
2018.12.28 14:57:20 4: vallox_cloud: HandleSendQueue sends request type auth1 to URL https://cloud.vallox.com:443/, No Data,
header: Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
timeout 5
2018.12.28 14:57:20 5: HttpUtils url=https://cloud.vallox.com:443/
2018.12.28 14:57:20 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.28 14:57:21 5: HttpUtils request header:
GET / HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 5jn4kNMz-u__zFY3-oK8LbVZM70cxLEtjdNc
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=zV0aKTaS-5uGjnLFjHc1Bl6T7lUPnZvgmyz0; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
Content-Length: 0

2018.12.28 14:57:21 4: https://cloud.vallox.com:443/: HTTP response code 200
2018.12.28 14:57:21 5: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4169
2018.12.28 14:57:21 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:22 GMT
Set-Cookie: _csrfToken=SrYJsmiX-_4EE6Qm8lGYY8Uf2ncpbIZbLOrE; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
ETag: W/"1049-UbjnUEcK4sCkOD8a4iXojg"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Fri, 28 Dec 2018 13:57:22 GMT
Connection: close
Transfer-Encoding: chunked
2018.12.28 14:57:21 4: vallox_cloud: Read callback: request type was auth1 retry 0,
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.8</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></div><div class="copyright col-sm-4">&copy; Vallox 2018</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>
2018.12.28 14:57:21 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.28 14:57:21 4: vallox_cloud: GetCookies parsed Cookie: lang Wert en Rest Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:22 GMT
2018.12.28 14:57:21 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert SrYJsmiX-_4EE6Qm8lGYY8Uf2ncpbIZbLOrE Rest Path=/
2018.12.28 14:57:21 5: vallox_cloud: ExtractSid called, context sid, num 1
2018.12.28 14:57:21 4: vallox_cloud: checking for redirects, code=200, ignore=0
2018.12.28 14:57:21 4: vallox_cloud: no redirects to handle
2018.12.28 14:57:23 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.28 14:57:23 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /)
2018.12.28 14:57:23 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value SrYJsmiX-_4EE6Qm8lGYY8Uf2ncpbIZbLOrE (key _csrfToken;, destination path is /)
2018.12.28 14:57:23 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg (key connect.sid;, destination path is /)
2018.12.28 14:57:23 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value en (key lang;, destination path is /)
2018.12.28 14:57:23 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=SrYJsmiX-_4EE6Qm8lGYY8Uf2ncpbIZbLOrE; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
2018.12.28 14:57:23 4: vallox_cloud: HandleSendQueue sends request type get02 to URL https://cloud.vallox.com:443/, No Data,
header: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=SrYJsmiX-_4EE6Qm8lGYY8Uf2ncpbIZbLOrE; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
timeout 5
2018.12.28 14:57:23 5: HttpUtils url=https://cloud.vallox.com:443/
2018.12.28 14:57:23 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.28 14:57:24 5: HttpUtils request header:
GET / HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=SrYJsmiX-_4EE6Qm8lGYY8Uf2ncpbIZbLOrE; connect.sid=s%3Aso8MJm2kpJ-naPIcDVYv4D_JEdoZmbz2.I%2BCZleRgzC3HLSYlM5bUK56ieIWojPBmkxmvYjn%2BCjg; lang=en
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.12.28 14:57:24 4: https://cloud.vallox.com:443/: HTTP response code 200
2018.12.28 14:57:24 5: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4169
2018.12.28 14:57:24 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: lang=en; Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:25 GMT
Set-Cookie: _csrfToken=5lGy9oVy-TTb4cZwrUjorgjAL6FTvxOoCh-0; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
ETag: W/"1049-UbjnUEcK4sCkOD8a4iXojg"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Fri, 28 Dec 2018 13:57:25 GMT
Connection: close
Transfer-Encoding: chunked
2018.12.28 14:57:24 4: vallox_cloud: Read callback: request type was get02 retry 1,
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.8</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></div><div class="copyright col-sm-4">&copy; Vallox 2018</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>
2018.12.28 14:57:24 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.28 14:57:24 4: vallox_cloud: GetCookies parsed Cookie: lang Wert en Rest Max-Age=604800; Path=/; Expires=Fri, 04 Jan 2019 13:57:25 GMT
2018.12.28 14:57:24 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert 5lGy9oVy-TTb4cZwrUjorgjAL6FTvxOoCh-0 Rest Path=/
2018.12.28 14:57:24 5: vallox_cloud: ExtractSid called, context get, num 02
2018.12.28 14:57:24 4: vallox_cloud: checking for redirects, code=200, ignore=0
2018.12.28 14:57:24 4: vallox_cloud: no redirects to handle
2018.12.28 14:57:24 5: vallox_cloud: CheckAuth is checking buffer with ReAuthRegex loginController
2018.12.28 14:57:24 4: vallox_cloud: CheckAuth decided new authentication required
2018.12.28 14:57:24 4: vallox_cloud: Authentication still required but no retries left - did last authentication fail?
2018.12.28 14:57:24 5: vallox_cloud: ExtractReading for context get, num 02 - no individual parse definition
2018.12.28 14:57:24 5: vallox_cloud: Read starts parsing response to get02 with defined readings:
2018.12.28 14:57:24 3: vallox_cloud: Read response to get02 didn't match any Reading
2018.12.28 14:57:24 5: vallox_cloud: HandleSendQueue called, qlen = 0


Meine Erkenntnisse bisher sind:

- Im Burp Repeater läuft es so weit.
    Hier muss man natürlich die cockies manuell weiterreichen.

- Der Login Prozess in FHEM läuft ab und erkennt, dass ein Login notwendig ist.
- Die sid Attribute werden aufgebaut und der Username und das Passwort als Data weitergereicht.
- Das cockie Handling sieht für mich gut aus.

An dieser Stelle komme ich nun nicht mehr weiter.
Kann es etwas mit den Redirects  zu tun haben? Dafür habe ich handleRedirects aktiviert.


Ich wäre für jeden Tipp dankbar.

Für die ganz interessierten Helfen ist in der Vallox Cloud auch ein Gastzugang zu einer Demo möglich.

Viele Grüße und schöne Weihnachten gehabt zu haben :-)
      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

Beta-User

Zitat von: StefanStrobel am 28 Dezember 2018, 09:31:27
Hier mit zusätzlichem Attribut "model".
Thx.
Habe die modifizierte Version vorhin in meinem FHEM eingespielt, das scheint auch mind. mit den clever-tanken-templates zu funktionieren.

Habe das template-file daher leicht verändert ins svn geschoben, dann ist es für alle ohne Klimmzüge ab morgen verfügbar.

Gruß, Beta-User
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

ch.eick

#492
Hallo zusammen,

das Thema Vallox Cloud lässt mich einfach nicht los und so habe ich einen Tipp von Stefan nochmals nachgelesen und versucht umzusetzen.
In der Burp Suite habe ich auch bereits die Header minimiert, bis nur noch die notwendigen Attribute für HTTPMOD übrig blieben.
Ich denke es geht nun einen Schritt weiter und die nächste Frage kommt dann weiter unter.

Device settings:

defmod vallox_cloud HTTPMOD https://cloud.vallox.com:443/login 0
# Allgemeine Attribute
attr vallox_cloud enableControlSet 1
attr vallox_cloud enableCookies 1
attr vallox_cloud handleRedirects 1
attr vallox_cloud httpVersion 1.1
attr vallox_cloud queueDelay 3
attr vallox_cloud showBody 1
attr vallox_cloud showError 1
attr vallox_cloud timeout 5
attr vallox_cloud verbose 5

# get01 habe ich erst mal raus genommen

attr vallox_cloud get02Name KWL_Status
attr vallox_cloud get02URL https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4
attr vallox_cloud get02Header1 Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
attr vallox_cloud get02Header2 X-XSRF-TOKEN: %%_csrfToken%%

# das war ein Tip von Stefan, bei dem ich das csrfToken zuerst lesen sollte
attr vallox_cloud reading1Name _csrfToken
attr vallox_cloud reading1Regex ((?<=_csrfToken=).*);

# und dann mit einem replacement in z.B. get02Header2 einsetzen sollte
attr vallox_cloud replacement1Mode reading
attr vallox_cloud replacement1Regex %%_csrfToken%%
attr vallox_cloud replacement1Value _csrfToken

attr vallox_cloud reAuthRegex loginController
attr vallox_cloud sid1Data1 username=ch.eick%40arcor.de&password=Alexch0-
attr vallox_cloud sid1Header1 Referer: https://cloud.vallox.com/
attr vallox_cloud sid1Header2 Content-Type: application/x-www-form-urlencoded;; charset=UTF-8
attr vallox_cloud sid1Header3 X-XSRF-TOKEN: %%_csrfToken%%
attr vallox_cloud sid1URL https://cloud.vallox.com/login


Dann sehen die Log Meldungen wie folgt aus:

Wichtig ist hier die Erfolgszeile
Body: {"success":true,"errors":[],"errfor":{},"message":"","nexturl":"/account"}
was ein erfolgreiches Login bedeutet. Ich habe es im folgenden durch Leerzeilen herforgehoben.


2018.12.29 20:08:56 5: vallox_cloud: get called with KWL_Status
2018.12.29 20:08:56 5: vallox_cloud: get found option KWL_Status in attribute get02Name
2018.12.29 20:08:56 4: vallox_cloud: get will now request KWL_Status, no optional value
2018.12.29 20:08:56 4: vallox_cloud: AddToQueue adds get02, initial queue len: 0
2018.12.29 20:08:56 5: vallox_cloud: AddToQueue adds type get02 to URL https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4, no data, header Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%, retry 0
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.29 20:08:56 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%
2018.12.29 20:08:56 5: vallox_cloud: Replace: reading value is 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
2018.12.29 20:08:56 4: vallox_cloud: Replace: match for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken, input: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%, result is Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
2018.12.29 20:08:56 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input:
2018.12.29 20:08:56 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input: https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8 (key _csrfToken;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3AYPeCbfa1ImXnDenXhv2hmsMcoaqvalVU.DYALxZyZae%2BAujJQRPuV3YK6GxzaAo0Hd1jtocUp1Xw (key connect.sid;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value de (key lang;, destination path is /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8; connect.sid=s%3AYPeCbfa1ImXnDenXhv2hmsMcoaqvalVU.DYALxZyZae%2BAujJQRPuV3YK6GxzaAo0Hd1jtocUp1Xw; lang=de
2018.12.29 20:08:56 4: vallox_cloud: HandleSendQueue sends request type get02 to URL https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4, No Data,
header: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8; connect.sid=s%3AYPeCbfa1ImXnDenXhv2hmsMcoaqvalVU.DYALxZyZae%2BAujJQRPuV3YK6GxzaAo0Hd1jtocUp1Xw; lang=de
timeout 5
2018.12.29 20:08:56 5: HttpUtils url=https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4
2018.12.29 20:08:56 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.29 20:08:56 5: HttpUtils request header:
GET /api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4 HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8; connect.sid=s%3AYPeCbfa1ImXnDenXhv2hmsMcoaqvalVU.DYALxZyZae%2BAujJQRPuV3YK6GxzaAo0Hd1jtocUp1Xw; lang=de
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.12.29 20:08:56 4: https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4: HTTP response code 302
2018.12.29 20:08:56 5: HttpUtils https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4: Got data, length: 23
2018.12.29 20:08:56 5: HttpUtils response header:
HTTP/1.1 302 Found
set-cookie: lang=de; Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:08:59 GMT
set-cookie: _csrfToken=qNxTxiZ5-94Yytke5d0UycYKpv66SefB7NiY; Path=/
set-cookie: connect.sid=s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
X-Auth-Required: true
Location: /
Vary: Accept, Accept-Encoding
Content-Type: text/plain; charset=utf-8
Content-Length: 23
Date: Sat, 29 Dec 2018 19:08:59 GMT
Connection: close
2018.12.29 20:08:56 4: vallox_cloud: Read callback: request type was get02 retry 0,
Body: Found. Redirecting to /
2018.12.29 20:08:56 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.29 20:08:56 4: vallox_cloud: GetCookies parsed Cookie: lang Wert de Rest Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:08:59 GMT
2018.12.29 20:08:56 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert qNxTxiZ5-94Yytke5d0UycYKpv66SefB7NiY Rest Path=/
2018.12.29 20:08:56 4: vallox_cloud: GetCookies parsed Cookie: connect.sid Wert s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk Rest Path=/; HttpOnly
2018.12.29 20:08:56 5: vallox_cloud: ExtractSid called, context get, num 02
2018.12.29 20:08:56 4: vallox_cloud: checking for redirects, code=302, ignore=0
2018.12.29 20:08:56 4: vallox_cloud: https://cloud.vallox.com:443/api/devicestate/432C7775-3FDA-430A-920A-97B591B5F2C4: Redirect (1) to https://cloud.vallox.com:443/
2018.12.29 20:08:56 4: vallox_cloud: AddToQueue adds get02, initial queue len: 0, prio
2018.12.29 20:08:56 5: vallox_cloud: AddToQueue prepends type get02 to URL https://cloud.vallox.com:443/, no data, header Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%, retry 0
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.29 20:08:56 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%
2018.12.29 20:08:56 5: vallox_cloud: Replace: reading value is 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
2018.12.29 20:08:56 4: vallox_cloud: Replace: match for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken, input: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%, result is Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
2018.12.29 20:08:56 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input:
2018.12.29 20:08:56 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input: https://cloud.vallox.com:443/
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value qNxTxiZ5-94Yytke5d0UycYKpv66SefB7NiY (key _csrfToken;, destination path is /)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk (key connect.sid;, destination path is /)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value de (key lang;, destination path is /)
2018.12.29 20:08:56 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=qNxTxiZ5-94Yytke5d0UycYKpv66SefB7NiY; connect.sid=s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk; lang=de
2018.12.29 20:08:56 4: vallox_cloud: HandleSendQueue sends request type get02 to URL https://cloud.vallox.com:443/, No Data,
header: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=qNxTxiZ5-94Yytke5d0UycYKpv66SefB7NiY; connect.sid=s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk; lang=de
timeout 5
2018.12.29 20:08:56 5: HttpUtils url=https://cloud.vallox.com:443/
2018.12.29 20:08:56 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.29 20:08:57 5: HttpUtils request header:
GET / HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=qNxTxiZ5-94Yytke5d0UycYKpv66SefB7NiY; connect.sid=s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk; lang=de
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.12.29 20:08:57 4: https://cloud.vallox.com:443/: HTTP response code 200
2018.12.29 20:08:57 5: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4244
2018.12.29 20:08:57 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: lang=de; Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:08:59 GMT
Set-Cookie: _csrfToken=WXLKxgtA-53rY8mRpLbXFr93r1iGu8Oy8UX4; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
ETag: W/"1094-F9xEl9P1bK206SUsbxVDxw"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Sat, 29 Dec 2018 19:08:59 GMT
Connection: close
Transfer-Encoding: chunked
2018.12.29 20:08:57 4: vallox_cloud: Read callback: request type was get02 retry 0,
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>Testen Sie die MyVallox Demoversion</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>EINFACHE LÜFTUNGSSTEUERUNG</h3>Registrieren Sie Ihr MyVallox Lüftungsgerät im Cloud-Dienst und Sie können die Lüftung in Ihrem Haus von überall steuern.</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>Mit Vallox bleibt die Innenraumluft frisch und sauber</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain3.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>GUTE LÜFTUNG IST EINE INVESTITION INS WOHLBEFINDEN</h3>und die beste Versicherung für Ihr Zuhause</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>Einloggen</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="E-Mail-Adresse" ng-model="email"></div><div class="password-input col-sm-5"><input type="password" placeholder="Kennwort" 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">Einloggen</button></div></div></div></div></form><div class="extra-row"><a href="/login/forgot/">Kennwort vergessen?</a></div></div><div class="firmware section"><h1>Aktuelle Firmware</h1><div class="row"><div class="col-xs-1">v1.8.8</div><div class="col-xs-4"><a href="http://cloud.vallox.com/changelog.txt" target="_blank">Firmware Änderungsprotokoll</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">Über Vallox</a><br><a href="http://www.vallox.com/" target="_blank">Hilfe</a></div><div class="legal col-sm-4"><a href="/terms">Geschäftsbedingungen</a><br><a href="/privacy">Datenschutzbestimmungen</a></div><div class="copyright col-sm-4">&copy; Vallox 2018</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>
2018.12.29 20:08:57 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.29 20:08:57 4: vallox_cloud: GetCookies parsed Cookie: lang Wert de Rest Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:08:59 GMT
2018.12.29 20:08:57 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert WXLKxgtA-53rY8mRpLbXFr93r1iGu8Oy8UX4 Rest Path=/
2018.12.29 20:08:57 5: vallox_cloud: ExtractSid called, context get, num 02
2018.12.29 20:08:57 4: vallox_cloud: checking for redirects, code=200, ignore=0
2018.12.29 20:08:57 4: vallox_cloud: no redirects to handle
2018.12.29 20:08:57 5: vallox_cloud: CheckAuth is checking buffer with ReAuthRegex loginController
2018.12.29 20:08:57 4: vallox_cloud: CheckAuth decided new authentication required
2018.12.29 20:08:57 4: vallox_cloud: Auth called with Steps: 1
2018.12.29 20:08:57 4: vallox_cloud: AddToQueue adds auth1, initial queue len: 0, prio
2018.12.29 20:08:57 5: vallox_cloud: AddToQueue prepends type auth1 to URL https://cloud.vallox.com/login, data username=ch.eick%40arcor.de&password=Alexch0-, header Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: %%_csrfToken%%, retry 0
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.29 20:08:57 5: vallox_cloud: Replace called for type auth1, regex %%_csrfToken%%, mode reading, value _csrfToken input: Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: %%_csrfToken%%
2018.12.29 20:08:57 5: vallox_cloud: Replace: reading value is 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
2018.12.29 20:08:57 4: vallox_cloud: Replace: match for type auth1, regex %%_csrfToken%%, mode reading, value _csrfToken, input: Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: %%_csrfToken%%, result is Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
2018.12.29 20:08:57 5: vallox_cloud: Replace called for type auth1, regex %%_csrfToken%%, mode reading, value _csrfToken input: username=ch.eick%40arcor.de&password=Alexch0-
2018.12.29 20:08:57 5: vallox_cloud: Replace called for type auth1, regex %%_csrfToken%%, mode reading, value _csrfToken input: https://cloud.vallox.com/login
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /login)
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value WXLKxgtA-53rY8mRpLbXFr93r1iGu8Oy8UX4 (key _csrfToken;, destination path is /login)
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk (key connect.sid;, destination path is /login)
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value de (key lang;, destination path is /login)
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=WXLKxgtA-53rY8mRpLbXFr93r1iGu8Oy8UX4; connect.sid=s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk; lang=de
2018.12.29 20:08:57 4: vallox_cloud: HandleSendQueue sends request type auth1 to URL https://cloud.vallox.com/login,
data: username=ch.eick%40arcor.de&password=Alexch0-,
header: Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=WXLKxgtA-53rY8mRpLbXFr93r1iGu8Oy8UX4; connect.sid=s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk; lang=de
timeout 5
2018.12.29 20:08:57 5: HttpUtils url=https://cloud.vallox.com/login
2018.12.29 20:08:57 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.29 20:08:57 4: vallox_cloud: AddToQueue adds get02, initial queue len: 0
2018.12.29 20:08:57 5: vallox_cloud: AddToQueue adds type get02 to URL https://cloud.vallox.com:443/, no data, header Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%, retry 1
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.29 20:08:57 5: vallox_cloud: HandleSendQueue - still waiting for reply to last request, delay sending from queue
2018.12.29 20:08:57 4: vallox_cloud: CheckAuth requeued request get02 after auth, retryCount 0 ...
2018.12.29 20:08:57 5: HttpUtils request header:
POST /login HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=WXLKxgtA-53rY8mRpLbXFr93r1iGu8Oy8UX4; connect.sid=s%3AS_5HaepB32cw6ydBudaBIREJIcW1BAjw.c0wiMhUUkGU1i3G6%2FKW%2BbBeZvxiG9nk%2FVZeKawRCAkk; lang=de
Content-Length: 45

2018.12.29 20:08:57 4: https://cloud.vallox.com/login: HTTP response code 200
2018.12.29 20:08:57 5: HttpUtils https://cloud.vallox.com/login: Got data, length: 74
2018.12.29 20:08:57 5: HttpUtils response header:
HTTP/1.1 200 OK
Vary: X-HTTP-Method-Override, Accept-Encoding
set-cookie: lang=de; Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:08:59 GMT
set-cookie: _csrfToken=vBbKKx3h-stKmY-s_zqUP3jzEH2qp0PxtTVE; Path=/
set-cookie: connect.sid=s%3Avhd9uWETTmt4FnCCpNQC2x4sfurQb1dR.UmTBsWbjhvMRXNXI%2FJRAXw3OS9EN6EMyc28fWWBXpNA; Path=/; HttpOnly
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: application/json; charset=utf-8
Content-Length: 74
ETag: W/"4a-iFjmKaXUGUWpK3TUuWr9AQ"
Date: Sat, 29 Dec 2018 19:08:59 GMT
Connection: close
2018.12.29 20:08:57 4: vallox_cloud: Read callback: request type was auth1 retry 0,





Body: {"success":true,"errors":[],"errfor":{},"message":"","nexturl":"/account"}





2018.12.29 20:08:57 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.29 20:08:57 4: vallox_cloud: GetCookies parsed Cookie: lang Wert de Rest Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:08:59 GMT
2018.12.29 20:08:57 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert vBbKKx3h-stKmY-s_zqUP3jzEH2qp0PxtTVE Rest Path=/



Hier hat sich der csrfToken geändert, wird jedoch nicht fom HTTPMOD neu ins reading1Name übernommen.
Wie kann ich denn hier das erneuern der readings veranlassen.



2018.12.29 20:08:57 4: vallox_cloud: GetCookies parsed Cookie: connect.sid Wert s%3Avhd9uWETTmt4FnCCpNQC2x4sfurQb1dR.UmTBsWbjhvMRXNXI%2FJRAXw3OS9EN6EMyc28fWWBXpNA Rest Path=/; HttpOnly
2018.12.29 20:08:57 5: vallox_cloud: ExtractSid called, context sid, num 1
2018.12.29 20:08:57 4: vallox_cloud: checking for redirects, code=200, ignore=0
2018.12.29 20:08:57 4: vallox_cloud: no redirects to handle
2018.12.29 20:09:00 5: vallox_cloud: HandleSendQueue called, qlen = 1
2018.12.29 20:09:00 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%
2018.12.29 20:09:00 5: vallox_cloud: Replace: reading value is 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
2018.12.29 20:09:00 4: vallox_cloud: Replace: match for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken, input: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: %%_csrfToken%%, result is Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4


Und hier kommt dann leider das alte csrfToken.

X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8


2018.12.29 20:09:00 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input:
2018.12.29 20:09:00 5: vallox_cloud: Replace called for type get02, regex %%_csrfToken%%, mode reading, value _csrfToken input: https://cloud.vallox.com:443/
2018.12.29 20:09:00 5: vallox_cloud: HandleSendQueue is using Cookie _csrf with path  and Value s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc (key _csrf;, destination path is /)
2018.12.29 20:09:00 5: vallox_cloud: HandleSendQueue is using Cookie _csrfToken with path  and Value vBbKKx3h-stKmY-s_zqUP3jzEH2qp0PxtTVE (key _csrfToken;, destination path is /)
2018.12.29 20:09:00 5: vallox_cloud: HandleSendQueue is using Cookie connect.sid with path  and Value s%3Avhd9uWETTmt4FnCCpNQC2x4sfurQb1dR.UmTBsWbjhvMRXNXI%2FJRAXw3OS9EN6EMyc28fWWBXpNA (key connect.sid;, destination path is /)
2018.12.29 20:09:00 5: vallox_cloud: HandleSendQueue is using Cookie lang with path  and Value de (key lang;, destination path is /)
2018.12.29 20:09:00 5: vallox_cloud: HandleSendQueue is adding Cookie header: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=vBbKKx3h-stKmY-s_zqUP3jzEH2qp0PxtTVE; connect.sid=s%3Avhd9uWETTmt4FnCCpNQC2x4sfurQb1dR.UmTBsWbjhvMRXNXI%2FJRAXw3OS9EN6EMyc28fWWBXpNA; lang=de
2018.12.29 20:09:00 4: vallox_cloud: HandleSendQueue sends request type get02 to URL https://cloud.vallox.com:443/, No Data,
header: Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=vBbKKx3h-stKmY-s_zqUP3jzEH2qp0PxtTVE; connect.sid=s%3Avhd9uWETTmt4FnCCpNQC2x4sfurQb1dR.UmTBsWbjhvMRXNXI%2FJRAXw3OS9EN6EMyc28fWWBXpNA; lang=de
timeout 5
2018.12.29 20:09:00 5: HttpUtils url=https://cloud.vallox.com:443/
2018.12.29 20:09:00 4: IP: cloud.vallox.com -> 194.111.216.21
2018.12.29 20:09:00 5: HttpUtils request header:
GET / HTTP/1.1
Host: cloud.vallox.com
User-Agent: fhem
Accept-Encoding: gzip,deflate
Connection: Close
Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=432C7775-3FDA-430A-920A-97B591B5F2C4
X-XSRF-TOKEN: 1WjmsFPE-ktl3lUBDc68-JBEumhxf25M90q8
Cookie: _csrf=s%3A_DQF8hzC94UCgHWDY5Pfy2M5.TamhyzJ5qDr9uaCY86u%2B%2B2NqfDF1jL8UeNLOTCkVzwc; _csrfToken=vBbKKx3h-stKmY-s_zqUP3jzEH2qp0PxtTVE; connect.sid=s%3Avhd9uWETTmt4FnCCpNQC2x4sfurQb1dR.UmTBsWbjhvMRXNXI%2FJRAXw3OS9EN6EMyc28fWWBXpNA; lang=de
Content-Length: 0
Content-Type: application/x-www-form-urlencoded

2018.12.29 20:09:00 4: https://cloud.vallox.com:443/: HTTP response code 200
2018.12.29 20:09:00 5: HttpUtils https://cloud.vallox.com:443/: Got data, length: 4244
2018.12.29 20:09:00 5: HttpUtils response header:
HTTP/1.1 200 OK
Set-Cookie: lang=de; Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:09:02 GMT
Set-Cookie: _csrfToken=0S8ZJPyP-JibOJgxTNnj3mNs_eg7csev3jbo; Path=/
X-Frame-Options: DENY
X-Powered-By: Express
Content-Type: text/html; charset=utf-8
ETag: W/"1094-F9xEl9P1bK206SUsbxVDxw"
Vary: Accept-Encoding
Content-Encoding: gzip
Date: Sat, 29 Dec 2018 19:09:03 GMT
Connection: close
Transfer-Encoding: chunked
2018.12.29 20:09:00 4: vallox_cloud: Read callback: request type was get02 retry 1,
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>Testen Sie die MyVallox Demoversion</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>EINFACHE LÜFTUNGSSTEUERUNG</h3>Registrieren Sie Ihr MyVallox Lüftungsgerät im Cloud-Dienst und Sie können die Lüftung in Ihrem Haus von überall steuern.</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>Mit Vallox bleibt die Innenraumluft frisch und sauber</div></div></div><div class="item"><img src="/media/MyValloxKuvakaruselliKuvatPlain3.png" alt="..."><div class="carousel-caption"><div class="middle"><h3>GUTE LÜFTUNG IST EINE INVESTITION INS WOHLBEFINDEN</h3>und die beste Versicherung für Ihr Zuhause</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>Einloggen</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="E-Mail-Adresse" ng-model="email"></div><div class="password-input col-sm-5"><input type="password" placeholder="Kennwort" 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">Einloggen</button></div></div></div></div></form><div class="extra-row"><a href="/login/forgot/">Kennwort vergessen?</a></div></div><div class="firmware section"><h1>Aktuelle Firmware</h1><div class="row"><div class="col-xs-1">v1.8.8</div><div class="col-xs-4"><a href="http://cloud.vallox.com/changelog.txt" target="_blank">Firmware Änderungsprotokoll</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">Über Vallox</a><br><a href="http://www.vallox.com/" target="_blank">Hilfe</a></div><div class="legal col-sm-4"><a href="/terms">Geschäftsbedingungen</a><br><a href="/privacy">Datenschutzbestimmungen</a></div><div class="copyright col-sm-4">&copy; Vallox 2018</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>
2018.12.29 20:09:00 5: vallox_cloud: GetCookies is looking for Cookies
2018.12.29 20:09:00 4: vallox_cloud: GetCookies parsed Cookie: lang Wert de Rest Max-Age=604800; Path=/; Expires=Sat, 05 Jan 2019 19:09:02 GMT
2018.12.29 20:09:00 4: vallox_cloud: GetCookies parsed Cookie: _csrfToken Wert 0S8ZJPyP-JibOJgxTNnj3mNs_eg7csev3jbo Rest Path=/
2018.12.29 20:09:00 5: vallox_cloud: ExtractSid called, context get, num 02
2018.12.29 20:09:00 4: vallox_cloud: checking for redirects, code=200, ignore=0
2018.12.29 20:09:00 4: vallox_cloud: no redirects to handle
2018.12.29 20:09:00 5: vallox_cloud: CheckAuth is checking buffer with ReAuthRegex loginController
2018.12.29 20:09:00 4: vallox_cloud: CheckAuth decided new authentication required
2018.12.29 20:09:00 4: vallox_cloud: Authentication still required but no retries left - did last authentication fail?
2018.12.29 20:09:00 5: vallox_cloud: ExtractReading for context get, num 02 - no individual parse definition
2018.12.29 20:09:00 5: vallox_cloud: Read starts parsing response to get02 with defined readings: 1
2018.12.29 20:09:00 5: vallox_cloud: ExtractReading _csrfToken with regex /((?<=_csrfToken=).*);/...
2018.12.29 20:09:00 5: vallox_cloud: 1 capture group(s), matchlist = 0S8ZJPyP-JibOJgxTNnj3mNs_eg7csev3jbo
2018.12.29 20:09:01 4: vallox_cloud: ExtractReading for reading1-1 sets _csrfToken to 0S8ZJPyP-JibOJgxTNnj3mNs_eg7csev3jbo
2018.12.29 20:09:01 4: vallox_cloud: Read response to get02 matched Reading(s) _csrfToken
2018.12.29 20:09:01 5: vallox_cloud: HandleSendQueue called, qlen = 0



Meine Vermutung ist, dass durch die erneute Verwendung des alten csrfToken dann bei der KWL_Status Abfrage der Login nicht akzeptiert wurde.

Über Tipps würde ich mich wie immer freuen. Und schon mal vielen Dank an Stefan, es hat ein wenig gedauert, bis ich die Inhalte der Postings richtig verstanden hatte.

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

StefanStrobel

Hallo Christian,

Ich vermute, es fehlt nur noch ein sidParseResponse ...

Gruß
    Stefan

ch.eick

#494
Hallo nochmal.
Vielen Dank an Stefan, nun ist der erste Erfolg da.


defmod vallox_cloud HTTPMOD https://cloud.vallox.com:443/api/devicestate/<Gerätekennung> 0

# Allgemeine Attribute
attr vallox_cloud enableControlSet 1
attr vallox_cloud enableCookies 1
attr vallox_cloud enforceGoodReadingNames 1
attr vallox_cloud handleRedirects 1
attr vallox_cloud httpVersion 1.1

# Das sind Attribute mit den Test Werten, damit man was sieht
attr vallox_cloud showBody 1
attr vallox_cloud showError 1
attr vallox_cloud timeout 5
attr vallox_cloud verbose 5

# Achtung bei diesem get "/all" werden größere Datenmengen geholt, die mit  get01ExtractAllJSON 1 zu einer erhöhten Laufzeit führen,
# insbesondere wenn verbose auf 5 steht.
attr vallox_cloud get01Name KWL_All
attr vallox_cloud get01URL https://cloud.vallox.com:443/api/logs/<Gerätekennung>/all
attr vallox_cloud get02ExtractAllJSON 0

# Dieses get liefert die JSON Daten für Readings weiter unten. Um all automatisch zu lesen kann get02ExtractAllJSON auf 1 gesetzt werden
attr vallox_cloud get02Name KWL_Status
attr vallox_cloud get02URL https://cloud.vallox.com:443/api/devicestate/<Gerätekennung>
attr vallox_cloud get02Header1 Referer: https://cloud.vallox.com/cloudui/index.html?deviceid=<Gerätekennung>
attr vallox_cloud get02Header2 X-XSRF-TOKEN: %%_csrfToken%%
attr vallox_cloud get02ExtractAllJSON 0

# Das csrfToken muss für die nächste Abfrage im Header wieder mitgegeben werden
attr vallox_cloud reading1Name _csrfToken
attr vallox_cloud reading1Regex ((?<=_csrfToken=).*);;
attr vallox_cloud replacement1Mode reading
attr vallox_cloud replacement1Regex %%_csrfToken%%
attr vallox_cloud replacement1Value _csrfToken

# Ein notwendiges Login erkennt man hieran
attr vallox_cloud reAuthRegex loginController

#Diesen Parse benötigt man um csrfToken wieder zu aktualisieren
attr vallox_cloud sid1ParseResponse 1

# Momentan ist es noch etwas unschön wenn ein Login notwendig ist, dann muss KWL_Status zwei mal aufgerufen werden.
# Beim ersten Aufruf wird der Login durchgeführt und beim zweiten erst der KWL_Status abgerufen.
# Beim Requeue wird in meiner Konfiguration noch irgend etwas nicht richtig gesetzt, aber kommt Zeit kommt Rat :-)
attr vallox_cloud dontRequeueAfterAuth 1

# Den Header habe ich bereits auf ein Minimum reduziert
attr vallox_cloud sid1URL https://cloud.vallox.com/login
attr vallox_cloud sid1Header1 Referer: https://cloud.vallox.com/
attr vallox_cloud sid1Header2 Content-Type: application/x-www-form-urlencoded;; charset=UTF-8
attr vallox_cloud sid1Header3 X-XSRF-TOKEN: %%_csrfToken%%
attr vallox_cloud sid1Data1 username=<Username>&password=<Passwort>

# Das sind nun die ersten readings mit lesbaren Namen, die ich aus folgendem Link entnommen habe:
# https://github.com/yozik04/vallox_websocket_api/blob/master/vallox_websocket_api/constants.py
# Ich denke das ist sinnvoll, wenn mal ein guter Geist den Phyton Code nach Perl umsetzt und so eventuell ein Modul für die LAN APIi entsteht.
#
# Hier wird sich noch einiges ändern, da meine Vallox 270 z.B keine Zusatzheizung und keinen CO2 Sensor hat. Also wird alles, was nicht genutzt
# wird noch heraus genommen und die noch fehlenden Readings ergänzt.
attr vallox_cloud reading00001JSON devices
attr vallox_cloud reading00001Name A_CYC_DEVICE._ID
attr vallox_cloud reading00017JSON data.17.value
attr vallox_cloud reading00017Name A_CYC_MACHINE_MODEL
attr vallox_cloud reading04353JSON data.4353.value
attr vallox_cloud reading04353Name A_CYC_FAN_SPEED
attr vallox_cloud reading04354JSON data.4354.value
attr vallox_cloud reading04354Name A_CYC_TEMP_EXTRACT_AIR
attr vallox_cloud reading04355JSON data.4355.value
attr vallox_cloud reading04355Name A_CYC_TEMP_EXHAUST_AIR
attr vallox_cloud reading04356JSON data.4356.value
attr vallox_cloud reading04356Name A_CYC_TEMP_OUTDOOR_AIR
attr vallox_cloud reading04357JSON data.4357.value
attr vallox_cloud reading04357Name A_CYC_TEMP_SUPPLY_CELL_AIR
attr vallox_cloud reading04358JSON data.4358.value
attr vallox_cloud reading04358Name A_CYC_TEMP_SUPPLY_AIR
attr vallox_cloud reading04359JSON data.4359.value
attr vallox_cloud reading04359Name A_CYC_RH_LEVEL
attr vallox_cloud reading04360JSON data.4360.value
attr vallox_cloud reading04360Name A_CYC_CO2_LEVEL
attr vallox_cloud reading04363JSON data.4363.value
attr vallox_cloud reading04363Name A_CYC_RH_VALUE
attr vallox_cloud reading04364JSON data.4364.value
attr vallox_cloud reading04364Name A_CYC_CO2_VALUE
attr vallox_cloud reading04609JSON data.4609.value
attr vallox_cloud reading04609Name A_CYC_STATE
attr vallox_cloud reading04615JSON data.4615.value
attr vallox_cloud reading04615Name A_CYC_WEEKLY_TIMER_ENABLED
attr vallox_cloud reading04616JSON data.4616.value
attr vallox_cloud reading04616Name A_CYC_CELL_STATE
attr vallox_cloud reading05121JSON data.5121.value
attr vallox_cloud reading05121Name A_CYC_IN_EXTRACT_FAN
attr vallox_cloud reading05122JSON data.5122.value
attr vallox_cloud reading05122Name A_CYC_IN_SUPPLY_FAN
attr vallox_cloud reading05124JSON data.5124.value
attr vallox_cloud reading05124Name A_CYC_IN_HEATER
attr vallox_cloud reading05125JSON data.5125.value
attr vallox_cloud reading05125Name A_CYC_IN_EXTRA_HEATER
attr vallox_cloud reading05126JSON data.5126.value
attr vallox_cloud reading05126Name A_CYC_IN_BYPASS
attr vallox_cloud reading20482JSON data.20482.value
attr vallox_cloud reading20482Name A_CYC_MODBUS_ADDRESS
attr vallox_cloud reading20483JSON data.20483.value
attr vallox_cloud reading20483Name A_CYC_MODBUS_BAUD_X100
attr vallox_cloud reading20487JSON data.20487.value
attr vallox_cloud reading20487Name A_CYC_FIREPLACE_EXTR_FAN
attr vallox_cloud reading20488JSON data.20488.value
attr vallox_cloud reading20488Name A_CYC_FIREPLACE_SUPP_FAN
attr vallox_cloud reading20490JSON data.20490.value
attr vallox_cloud reading20490Name A_CYC_RH_BASIC_LEVEL
attr vallox_cloud reading20491JSON data.20491.value
attr vallox_cloud reading20491Name A_CYC_CO2_THRESHOLD
attr vallox_cloud reading20499JSON data.20499.value
attr vallox_cloud reading20499Name A_CYC_AWAY_RH_CTRL_ENABLED
attr vallox_cloud reading20500JSON data.20500.value
attr vallox_cloud reading20500Name A_CYC_AWAY_CO2_CTRL_ENABLED
attr vallox_cloud reading20501JSON data.20501.value
attr vallox_cloud reading20501Name A_CYC_AWAY_SPEED_SETTING
attr vallox_cloud reading20505JSON data.20505.value
attr vallox_cloud reading20505Name A_CYC_HOME_RH_CTRL_ENABLED
attr vallox_cloud reading20506JSON data.20506.value
attr vallox_cloud reading20506Name A_CYC_HOME_CO2_CTRL_ENABLED
attr vallox_cloud reading20507JSON data.20507.value
attr vallox_cloud reading20507Name A_CYC_HOME_SPEED_SETTING
attr vallox_cloud reading20511JSON data.20511.value
attr vallox_cloud reading20511Name A_CYC_BOOST_RH_CTRL_ENABLED
attr vallox_cloud reading20512JSON data.20512.value
attr vallox_cloud reading20512Name A_CYC_BOOST_CO2_CTRL_ENABLED
attr vallox_cloud reading20513JSON data.20513.value
attr vallox_cloud reading20513Name A_CYC_BOOST_SPEED_SETTING
attr vallox_cloud reading20517JSON data.20517.value
attr vallox_cloud reading20517Name A_CYC_RELAY_MODE
attr vallox_cloud reading20524JSON data.20524.value
attr vallox_cloud reading20524Name A_CYC_DEFROST_MODE
attr vallox_cloud reading20542JSON data.20542.value
attr vallox_cloud reading20542Name A_CYC_SIDEDNESS
attr vallox_cloud reading20543JSON data.20543.value
attr vallox_cloud reading20543Name A_CYC_RH_LEVEL_MODE
attr vallox_cloud reading20545JSON data.20545.value
attr vallox_cloud reading20545Name A_CYC_FIREPLACE_TIME
attr vallox_cloud reading20549JSON data.20549.value
attr vallox_cloud reading20549Name A_CYC_SUPPLY_HEATING_ADJUST_MODE
attr vallox_cloud reading20553JSON data.20553.value
attr vallox_cloud reading20553Name A_CYC_OPT_TEMP_SENSOR_MODE
attr vallox_cloud reading21765JSON data.21765.value
attr vallox_cloud reading21765Name A_CYC_PARENTAL_CTRL_ENABLED
attr vallox_cloud reading21767JSON data.21767.value
attr vallox_cloud reading21767Name A_CYC_FIREPLACE_TIMER_ENABLED
attr vallox_cloud reading21768JSON data.21768.value
attr vallox_cloud reading21768Name A_CYC_SUMMER_TIME_AUTO_ENAB
attr vallox_cloud reading21769JSON data.21769.value
attr vallox_cloud reading21769Name A_CYC_12_HOUR_CLOCK_ENABLED
attr vallox_cloud reading32771JSON data.32771.value
attr vallox_cloud reading32771Name A_CYC_BY_PASS_TEST
attr vallox_cloud reading32772JSON data.32772.value
attr vallox_cloud reading32772Name A_CYC_HEATER_TEST
attr vallox_cloud reading32773JSON data.32773.value
attr vallox_cloud reading32773Name A_CYC_EXTRA_HEATER_TEST
attr vallox_cloud reading32774JSON data.32774.value
attr vallox_cloud reading32774Name A_CYC_EFFICIENCY_TEST


Settings für die Steuerung habe ich bereits auch schon im Test, doch dazu dann später mehr.

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