Gérer ses radiateurs électriques avec Home Assistant + TIKO

Hello, non ce délai correspond à la fréquence de récupération des infos & consignes droits l’APi de Tiko.

Si tes courbes de température sont en escalier c’est car les détecteurs de température ne fonctionnent que par intervalle de 0.1°… il y aa bien 5 step entre 15.5 et 16°>>>

Ok, merci pour la réponse.

  1. du coup changer ce paramètre sert à quoi concrètement, je veux dire quel paramètre conseilles-tu?
  2. mon souci est que la consigne n’est jamais atteinte en +6h de temps sur l’exemple dessus. Le chauffage se coupe avant de l’atteindre.
  1. Il semble que TIKO a mis une restriction du nombre d’appels possible par heure (il me semble 10), je suggère de ne pas aller au-dessous de 5 minutes de refresh pour ne pas trop générer d’erreurs…

  2. As tu créé des programmations/règles automatiques par tranche horaire dans l’interface ou l’APP de TIKO?

Du coup j’ai remis 5 min d’intervalle :+1:
Pour l’instant je ne me sers que de la programmation de l’app tiko mais je suis en train de regarder pour utiliser scheduler et versatile thermostat.

Bonsoir à vous les tikotiens, j’utilise le système tiko depuis 1 mois et depuis quelques heures l’intégration ne fonctionne plus.
Avez-vous le même problème ?

Merci d’avance pour vos réponses.

Bonjour,
Idem depuis le 21 février je ne reçois plus rien comme info de leur API …

image

ça sent mauvais, ils ont fermé leur API

Hello, je constate comme vous, je cherche à contourner le truc, pour l’instant sans succès… l’APP mobile trouve bien le chemin, tout comme le site web, il n’y a pas de raison qu’on arrive pas à répliquer leur flux…

Ce serait vraiment dommage de ne plus pouvoir utiliser HA…
J’espère que tu trouveras une solution @noiwid
Je n’ai pas encore mes modules… ils seront posés lundi…
et tout ça ne me rassure pas :sweat_smile:

j’ai trouvé la solution, dans le header il faut rajouter des infos Cookie : « csrftoken » et « USER_SESSION_member_space »
On reçoit ces informations de l’API lors du login via la query « mutation LogIn ».
Par contre aucune information sur la validité, donc je le fais à chaque requête (toutes les 15min)

J’ai maintenant retrouvé toutes mes données !

Salut @Thomas_Mantot est-ce que tu peux nous expliquer comment faire pour effectuer la manip ?

Hello, bravo d’avoir trouvé le fix, j’ai essayé hier et suis complètement passé à côté de ce cookie, je regarde dès que j’ai un peu de temps comment intégrer ça à mon package :raised_hands:t2:

Dans mon cas j’utilise pas HA, mais Node-RED et j’envoi les données vers mon serveur Domoticz.
Si des personnes utilises Node-RED voici le flux pour récupérer toutes vos données (il suffit de changer les variables au début) :

[{"id":"7223b7395a1053d5","type":"inject","z":"65642376a06f9a2f","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"900","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":110,"y":600,"wires":[["df2ace3ac015cd77"]]},{"id":"8461c017e386edcc","type":"function","z":"65642376a06f9a2f","name":"User login","func":"msg.payload = {\n    \"variables\": {\n        \"email\": msg.email,\n        \"password\": msg.password,\n        \"langCode\": \"fr\",\n        \"retainSession\": true\n    },\n    \"query\": \"mutation LogIn($email: String!, $password: String!, $langCode: String, $retainSession: Boolean) {\\n logIn(\\n input: { email: $email, password: $password, langCode: $langCode, retainSession: $retainSession }\\n) {\\n settings { \\n client { \\n name\\n __typename\\n } \\n support { \\n serviceActive\\n phone\\n email\\n __typename\\n } \\n __typename\\n } \\n user { \\n id\\n clientCustomerId\\n agreements\\n properties { \\n id\\n allInstalled\\n __typename\\n } \\n inbox(modes: [\\\"app\\\"]) {\\n actions {\\n label\\n type\\n value\\n __typename\\n }\\n id\\n lockUser\\n maxNumberOfSkip\\n messageBody\\n messageHeader\\n __typename\\n }\\n __typename\\n }\\n token\\n firstLogin\\n __typename\\n }\\n}\\n\"\n};\n\n\nmsg.headers = {};\nmsg.headers['Content-Type'] = 'application/json';\n//msg.headers['User-agent:Mozilla/5.0 (Linux; Android 13; Pixel 4a Build/T1B3.221003.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/106.0.5249.126 Mobile Safari/537.36'];\n\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":460,"y":600,"wires":[["fc311739afef5520"]]},{"id":"fc311739afef5520","type":"http request","z":"65642376a06f9a2f","name":"","method":"POST","ret":"txt","paytoqs":"ignore","url":"https://particuliers-tiko.fr/api/v3/graphql/","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":630,"y":600,"wires":[["3375606657b9f88b"]]},{"id":"3375606657b9f88b","type":"json","z":"65642376a06f9a2f","name":"","property":"payload","action":"","pretty":false,"x":790,"y":600,"wires":[["235872c0e98caebe"]]},{"id":"235872c0e98caebe","type":"function","z":"65642376a06f9a2f","name":"get token & cookie","func":"msg.payload = msg.payload.data.logIn.token;\nmsg.cookie = \"csrftoken=\" + msg.responseCookies.csrftoken.value + \";\" + \"USER_SESSION_member_space=\" + msg.responseCookies.USER_SESSION_member_space.value;\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":330,"y":680,"wires":[["017628d9cf2bfa89"]]},{"id":"017628d9cf2bfa89","type":"function","z":"65642376a06f9a2f","name":"query all data","func":"\n\n\nmsg.headers = {};\nmsg.headers['Content-Type'] = 'application/json';\nmsg.headers['Authorization'] = 'Token '+msg.payload;\nmsg.headers['Cookie'] = msg.cookie;\n\n\nmsg.payload = {\n    \"operationName\": \"GET_PROPERTY_OVERVIEW_DECENTRALISED\",\n    \"variables\": {\n        \"id\": msg.dashboard_id\n    },\n    \"query\": \"query GET_PROPERTY_OVERVIEW_DECENTRALISED($id: Int!, $excludeRooms: [Int]) {\\n settings {\\n benchmark {\\n isEnabled\\n __typename\\n }\\n __typename\\n }\\n property(id: $id) {\\n id\\n mode\\n mboxDisconnected\\n isSinapsiEnabled\\n isSinapsiAuthorised\\n allInstalled\\n ownerPermission\\n constructionYear\\n surfaceArea\\n floors\\n valueProposition\\n address {\\n id\\n street\\n number\\n city\\n zipCode\\n __typename\\n }\\n tips {\\n id\\n tip\\n __typename\\n }\\n ...CentralisedDevicesCompact\\n rooms(excludeRooms: $excludeRooms) {\\n id\\n name\\n type\\n color\\n heaters\\n hasTemperatureSchedule\\n currentTemperatureDegrees\\n targetTemperatureDegrees\\n humidity\\n sensors\\n devices {\\n id\\n code\\n type\\n name\\n mac\\n __typename\\n }\\n mode {\\n boost\\n absence\\n frost\\n disableHeating\\n __typename\\n }\\n ...ExtendedStatus\\n __typename\\n }\\n __typename\\n }\\n}\\n\\nfragment CentralisedDevicesCompact on PropertyType {\\n devices(excludeDecentralised: true) {\\n id\\n code\\n type\\n name\\n mac\\n __typename\\n }\\n externalDevices {\\n id\\n name\\n __typename\\n }\\n __typename\\n}\\n\\nfragment ExtendedStatus on RoomType {\\n status {\\n disconnected\\n heaterDisconnected\\n heatingOperating\\n sensorBatteryLow\\n sensorDisconnected\\n temporaryAdjustment\\n heatersRegulated\\n heaterCalibrationState\\n __typename\\n }\\n __typename\\n}\"\n};\n//msg.headers['User-agent:Mozilla/5.0 (Linux; Android 13; Pixel 4a Build/T1B3.221003.003; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/106.0.5249.126 Mobile Safari/537.36'];\n\n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":520,"y":680,"wires":[["95b19d2be8a67e69"]]},{"id":"95b19d2be8a67e69","type":"http request","z":"65642376a06f9a2f","name":"","method":"POST","ret":"txt","paytoqs":"ignore","url":"https://particuliers-tiko.fr/api/v3/graphql/","tls":"","persist":false,"proxy":"","insecureHTTPParser":false,"authType":"","senderr":false,"headers":[],"x":710,"y":680,"wires":[["0102593b6dcdb307"]]},{"id":"0102593b6dcdb307","type":"json","z":"65642376a06f9a2f","name":"","property":"payload","action":"","pretty":false,"x":310,"y":740,"wires":[["25b3ddeaa0b3217c"]]},{"id":"df2ace3ac015cd77","type":"function","z":"65642376a06f9a2f","name":"Variables","func":"msg.email = \"mail@gmail.com\";\nmsg.password = \"password\"\n//Pour récupérer l'ID : \n//Se connecter ici : https://particuliers-tiko.fr/\n//Une fois connecté prendre les chiffres à la fin du lien : \n//https://particuliers-tiko.fr/dashboard/220045853\nmsg.dashboard_id = 220045853; \n\nreturn msg;","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":280,"y":600,"wires":[["8461c017e386edcc"]]},{"id":"25b3ddeaa0b3217c","type":"debug","z":"65642376a06f9a2f","name":"debug 16","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":460,"y":740,"wires":[]}]

Idem j’ai joué un peu avec, et en rajoutant les cookies csrftoken et USER_SESSION_member_space j’ai eu un truc qui marche un temps.

Au bout d’un moment par contre le login me renvoyait null donc j’ai l’impression qu’il y a une tempo sur le login quand on en abuse.

Quand c’est revenu j’ai poussé un peu et on dirait bien que seul le USER_SESSION_member_space est obligatoire, et ça tombe bien il est valable un an (en tout cas le cookie).

bonjour,
des news de l api TIKO ?
j’ai essayé et cela me renvoie NULL
merci

Fonctionne très bien chez moi avec la dernière version.

1 « J'aime »

Hello,
Je viens (enfin) de remettre à jour mon package TIKO pour patcher le problème d’identification.
Il faut récupérer la version 1.8 sur Github :wink:

Bonjour,
J’ai cru sur le moment que tu parlais de l’addon HA, mais en fait c’est une autre solution pour Tiko.

Fonctionne-t’elle avec Mon Pilotage Elec ?

Et enfin, autre le fait de devoir héberger son propre fichier PHP, en quoi est-ce différent ou. similaire à l’add-on : GitHub - marvinroger/hass-addon-tiko: Control your tiko / Mon Pilotage Elec heaters from Home Assistant

Hello mon système est le projet d’origine, qui a depuis été porté en integration par @marvinroger, si son integration te convient c’est clairement bien plus simple d’emploi !!

de mon côté j’utilise également son code pour gérer les radiateurs et encore une partie de mon intégration pour récupérer les consommations et faire des stats comparatives par jour, mois, etc…