tado.com in FHEM integrieren (Problem HTTPMOD)

Begonnen von linuxq, 19 März 2014, 12:17:33

Vorheriges Thema - Nächstes Thema

linuxq

Hi,

mit dem normalen Login kommst Du da nicht weit und offizielle API gibt es nicht dazu. Ich habe es wie folgt gemacht:

ACHTUNG: Nerd-Alarm ;)

-Android App auf Handy installieren, aber noch NICHT einloggen.
-Auf einem PC im WLAN einen Man-In-The-Middle-Proxy installieren
-Das WLAN des Handys so einstellen, daß der MITM-Proxy für den Internetzugang verwendet wird.
-Den Proxy einschalten am PC.
-Sich mit der Tado-App anmelden.
-Am PC kannst Du dann allen Verkehr zwischen Handy und Tado lesen.

Dort ist dann in der URL der Username des Endgerätes und das verschlüsselte Passwort enthalten:

https://my.tado.com/mobile/1.5/getCurrentState?username=Zahl_Name&password=xxxxxxx.....

Diese Daten mußt Du verwenden. Dann geht es. Den Loginprozess konnte ich leider nicht nachbauen.

Gruß

LinuxQ

vossy74

Hallo,

danke für die Info. Leider funktioniert es, trotz Nutzung der abgefangenen Daten, nicht.

VG
Lars

linuxq

Hast Du mal den Link, den Du abgefangen hast im Browser geöffnet?

Link z.B.: "https://my.tado.com/mobile/1.5/getCurrentState?username=745_meingerätename&password=ffsdjlkhfsdhlkhj34hjl48HA34" (Nur Beispiel, funktioniert latürnich nicht)

Dann sollte eine Antwort kommen wie:

Zitat{"success":true,"operation":"HOME","autoOperation":"HOME","operationTrigger":"SYSTEM","insideTemp":20.770000457763672,"setPointTemp":21,"controlPhase":"HEATUP","boxConnected":true,"gwConnected":true,"tsConnected":true,"currentUserPrivacyEnabled":false,"currentUserGeoStale":null,"deviceUpdating":false,"homeId":745,"pendingDeviceInstallation":false}

vossy74

Hi,

ja habe ich gemacht. Antwort ist: "Authorization failed."
Melde ich mich bei my.tado.com an geht es. Ich habe das gefühl, das er die Zeile nach dem & abschneidetund deshalb das Passwort nicht uebergeben wird. Versuche ich mit wget die url zu oeffnen gibt es folgende ausgabe:

wget -vv https://my.tado.com/mobile/1.5/getCurrentState?username=nummer_name & password=passworthash

--2014-11-24 18:52:41--  https://my.tado.com/mobile/1.5/getCurrentState?username=nummer_name
Resolving my.tado.com (my.tado.com)... 54.194.21.103
Connecting to my.tado.com (my.tado.com)|54.194.21.103|:443... connected.
HTTP request sent, awaiting response... 401 Unauthorized
Authorization failed.

VG
Lars

linuxq

Die Leerzeichen in der URL hast Du aber nur hier zur Verdeutlichung drin, oder? Sonst ist es klar, daß es nicht geht.

mahowi

Hallo!

Ich bin auch noch absoluter FHEM-Neuling und habe Dein Skript jetzt mal ausprobiert. Es hat etwas gedauert, bis ich auch den Plot hinbekommen habe, aber soweit funktioniert jetzt alles. Aber wie kann ich die Ist-Temperatur auf 2 Stellen nach dem Komma runden?

Ich habe es mit attr tado_temp stateFormat {sprintf("%.2f", ReadingsVal($name,"insideTemp",0))} probiert, aber das ändert leider nichts.

Das Ergebnis sieht bisher so aus bei mir:
(https://dl.dropboxusercontent.com/u/83276402/tado-fhem.png)
Gruß,
Manny
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

mahowi

Ich habe es jetzt auch mit attr tado_temp userReadings tado_temp:tempist {sprintf("%.2f", ReadingsVal("tado_temp","tempist",0))} probiert, aber auch so bekomme ich die Temperaturen nicht auf 2 Stellen gerundet. Leider sind meine Perl-Kenntnisse etwas eingerostet.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

StefanStrobel

Hallo mahowi,

mit dem statFormat beeinflusst Du den State, nicht aber das ursprüngliche insideTemp Reading.
Probier's mal mit der ReadingXExpr, wie ich Dir in deinem separaten Posting geantwortet habe.
Die Idee mit sprintf ist prinzipiell richtig.

Gruss
   Stefan

stim

woher weiss tado wann man nach Hause kommt wie sind eure Erfahrungen?

Grüße stim

mahowi

Du musst die App auf dem Smartphone installieren, dann weiß tado anhand der Standorterkennung, wann Du zuhause bist bzw. wie weit Du von zuhause weg bist. Je weiter weg, desto weiter fährt tado die Heizung runter. Ich benutze es jetzt seit knapp einem Monat und das System funktioniert soweit ganz gut. Ich hatte lediglich Probleme mit dem Handy meiner Freundin, das nicht immer erkannt wurde.

Gesendet von meinem LIFETAB_S831X mit Tapatalk

CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

joe0508

Zitat von: linuxq am 20 November 2014, 14:50:28
Hi,

mit dem normalen Login kommst Du da nicht weit und offizielle API gibt es nicht dazu. Ich habe es wie folgt gemacht:

ACHTUNG: Nerd-Alarm ;)

-Android App auf Handy installieren, aber noch NICHT einloggen.
-Auf einem PC im WLAN einen Man-In-The-Middle-Proxy installieren
-Das WLAN des Handys so einstellen, daß der MITM-Proxy für den Internetzugang verwendet wird.
-Den Proxy einschalten am PC.
-Sich mit der Tado-App anmelden.
-Am PC kannst Du dann allen Verkehr zwischen Handy und Tado lesen.

Dort ist dann in der URL der Username des Endgerätes und das verschlüsselte Passwort enthalten:

https://my.tado.com/mobile/1.5/getCurrentState?username=Zahl_Name&password=xxxxxxx.....

Diese Daten mußt Du verwenden. Dann geht es. Den Loginprozess konnte ich leider nicht nachbauen.

Gruß

LinuxQ

geht auch unter OSX und mitmproxy
Anleitung: http://www.kuketz-blog.de/mitmproxy-app-verkehr-mitschneiden/
Bei der Anleitung Installation weglassen und hier http://mitmproxy.org direkt binaries für OSX laden - müsste auch gehen.

joe0508

Der Versuch Tado in FHEM ein zu binden hat genau einmal funktioniert, seitdem kommt nur noch
ZitatConnection: Close {"errors":[{"code":"unauthorized","title":"Bad credentials"}]}
.

Ist schon komisch. Zeigt aber das die Zugangsdaten gestimmt haben - aber was ist dann passiert ...

mahowi

Nachdem ich eine ganze Weile nix mehr mit FHEM gemacht hab, hab ich es wieder neu aufgesetzt und auch tado° wieder eingebunden. Mittlerweile kann man auch die ganz normalen Login-Daten wie beim Web-Zugriff benutzen:
https://my.tado.com/mobile/1.9/getCurrentState?username=name@email.net&password=123456
Einfach mal im Browser aufrufen. Bei mir wird dann folgendes angezeigt:
{"success":true,"operation":"HOME","preheating":false,"preheatingTargetOperation":null,"autoOperation":"HOME","operationTrigger":"SYSTEM","insideTemp":19.96,"setPointTemp":20,"controlPhase":"HEATUP","currentUserPrivacyEnabled":null,"currentUserGeoStale":null,"deviceUpdating":false,"homeId":11220,"heatingOn":true,"internetGatewayType":"GW02","internetGatewayConnected":true,"heatingMuscleType":"RU01","heatingMuscleConnected":true,"insideTemperatureSensorType":"RU01","insideTemperatureSensorConnected":true,"settingsEnabled":true,"fallbackOperation":false,"helpUrl":"https://support.tado.com/hc/","pendingDeviceInstallation":false}

In der fhem.cfg sieht das bei mir so aus:
define tado_temp HTTPMOD https://my.tado.com/mobile/1.9/getCurrentState?username=name@email.net&password=123456 300
attr tado_temp userattr reading1Expr reading1Name reading1Regex reading2Name reading2Regex reading3Name reading3Regex reading4Name reading4Regex requestHeader1 requestHeader2
attr tado_temp reading1Expr {sprintf("%.1f", $val)}
attr tado_temp reading1Name tempist
attr tado_temp reading1Regex insideTemp":([\d\.]+)
attr tado_temp reading2Name tempsoll
attr tado_temp reading2Regex setPointTemp":([\d\.]+)
attr tado_temp reading3Name operation
attr tado_temp reading3Regex operation":"([\w\.]+)
attr tado_temp reading4Name controlPhase
attr tado_temp reading4Regex controlPhase":"([\w\.]+)
attr tado_temp requestHeader1 Content-Type: application/json
attr tado_temp requestHeader2 Accept: */*

define FileLog_Tado FileLog ./log/Tado-%Y.log tado_temp
attr FileLog_Tado logtype temptado4:Plot,text
attr FileLog_Tado nrarchive 1
attr FileLog_Tado room LOG

define tado_status readingsGroup tado_temp:tempist, tado_temp:operation, tado_temp:controlPhase, tado_temp:tempsoll, Wetter:temperature
attr tado_status alias Status der Heizung (tado°)
attr tado_status mapping {"operation" => "Modus", "controlPhase" => "Status", "tempist" => "aktuelle Temperatur", "tempsoll" => "Solltemperatur", "temperature" => "Außentemperatur"}
attr tado_status nostate 1
attr tado_status notime 1
attr tado_status room Heizung

define tado_tempchart SVG lp:temptado4:CURRENT
attr tado_tempchart label "Temperatur tado°: Min: $data{min1}°C, Max: $data{max1}°C, Aktuell: $data{currval1}°C"
attr tado_tempchart room Allgemein,Heizung


Das sieht dann so aus wie im Anhang. Das dazugehörige Plot-File habe ich auch mal angehängt.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee

Garagenhaus

Zitat von: mahowi am 22 Dezember 2015, 22:14:25
Nachdem ich eine ganze Weile nix mehr mit FHEM gemacht hab, hab ich es wieder neu aufgesetzt und auch tado° wieder eingebunden. Mittlerweile kann man auch die ganz normalen Login-Daten wie beim Web-Zugriff benutzen:
https://my.tado.com/mobile/1.9/getCurrentState?username=name@email.net&password=123456
Einfach mal im Browser aufrufen. Bei mir wird dann folgendes angezeigt:
Kannst du das noch mal deutlicher sagen; d.h. man muss keinen MITM-Proxy mehr installieren, etc...? Hab ich das richtig verstanden?
Max! System Standalone
CCU2 & HM-LC-Sw1-Pl-CT-R1, HM-LC-Sw4-PCB, HM-RC-4-2
Spielwiese: RPBi2 mit Locotus Addon-Board 868Mhz,
433Mhz Steckdosen und Thermometer
NanoCUL433 und NanoCUL868

mahowi

Zitat von: Garagenhaus am 22 Januar 2016, 16:07:30
Kannst du das noch mal deutlicher sagen; d.h. man muss keinen MITM-Proxy mehr installieren, etc...? Hab ich das richtig verstanden?
Genau, das hast Du richtig verstanden. Einfach im Link oben die eigenen Login-Daten einsetzen, dann werden die tado Daten im JSON-Format angezeigt. Ab und zu kommt es vor, daß man den Link 2mal aufrufen muß.
Leider lässt tado ja schon seit der letzten Cebit auf die öffentliche API warten.
CUBe (MAX): HT, FK | CUBe (SlowRF): ESA2000WZ
JeeLink: LaCrosse | nanoCUL433: Smartwares SHS-51001-EU, EM1000GZ
ZME_UZB1: GreenWave PowerNode, Popp Thermostat | SIGNALDuino: HE877, X10 MS14A, Revolt NC-5462,  IT Steckdosen + PIR
tado° | Milight | HUE, Lightify | SmarterCoffee