Récupération donnée depuis une requête http

Bonjour tout le monde.

Je possède un poêle à pellet stove italy. j’ai trouvé un moyen de récupérer certaines information en lui faisant une requête http:


Par exemple, sur l’image , le 195 représente la sonde de température du poêle.
Ma question est : comment l’intégrer dans home assistant, et actualiser toutes les X minutes les infos .
Merci d’avance


Salut
Tu peux utiliser RESTful Sensor - Home Assistant
Par contre, vu la structure de la réponse, va falloir bidouiller pour récupérer ton information.

Bonjour govenants,

Je viens de me pencher sur le sujet pour essayer de gérer mon Poele Alaska avec HA. Avant de réinventer la poudre, as tu fait des progrès sur le sujet?

Merci de ton aide

Bon, en attendant des nouvelles, je continue ma rétro-ingénierie doucement. Comme suggéré par Giga77 je me sert de RESTful sensor pour envoyer la requête http, récupérer la réponse et la décomposer.

rest:
  - scan_interval: 30
    resource: http://192.168.0.31/read?byte=81
    sensor:
      - name: stove_data_0
        value_template: "{{ (value.split(',')[0])| float }}"
      - name: stove_data_1
        value_template: "{{ (value.split(',')[1])| float }}"
      - name: stove_data_2
        value_template: "{{ (value.split(',')[2])| float }}"
...

J’affiche chacune des variables dans un dashboard et je compare les valeurs et leur évolution avec ceux de l’appli (Vivace The Stove ex StoveItaly)

Cela m’a permit d’identifier 5 températures (n’étant pas encore en période de chauffe, le poêle est en standby) :

  • Température Ambiente:
      - name: stove_ambient_temperature
        value_template: "{{ (value.split(',')[34])| float /10 }}"
        device_class: temperature
        unit_of_measurement: "°C"
  • Température de la structure:
      - name: stove_structure_temperature
        value_template: "{{ (value.split(',')[38])| float }}"
        device_class: temperature
        unit_of_measurement: "°C"
  • Temperature des fumées:
      - name: stove_smoke_temperature
        value_template: "{{ (value.split(',')[42])| float }}"
        device_class: temperature
        unit_of_measurement: "°C"
  • Temperature du flux (quoi que cela veille dire):
      - name: stove_flow_temperature
        value_template: "{{ (value.split(',')[54])| float }}"
        device_class: temperature
        unit_of_measurement: "°C"
  • Temperature de consigne (en lecture seule):
      - name: stove_control_temperature
        value_template: "{{ (value.split(',')[12])| float /10}}"
        device_class: temperature
        unit_of_measurement: "°C"

Une fois que j’aurai mis le poêle en route je devrais pourvoir en identifier d’avantage.

L’étape suivante sera de hacker la requête de commande que je sais être du même type. J’ai déjà utilisé une attaque « man in the middle » du type ARP Spoofing avec Ethercap pour enregistrer les échanges entre l’appli et le poêle. Il faut que j’arrive à l’exploiter de la même manière.

A bientôt pour la suite…

Coucou oui j’ai reussi a faire ce que je voulais.
C’est un peu à l’arrache mais ça fait le job.
J’utilise node-red pour récuperer les infos via un http-get
voici un screen :

je fais une fonction qui recupere sous forme de payload


Puis pour un exemple, je recupere l’info de temperature, celle ci est en position 34 et 35 de mon http-get
image
et je crée mon capteur:
image
je te montre aussi ce que donne mon http-get en faisant la requete directement sur mon navigateur :

J’ai aussi réussi a faire le demarrage/extinction a distance ainsi que l’activation/désactivation du planning en faisant une requette http hyper horrible car il reprends toute les options :sweat_smile:

Si vous avez des questions, je regarderai plus souvent le forum pour répondre plus rapidement :stuck_out_tongue:

Salut govenants,

Merci pour les infos. Ravis de savoir que tu as avancé de ton côté. En effet, c’est ta requête http qui m’a mis sur le coup.

Afin de m’éviter des soirées interminable à jouer avec tous les paramètres pour déterminer quoi bouge quand, aurais-tu un glossaire des index que tu as déjà identifiés?

Et si ce n’est pas trop abuser, une description détaillée de la recette horrible pour commander m’intéresse aussi :face_holding_back_tears:

Ce soir j’ai découvert que les index 5, 6 et 7 ce sont des compteurs 0-255. Le 5 compte à la seconde, le 6 à chaque reinit du 5 et le 7 à chaque reinit du 6.

Totalement inutile, mais intéressant. Un compteur de temps depuis le dernier démarrage, j’imagine.

En tout cas, toute aide est bienvenue.

Bonjour à vous tous ,
je possède aussi une poêle cheminée Stove italy piano et comme vous je désir le connecter à HA pour la récupération de données.
Par contre je suis novice dans HA et votre aide mais précieuse.
vous semblez bien connaitre votre sujet.
bravo à vous et félicitation.
1 ère question: comment recuperer l’ip de mon stove italy?
Merci d’avance pour cet intérêt du sujet qui je pense aidera plein de monde.

Pour trouver l’ip de ton poele, il y a plusieurs solutions. le plus simple est de voir sur ton serveur qui attribue les IP dans ton réseau, c’est le serveur dhcp. Le plus souvent c’est la box qui s’en charge sauf si vous avez un equipement qui a ce role. Sinon faire une analyse du réseau, il existe des soft sur pc ou sur mobile connecté au meme wifi que le poele qui marche tres bien.
J’utilise Fing qui est dispo sur le play store. Il affiche une liste des equipements connecté ce qui est suffisant pour trouver le poele

Pour intéragir avec le poele, j’ai fais des capture pcapdroid pour trouver la trame qui lance les commandes. pour commander le poele, il faut injecter depuis la page serialflush


il faudra faire une capture de trames avec son telephone et l’appli stove pour chaque commande que l’on veut faire. Dans mon cas, j’ai 4 captures differentes on/off/activate/desactivate.
Pour la partie glossaire, je parle en position
34/35 => temperature en celcius
64 => niveau de pellet 0-40
9 => allumer ou pas donc 0-1
10=> activer ou pas (1 ON / 2 OFF)
99 => puissance de chauffe entre 0/5

Bonjour,

Merci encore du retour rapide. J’hésitais à installer pcapdroid. Je suis habitué a Wireshark sur PC et j’avais l’impression que pcapdroid était plus gadget qu’utile, mais je vais essayer.

Donc si je comprends bien, tu as fait une capture de chaque commande individuelle (arrêt, marche, plannif on, plannif off) et tu la revoies à l’identique avec node-red ?

Si c’est le cas j’ai plusieurs questions:

  • Si elle sont à l’identique, n’as tu peur de changer d’autre paramètres involontairement?
  • je vois dans ton screenshot que tu utilises la méthode GET et pas PUT. Est-ce bon, et quel retour as tu du poêle?

Et merci pour les paramètres supplémentaires! Je les intègre de suite :smile:

Bonjour Govenants,
d’abort merci pour votre réponse rapide
OK j’ai réussi à récupérer L’IP du Stove et dans la requete web sur Firefox comme tu as indiqué j’ai les datas. comme affichée pour toi.
par contre je ne suis pas sur la même plage D’IP 192.168.4 pour l’un et 192.168.1 pour l’autre. comment faire un pont entre ces deux ip ?

Bonjour @christia,

Les addresses IP dependent de comment tu te connectes au poêle. Si tu te connectes directement au Wifi du poêle avec ton telephone, c’est le poêle qui fait point d’accès et serveur DHCP (pour distribuer les adresses IP). Dans ce réseau wifi du poêle lui il a toujours l’adresse 192.168.4.1 et attribue aux telephones les suivantes (192.168.4.2, 192.168.4.2, etc.).
En parallèle le poêle peut se connecter à ton réseau wifi maison et là c’est ta box qui allouera les adresses IP (en general 192.168.1.X). Dans le réseau de la maison le poêle aura une adresse IP (qu’il vaux mieux configurer dans la box pour que ce soit toujours la meme), ton home assistant aura une autre, et ton telephone une autre.

Pour répondre à ta question, lier les 2 sous-reseaux n’est pas simple car il faudra avoir un appareil (cela s’appele un bridge) qui soit connecté aux deux et qui fasse le pont. Par contre cela n’est pas necessaire. En principe les commandes identifiées par Govenants sont utilisables a l’interieur de ton reseau Maison dans lequel tout le monde doit avoir une adresse dans le meme sous-reseau (192.168.1.X)

Bonsoir @Felipe,
merci de t’a réponse et de l’intérêt que tu porte à ce sujet.
e me connecte en wifi depuis mon smartphone pour accéder à mon Stove Piano mais quand je lance une requête comme Govenants en direct et même avec Excel je suis obligé de basculé sur le wifi de mon Stove 192.168.4.1 sinon ça ne fonctionne pas.

@christia ,

Es-tu sur d’utiliser la bonne adresse IP du poêle dans le réseau de la maison? Car si le poêle est bien connecté il n’y a pas de raison pour qu’il ne réponde pas.

oui Felipe l’ip du poêle est 192.168.4.1 et la box maison est 192.168.1.1

Bonjour Christia,

La non réponse du ping depuis le réseau de ta box (192.168.1.0/24) ne fait que confirmer que le poêle n’est pas connecté avec l’adresse 192.168.4.1. Celle-ci est son adresse IP dans son propre wifi (celui propre au poêle).

Je reformule donc ma question:

Es-tu sûr que l’adresse IP du poêle dans le réseau wifi de ta box est 192.168.4.1?

Je ne sais pas quelle box tu as, mais en general il est rare qu’elles ségrégent les réseau. De plus, si ton ping est envoyé depuis un PC connecté au meme wifi de la maison, il est pratiquement impossible qu’il soit affecté a un autre sous-reseau.

Quel est l’adresse IP de ton home assistant? J’imagine qu’il est aussi dans le 192.168.1.X

Ton poêle est il connecté via un router autre que ta box?