Pilotage Chaudière Frisquet ECO Radio System via ESPHome

Salut,

J’imagine, en te lisant, que ton fichier de config ne compile pas.

As-tu également copié le dossier common et son contenu ?
Cela est nécessaire pour installer les packages complémentaires (le code que tu as montré dans ton message).

Cela étant dit, ce block que de code n’est pas indispensable. Il existe car cela me permet de modulariser la configuration de mes différents ESP32. En l’occurence, cela installe des fonctionnalités génériques communes à tous mes appareils (état wifi, switch reboot, status, timeout, etc.). C’est ma configuration de base.

Quant au fichier yaml, tu peux le nommer comme tu veux. De même pour le nom du device, ça peut être myFrisquetBoiler comme suggéré dans le README, ou boiler comme dans l’exemple, ou ce que tu veux en fait.

Le fait est, en effet, que mon fichier de config d’exemple est un peu plus complexe que la configuration minimale décrite dans le README.

Pour le pin c’est bien le pin que tu utilises. C’est pour cela que c’est configurable.
Si tu as trouvé l’id de ta chaudière, tu as fait le plus dur !

Philippe

Bonjour,
je ne comprend pas pourquoi ma chaudiere tourne alors que le reglage est plus bas que la temperature actuel.?
.

`[15:45:46][D][climate:011]: 'Chaudière Frisquet' - Setting
[15:45:46][D][climate:040]:   Target Temperature: 16.10
[15:45:46][D][climate:378]: 'Chaudière Frisquet' - Sending state:
[15:45:46][D][climate:381]:   Mode: HEAT
[15:45:46][D][climate:383]:   Action: HEATING
[15:45:46][D][climate:401]:   Current Temperature: 20.70°C
[15:45:46][D][climate:407]:   Target Temperature: 16.10°C
[15:45:46][W][component:214]: Component api took a long time for an operation (0.06 s).
[15:45:46][W][component:215]: Components should block for at most 20-30ms.
[15:45:59][D][heat_curve.climate:125]: Delta T: -0.4
[15:45:59][D][heat_curve.climate:126]: Heating curve temperature: 14.6°C
[15:45:59][D][heat_curve.climate:132]: Error: -4.6
[15:45:59][D][heat_curve.climate:230]: Proportionnal term: -0.00
[15:45:59][D][heat_curve.climate:252]: Integral term: 0.00000
[15:45:59][D][heat_curve.climate:140]: Calculated temperature: 14.6°C
[15:45:59][D][heat_curve.climate:148]: Calculated output: 0%
[15:45:59][D][heat_curve.climate:149]: Corrected temperature: 21.6°C
[15:45:59][D][heat_curve.climate:181]: Climate action is HEATING
[15:45:59][D][heat_curve.climate:196]: Water temperature setpoint: 21.6°C
[15:45:59][W][component:214]: Component sensor took a long time for an operation (0.07 s).
[15:45:59][W][component:215]: Components should block for at most 20-30ms.
[15:46:10][D][homeassistant.sensor:024]: 'sensor.temperature_salon_temperature_2': Got state 20.80
[15:46:45][D][heat_curve.climate:125]: Delta T: -0.4
[15:46:45][D][heat_curve.climate:126]: Heating curve temperature: 14.6°C
[15:46:45][D][heat_curve.climate:132]: Error: -4.7
[15:46:45][D][heat_curve.climate:230]: Proportionnal term: -0.00
[15:46:45][D][heat_curve.climate:252]: Integral term: 0.00000
[15:46:45][D][heat_curve.climate:140]: Calculated temperature: 14.6°C
[15:46:45][D][heat_curve.climate:148]: Calculated output: 0%
[15:46:45][D][heat_curve.climate:149]: Corrected temperature: 21.6°C
[15:46:45][D][heat_curve.climate:181]: Climate action is HEATING
[15:46:45][D][heat_curve.climate:196]: Water temperature setpoint: 21.6°C
[15:46:45][D][climate:378]: 'Chaudière Frisquet' - Sending state:
[15:46:45][D][climate:381]:   Mode: HEAT
[15:46:45][D][climate:383]:   Action: HEATING
[15:46:45][D][climate:401]:   Current Temperature: 20.80°C
[15:46:45][D][climate:407]:   Target Temperature: 16.10°C
[15:46:45][W][component:214]: Component sensor took a long time for an operation (0.17 s).
[15:46:45][W][component:215]: Components should block for at most 20-30ms.
[15:46:59][D][heat_curve.climate:125]: Delta T: -0.4
[15:46:59][D][heat_curve.climate:126]: Heating curve temperature: 14.6°C
[15:46:59][D][heat_curve.climate:132]: Error: -4.7
[15:46:59][D][heat_curve.climate:230]: Proportionnal term: -0.00
[15:46:59][D][heat_curve.climate:252]: Integral term: 0.00000
[15:46:59][D][heat_curve.climate:140]: Calculated temperature: 14.6°C
[15:46:59][D][heat_curve.climate:148]: Calculated output: 0%
[15:46:59][D][heat_curve.climate:149]: Corrected temperature: 21.6°C
[15:46:59][D][heat_curve.climate:181]: Climate action is HEATING
[15:46:59][D][heat_curve.climate:196]: Water temperature setpoint: 21.6°C
[15:46:59][W][component:214]: Component sensor took a long time for an operation (0.09 s).
[15:46:59][W][component:215]: Components should block for at most 20-30ms.`

Salut,

C’est bizarre en effet. D’après tes logs, l’output est bien calculé à 0% donc la chaudière devrait s’arrêter (mode IDLE). et là pourtant, tes logs montrent HEATING. Ce n’est pas normal et pas conforme au code.

J’ai poussé une nouvelle version sur le git (changements cosmétiques). Mets toi à jour comme ça on tournera sur la même version.

Toutes les 5 minutes au minimum, le contrôleur envoie un ordre à la chaudière, que tu vois dans les lois sous cette forme (en vert) :

[19:19:11][I][frisquet.output:079]: Sending frames to boiler : (3, 0) [19:19:12][D][frisquet.output:171]: last message frames: 00 00 7E 03 B9 00 20 00 02 03 00 00 FF 1F FF 00

Peux-tu regarder et voir quelle consigne est envoyée (le deuxième chiffre, là où j’ai 0) ?

Vérifie également dans ta config que tu as bien un minimum_output de défini.
Tu devrais avoir ça dans ton fichier de configuration:

output_parameters:
  minimum_output: 0.1
  output_factor: 1.9
  output_offset: -41

Philippe

Merci pour ton retour Philippe,

Je teste tout ça le weekend prochain en croisant les doigts.

bonne semaine
Loic

J’avance mais ce n’est pas encore ça.

J’ai réussi à compiler dans une machine virtuelle le fichier « chaudiereloic.yaml » pour en faire un fichier bin.
J’ai aussi réussi à tout installer et à mettre les 23 entités dans le dashboard comme ceci :

Comme rien ne se passe, j’ai forcé le « heating » à 24.9° pour que la chaudière se déclenche => rien
J’ai donc déplacé le curseur « Heat Required » à droite => toujours rien.

Dans mon HA, si je clique à gauche sur ESPHome, je n’ai aucun device de présent. En revanche, si je vais dans Settings / Devices & Services, je trouve bien le device « chaudiere ». Je précise que j’ai un RPI3 et que la compilation plante à tous les coups. C’est pour cette raison que j’ai compilé dans une machine virtuelle (sur mon pc).

Pour voir le log, je suis obligé (ou alors je ne vois pas comment faire) de le lire dans l’ESPHome de ma et machine virtuelle et voici ce que ça donne :

Est-ce qu’il est possible que l’ID de la chaudière que j’ai mis ne soit pas la bonne ou alors il s’agit d’un autre problème ?

C’est possible, car côté logs cela semble fonctionner. Vérifie l’ID et aussi le pin utilisé sur l’esp32.

Philippe

En reprenant ta première réponse dans le fil tout en haut, tu indiques qu’il faut mettre l’ID de la chaudière dans ce fichier, ce que je n’ai pas fait. J’ai compris qu’il fallait copier dans le dossier ESPHome uniquement :

  • le dossier commun qui est sur ton Git
  • le dossier components également sur ton Git
  • mettre le fichier secrets.yaml à la racine du dossier ESPHome
    Si c’est ça, le fichier FrisquetBoilerFloatOutput.h doit être déprécié car il n’est pas dans les dossiers commun ou components.

J’ai bon, avec ça ou j’ai oublié de copier des choses ?

1 « J'aime »

C’était vrai au début. Mais maintenant l’ID n’est renseigné que dans le fichier yaml. C’est plus simple comme ça il n’est pas nécessaire de mettre ses doigts dans les fichiers c++.

Le mode d’emploi à suivre est celui du git.

Désolé pour la confusion.
Philippe

Bon, après quelques lectures et tests, ça ne fonctionne toujours pas mais j’ai des infos.

J’arrive maintenant à compiler sans problème vers mon RFLink (kit acheté chez Nodo-Shop) mais le programme ne semble pas fonctionner. Je précise que ce RFLink est branché en USB sur mon ordinateur.

J’ai utilisé le fichier frisquet-ERS-decode-transceiver de ChristopheHD pour trouver l’ID de ma chaudière et voici ce que j’obtiens quand j’écoute les trames et que je bouge le bouton du contrôleur Frisquet :

Trame reçue :7E980C00200000836400FE55FF80
Message #0
ID: 7E-98-C
Mode : Confort
Température eau : 100
Batterie : OK
----------

Si je compile mon fichier yaml en mettant 7E98C pour l’ID de ma chaudière, après la compilation dans les logs, j’ai [07:50:23][C][frisquet.output:059]: Boiler ID: 0x7e98
Si je mets 7E980C (zéroC) ou seulement 7E98, j’obtiens exactement la même chose : Boiler ID: 0x7e98.
Pour être sûr que ce n’était pas un problème de ma part dans la compilation, j’ai essayé en mettant n’importe quoi en tant qu’ID à 4 caractères : ça fonctionne. Après la compilation, j’ai bien Boiler ID: avec mon code à 4 caractères.

J’ai également essayé en mettant comme ID les 4 derniers caractères : 980C. Ça ne fonctionne pas non plus.
Il y a donc probablement un problème avec l’ID de ma chaudière que je n’arrive pas à récupérer.

Les trames arrivent très bizarrement par rapport au script d’Etimou d’après ce que j’ai lu.
J’ai tenté d’utiliser le fichier de etimou ici https://github.com/etimou/frisquet-arduino/blob/main/frisquet-ERS-decode/frisquet-ERS-decode.ino mais ça ne fonctionne pas. Peut-être que c’est mon kit nodo qui n’est pas compatible. J’ai ajouté une ligne pour afficher un Hello World et en compilant, je vois bien Hello World mais rien n’arrive.

@corti23 : j’espère que ça va finir par fonctionner et dans ce cas, tu m’enverras ton RIB pour que je te remercie.

Vous êtes trop top les mecs… c’est super ce que vous avez fait tous !
J’avoue que je veux m’y mettre depuis longtemps mais j’ai installé une clim Daikin au salon et en ouvrant les porte, elle me chauffe les chambre… l’autre jour la Frisquet s’est allumée ??? il fallait que je nettoie les filtres de la clim… Bon aller je m’y colle

J’utilise le travail de corti23 depuis plus d’un an et ça fonctionne toujours très bien :slight_smile:
Mais il faut être un peu patient pour voir la chaudière se déclencher après une commande.
En général il faut bien compter 5mn entre la commande et le déclenchement de la chaudière.
Je ne sais pas si c’est normal, mais chez moi c’est comme ça.
En dehors de cette inertie au démarrage, l’asservissement en température fonctionne parfaitement.

Bonjour @loicb,
Je réponds un peu tard à ton message. En effet, le problème semble être dans la détection et décodage de l’ID de ta chaudière. A ma connaissance, il n’y que 4 caractères hexadécimaux, ce que tu observes est normal quand tu entre 6 caractères, seuls les 4 premiers son pris en compte par mon script.
Désolé de ne pas pouvoir aider plus.

Je pense que le délais de 5 minutes est à voir du coté de la chaudière qui mets du temps parfois à prendre en compte les nouvelles consignes, surtout quand il faut monter la chauffe. Pour arrêter la chaudière, c’est souvent instantané.

Bjr à tous et meilleurs vœux pour cette nouvelle année…
Petite ‹ mauvaise nouvelle ›, les commandes « ne passent pas » sur ma chaudière !!! et c’est bien une radio pilotée… voilà ce que j’ai fait :

  • j’ai récupéré mon code chaudière (avec une uno) 71 2B
  • j’ai installé mon ESP (avec HA et les codes magiques :slight_smile: )
  • j’ai remis le nom des fichiers pour éviter les embrouilles… j’avais un peu adapté les noms…
  • l’ai installé les sondes (mais mon ESP ne les décode pas…)
  • Tout est OK sur HA et sur l’ESP sauf que je n’ai pas compris comment on déclenche les commandes depuis le package (bien installé) mais j’envoi une consigne de chauffe et l’ESP l’envoi bien à la chaudière
  • Après check et re-check, rien n’y fait : j’ai donc vérifié les codes envoyés par mon ESP avec mon uno in situ (pour faire un total check) - c’est OK
    rien du tout !!!
  • j’ai donc remis le uno avec la commande d’origine et je découvre les « sujets » suivants:
    1- un autre code apparait (71 2B ma chaudière mais aussi 5A 69 - en bleu - et j’ai pas de voisin à l’étage !!)
    2- le code de fin est toujours FF 80 avec la télécommande Frisquet or il est à FF 00 sur le code ESP
    3- je ne retrouve pas exactement les 3 trames 01 / 02 / 03 dont parle notre « décodeur »
    4- je ne trouve pas ces 3 trames en émission de l’ESP - en rouge
    5 - je ne comprend pas exactement comment sont formées les trames car, par exemple, les octets sembles êtres lus « à l’envers »
    6 - je ne lis pas toujours les 112 bits (comment fait-on la conversion en octets…)
    Bref quel est mon problèmes - si tu pouvais remettre de l’ordre dans mes idées ???
    merci d’avance
    ci-dessous la trame que j’ai lue
    (j’ai fait un fichier Excel si ca peut intéresser)

El la partie ESP home…


suite

fin…

Bonjour @papipascal

Beaucoup de questions dans ton messages :grinning:

La compilation du composant dans l’ESP semble passer sans problème et le code semble également tourner sans problème d’après les logs.

Pour les sondes Dallas, regarde comment elles sont connectée à l’ESP, si tu as bien mis la résistance de 4,7kOhm entre le pin et le 3,3V.

Ensuite, je n’ai pas bien compris le test que tu as fait. Je comprends que tu as reconnecté un Arduino sur l’antenne réceptrice de l’ERS, mais cela ne colle pas avec certaines de tes questions (notamment la 4).

  1. Ton ID semble bien être 71 2B ou peut-être 51 69. As tu essayé avec cet autre ID ? C’est probablement un voisin éloigné. Chez moi je captais le signal de mon voisin alors que les maisons ne sont pas mitoyennes.

  2. Oui, mon composant envoie FF 00 en épilogue du signal. C’est conforme à la spec Vaillant et au code dont je me suis inspiré. Et ça marche chez moi. En effet, la télécommande ERS envoie FF80 en épilogue. Tu peux essayer de changer ça dans mon code mais je pense que cela n’a pas beaucoup d’importance et que là n’est pas le problème.

  3. Dans ton screenshot, je vois bien les 3 trames (pas toujours), y compris pour ton « voisin ».

  4. Je ne comprends pas ta question. Tu ne peux pas voir les trames de l’ESP si tu connectes l’Arduino à l’antenne de l’ERS car normalement l’ESP est connecté à la chaudière pas à l’antenne.

  5. En effet, selon le protocole Vaillant, chaque octet est écrit à l’envers.

  6. Ca arrive, c’est pour ça qu’il ya trois trames. Comme ça la chaudière en attrape au moins une.

Bon, tout ça, ça ne règle pas ton problème.
Voilà ce que je ferais pour commencer :

  • Vérifier d’abord l’ID avec un Arduino (en mode commande) en envoyant une commande à la chaudière et voir si elle réagit.
  • Vérifier en connectant l’Arduino (en mode decode) à l’ESP et voir si les trames sont bien émises et décodées.

Dis moi comment ça se passe et on avise ensuite.

Philippe

Merci BCP pour ta réponse

Je vais tester tes solutions…

  • envoi de trame avec l’arduino
  • refaire le test en direct ESP sur la chaudière et l’uno en contrôle

sinon, 1- Oui, j’ai bien essayé les 2 codes de chaudières mais tu as raison je regarde avec mon UNO
2- Oui, je suis assez d’accord sur la fin de trame
3- pour les trames, on verra en étape finale
4- je vais refaire le test de lire avec l’UNO les trames de l’ESP sur « site » pour étre sur

  • d’ailleurs en 3.3 v il n’y a pas de soucis pour les seuils de tension ?
    5 - oui bien vu mais effectivement ca ne change rien

Je te tiens au courant - pas avant semaine prochaine !!!

Slts
PAscal

PS: j’ai bien fait fonctionner les commandes du Package : Problème de Yamal (j’ai bien remis la ligne en question sous l’indentation de « Homeassistant » - je l’avais mis en première colonne

Bonjour

Merci pour tout votre travail et le partage effectué.
Je suis en train d’essayer d’installer cette solution en utilisant :

Après configuration de tout cela, j’ai vite rencontré des problèmes de stabilité, avec des reboot toutes les heures.

  1. Une première tentative a été de désactiver la sonde bluetooth mais le problème a persisté.
  2. J’ai ensuite réduit le niveau du logger pour ne pas afficher les infos de debug et ca a permis d’allonger la durée avant reboot (entre 6 et 12h) mais sans la résoudre
  3. J’ai décidé, via le debug component d’ESPHome, de monitorer la mémoire utilisée et j’ai observé ceci.

Les flèches rouges correspondent à des reboot automatiques.

Comme vous pourrez le remarquer, la situation se stabilise à partir de 11h30.
Cela correpond à un nouveau test que j’ai effectué qui consiste à désactiver le climate component heat_curve_climate que vous avez développé.

Tout me porte à croire que ce composant provoque une fuite de mémoire sur mon ESP. Suis-je le seul dans ce cas ? Avez-vous des pistes à étudier ?

Bonne journée,

Bonjour @pafnow

Nous avons en effet observé des reboots fréquents sur ESP8266 mais plus rarement sur ESP32.

Mon composant n’utilise pas particulièrement de mémoire, je ne vois pas où la fuite pourrait être mais je suis preneur si tu trouves la cause dans mon code. Cela étant dit, le composant climate dont je derive ma classe écrit beaucoup dans la mémoire flash. Cela peut-être une des causes de reboot. On peut limiter ces écritures en ajoutant ces lignes dans le fichier yaml (merci @erwan33fr ) :

preferences:
  flash_write_interval: 72h

Tu peux mettre la durée que tu souhaites, pas nécessairement 72h.
Regarde si cela a un effet sur tes reboots.

EDIT
Je viens de regarder plus en détail mon ESP avec le composant debug. Il y a en effet une perte de 150 / 200 octets toutes les 4 minutes, à chaque fois qu’il y a une emission vers la chaudière. Le composant climate me semble hors de cause. Je vais regarder de plus près frisquet_boiler pour comprendre.

1 « J'aime »

Bonjour @pafnow
Bonjour à tous,

J’ai trouvé la fuite de mémoire, c’est corrigé.
Je viens de pousser un patch sur GitHub.

Philippe

1 « J'aime »

Bonjour à tous,
J’ai également des reboots cycliques de mon ESP8266 (d1_mini).

Je vais tester rapidement le patch :slight_smile:

Est-ce que tu pourrais nous en dire plus sur la correction du fichier frisquet_boiler.cpp ?

Encore merci pour ce super ESPHome component :+1: