Récupérer le contenu d'une variable depuis un requête http via nodered

Récupérer la valeur clé depuis un contenu XML xml

Bonjour,
Tous d’abord merci pour ce forum qui est très utile pour débuté.
Je suis tout nouveau sur Home Assistant, je migre depuis Jeedom.
Je ne suis pas à l’aise avec le développements mais j’ai envie d’apprendre.

Dite moi si je ne poste pas au bonne endroits ou si je fait une erreur.

Mon soucis :
J’utilise Node-Red pour récupérer la valeur de la clé strValue dans le fichier XML, je vous mes une capture d’écran ci-dessous, mais j’ai un problème de propriétés indéfini, j’ai lu pas mal de truc mais je suis perdu.

Je cherche a récupérer des informations d’une chaudière ETA.

Merci d’avance pour votre aide

Ma configuration


System Information

version core-2023.2.3
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.7
os_name Linux
os_version 5.15.90
arch x86_64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4996
Installed Version 1.30.1
Stage running
Available Repositories 1193
Downloaded Repositories 1
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 9.5
update_channel stable
supervisor_version supervisor-2023.01.1
agent_version 1.4.1
docker_version 20.10.22
disk_total 30.8 GB
disk_used 5.2 GB
healthy true
supported true
board ova
supervisor_api ok
version_api ok
installed_addons Terminal & SSH (9.6.1), ESPHome (2022.12.8), Studio Code Server (5.5.2), Node-RED (14.0.2)
Dashboards
dashboards 2
resources 0
views 2
mode storage
Recorder
oldest_recorder_run 7 février 2023 à 13:04
current_recorder_run 11 février 2023 à 18:46
estimated_db_size 10.61 MiB
database_engine sqlite
database_version 3.38.5
___

Salut,

Tu utilises mal le noeud XML je pense. Il faut juste mettre « payload » dans Property.
C’est après, dans noeuds suivants, que tu pourra directement utiliser ta variable msg.payload.eta…

Merci pour votre aide.
Je ne voix pas quelle nœud je peux placer derrière le nœud XML pour récupérer cette variable.
ci-dessous l’ XML si ca peut aider.

<eta xmlns="http://www.eta.co.at/rest/v1" version="1.0">
<value advTextOffset="0" unit="°C" uri="/user/var/120/10241/0/0/12197" strValue="8,2" scaleFactor="10" decPlaces="1">82</value>
</eta>

A partir du noeud « XML » la variable est dispo, il n’y a rien à récupérer.
La question est plutôt de savoir ce qu’on veut en faire…
Plus généralement c’es mieux de donner aussi votre objectif général, ça permet de potentiellement proposer une autre approche.

Juste un exemple:
Si le but final ici est d’utiliser NodeRed pour lire cette valeur depuis le requête HTTP, pour ensuite l’enregistrer dans HA…
J’aurais proposé de se passer de Node Red et de faire ça directement dans HA avec un Sensor Rest.

Ok, je vois, je donne plus d’explication, désolé.
J’ai utiliser Sensor Rest pour la température et pour l’état de fonctionnement de la chaudière.
J’ai donné cette exemple car l’xml est simple, je voudrais faire ça sur plusieurs sensor, des erreurs, des différente température de relevé des ballons d’eau chaude, j’avais l’impression de simplifier en utilisant node-red. Je me trompe peut être ?
En fait j’ai eu quelques difficultés à comprendre Rest mais je m’en suis sorti pour deux capteurs mais peut-être qu’il faut que je persiste dans ce sens qu’en pensez-vous ?

La où ça va être problématique, c’est pour mettre cette valeur dans HA, on ne peu pas vraiment directement (a ma connaissance) affecter un état à un sensor…
Les sensors ont, soit un valeur provenant de la plateforme qui les fournit, soit avec le valeur template…
Mais il n’y pas de service sensor.set_state…
C’est pour ça que dans le cas ici où le chaudière réponds en HTTP, j’enlèverais les intermédiaires.
Normalement le Sensor Rest, si la réponse est en XML, transforme en JSon, ce qui revient à une structure équivalente à cette que Node Red fait.

Ok je vais alors gratter un peu plus la solution Rest pour récupérer l’ensemble des données que je souhaite.

En tout cas merci pour votre rapidité de réponse, ça me rassure aussi dans le fait de passer à Home assistant.

Merci

Certes, mais on peut créer et gérer ses propres sensors:

  • soit en template:
template:
  - sensor:
      - name: 'Date du jour'
        unique_id: sensor.date_du_jour
        icon: mdi:calendar-today
        state: >-
          {% set months = ["Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre"] %}
          {% set days = ["Lundi", "Mardi", "Mercredi", "Jeudi", "Vendredi", "Samedi", "Dimanche"]  %}
          {{ days[now().weekday()] + ' ' + now().day | string + ' ' + months[now().month-1] }}
  • soit en NodeRed:

Salut,

C’est ce que je disais… créer des sensors template ou autre plateforme qu’on peut contrôler.
J’avais oublié le noeud sensor, mais bon c’est un custom qui a besoin de HACS et de l’intégration custom.
Mais je trouve que c’est qd même plus simple et direct dans pour cas présent de le faire dans HA.

Bonjour,

Je penser aussi que l’on prouvé, qu’a partir des infos récolté dans l’XML créer des sensors via mqtt depuis node-red.