Pompe a chaleur O'foehn wifi plugin de gestion

Bonjour,

Je cherche un plugin pour gérer ma pompe a chaleur par le wifi de la maison
Aujourd’hui je passe par une application sur mon smartphone ‹ pool Pilot › de la marque
qui me permet de connaitre la température de l’air, de l’eau et de régler la température souhaitée + plusieurs autres options non essentielles pour moi.
j’ai trouvé un utilisateur qui a développé une plugin mais chez Jeedom
https://forum.jeedom.com/viewtopic.php?t=46370

Ma configuration :
Home Assistant 2023.7.1
un vieux PC en HAOS
une clé USB Conbee2
Zigbee to MQTT

Merci d’avance pour votre aide

Lionel

Salut,

vu les messages sur l’autre forum, la PAC semble exporter une API HTTP.
Donc faudrait mettre la main sur les url et commandes disponibles.
Et ensuite utiliser l’intégration REST pour récupérer les infos et envoyer des commandes

Merci pour ce retour rapide Alexhass,
Je ne suis pas programmeur mais je comprends la démarche, je vais tenter de transposer ce code sur mon ha avec ma PAC.
Je tiens au courant la communauté de la suite

Lionel

Salut,

Tu as une doc de référence pour leur API?
Si les commandes sont connues, normalement, pas vraiment besoin de développer quoi que ce soit.
C’est juste savoir quelle sont les commandes et ensuite les ajouter une par une dans la config de HA.

malheureusement non, j’ai regardé sur le site du fabricant mais il vend un abonnement pour contrôler la PAC à distance, ça serait se tirer une balle dans le pied s’il fournissait les code API,
j’ai pensé contacter Sattaz ou seb28 sur le site de Jeedom pour lui demander les codes API mais je n’ai pas de compte Jeedom,
Si une âme charitable avait un compte et lui demander, ça serait formidable

Il a un github pour le pluging Jeedom…
A partir de la ligne 378, on retrouve les url et les commandes cgi existantes.

Merci AlexHass,
J’ai regardé mais je n’y comprends rien :pensive:
Il y a bien une rubrique ‹ Outils de développement › dans HAOS mais je suis une quiche en prog,
ca parle de curl dans le script et de yaml dans HAOS :scream:

Alors oui là il faut déchiffrer un peu, mais il faut voir que dans son programme il a des sections qui correspondent à toutes les actions et que ça permet d’avoir une idée de l’API

Par exemple ce qui semble faire allumet et éteindre la PAC c’est:

curl_setopt($ch, CURLOPT_URL, 'http://'.$OFoehn_IP.':'.$OFoehn_Port.'/changeOnOff.cgi');

En déchiffrant on voit que c’est un appel à:

http://<IP>:<Port>/changeOnOff.cgi'

On voit aussi un autre qui semble être les infos d’état:

http://<IP>:<Port>/accueil.cgi

Donc tu peux déjà commencer à tester pour déjà confirmer que la PAC répond à un appel à l’url http://<IP>:<Port>/accueil.cgi directement depuis un navigateur. Et si ça marche voir déjà ce que la PAC donne comme info. Après idéalement tu pourra lire ça et mettre dans des sensors.

Curl ce n’est qu’un navigateur web en version texte/ligne de commande…

Effectivement, j’ai du brut de pomme dans mon navigateur

As tu un lien qui explique pas a pas comment mettre du curl dans HA car je ne trouve pas dans la rubrique dev

Bonjour,

Ce n’est pas par l’interface. Il faut utiliser l’intégration command_line ou rest en yaml. C’est à dire avoir accès aux fichiers de configuration de HA par exemple avec l’addon File Editor

Bonjour à tous,
J’ai bien avancé avec ChatGPT (oui je sais je triche), il m’a généré un script qui fonctionne partiellement
j’ai une seule sonde qui remonte, je pense qu’il arrive pas a récupérer les données dans le cgi
ci-dessous le script dans configuration yaml avec l’ip de ma PAC

shell_command:
  ofoehn_cron: 'curl http://192.168.1.98:80/changeOnOff.cgi'
  ofoehn_light_on: 'curl -d "1" http://192.168.1.98:80/toggleE.cgi'
  ofoehn_light_off: 'curl -d "0" http://192.168.1.98:80/toggleE.cgi'
  ofoehn_set_temp: 'curl -d "consigneFroid={{ temp }}&consigneChaud={{ temp }}&consigneAuto={{ temp }}" http://192.168.1.98:80/setReg.cgi'
  ofoehn_mode_hot: 'curl -d "mode=CHAUD" http://192.168.1.98:80/setReg.cgi'
  ofoehn_mode_cold: 'curl -d "mode=FROID" http://192.168.1.98:80/setReg.cgi'
  ofoehn_mode_auto: 'curl -d "mode=AUTO" http://192.168.1.98:80/setReg.cgi'
  
sensor:
  - platform: command_line
    name: Ofoehn Water In
    command: 'curl -s http://192.168.1.98:80/super.cgi | grep -oP "(?<=DONNEE5=)[0-9.]+"'
    unit_of_measurement: "°C"
  - platform: command_line
    name: Ofoehn Water Out
    command: 'curl -s http://192.168.1.98:80/super.cgi | grep -oP "(?<=DONNEE6=)[0-9.]+"'
    unit_of_measurement: "°C"
  - platform: command_line
    name: Ofoehn Air Temperature
    command: 'curl -s http://192.168.1.98:80/super.cgi | grep -oP "(?<=DONNEE7=)[0-9.]+"'
    unit_of_measurement: "°C"
  - platform: command_line
    name: Ofoehn PowerWiFi
    command: 'curl -s http://192.168.1.98:80/accueil.cgi | grep -oP "(?<=DONNEE16=)[0-9]+"'
    value_template: '{{ "ON" if value | int > 0 else "OFF" }}'
  - platform: command_line
    name: Ofoehn Pump State
    command: 'curl -s http://192.168.1.98:80/super.cgi | grep -oP "(?<=DONNEE24=)[0-9]+"'
    value_template: '{{ "ON" if value | int > 0 else "OFF" }}'
  - platform: command_line
    name: Ofoehn Light State
    command: 'curl -s http://192.168.1.98:80/getCal.cgi | grep -oP "(?<=DONNEE2=)[0-9]+"'
    value_template: '{{ "ON" if value | int > 0 else "OFF" }}'
  - platform: command_line
    name: Ofoehn Mode
    command: 'curl -s http://192.168.1.98:80/getReg.cgi | head -n 1'
  - platform: command_line
    name: Ofoehn Temperature Setpoint
    command: 'curl -s http://192.168.1.98:80/getReg.cgi | awk -F, "{print $1}"'
    value_template: '{{ value | int }}'
  - platform: command_line
    name: Ofoehn Error

j’ai également dans automation.yaml

- alias: "Ofoehn Refresh"
  trigger:
    platform: time
    minutes: "/1"
  action:
    service: shell_command.ofoehn_cron

- alias: "Ofoehn Light On"
  trigger:
    platform: state
    entity_id: switch.ofoehn_light
    to: "on"
  action:
    service: shell_command.ofoehn_light_on

- alias: "Ofoehn Light Off"
  trigger:
    platform: state
    entity_id: switch.ofoehn_light
    to: "off"
  action:
    service: shell_command.ofoehn_light_off

- alias: "Ofoehn Set Temperature"
  trigger:
    platform: state
    entity_id: input_number.ofoehn_set_temp
  action:
    service: shell_command.ofoehn_set_temp
    data_template:
      temp: "{{ states('input_number.ofoehn_set_temp') | float }}"

- alias: "Ofoehn Set Mode Hot"
  trigger:
    platform: state
    entity_id: switch.ofoehn_mode_hot
    to: "on"
  action:
    service: shell_command.ofoehn_mode_hot

- alias: "Ofoehn Set Mode Cold"
  trigger:
    platform: state
    entity_id: switch.ofoehn_mode_cold
    to: "on"
  action:
    service: shell_command.ofoehn_mode_cold

- alias: "Ofoehn Set Mode Auto"
  trigger:
    platform: state
    entity_id: switch.ofoehn_mode_auto
    to: "on"
  action:
    service: shell_command.ofoehn_mode_auto

et dans switch

ofoehn_light:
  name: Ofoehn Light
  icon: mdi:lightbulb
  command_on: shell_command.ofoehn_light_on
  command_off: shell_command.ofoehn_light_off

switch:
  - platform: template
    switches:
      ofoehn_mode_hot:
        value_template: "{{ is_state('sensor.ofoehn_mode', 'Chaud') }}"
        turn_on:
          service: shell_command.ofoehn_mode_hot
        turn_off:
          service: shell_command.ofoehn_mode_hot
      ofoehn_mode_cold:
        value_template: "{{ is_state('sensor.ofoeh

voici mon tableau de bord pour ma PAC


pour info je n’ai pas toutes les sondes de dispo ?!?

Salut,

ok pas mal :slight_smile:
Pour les sondes qui disent inconnu, faudrait voir ce que donne la requête ‹ http://192.168.1.98:80/super.cgi › dans le navigateur pour confirmer que c’est le bon retour…

Puis de façon générale être certain que ça fait ce que tu veux.
J’ai vu que dans l’automatisation ,ça te fait appel toutes les minutes à « ofoehn_cron » qui semble être un command qui fait un curl sur le « changeOnOff.cgi », si j’en crois ce qu’on a vu plus haut c’est pour allumer et eteindre, non?

j’avais testé aussi pour essayer de comprendre l’ordre des valeurs

en html, ça donne ça:

Salut,

C’est surement lié aux commandes… ChatGPT ne sait pas forcémernt tout.

Par exemple:

Cette commande appelle une curl sur le fichier super.cgi et dans le résultat cherche avec la commande « grep » qui correspond à l’expression "(?<=DONNEE5=)[0-9.]+"

Pour illustrer ce que ça fait, j’ai fait la commande sur Linux:
image

Donc par exemple celui-ci cherche dans le retour du curl les chiffres qui sont derrière le texte <DONNEE5=.
Pour arriver à un résultat intéressant, il faudrait du coup quand tu as ça sur ton navigateur, fait un clic droit et afficher la source. pour trouver la bonne expression…

J’espère que tu m’as suivi :slight_smile:

voici le resultat de ‹ afficher la source › sur la page super.cgi


Est ce que la donnée 5 est la ligne 5 ?
Si oui, j’ai peut etre un décalage

Cordialement