tado.com in FHEM integrieren (Problem HTTPMOD)

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

Vorheriges Thema - Nächstes Thema

darthi

#45
Kann das sein, dass tado die Api geändert hat? Seit gestern wird meine Temperatur in FHEM nicht mehr aktualisiert.
Bekomme folgenden Fehler:
HTTP/1.1 401 Unauthorized


mahowi

#46
Geht mir auch seit gestern Nachmittag so.  :-\

Es scheint sich zumindest was am Login geändert zu haben. Wenn ich das Token Wie in Stephens Blog beschrieben mit curl abrufe kommt die Fehlermeldung {"error":"invalid_grant","error_description":"A client must have at least one authorized grant type."}
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

Es gibt jetzt einen zusätzlichen Secret Key. Eventuell findet sich hier die Lösung: https://github.com/wmalgadey/PyTado/issues/1

Leider komme ich momentan nicht zum Testen.
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

#48
So, es läuft wieder.  :)
Die client_id hat sich geändert und client_secret ist hinzugekommen. sid1_Data ändert sich also so:
client_id=tado-web-app&grant_type=password&password=%password%&scope=home.user&client_secret=wZaRN7rpjn3FoNyF5IFuxg9uMzYJcvOoQ8QWiIqS3hfk6gLhVlG57j5YNoZL2Rtc&username=%user%

Ich habe meinen Post auf der vorigen Seite entsprechend angepasst.
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

darthi

Hey vielen Dank!
Werde ich gleich mal ausprobiieren.

DaRealDan

Für alle vielleicht zur Info, habe folgende E-Mail heute von tado bekommen - ungefragt und ohne Vorwarnung. Man scheint also zu tracken wer die API nutzt.

Zitat
Stefan Gaß (tado° Help Center)

30. Juni, 13:56 CEST

Hello,

we have noticed that you are using tado° API. Even though it is not officially supported by us yet, we wanted to inform you about some upcoming breaking changes.

As you might already know, our APIs are authenticated by OAuth 2. We have recently migrated our own apps to new client credentials which uses client secret and we plan to discontinue the old credentials during next week.

Please make sure you migrate your API usages to this client credentials:

Client ID: public-api-preview
Client Secret: 4HJGRffVR8xb3XdEUQpjgZ1VplJi6Xgw

Also feel free to share these credentials with other developers. That way we will be able to easily distinguish our own apps from third party developers and make sure that the official public API will suit your needs.

Best regards,
Michal
Head of Server Development

tado°

darthi

Heute Vormittag wurde anscheinend das alte Loginverfahren abgeschaltet. Mit der von DaRealDan geteilten Client ID und der Secret funktioniert es wieder.

Vielen Dank dafür!

th3nemy

Hallo zusammen,

zunächst einmal vielen Dank für die skripte und den geposteten api infos in diesem Thread. Hat auf Anhieb super funktioniert leider nur für ein Device.

Ich bin gerade dabei mehrere Tado Thermostate in Fhem einzubinden. Sobald ich jedoch mehrere Devices anlege die NICHT "Tado" heißen also bspw.  "Tado1" bekomme ich keine Werte mehr. Das mag auch ein wenig meiner Unwissenheit vom HTTPMOD geschuldet sein, gebe ich ehrlich zu.

Zum testen habe ich quasi 3 Geräte angelegt (tado, tado1, tado3) mit jeweils dem gleichen Code. Lediglich mit dem Unterschied des Namens und der Zonennummer --> Hinweis von mahowi

Für weitere Zonen (also evtl. vorhandene Thermostate) das Device einfach auf anderen Namen kopieren und im Attribut get01URL die Zonennummer ändern, also z.B. "https://my.tado.com/api/v2/homes/%homeid%/zones/2/state".

tado hat die Zonennummer 1 in get01URL
tado1 hat ebenfalls die Zonennummer 1 get01URL
tado3 hat die Zimmernummer 3 in get01URL

Ich habe auch alle vorhandenen Zonen getestet 1-5 und die funktionieren problemlos mit "tado"

Log file sagt folgendes
2017.09.08 11:01:54 3: tado1: Read response to update didn't match any Reading
2017.09.08 11:01:54 3: tado1: Read response to get01 didn't match any Reading
2017.09.08 11:02:38 3: tado3: Read response to update didn't match any Reading
2017.09.08 11:02:38 3: tado3: Read response to get01 didn't match any Reading


An welcher Stelle bzw. welches Attr nutzt ebenfalls den Devicenamen "tado"?

folgender code funktioniert
define tado HTTPMOD https://my.tado.com/api/v2/me 300
attr tado enableControlSet 1
attr tado extractAllJSON 0
attr tado get01ExtractAllJSON 0
attr tado get01Name data
attr tado get01Poll 1
attr tado get01URL https://my.tado.com/api/v2/homes/%homeid%/zones/4/state
attr tado getHeader1 Authorization: Bearer $sid
attr tado httpVersion 1.1
attr tado reAuthJSON errors_01_code
attr tado reAuthRegex unauthorized
attr tado reading01JSON homes_01_id
attr tado reading01Name homeid
attr tado reading02JSON setting_temperature_celsius
attr tado reading02Name tempsoll
attr tado reading03JSON sensorDataPoints_insideTemperature_celsius
attr tado reading03Name temperature
attr tado reading04JSON sensorDataPoints_humidity_percentage
attr tado reading04Name humidity
attr tado reading05JSON tadoMode
attr tado reading05Name mode
attr tado reading05OMap HOME:present, AWAY:absent
attr tado replacement01Mode key
attr tado replacement01Regex %password%
attr tado replacement01Value password
attr tado replacement02Mode key
attr tado replacement02Regex %user%
attr tado replacement02Value user
attr tado replacement03Mode reading
attr tado replacement03Regex %homeid%
attr tado replacement03Value homeid
attr tado requestHeader1 Authorization: Bearer $sid
attr tado room 01_EG_dummyroom
attr tado sid1Data client_id=public-api-preview&grant_type=password&password=%password%&scope=home.user&client_secret=4HJGRffVR8xb3XdEUQpjgZ1VplJi6Xgw&username=%user%
attr tado sid1IdJSON access_token
attr tado sid1URL https://my.tado.com/oauth/token
attr tado stateFormat Soll: tempsoll Ist: temperature


Ich bedanke mich für jeden Hinweis oder Seitenhieb ;-)


mahowi

Ich habe bei mir 2 Zonen definiert, die auch getrennt funktionieren. Zeig mal bitte jeweils ein list Deiner 3 Geräte.
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

th3nemy

Ich habe meinen Fehler entdeckt kurz nachdem ich hier alles gepostet habe.
Es müssen natürlich noch die storeKeyValue´s für user und password für die neuen Geräte gesetzt werden.
Sorry -.-

Jetzt funktionieren alle meine Tado´s in FHEM :-)

mahowi

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

droizenberg

Hallo,

ich habe nach eurer Anleitung alles eingerichtet. Vielen Dank schonmal dafür. Aber leider bekomme ich folgende Meldung zurück:

HTTP/1.1 401 Unauthorized Date: Wed, 20 Sep 2017 19:48:51 GM

Wenn ich aber auf der Konsole im raspberry Date eingebe bekomme ich die korrekte Zeit. Die Zeit aus der Fehlermeldung ist 2 Stunden zurück.

Habt ihr einen Hinweis für mich?

Beste Grüße
Stephan

mahowi

Die Fehlermeldung hat nix mit dem Datum zu tun. Das ist nur die  Zeit in GMT, wann der Fehler aufgetreten ist.

Hast Du User und Password angegeben? Unauthorized heißt, daß die Login-Daten nicht stimmen.
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

droizenberg

#58
ah okay, hab ich im falschen Zusammenanhang gesehen.

Ich hab den Fehler gefunden. Im Post über mir steht das die Credentials im Post angepasst wurden. Wurden die aber nicht. hab ich übersehen. Jetzt ist alles prima. Danke für die Hilfe.

mahowi

Bei mir läuft noch alles, an der API hat sich also wohl nichts geändert.

Hier mal die Definition meines Thermostats:
defmod wz.tado HTTPMOD https://my.tado.com/api/v2/me 300
attr wz.tado userattr get01ExtractAllJSON:0,1 get01Name get01Poll:0,1 get01URL getHeader1 reading01JSON reading01Name reading02JSON reading02Name reading03JSON reading03Name reading04JSON reading04Name replacement01Mode:reading,internal,text,expression,key replacement01Regex replacement01Value replacement02Mode:reading,internal,text,expression,key replacement02Regex replacement02Value replacement03Mode:reading,internal,text,expression,key replacement03Regex replacement03Value requestHeader1 sid1Data sid1IdJSON sid1URL
attr wz.tado alias Thermostat WZ Wiese
attr wz.tado enableControlSet 1
attr wz.tado extractAllJSON 0
attr wz.tado get01ExtractAllJSON 0
attr wz.tado get01Name data
attr wz.tado get01Poll 1
attr wz.tado get01URL https://my.tado.com/api/v2/homes/%homeid%/zones/2/state
attr wz.tado getHeader1 Authorization: Bearer $sid
attr wz.tado group Heizung
attr wz.tado httpVersion 1.1
attr wz.tado icon max_heizungsthermostat_basic
attr wz.tado reAuthJSON errors_01_code
attr wz.tado reAuthRegex unauthorized
attr wz.tado reading01JSON homes_01_id
attr wz.tado reading01Name homeid
attr wz.tado reading02JSON setting_temperature_celsius
attr wz.tado reading02Name tempsoll
attr wz.tado reading03JSON sensorDataPoints_insideTemperature_celsius
attr wz.tado reading03Name temperature
attr wz.tado reading04JSON sensorDataPoints_humidity_percentage
attr wz.tado reading04Name humidity
attr wz.tado replacement01Mode key
attr wz.tado replacement01Regex %password%
attr wz.tado replacement01Value password
attr wz.tado replacement02Mode key
attr wz.tado replacement02Regex %user%
attr wz.tado replacement02Value user
attr wz.tado replacement03Mode reading
attr wz.tado replacement03Regex %homeid%
attr wz.tado replacement03Value homeid
attr wz.tado requestHeader1 Authorization: Bearer $sid
attr wz.tado room Wohnzimmer
attr wz.tado sid1Data client_id=public-api-preview&grant_type=password&password=%password%&scope=home.user&client_secret=4HJGRffVR8xb3XdEUQpjgZ1VplJi6Xgw&username=%user%
attr wz.tado sid1IdJSON access_token
attr wz.tado sid1URL https://my.tado.com/oauth/token
attr wz.tado stateFormat Soll: tempsoll Ist: temperature


Mit set wz.tado storeKeyValue user Username
set wz.tado storeKeyValue password Paßwort
habe ich Username und Paßwort gespeichert.
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