Intégration IPX800 v3 home-assistant

bonjour a tous
lors de la relance HA j’ai cette erreur:
Integration error: binary_sensor_ipx800 - Integration ‹ binary_sensor_ipx800 › not found.
Integration error: sensor_ipx800 - Integration ‹ sensor_ipx800 › not found.
Integration error: sensors - Integration ‹ sensors › not found.

#/config/binary_sensors/binary_sensor_ipx800.yaml

platform: template
sensors:
ipx800_e1:
friendly_name: IPX800 E1
value_template: ‹ {{ is_state_attr(« sensor.ipx800_global_status », « btn0 »,« dn ») }} ›
ipx800_e2:
friendly_name: IPX800 E2
value_template: ‹ {{ is_state_attr(« sensor.ipx800_global_status », « btn1 »,« dn ») }} ›
ipx800_e3:
friendly_name: IPX800 E3
value_template: ‹ {{ is_state_attr(« sensor.ipx800_global_status », « btn2 »,« dn ») }} ›
ipx800_e4:
friendly_name: IPX800 E4
value_template: ‹ {{ is_state_attr(« sensor.ipx800_global_status », « btn3 »,« dn ») }} ›
ipx800_e5:
friendly_name: IPX800 E5
value_template: ‹ {{ is_state_attr(« sensor.ipx800_global_status », « btn4 »,« dn ») }} ›
ipx800_e6:
friendly_name: IPX800 E6
value_template: ‹ {{ is_state_attr(« sensor.ipx800_global_status », « btn5 »,« dn ») }} ›
ipx800_e7:
friendly_name: IPX800 E7
value_template: ‹ {{ is_state_attr(« sensor.ipx800_global_status », « btn6 »,« dn ») }} ›
ipx800_e8:
friendly_name: IPX800 E8
value_template: ‹ {{ is_state_attr(« sensor.ipx800_global_status », « btn7 »,« dn ») }} ›
ipx800_s1:
friendly_name: IPX800 S1
value_template: ‹ {{ state_attr(« sensor.ipx800_global_status », « led0 ») }} ›
ipx800_s2:
friendly_name: IPX800 S2
value_template: ‹ {{ state_attr(« sensor.ipx800_global_status », « led1 ») }} ›
ipx800_s3:
friendly_name: IPX800 S3
value_template: ‹ {{ state_attr(« sensor.ipx800_global_status », « led2 ») }} ›
ipx800_s4:
friendly_name: IPX800 S4
value_template: ‹ {{ state_attr(« sensor.ipx800_global_status », « led3 ») }} ›
ipx800_s5:
friendly_name: IPX800 S5
value_template: ‹ {{ state_attr(« sensor.ipx800_global_status », « led4 ») }} ›
ipx800_s6:
friendly_name: IPX800 S6
value_template: ‹ {{ state_attr(« sensor.ipx800_global_status », « led5 ») }} ›
ipx800_s7:
friendly_name: IPX800 S7
value_template: ‹ {{ state_attr(« sensor.ipx800_global_status », « led6 ») }} ›
ipx800_s8:
friendly_name: IPX800 S8
value_template: ‹ {{ state_attr(« sensor.ipx800_global_status », « led7 ») }} ›

#/config/sensors/sensor_ipx800.yaml

platform: rest
name: IPX800 global status
resource: ‹ http://192.168.10.145/globalstatus.xml ›
json_attributes_path: $.response
scan_interval: 15
value_template: OK
json_attributes:
- led0
- led1
- led2
- led3
- led4
- led5
- led6
- led7
- count0
- count1
- btn0
- btn1
- btn2
- btn3
- btn4
- btn5
- btn6
- btn7
- analog0
- analog1

#/config/sensors.yaml

Récup état Entrées numeriques

  • platform: rest
    resource: ‹ http://192.168.10.145/api/xdevices.json?cmd=10 ›
    name: ‹ IPX800 entrees num ›
    value_template: ‹ {{ value_json[« product »] }} ›
    scan_interval: 30
    json_attributes:
    • IN1
    • IN2
    • IN3
    • IN4
    • IN5
    • IN6
    • IN7
    • IN8

Récup état Sorties numeriques

  • platform: rest
    resource: ‹ http://192.168.10.145/api/xdevices.json?cmd=20 ›
    #resource: ‹ http://{{ IP_ipx800 }}/api/xdevices.json?cmd=20 ›
    name: ‹ IPX800 sorties num ›
    value_template: ‹ {{ value_json[« product »] }} ›
    scan_interval: 29
    json_attributes:
    • OUT1
    • OUT2
    • OUT3
    • OUT4
    • OUT5
    • OUT6
    • OUT7
      J’ai vérifié la syntaxe via YAML Lint, les 3 fichiers sont ok

Voici mon fichier configuration.yaml

Loads default set of integrations. Do not remove.

default_config:

Load frontend themes from the themes folder

frontend:
themes: !include_dir_merge_named themes

Text to speech

tts:

  • platform: google_translate

#############################

!include

#############################

automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensors: !include sensors.yaml
sensor_ipx800: !include sensors/sensor_ipx800.yaml
binary_sensor_ipx800: !include binary_sensors/binary_sensor_ipx800.yaml

Si quelqu’un peut m’aider!!

Salut,

Peux-tu essayer de mettre les infos en forme ? C’est pas bien simple à lire car il y a un mélange de texte, de logs et de config avec les affichages en gras et/ou en gros . Donc on perds l’organisation.
Je t’invite à utiliser la balise
image
pour mettre en forme le ‹ code › (comprendre logs et yaml) et le rendre facilement différenciable de ton complément par texte.
Merci

voici donc mon fichier binary_sensor_ipx800.yaml dans le répertoire config/binary_sensors

#/config/binary_sensors/binary_sensor_ipx800.yaml

platform: template
sensors:
  ipx800_e1:
    friendly_name: IPX800 E1
    value_template: '{{ is_state_attr("sensor.ipx800_global_status", "btn0","dn") }}'
  ipx800_e2:
    friendly_name: IPX800 E2
    value_template: '{{ is_state_attr("sensor.ipx800_global_status", "btn1","dn") }}'  
  ipx800_e3:
    friendly_name: IPX800 E3
    value_template: '{{ is_state_attr("sensor.ipx800_global_status", "btn2","dn") }}'
  ipx800_e4:
    friendly_name: IPX800 E4
    value_template: '{{ is_state_attr("sensor.ipx800_global_status", "btn3","dn") }}'
  ipx800_e5:
    friendly_name: IPX800 E5
    value_template: '{{ is_state_attr("sensor.ipx800_global_status", "btn4","dn") }}'
  ipx800_e6:
    friendly_name: IPX800 E6
    value_template: '{{ is_state_attr("sensor.ipx800_global_status", "btn5","dn") }}'
  ipx800_e7:
    friendly_name: IPX800 E7
    value_template: '{{ is_state_attr("sensor.ipx800_global_status", "btn6","dn") }}'
  ipx800_e8:
    friendly_name: IPX800 E8
    value_template: '{{ is_state_attr("sensor.ipx800_global_status", "btn7","dn") }}'
  ipx800_s1:
    friendly_name: IPX800 S1
    value_template: '{{ state_attr("sensor.ipx800_global_status", "led0") }}'
  ipx800_s2:
    friendly_name: IPX800 S2
    value_template: '{{ state_attr("sensor.ipx800_global_status", "led1") }}'
  ipx800_s3:
    friendly_name: IPX800 S3
    value_template: '{{ state_attr("sensor.ipx800_global_status", "led2") }}'
  ipx800_s4:
    friendly_name: IPX800 S4
    value_template: '{{ state_attr("sensor.ipx800_global_status", "led3") }}'
  ipx800_s5:
    friendly_name: IPX800 S5
    value_template: '{{ state_attr("sensor.ipx800_global_status", "led4") }}'
  ipx800_s6:
    friendly_name: IPX800 S6
    value_template: '{{ state_attr("sensor.ipx800_global_status", "led5") }}'
  ipx800_s7:
    friendly_name: IPX800 S7
    value_template: '{{ state_attr("sensor.ipx800_global_status", "led6") }}'
  ipx800_s8:
    friendly_name: IPX800 S8
    value_template: '{{ state_attr("sensor.ipx800_global_status", "led7") }}'

mon fichier sensor_ipx800.yaml dans le répertoire config/sensors

#/config/sensors/sensor_ipx800.yaml

platform: rest
name: IPX800 global status
resource: 'http://192.168.10.145/globalstatus.xml'
json_attributes_path: $.response
scan_interval: 15
value_template: OK
json_attributes:
    - led0
    - led1
    - led2
    - led3
    - led4
    - led5
    - led6
    - led7
    - count0
    - count1
    - btn0
    - btn1
    - btn2
    - btn3
    - btn4
    - btn5
    - btn6
    - btn7
    - analog0
    - analog1

a present voici mon fichier configuration.yaml

# Loads default set of integrations. Do not remove.
default_config:

# Load frontend themes from the themes folder
frontend:
  themes: !include_dir_merge_named themes

# Text to speech
tts:
  - platform: google_translate

#############################
######     !include   #######
#############################


automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yaml
sensors: !include sensors.yaml
sensor_ipx800: !include sensors/sensor_ipx800.yaml
binary_sensor_ipx800: !include binary_sensors/binary_sensor_ipx800.yaml


mqtt:
  broker: "127.0.0.1"
  username: "MQTT"
  password: "xxxxxxxxxx"

je sais plus quoi faire

Je souhaite intégrer mon IPX800 v3 que j’utilisais sous domoticz depuis plus de 3 ans pour me remonter mes compteur d’eau et électricité.

Mon HA est pourtant fonctionnel,

Ok c’est déjà plus lisible.
Dans l’erreur il ne trouve pas binary_sensor_ipx800
Dans ton fichier configuration.yaml tu as ça

binary_sensor_ipx800 n’est pas un type de sensor connu par HA. Donc mets

j’ai effectué la modification, il me reste cette erreur « Integration error: sensors - Integration ‹ sensors › not found. »

#/config/sensors.yaml

# Récup état Entrées numeriques
- platform: rest
  resource: 'http://192.168.10.145/api/xdevices.json?cmd=10'
  name: 'IPX800 entrees num'
  value_template: '{{ value_json["product"] }}'
  scan_interval: 30
  json_attributes:
    - IN1
    - IN2
    - IN3
    - IN4
    - IN5
    - IN6
    - IN7
    - IN8
    
    
# Récup état Sorties numeriques
- platform: rest
  resource: 'http://192.168.10.145/api/xdevices.json?cmd=20'
  #resource: 'http://{{ IP_ipx800 }}/api/xdevices.json?cmd=20'
  name: 'IPX800 sorties num'
  value_template: '{{ value_json["product"] }}'
  scan_interval: 29
  json_attributes:
    - OUT1
    - OUT2
    - OUT3
    - OUT4
    - OUT5
    - OUT6
    - OUT7

Merci pour ton aide

Même coquilles ici…
Le mot clé c’est sensor sans s tous le reste n’est pas possible
Et accessoirement, inclure 2 fichiers différents dans 1 même catégorie d’entité, c’est faisable uniquement avec l’inclusion d’un répertoire (dans les lesquels les fichiers sont)

Je crois bien que j’ai rien compris.

y a t il un tuto claire, qui explique l’intégration d’un ipx800 v3 a home assistant?

C’est pas de l’intégration ipx ça mais de la configuration de base HA, en YAML
Et il y a la doc qui explique les inclusions

Je crois bien que je ne suis pas de taille :sob: :sob:

C’est pas si dur… Tu n’as le droit qu’à :

  • des mots clés autorisés
  • inclure 1 seul fichier par mot clé
  • inclure 1 seul répertoire (avec plusieurs fichiers dedans) par mot clé

Tu ne peux pas :

  • avoir 2 fois 1 même mot clé
  • plusieurs inclusions pour 1 même mot clé

Salut.
Avez-vous réussi à intégrer IPX800 V3 dans Home assistant ?

bonjour,
oui cela fonctionne

bjr
juste pour info, pour piloter facilement les relais de l’IPX V2 (mais c’est la meme API que pour V3 donc ca devrait etre pareil) avec un retour de leur état si tu bascules les relais directement via l’IPX. (192.168.1.69 : @IP de mon IPX)
dans le fichier switchs.yaml

- platform: command_line
  switches:
    ipx800v2_relais1:
      command_on: 'curl http://192.168.1.69/preset.htm?led1=1 >/dev/null'
      command_off: 'curl http://192.168.1.69/preset.htm?led1=0 >/dev/null'
      command_state: 'curl http://192.168.1.69/status.xml'
      value_template: '{% set status = value | regex_findall_index("<led0>(.*) /led0>") %} {% if status == "1" %} true {%- endif -%}'
      friendly_name: 'ipx800v2 relais1'
    ipx800v2_relais2:
      command_on: 'curl http://192.168.1.69/preset.htm?led2=1 >/dev/null'
      command_off: 'curl http://192.168.1.69/preset.htm?led2=0 >/dev/null'
      command_state: 'curl http://192.168.1.69/status.xml'
      value_template: '{% set status = value | regex_findall_index("<led1>(.*)</led1>") %} {% if status == "1" %} true {%- endif -%}'
      friendly_name: 'ipx800v2 relais2'
   ipx800v2_relais3:
      command_on: 'curl http://192.168.1.69/preset.htm?led3=1 >/dev/null'
      command_off: 'curl http://192.168.1.69/preset.htm?led3=0 >/dev/null'
      command_state: 'curl http://192.168.1.69/status.xml'
      value_template: '{% set status = value | regex_findall_index("<led2>(.*)</led2>") %} {% if status == "1" %} true {%- endif -%}'
      friendly_name: 'ipx800v2 relais3'

Super.
J’ai aussi 2 pcs d’IPX V2. Les relais fonctionnent pour moi.
Comment charger les entrées analogiques et numériques ?
Je ne trouve partout que des instructions pour IPX V3 et supérieur.
Quelqu’un a-t-il déjà fait cela ?
Je lis du XML : http:// ipx v2 /status.xml
Le résultat:

<response>

<led0>1</led0>

<led1>0</led1>

<led2>0</led2>

<led3>0</led3>

<led4>0</led4>

<led5>0</led5>

<led6>0</led6>

<led7>0</led7>

<btn0>up</btn0>

<btn1>up</btn1>

<btn2>up</btn2>

<btn3>up</btn3>

<an1>46</an1>

<an2>36</an2>

<time0>10:53:22</time0>

</response>

J’ai pu lire des données analogiques avec l’IPX800 v2.
Il me reste encore à multiplier le résultat par 0,323 pour obtenir la bonne valeur en °C
Je vais donc continuer d’essayer. Si quelqu’un le sait, il peut m’aider.

sensor:
  - platform: command_line
    name: "IPX800 an1"
    command: curl -s http://192.168.1.126/status.xml
    value_template: '{{ value.split("<an1>")[1].split("</an1>")[0] if "<an1>" in value else "N/A" }}'

  - platform: command_line
    name: "IPX800 an2"
    command: curl -s http://192.168.1.126/status.xml
    value_template: '{{ value.split("<an2>")[1].split("</an2>")[0] if "<an2>" in value else "N/A" }}'

Je l’ai déjà résolu.
J’ai utilisé un capteur de température LM35Z an1 en IPX800 v2
Calcul de la température an1 * 0,323

Voici le code :

sensor:
  - platform: command_line
    name: "IPX800 an1"
    command: curl -s http://192.168.1.126/status.xml
    value_template: '{{ value.split("<an1>")[1].split("</an1>")[0] if "<an1>" in value else "N/A" }}'
    scan_interval: 60  # Le temps en secondes à quelle fréquence le capteur est mis à jour

  - platform: template
    sensors:
      temperature_celsius_an1:
        friendly_name: "Température an1"
        unit_of_measurement: "°C"
        value_template: "{{ (states('sensor.ipx800_an1') | float * 0.323) | round(1) }}"

  - platform: command_line
    name: "IPX800 an2"
    command: curl -s http://192.168.1.126/status.xml
    value_template: '{{ value.split("<an2>")[1].split("</an2>")[0] if "<an2>" in value else "N/A" }}'
    scan_interval: 60  # Le temps en secondes à quelle fréquence le capteur est mis à jour

  - platform: template
    sensors:
      temperature_celsius_an2:
        friendly_name: "Température an2"
        unit_of_measurement: "°C"
        value_template: "{{ (states('sensor.ipx800_an2') | float * 0.323) | round(1) }}"
1 « J'aime »

Bonjour,
J’ai lu le post avec attention et ce dernier est très intéressant. J’ai une question concernant le retour d’état des entrées digitales, comment faites vous pour avoir un retour d’état immédiat lors de l’appui d’un interrupteur par exemple ?
Je vous remercie
Antoine

Voici le changement de Home Assistant par rapport à la version 2023.12

command_line:
  - sensor:
      name: "IPX800 an1"
      command: curl -s http://192.168.1.126/status.xml
      value_template: '{{ value.split("<an1>")[1].split("</an1>")[0] if "<an1>" in value else "N/A" }}'
      scan_interval: 300  # Le temps en secondes à quelle fréquence le capteur est mis à jour

  - sensor:
      name: "IPX800 an2"
      command: curl -s http://192.168.1.126/status.xml
      value_template: '{{ value.split("<an2>")[1].split("</an2>")[0] if "<an2>" in value else "N/A" }}'
      scan_interval: 300  # Le temps en secondes à quelle fréquence le capteur est mis à jour     

  - sensor:
      name: "IPX800 btn0"
      command: curl -s http://192.168.1.125/status.xml
      value_template: '{{ value.split("<btn0>")[1].split("</btn0>")[0] if "<btn0>" in value else "N/A" }}'
      scan_interval: 5  # Le temps en secondes à quelle fréquence le capteur est mis à jour
  - switch:
       name: "ipx800_r1"
       command_on: 'curl "http://192.168.1.126/preset.htm?led1=1" >/dev/null'
       command_off: 'curl "http://192.168.1.126/preset.htm?led1=0" >/dev/null'
       command_state: 'curl "http://192.168.1.126/status.xml"'
       value_template: '{% set status = value | regex_findall_index("<led0>(.*)</led0>") %} {% if status == "1" %} true {%- endif -%}'
  - switch:
       name: "ipx800_r2"
       command_on: 'curl "http://192.168.1.126/preset.htm?led2=1" >/dev/null'
       command_off: 'curl "http://192.168.1.126/preset.htm?led2=0" >/dev/null'
       command_state: 'curl "http://192.168.1.126/status.xml"'
       value_template: '{% set status = value | regex_findall_index("<led1>(.*)</led1>") %} {% if status == "1" %} true {%- endif -%}'
1 « J'aime »

Bonjour @jurdikla,
Je vous remercie pour vous information, je vais essayer ça ce soir et je reviendrai vous tenir au courant.
Par contre, j’ai une petite question concernant le délai des sensors a 5 secondes, il y a pas un risque de latence ? Autre question, est ce qu’il y a un risque de raccourcir ce temps ? ( Je me sers des entrées de l’Ipx pour commander mon éclairage extérieur soit par appui soit par détection du passage de la voiture)
Merci d’avance