Intégration radiateurs Intuis connect sans HomeKit

I’m back ! :grin: Après une journée ou deux d’utilisation du flow, je reviens à la charge car je rencontre une limitation. Et je me dis, @Yann0128, que vous devez certainement avoir la même (en l’occurence un historique des jours précédents qui ne correspond pas à celui de l’appli).

Pour info d’abord, mes données de conso radiateurs sont mises à jour sur le serveur Intuis à 1h du matin, 7h du matin, 13h, 19h (et de nouveau 1h du matin, ainsi de suite).

Du coup, je suis bien aligné avec mon appli pour la journée en cours, mais dans mon historique des jours d’avant, je loupe systématiquement la conso de mes radiateurs de 19h à 23h59.

Je m’explique. Pendant la période 19h-23h59, les consos ne sont pas remontées sur le serveur donc je ne peux évidemment pas les récupérer avec le flow. Et à minuit, celui-ci s’intéresse à la nouvelle journée (d’après), et ne reviendra jamais s’intéresser à ce qui s’est passé avant (en l’occurence de 19h à 23h59), contrairement à l’appli Intuis, qui le fera à 1h du matin. Du coup, mon historique des jours d’avant sera systématiquement tronqué de cette période de conso de 19h à 23h59.

Il serait tout à fait possible de faire vivre deux entités de conso pour les radiateurs : la conso du jour, qui reflète ce que l’on voit sur l’appli, avec le flow tel quel. Et une autre qui récupérerait la conso complète de la veille par exemple (une fois que toutes les données ont bien été remontées). Pour cette seconde partie, évidemment, Home Assistant ne permet pas d’envoyer des données « avec retard ». Ce qui fait que j’aurai mes consos « consolidées » du dimanche qui apparaitront le lundi dans mon historique (=au moment où je le renseigne à HA). Avec donc systématiquement une journée de décalage entre mon historique et la vraie vie.

Nous ne sommes pas les seuls à récupérer des données avec retard mais HA ne semble pas faire grand chose de côté-là malheureusement.

Add historic data to Energy dashboard - Feature Requests - Home Assistant Community (home-assistant.io)
Allow sensors to report delayed data - Feature Requests - Home Assistant Community (home-assistant.io)

Domoticz offre la possibilité de le faire avec un « managed counter » par exemple (Domoticz API/JSON URL’s - Domoticz).

J’ai quand même l’impression qu’il y a des choses possibles puisque j’ai un addon « Gazpar 2 mqtt » qui est capable de créer un historique « long-term statistics » de près de 3 ans en récupérant les données du site GRDF mais je ne maitrise pas encore tout (GRDF: Gazpar_2_MQTT).

Est-ce que vous confirmez mon analyse ? Si oui, verriez-vous un (autre) moyen élégant de s’en sortir ?

Merci !

Bonjour,
C’est une sacrée limite et je ne l’avais jamais remarqué (je n’ouvre plus l’appli Intuis).
Le souci technique est qu’on récupère les infos plus régulièrement qu’elles ne sont mises à jour et que dès qu’il y a des données sur 2 jours calendaires ou plus, la consommation se retrouve séparée dans des balises distinctes.
Je vais essayer de bidouiller quelque chose pour répondre à cela dans les prochains jours mais je ne vous promets rien. Ça va être assez galère…

C’est étrange, lorsque je regarde les consommations récupérées de mon côté, j’ai bien des valeurs pour la période 19h-23h59 et c’est à peu près kifkif entre les deux applis :



@Yann0128 , je pense que vous avez surtout la chance d’avoir une dernière mise à jour de vos données sur le serveur juste avant minuit (on voit un dernier palier peu de temps avant de changer de jour), ce qui est juste (presque) parfait ! De mon côté, c’est une heure plus tard, donc le jour d’après… Et je loupe une plage beaucoup plus grande.

Je ne sais pas comment vous pourriez améliorer la situation dans un cas comme le mien. Comment, au moment de recevoir des données après minuit, aller modifier une valeur du passé dans HA, comme l’appli est capable de le faire de son coté ?..

Merci en tout cas.

En remontant les données sur les derniers jours j’ai réussi à retrouver le même phénomène.
Je vois donc deux sujets :

  • récupérer cette donnée manquante de fin de journée
  • réussir à l’intégrer à l’historique de la veille

Sincèrement je n’ai pas grand espoir a trouver une solution pour l’un ou pour l’autre. Ce que fait l’appli Intuis pour interpréter le flux et affecter les chiffres aux différents jours est difficilement reproductible au travers d’un flow Node Red. En tout cas avec mes connaissances limitées.

Je vous tiens au courant dès que j’ai du nouveau.





OK, merci de confirmer mon analyse.

Pour le premier point (« récupérer cette donnée manquante de fin de journée »), votre flow est complètement réutlisable puisqu’il suffit de définir un nouveau couple début-fin correspondant à la veille plutôt que le jour courant (et les données auront déjà été consolidées côté serveur par Intuis), de faire un copier-coller d’une partie du flow en utilisant cette nouvelle période de 24h, et en créant de nouvelles entités pour stocker les valeurs de conso associées.

Le plus compliqué restera toujours le deuxième point (« réussir à l’intégrer à l’historique de la veille ») car on se retrouve dans la situation classique des données disponibles après coup (comme celles de GRDF, d’où le lien que j’ai partagé, car le développeur semble avoir trouvé un moyen de renseigner des valeurs long terme dans le passé).

Je pense que votre flow reste absolument nickel mais on touche plutôt un inconvénient de HA.

Et donc, pour ceux qui ne sont intéressés que par des données consolidées (uniquement le total de la veille donc, sachant que le serveur Intuis implique déjà des retards de plusieurs heures pour la remontée d’info), et que le décalage d’un jour dans l’affichage n’a finalement pas d’importance, il suffit de redéfinir les plages de début et de fin pour que ça coincide avec la veille, en modifiant simplement les noeuds « Jour J 00h00 » et « Jour J 23h59 » par « Jour J-1 00h00 » et « Jour J-1 23h59 » avec le code suivant:

var a = new Date();
var veille_a = new Date(a.getTime());
veille_a.setDate(a.getDate()- 1);
var b = veille_a.setHours(0,0,0,0);
var c = b / 1000;

{
    node.status({ fill: "yellow", shape: "ring", text:c});  
    msg.debut = c;
    return msg;
}

et

var d = new Date();
var veille_d = new Date(d.getTime());
veille_d.setDate(d.getDate()- 1);
var e = veille_d.setHours(23,59,59,0);
var f = e / 1000

{
    node.status({fill:"yellow",shape:"ring", text:f});
    msg.fin = f;
    return msg;
}

Ca marche nickel de mon côté.

Et comme déjà écrit, il est possible de faire coexister les deux types de valeurs (consommation pseudo-dynamique au cours de la journée avec le flow originel) et consommation totale de la veille consolidée avec les modifs ci-dessus), en créant les noeuds en parallèle.

Pour que tout soit parfait, il faudrait simplement trouver un moyen dans HA pour « rétrodater » des valeurs de sensor dans l’historique (pour aller mettre les valeurs de la veille à la date de veille). J’ai partagé quelques liens qui montrent un peu l’état actuel de ce point de vue là, ça ne sera pas facile.

1 « J'aime »

Bonjour,
Le flow a été mis à jour sur Node Red.

  • Le paramétrage des heures de consommation a été modifié pour récupérer la dernière conso du jour lorsqu’elle arrive après minuit (mais pas de rétrodatage ici)
  • Les home_id, router_id et les 2 premiers rooms_id ont été automatisés, plus besoin de les écrire en dur
  • La détection de présence et de fenêtre ouverte a été ajoutée dans les entités

exemple d’entité pour la détection de présence :

exemple d’entité pour la détection de fenêtre ouverte :

Pour rappel, le lien vers le flow Node RED :
https://flows.nodered.org/flow/3d7f77cef8a7c6aa4fc33e2dbf26f15e

Bonjour,

Tout d’abord merci beaucoup pour ce travail !

Malheureusement impossible pour moi d’accéder aux informations, j’obtiens absolument toujours le même résultat sur Node-Red :

noeud: contrôle authentification
msg.payload : Object
    object
    error: "invalid_grant"

J’ai pourtant bien renseigné mon mes informations dans « Set Intuis username et password », mais toujours le même message et l’Access Token n’est jamais récupéré.

J’ai essayé sur Postman, même résultat. J’ai même essayé en créant une application chez Netatmo, en inscrivant les Access Token et Refresh Token en dur, là j’ai bien pu me connecter (mais pas pu accéder aux données Intuis).

Help svp :slight_smile:

1 « J'aime »

Bonjour,

J’ai fait quelques tests et ça pourrait ne pas être grand chose :
Lorsque l’email ou le mot de passe sont erronés, on obtient le message « invalid_grant ». Si on corrige l’erreur, qu’on redéploie le flow et qu’on clique ensuite à nouveau sur « Set first info » puis « Start », on obtient à nouveau le même message. Par contre, sans rien modifier dans le flow, si on clique maintenant sur « Stop », puis on attend 5 secondes, on clique s encore une fois sur « Set first info », on attend encore 5 sec et on clique à nouveau sur « Start », ça a l’air de fonctionner.

Si vous me confirmez que ça résout le problème chez vous, on pourra en conclure que le noeud « Stop » a également la fonction de mettre fin aux tentatives de connexion KO.

Bonjour,

Honte à moi : tellement persuadé que le mot de passe était celui de mon compte Netatmo que je n’ai même pas cherché à penser à autre chose…
Je change le mot de passe par celui de l’application Intuis et tadam !

Je continue mes tests, un grand merci !

Tant mieux si ce n’est que ça. J’espère que la suite de la configuration s’est bien passée.

Oui le reste c’est allé, ne pas oublier de mettre à jour partout avec ses différents équipements.

Une petite suggestion si je peux me permettre : la prise en compte des heures creuses/heures pleines dans les récupérations de la consommation.
Pour ma part j’ai également dû ajouter un contrôle des valeurs avant l’envoie pour chaque chauffage car le matin tôt j’avais bien une valeur pour les heures creuses, mais un « null » pour les heures pleines (seul le total m’intéresse, je fais la répartition HC/HP sur HA directement)

Ah tant mieux, je suis content que ça fonctionne pour d’autres personnes :smiling_face: Encore plus maintenant que les id sont automatisés avec des globalContext !

C’est intéressant la notion HP/HC, je n’y avais pas pensé. Il pourrait y avoir plusieurs méthodes pour le faire : un noeud fonction qui affecte la conso à deux entités différentes selon l’heure ou alors l’utilisation des registres de consommation sum_energy_elec$1 et sum_energy_elec$2 (évoqués par Kyrille plus haut).
Si quelqu’un est motivé pour faire ces modifs et les partager ici :hugs:

Hello,

Merci pour ce flow, ca marche Nickel chez moi.
( pas encore géré la partie conso).

Par contre, je comprends qu’il faut réinjecter les flux a chaque fois que HA redémarre.
Je vais pencher la dessus pour automatiser .

Pensez vous qu’on puisse faire des post sur l Api depuis Nodered en se basant sur une entité HA pour piloter le mode away/home?

Merci encore
Clément

Bonjour,

Une piste pour l’automatisation : créer une entité interrupteur dans HA et utiliser un noeud state dans NodeRed pour lancer le flow. Quand l’interrupteur est activé, ça lance tout le processus de connexion. Ajouter des temporisations entre la récupération token et les autres demandes et le tour est joué ! J’ai fait ça sur mon flow perso et ça fonctionne plutôt bien mais je ne me sentais de le poster dans le modèle et d’expliquer en détail son fonctionnement et sa configuration.

Pour ce qui est du pilotage, ça devrait fonctionner sans problème. Le plus difficile est de trouver quelle est la commande http utilisée par l’appli Intuis Connect et la recopier dans Node Red avec les mêmes paramètres.
Pour ma part j’ai réussi à mettre en place la commande d’acquittement de fenêtre ouverte et la bascule entre deux plannings. Mais là aussi c’est extrêmement personnalisé, pour cette raison que je n’ai pas partagé cela dans le flow modèle.

1 « J'aime »

Merci Yann.
Je maîtrise pas node red venant juste de démarrer avec ton flow.
J’ai modifié le timing d’injection de 1 a 0,1 seconde et ça semble marcher.

Donc je suis un peu septique et je me dis que tu n’as pas mis un interrupteur pour rien.
Si est ce que l’interrupteur apporte de plus?

Clément

Avec l’interrupteur j’avais la possibilité de démarrer ou mettre fin à l’automatisation directement à partir de HA, sans lancer Node Red. C’est tout !

Hello à tous !
Bon ça fait quelques temps que j’essaye de faire fonctionner le NODE mais je sèche :slight_smile: alors j’ai besoin d’un peu d’aide.

1/ Premier problème que j’arrive à résoudre en bidouillant un peu c’est la partie authentification. J’ai bien saisi mes identifiants mais au moment de la génération de l’AccessToken j’obtiens le code erreur « invalid_client ». Pour « bypasser » ça je suis obligé de convertir le ClientId et ClientSecret en base64 et de l’insérer dans un header Authorization et de modifier l’URL en ajoutant à le fin ?user_prefix=muller au noeud « Send refresh request »

  • Second problème et pas moyen de trouver un contournement mais manifestement le home_id récupéré ne permet pas d’avoir les informations qui y sont associées. Le JSON de retour contient uniquement les infos ci-dessous

{
« status »: « ok »,
« time_server »: 1729173874
}

Si quelqu’un à une idée je suis preneur.

Bonjour,

Ton premier problème ne me parle pas du tout et j’ai du mal à comprendre ce que tu as fait pour le contourner, je ne visualise pas. Ce qui est étonnant, c’est que les client ID et Secret ont fonctionné pour les autres personnes qui ont testé. Je n’ai aucune idée de comment résoudre définitivement ton souci.

Pour ton second problème, je ne comprends pas bien ce que tu cherches à obtenir et à quel endroit du flow tu te situes à ce moment là. Cette réponse JSON apparait dans le groupe d’authentification il me semble. Si tu cherchais à obtenir l’home_id une fois l’authentification OK, il faut appuyer sur le bouton Get intuis data. Et selon ton besoin, activer un noeud debug dans la suite du flow pour suivre ce que tu cherches à obtenir.