***gelöst***HTTPMOD wie richtige Abfrage eintragen - RIKA Pelletofen - Firenet

Begonnen von Helmi55, 04 September 2017, 17:18:00

Vorheriges Thema - Nächstes Thema

LaMa163

Zitat von: amenomade am 12 Januar 2018, 14:40:29
@LaMa163: Eine kleine Analyse mit Burp zeigt folgendes:

Nach Aufruf (GET) von der Zielseite wirst Du zwar auf https://international.mytotalconnectcomfort.com/Account/Login weitergeleitet (http 302)
ABER
die Authentifizierungsdaten werden mit POST auf https://international.mytotalconnectcomfort.com/api/accountApi/login geschickt.
Das Loginverfahren von HTTPMOD musst Du entspr. anpassen.

Die Authentifizierungsdaten im POST sind in der Form:
{"EmailAddress":"mail@mail.com","Password":"myPassword","IsServiceStatusReturned":true,"ApiActive":true,"ApiDown":false,"RedirectUrl":"","events":[],"formErrors":[]}

Allerdings scheint es mit folgendem zu reichen:
{"EmailAddress":"beispiel@test.com","Password":"123456"}

So muss es aber in deiner attr sid01Data eins zu eins stehen, und nicht  EmailAddress:beispiel@test.com&Password:123456

Ausserdem muss unbedingt das attr enableCookies 1 auf deinem HTTPMOD gesetzt werden.

Cookies hatte ich definitiv enabled, den login werde ich anpassen und nachher testen.
Läuft die reAuthRegex auch unter der id=,,EmailAddress"? So hatte ich es zumindest im html code der Seite gelesen.


Gesendet von iPhone mit Tapatalk

amenomade

Nein, reAuthRegex muss in der Lage sein, die Login Seite zu idendifizieren. Mit id="login" passt es schon, da dieses in der Quellcode der Login Seite tatsächlich steht.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

LaMa163

Hi,

ich habe jetzt nochmal rumgespielt. Login geht immer noch nicht.
Mein httpmod sieht im Moment folgendermaßen aus...

BUSY
1
CHANGED
DEF
https://international.mytotalconnectcomfort.com/Locations/View/271xxxx 60
FD
18
HTTPCookies
ARRAffinity=5f3d6fad8a3ae8534c345f41f603788be7a1406a5ceebbdfe18b5c1b1c4ee5d9; AnonymousCookie=4803cf66-bcf9-4aa4-89c1-541fed89119e; __RequestVerificationToken=XyVcx12lR6RaaqYsOI7XQPwXlIa-Q4Fr22h8Ss-taVOHnh_F9jeB789nt5uU2DDosCXYRTAQvEqBYQ9fmuC8w0deAyo1
Interval
60
LASTSEND
1515785959.25966
LastAuthTry
2018-01-12 20:39:18
MainURL
https://international.mytotalconnectcomfort.com/Locations/View/271xxxx
ModuleVersion
3.4.0 - 9.9.2017
NAME
Heizung
NR
54
STATE
[emoji47]
TRIGGERTIME
1515786017.56096
TRIGGERTIME_FMT
2018-01-12 20:40:17
TYPE
HTTPMOD
addr
https://international.mytotalconnectcomfort.com:443
auth
0
buf
code
302
compress
1
data
displayurl
https://international.mytotalconnectcomfort.com:443/Account/Login?ReturnUrl=%2fLocations%2fView%2f271xxxx
header
Cookie: ARRAffinity=5f3d6fad8a3ae8534c345f41f603788be7a1406a5ceebbdfe18b5c1b1c4ee5d9; AnonymousCookie=4803cf66-bcf9-4aa4-89c1-541fed89119e; __RequestVerificationToken=XyVcx12lR6RaaqYsOI7XQPwXlIa-Q4Fr22h8Ss-taVOHnh_F9jeB789nt5uU2DDosCXYRTAQvEqBYQ9fmuC8w0deAyo1
host
international.mytotalconnectcomfort.com
httpheader
HTTP/1.1 302 Found Cache-Control: no-cache, no-store,no-cache Pragma: no-cache,no-cache Content-Length: 171 Content-Type: text/html; charset=utf-8 Expires: -1,-1 Location: /Account/Login?ReturnUrl=%2fLocations%2fView%2f271xxxx x-content-type-options: nosniff X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block Date: Fri, 12 Jan 2018 19:39:18 GMT Connection: close
httpversion
1.0
hu_blocking
0
hu_filecount
9
hu_port
443
hu_portSfx
ignoreredirects
0
loglevel
4
path
/Account/Login?ReturnUrl=%2fLocations%2fView%2f271xxxx
protocol
https
redirects
1
timeout
2
url
https://international.mytotalconnectcomfort.com:443/Account/Login?ReturnUrl=%2fLocations%2fView%2f271xxxx
value
0


und

enableCookies
1
deleteattr
reAuthRegex
id="login"|Unauthorized
deleteattr
sid01Data
{"EmailAddress":"beispiel@test.com","Password":"123456"}
deleteattr
sid01URL
https://international.mytotalconnectcomfort.com/Account/Login
deleteattr
userattr
sid01Data sid01URL
deleteattr


das FHEM log file gibt mir die folgende Meldung...

2018.01.12 20:44:19 5: Heizung: looking for Cookies in HTTP/1.1 200 OK
Cache-Control: no-cache, no-store,no-cache
Pragma: no-cache,no-cache
Content-Length: 17085
Content-Type: text/html; charset=utf-8
Expires: -1,-1
x-content-type-options: nosniff
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
Date: Fri, 12 Jan 2018 19:44:19 GMT
Connection: close
2018.01.12 20:44:19 5: Heizung: ExtractSid called, context reading, num
2018.01.12 20:44:19 5: Heizung: CheckAuth is checking buffer with ReAuthRegex id="login"|Unauthorized
2018.01.12 20:44:19 4: Heizung: CheckAuth decided new authentication required
2018.01.12 20:44:19 4: Heizung: Authentication still required but no retries left - did last authentication fail?
2018.01.12 20:44:19 5: Heizung: Read starts parsing response to update with defined readings:
2018.01.12 20:44:19 3: Heizung: Read response to update didn't match any Reading
2018.01.12 20:44:19 5: Heizung: HandleSendQueue called, qlen = 0

LaMa163

habe nochmal ein wenig mit burp rumgespielt.
Burp zeigt 2 cookies an, die für den Login benötigt werden.
Den "ARRAffinity...." scheint er zu übertragen.
Es scheint so dass mein httpmod den 2. Cookie

ai_user=7EoLp|2018-01-10T16:43:27.365Z; __utma=68505929.1183267610.1515602612.1515687988.1515693073.5; __utmz=68505929.1515602612.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); _ga=GA1.2.1183267610.1515602612; _gid=GA1.2.1999600388.1515602612; __RequestVerificationToken=-EpYkM1wX0hQRBfy8SzE3r7CPy6C9RDtVr8uqTb8pOZ53CyPJKgTMK479U-BW_5sxS-U1BgQ2zSMWo2RNZ_CqmGbBUk1;

nicht überträgt?
Kann es daran liegen? Wie kann ich dies im httpmod einstellen?

der-graph

Hallo,

ich muss den Beitrag nochmal rausholen, weil ich gerade Versuche meinen Rika Ofen enstprechend der sehr guten Aleitung hier in fhem einzubinden. Leider bekommen ich in der Log immer den 302 reidirect error nach dem Login und dieser verweist dann wieder auf die Login-Seite. Schließlich wird der Login mit too many redirects abgebrochen.
Läuft das ganze noch bei jemandem oder wurde hier seitens Rika etwas geändert bzw. darf ich bei mir weiter nach dem Fehler suchen?

So geht das leider in Dauerschleife:
2018.05.03 15:43:28 4: https://www.rika-firenet.com:443/web/login: HTTP response code 302
2018.05.03 15:43:28 4: HttpUtils https://www.rika-firenet.com:443/web/login: Redirect to https://www.rika-firenet.com:443/web/login


Danke für die Hilfe!


EDIT:

Ach du meine Güte. Ich habe durchs Kopieren die ganze Zeit die login-Daten nicht im URL Format eigetragen... Alles funktioniert wunderbar. Sorry!

Helmi55

Hallo
amenomade ich hol den Artikel wieder rauf - hoffe du liest noch mit?

Ich hab im Log diese Einträge

2019.07.19 14:10:20 3: Ofen: Read callback: Error: read from https://www.rika-firenet.com:443 timed out
2019.07.19 14:15:20 3: Ofen: Read callback: Error: read from https://www.rika-firenet.com:443 timed out
2019.07.19 14:20:20 3: Ofen: Read callback: Error: read from https://www.rika-firenet.com:443 timed out
2019.07.19 14:30:20 3: Ofen: Read callback: Error: read from https://www.rika-firenet.com:443 timed out
2019.07.19 14:40:20 3: Ofen: Read callback: Error: read from https://www.rika-firenet.com:443 timed out
2019.07.19 14:45:20 3: Ofen: Read callback: Error: read from https://www.rika-firenet.com:443 timed out
2019.07.19 14:50:20 3: Ofen: Read callback: Error: read from https://www.rika-firenet.com:443 timed out
2019.07.19 15:00:21 3: Ofen: Read callback: Error: read from https://www.rika-firenet.com:443 timed out


aber nicht ständig. Verbose ist auf 3.

Kann ich da bitte was ändern oder einfach verbose einfach nur auf 0 stellen.

Danke dir

LG
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

amenomade

Naja... wenn die Webseite nicht schnell genug antwortet, kann man nicht viel tun.
Evtl. attr timeout erhöhen

Ansonsten ja, wenn es nicht stört und trotzdem zuverlässig aktualisiert wird, das verbnose Level auf 2 setzen.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

Helmi55

Danke.
Das attr timeout ist gar nicht gesetzt. Wird das auch in Sekunden angegeben? Geht leider aus der Fehlermeldung nicht hervor, nach welcher Zeit das TimeOut auftritt?

Gruß
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Helmi55

Also mit timeout 120 und verbose 3 ist Ruhe im logfile
Nice eve
Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

Vize

Zitat von: Henno am 25 Oktober 2017, 12:57:40
Hallo zusammen,

ist es nicht möglich hiermit
"set Ofen on"
"set Ofen xx%"
abzusetzen?

Zitat von: Helmi55 am 25 Oktober 2017, 20:29:41
Servus Henno
Nein da kommt unknown Argument
Man kann nur Set Ofen controls_operatingMode Manuel, Auto oder Komfort
Stellen

Ahoi,

möchte mich hier gern einmal einklinken, da ich nun auch einen Kombiofen von Rika, den Paro, mein Eigen nenne.

Die gute Nachricht ist, man kann doch ein "On" bzw. "Off" an den Ofen senden. Gerade erfolgreich getestet...  ;D

Folgende Attribute müssen dafür im device ergänzt werden:

setXXName onOff
setXXReplacement01Value replaceJSON("onOff", "false")
setXXTextArg


**
EDIT sagt: "On" bzw. "Off" senden ist evtl. nicht ganz eindeutig...man muss ein "true" bzw. "false" senden, also z.B.:
set Ofen controls_onOff true**

Das letzte Attribut ist sehr wichtig, da das device dann erkennt, dass der "Wert" als Text und nicht numerisch übermittelt werden soll.
Ich habe für mich im Replacement01Value "false" als "Fallback" gesetzt, damit der Ofen nicht ungewollt angeht, falls dabei was nicht klappt...

Viel Erfolg!

VG
Andreas

Henno

Hallo zusammen,

könnte evtl. jemand der das vernünftig ans laufen bekommen hat seine gesamte config hier posten?

xsawa


Helmi55

Hallo Henno

so funktioniert es bei mir:

define Ofen HTTPMOD https://www.rika-firenet.com/api/client/DeineOfenID/status 60
setuuid Ofen 5c45c884-f33f-ee2d-41a0-8cb8d7c99143a44c
attr Ofen userattr get05IMap get05Map get05OMap get09Name get09URL reading01JSON reading01Name reading02JSON reading02Name reading03JSON reading03Name reading04JSON reading04Name reading05JSON reading05Name reading05OMap reading06JSON reading06Name reading07JSON reading07Name reading08JSON reading08Name reading08OMap reading10Name reading10Regex replacement01Mode:reading,internal,text,expression,key replacement01Regex set05Hint set05IMap set05OMap set11Name set11Replacement01Value set12Name set12Replacement01Value set13IMap set13Name set13Replacement01Value setData setURL sid01Data sid01URL
attr Ofen alias Ofen
attr Ofen enableCookies 1
attr Ofen extractAllJSON 1
attr Ofen get09Name revision
attr Ofen get09URL https://www.rika-firenet.com/api/client/DeineOfenID/status
attr Ofen group Temperatur
attr Ofen reAuthRegex id="login"|Unauthorized
attr Ofen reading01JSON sensors_inputRoomTemperature
attr Ofen reading01Name RaumTemp
attr Ofen reading02JSON controls_setBackTemperature
attr Ofen reading02Name Absenkung
attr Ofen reading03JSON controls_frostProtectionTemperature
attr Ofen reading03Name Frostschutz
attr Ofen reading04JSON controls_targetTemperature
attr Ofen reading04Name SollTemp
attr Ofen reading05JSON controls_operatingMode
attr Ofen reading05Name Betriebsart
attr Ofen reading05OMap 0:M, 1:A, 2:K
attr Ofen reading06JSON sensors_inputFlameTemperature
attr Ofen reading06Name BrennTemp
attr Ofen reading07JSON sensors_parameterFeedRateTotal
attr Ofen reading07Name Pellets
attr Ofen reading08JSON controls_onOff
attr Ofen reading08Name Ofen
attr Ofen reading08OMap true:On, false:Off
attr Ofen reading10Name controlsJSON
attr Ofen reading10Regex (?s)controls.*?({.*?})
attr Ofen replacement01Mode expression
attr Ofen replacement01Regex {{data}}
attr Ofen room Favoriten,Ofen
attr Ofen set11Name frostProtectionTemperature
attr Ofen set11Replacement01Value replaceJSON("frostProtectionTemperature", 2)
attr Ofen set12Name targetTemperature
attr Ofen set12Replacement01Value replaceJSON("targetTemperature", 24)
attr Ofen set13IMap 0:Manuell, 1:Auto, 2:Komfort
attr Ofen set13Name controls_operatingMode
attr Ofen set13Replacement01Value replaceJSON("operatingMode", 2)
attr Ofen setData {{data}}
attr Ofen setURL https://www.rika-firenet.com/api/client/DeineOfenID/controls
attr Ofen sid01Data email=Deine_e_mail_Adresse&password=geheim
attr Ofen sid01URL https://www.rika-firenet.com/web/login
attr Ofen sortby 2
attr Ofen stateFormat T: RaumTemp ST: SollTemp BT:BrennTemp
attr Ofen timeout 120
attr Ofen verbose 2
attr Ofen widgetOverride targetTemperature:slider,20,23,24,25,26




Hab mir dann noch ein DOIF gebastelt welches mich warnt wenn der Tank leer ist - funkt prima

Das @Vize habe ich noch nicht eingebaut - muss gestehen habs erst jetzt gesehen - Sorry Vize

Hoffe es hilft auch xsawa weiter

Nice Eve Helmut
System1 fhem 6.1 auf RPi 4B mit 4GB, HMUSBConfig, DS9490R-1Wire, Busware USB 868, Pool-Solarsteuerung mit FHEM. System2 fhem 6.1 auf RPi 4B mit 4GB (Bullseye) mit Busware USB 868 und 433 und HMUARTLGW für Haussteuerung

https://www.flickr.com/photos/canonhelmi/

amenomade

Zitat von: xsawa am 04 Dezember 2020, 13:20:40
Hallo amenomade und alle anderen,
weiter vorne in diesem Beitrag https://forum.fhem.de/index.php/topic,76220.msg685710.html#msg685710
hast du alles ganz toll beschrieben. Ich habe auch einen RIKA (Paro) , habe aber kein FHEM und möchte Befehle über eine URL absetzen.
Wäre es denn möglich, dass du einen set-Befehl mal als reine URL posten könntest?

So wie ich das verstanden habe, müsste die URL doch folgendermaßen aussehen oder?

https://www.rika-firenet.com/api/client/[meineOfenID]/controls?revision=1605692681&onOff=false&operatingMode=0&heatingPower=75&targetTemperature=22&bakeTemperature=1024&ecoMode=false&heatingTimeMon1=05300930&heatingTimeMon2=00000000&heatingTimeTue1=05300930&heatingTimeTue2=00000000&heatingTimeWed1=05300930&heatingTimeWed2=00000000&heatingTimeThu1=00000000&heatingTimeThu2=00000000&heatingTimeFri1=00000000&heatingTimeFri2=00000000&heatingTimeSat1=00000000&heatingTimeSat2=00000000&heatingTimeSun1=00000000&heatingTimeSun2=00000000&heatingTimesActiveForComfort=false&setBackTemperature=18&convectionFan1Active=false&convectionFan1Level=0&convectionFan1Area=0&convectionFan2Active=false&convectionFan2Level=0&convectionFan2Area=0&frostProtectionActive=false&frostProtectionTemperature=8&temperatureOffset=0&RoomPowerRequest=0&debug0=0&debug1=0&debug2=0&debug3=0&debug4=0

Ich bekomme immer folgende Fehlermeldung: "Für folgende Webadresse wurde keine Webseite gefunden"

Wo könnte der Fehler liegen?

Über eine Antwort würde ich mich sehr freuen,
vg Andi

Nein, die URL ist immer nur https://www.rika-firenet.com/api/client/DeineOfenID/controls und der Rest muss als JSON im POST Data mitgeschickt werden. Das ist hier kein "x-www-form-urlencoded" Data
Ausserdem muss man im Vorfeld schon angemeldet sein.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

xsawa

Zitat von: amenomade am 14 September 2017, 23:07:00
So... pass auf, ich kann jetzt deinen Ofen steuern ;)

myUtils: Ich musste viel ändern, nachdem ich mit Burp gesehen habe, dass die gepostete Data kein JSON ist, sondern einfach eine Konkatenation von allen controls, mit & verknüpft
sub
replaceJSON ($$) {
   my ($valToReplace, $value) = @_;
   $value = InternalVal("Ofen", "value", $value);
   Log3 ("Ofen", 3, "replaceJSON Internalvalue: $value");
   fhem ("get Ofen revision");
   my $json = ReadingsVal("Ofen", "controlsJSON","");
   Log3 ("Ofen", 3, "replaceJSON configsJSON: $json");
   my $decoded = decode_json($json);
   my $result;
   for my $key ( keys %$decoded ) {
      $result .= "$key=";
      if ($key eq $valToReplace) {
         $result .= $value."&";
      } else {
         $result .= $decoded->{$key}."&";
      }
   }
   chop($result);
   Log3("Ofen", 3, "replaceJSON Result: $result");
   return $result;
}


Hallo amenomade, ich dachte das kann direkt mit der URL übergeben werden, da du ja mal geschrieben hast (s. oben), dass die gepostete Data kein JSON ist, sondern einfach eine Konkatenation von allen controls, mit & verknüpft.

Hab trotzdem vielen Dank, ich glaub, du hast mich gerade auf eine Spur gebracht.
vg, Andi