Suite de la discussion depuis Pilotage Chaudière Frisquet ECO Radio System Visio (Suite) (partie 1) - #1005 par DomoYop.
Discussions précédentes :
Suite de la discussion depuis Pilotage Chaudière Frisquet ECO Radio System Visio (Suite) (partie 1) - #1005 par DomoYop.
Discussions précédentes :
Hello !
Bon, pour la version ZigBee, je peux dire officiellement dire que la v0 est prête.
Après avoir lu tout le travail fait sur les deux précédents sujets du forum
J’ai d’abord voulu m’assurer de comprendre en détail tout le fonctionnement du protocole, j’avais donc commencé naturellement par la couche radio avec un dongle RTL-SDR :
J’avais utilisé inspectrum pour valider les paramètres de la modulation FSK et décoder les bits :
Je me suis fait d’ailleurs la réflexion que les sync word (ou Network ID) utilisés par Frisquet commencent toujours par des bits à zéro, certainement pour faciliter la reconnaissance de la fin du préambule.
Un autre outil, Universal Radio Hacker, était également d’une aide précieuse, car permettait d’éditer et d’aligner facilement le décodage du signal.
Cela m’a permis de valider par exemple que le préambule était bien 5 octets 0xAA (donc une suite de 10 et non pas 01).
L’onglet analyse permet également de définir le protocole de façon rudimentaire et de décoder automatiquement une suite d’échanges :
À ce stade, j’avais compris que les échanges étaient essentiellement des simples lectures / écritures des registres, j’avais donc proposé ici le fichier Google Sheet pour mettre en commun les connaissances sur la signification des registres.
Comme j’avais tout fait en Zigbee chez moi, je ne me voyais pas utiliser du Wi-Fi pour contrôler la chaudière. Je suis donc parti sur un kit de développement EFR32xG26 de Silicon Labs, qui sont leader sur le marché des puces ZigBee.
J’aurais peut-être pu utiliser une puce Espressif à la place, qui sont arrivés récemment sur ce marché, mais j’avais préféré profiter de la maturité de Silicon Labs pour m’éviter des surprises.
Finalement, j’étais tout de même pas mal déçu du manque de qualité des outils proposés par Silicon Labs. Le SDK ZigBee est certes très complet, mais les outils ne manquent pas de bugs obscurs, la documentation éparpillée entres des PDFs et 2 sites web différents, sans compter les différentes versions des outils et des SDKs qui se retrouvent tous en doublon…
D’ailleurs, il y a quelques semaines, Silicon Labs se sont fait racheter par Texas Instruments ! J’espère que cette fusion leur permettra d’améliorer leur “expérience développeur”.
Pour en revenir donc au projet. Le développement se fait via un outil propriétaire, qui s’appelle Simplicity Studio 6. L’outil permet de générer des fichiers en sélectionnant des composants du SDK et en les configurant dans l’interface dédiée.
Il y a également de nombreux sous-outils, notamment pour assigner les différentes pins du processeur :
Ou encore pour configurer les clusters & attributs ZigBee :
Pour permettre les mises à jour OTA, l’espace mémoire est divisé entre le bootloader (qui gère les mises à jour), le firmware flashé, et un espace permettant de stocker la nouvelle version du firmware. Sur les 1500 Ko de la flash disponible, je me trouve donc avec environ 700 Ko d’espace utilisable pour le code du firmware.
Pour communiquer avec la chaudière, j’ai acheté un module Wio-SX1262 déjà certifié CE. Je voulais également avoir un capteur de température et d’humidité embarqué fiable et précis, j’ai opté pour un SHT-31.
SHT-31 fonctionnant en I2C et SX1262 en SPI, j’ai du aussi brancher un analyseur logique pour m’assurer que tout est câble et configuré correctement :
J’ai utilisé le driver officiel de Semtech car l’utilisation de RadioLib avec ma puce Silicon Labs n’était pas supportée de base et écrire les fichiers HAL pour RadioLib s’est révélé bien plus laborieux que pour le petit driver sx126x.
Et puis les drivers sx126x s’est plus marrant, on peut faire un peu n’importe quoi, comme dessiner des sinusoïdes dans le spectre radio :
(ne pas reproduire à la maison… c’est illégal sans cage faraday & limitation de puissance émise)
J’ai failli faire un side-quest pour essayer d’implémenter une radio AM avec le SX1262 mais fort heureusement je suis rapidement revenu à la raison, j’avais tout le bus SPI à faire et des signaux IRQ du SX1262 à gérer avec des notifications FreeRTOS :
J’ai pu mettre à profit mes nouvelles compétences en SX1262 pour écouter les chaudières du village, sans avoir besoin de connaître le sync work (network ID), et ainsi prendre un peu l’air avec une petite balade en voiture sans attirer la moindre attention :
Je me suis dit que si je pouvais me cloner, il aurait été intéressant de faire un réseau d’antennes pour pouvoir localiser les signaux des chaudières Frisquet, et ainsi savoir exactement dans quelles maisons elles étaient installées.
Je n’aurais ainsi nul besoin de payer Google Adsense, j’aurais une solution de prospection souveraine et made in France. Et puis je n’aurais plus qu’à mettre les prospectus au bon endroit pour battre sowee à leur propre jeu.
J’ai du une fois de plus me reconcentrer sur le firmware pour structurer le projet, définir une liste des registres connus, des codecs pour encoder et décoder les différents types de valeurs, les plages de registres définissant des fonctionnalités entières, les différentes commandes découvertes pour manipuler les registres, associer la chaudière ou lui envoyer des messages, ainsi que tout le protocole réseau, puis le protocole radio, en séparant toutes les couches, un peu comme à l’école quand on apprend le modèle OSI.
À mi-janvier, j’avais donc un firmware qui parlait à Home Assistant à travers Zigbee2MQTT et mon tas de fils sur un bout de table qui validaient ensemble le “prototype”.
Vint la délicate étape de fabrication du PCB, qui a consisté essentiellement à lire des pages interminables de datasheets pour sélectionner les composants les plus adaptés. Je voulais quelque chose de simple et robuste à la fois pour minimiser le risque d’erreur.
En plus du capteur, MCU et du module RF, j’avais juste besoin de quelques boutons de contrôle et LEDs en guise d’interface utilisateur :
Pour l’alimentation, je me suis payé le luxe d’avoir une batterie lithium intégrée avec un chargeur USB :
Pour le PCB, j’aurais pu faire quelque chose de plus petit, mais le format 9x6 cm me permettait de me projeter sur une version avec écran à venir peut-être plus tard :
Le module RF ZigBee avait une antenne embarquée, mais pour le SX1262, j’ai du laisser de l’espace sans cuivre sur un côté du PCB pour loger une antenne dédiée.
Pendant que les PCB était en cours de fabrication en Europe de l’est et en Chine (pour avoir une idée des prix et des délais), je me suis attaqué au boitier.
Je me suis donc procuré de deux imprimantes SLA (avec une seule je n’avançais pas assez vite) pour faire des impressions en résine. J’ai du condamner une pièce entière et installer une VMC dédiée pour éviter que les vapeurs toxiques ne se propagent dans la maison.
Les premiers résultats étaient pour le moins décevants… En grande partie parce que j’ai mis pas mal de temps à comprendre que le fonctionnement des supports était fondamentalement différent des imprimantes à filament.
Je vous passe tous les détails des problèmes sans fin d’impression que j’ai eu, voici par exemple un échantillon de différents essais :
Entre temps, est arrivé le PCB… le premier allumage était sans doute le moment le plus stressant du projet :
Quel bonheur de tester un à un les composants pour se rendre compte que tout fonctionne parfaitement, après tant d’heures à travailler dessus !
Avec le PCB, j’ai pu tester les différentes options pour les LEDs et les boutons. Les LEDs se voient très bien avec un simple trou et un tunnel pour canaliser la lumière.
Pour les boutons, je voulais initialement que la déformation du plastique suffise à appuyer sur le switch qui est en dessous, mais cette méthode ne permettait pas d’avoir un clic suffisamment net pour comprendre si on avait bien appuyé sur le bouton ou non. J’ai donc fini par dessiner des vrais boutons :
J’arrive aujourd’hui à faire des boîtiers corrects, ce n’est peut-être pas encore parfait comme je l’aurais voulu, mais le résultat me paraît acceptable.
L’impression après une modification du fichier 3D reste un peu trop longue, car pour vraiment réussir une impression, je suis obligé de créer les supports manuellement pour avoir des points d’attache au bon endroit pour éviter les déformations, et pour éviter le ponçage aux endroits visibles :
Mais à la fin, je suis assez content du résultat :
Si le projet vous intéresse et/ou vous souhaitez me soutenir, vous pouvez l’acheter (utiliser le code HACF permet d’avoir une réduction). La notice est disponible en ligne. Il ne me reste que quelques pièces mais je prépare bientôt un nouveau lot.
Et si vous avez des suggestions ou des idées pour la suite, je suis preneur !
Suite du sujet Pilotage Chaudière Frisquet ECO Radio System Visio (Suite) (partie 1) :
Je pourrais aussi faire une version Thread / Matter si tu as déjà une passerelle compatible (c’est juste une màj firmware)
Beau boulot, belle intégration ! ça va en intéresser quelques-uns, mais attention à la réaction de monsieur Frisquet…
Juste une petite remarque sur le début de la description qui donne l’impression d’oublier qu’une grosse partie de ce boulot avait déjà été fait (cf le 1er thread). Par exemple on avait déjà utilisé une clef SDR et on avait déjà identifié que c’était essentiellement des lectures/écritures de registre, je crois même que c’était moi d’ailleurs
.
Du coup je trouve qu’il manque un petit mot pour les défricheurs…
Merci ! Je suis sur que M Frisquet serait ravi de savoir ce que l’on peut faire avec ses chaudières.
Ce n’était pas prévu d’en faire un nouveau topic ; le sujet précédent était clos automatiquement ; j’ai ajouté des liens sur les 2 topics pour mieux référencer l’historique. Tu étais l’un des précurseurs qui ont “déchiffré” Frisquet. Merci pour tes contributions et celles de tous ceux qui ont fait vivre le sujet.
Après je pourrais essayer de référencer les contributions de chacun dans la compréhension du sujet mais cela risque d’être périlleux pour n’oublier personne…
Z’avaient qu’a activer le cryptage au niveau radio ça aurait fortement compliqué les choses…![]()
@Freedom:
La brochure disait que l’efficacité de la chaudière ne peut pas atteindre 109 %, par exemple 27,3 kW, mais j’ai du mal à croire que 28,3 kW soit un chiffre fiable. C’est soit la dérive du capteur, soit le nombre de chauffage au gaz. Pouvez-vous vérifier votre consommation de gaz naturel à l’heure ou quotidiennement ?
Je pense qu’il s’agit de la consommation de gaz instantanée. Je ne peux pas tester en direct malheureusement mais ça me semble le plus cohérent.
Pouvez-vous ajouter ce point à MQTT ? Je peux vérifier avec mon historique de consommation d’essence chez Gazpar
Bonjour,
Je suis entrain de tester Freezbee la passerelle domotique ZigBee pour les chaudières Frisquet Eco Radio Visio, créée par @Sacha.
Je suis assez impressionné par la qualité de fabrication du produit.
L’installation s’est faite très simplement, il suffit de suivre la petite documentation en ligne (5 min), tout remonte immédiatement dans home assistant, tout comme n’importe quel produit du marché. C’est très agréable.
Le firmware est encore jeune. il manque pas mal d’informations, mais @Sacha a prévu de faire mises à jour très bientôt.
Ce que je trouve admirable, c’est qu’on a des personnes en France qui sont encore capables de développer des produits électroniques de bout en bout.
On a aussi une communauté qui a permis tout ça, et donc je remercie tout ceux qui ont rendu ça possible ! Cocorico ![]()
Je tenais à remercier un message de @Mastereur car il m’a permis de résoudre mes problèmes de mauvais ID de chaudière et de mauvaise date dans les logs (1970). Le problème était lié au fait d’avoir enlevé la box connect. Il fallait tout simplement supprimer toutes les traces de l’ancienne configuration sur le micro-controlleur.
Depuis tout fonctionne à merveille.
Bonjour à tous,
Merci pour ce travail incroyable. C’est réellement bluffant.
Je suis l’heureux propriétaire d’une Eco Visio de 32kW. J’ai acheté un heltecV3 et suivi les modes opératoires pour compiler avec VSC sur Mac.
J’avais un satellite que j’ai dissocié de ma chaudière et j’ai tenté le remplacer par le heltec. Je passe la chaudière en mode appairage => tout va bien.
Sur le Heltec, je peux récupérer le NetwordId, je passe en “Activer Connect”, le bouton “Associer le Connect” apparait je clique dessus.
Et là rien, en bas de l’application, j’ai une erreur qui dit “Erreur association Connect : Connect désactivé dans la configuration”.
Quelqu’un a une idée?
Je vous remercie d’avance de votre aide.
il faut Activer Connect et enregistrer . ensuite associer.
Merci, grand chef. Je vais tester cela ce soir. Bravo pour le travail réalisé. Que du talent.
A+
Je relance une bouteille à la mer ! Quelqu’un en possession d’un Connect et utilisant le Haltes serait OK pour m’aider à récupérer les logs lors d’une anomalie ? Je n’ai pas le comportement du Connect dans ces cas là
. Je souhaiterai dans l’idéal un accès très temporaire au portail Heltec … merci
!
Je pourrais t’aider à partir de demain, j’ai reçu le kit pour convertir ma chaudière en version Connect
Ah super ! Merci bien
!
Re-Hello à tous,
Merci Freedom pour ton message de tout à l’heure, j’ai pu avancer. Mais, je n’arrive pas à connecter ma chaudière Visio Connect 32kW.
Voici mon mode opératoire:
I - Effacement de la flash
Mon Heltec est physiquement connecté et VSC n’est pas lancé.
Avec Chrome, je vais sur ESP Tool
Je connecte logiciellement mon Heltec (bouton bleu “Connect”), je choisis le port et j’efface la flash (bouton rouge “Erase Flash”). Enfin, je déconnecte logiciellement le Heltec (bouton orange “Disconnect”)
II - Programmation du Heltec
Je lance VSC, je choisis mon projet, je “Build”. Puis je ‘Upload and monitor”.
III - Configuration avec le point d’accès
Je me connecte au réseau Wifi créé par le Heltec (SSID OpenFrisquetVisio-Setup, mot de passe frisquetconfig)
Avec un browser (Safari ou Chrome), je configure le Heltec:
-Nom
-Paramètres réseau
-Paramètres MQTT
-Et surtout cocher la case “Activer Connect” (merci Freedom)
Je sauvegarde et le Heltec redémarre.
IV - Lancement de l’association
Je vais dans les menus de ma magnifique chaudière et je lance l’association sur celle-ci
Le Heltec s’est connecté au Wifi et je me connecte dessus avec l’adresse précédemment renseignée.
J’appuis sur le bouton “Récupérer” et je récupère le NetworkID
J’appuie sur le bouton “Associer le Connect” et le message m’indiquant que c’est pris en compte s’affiche:
Rien ne bouge sur la chaudière et les logs de VSC sont :
[INFO][1970-01-01 00:00:00] [WIFI] Connexion au WiFi...
[INFO][1970-01-01 00:00:01] [WIFI] CONNECTED IP=192.168.0.8 RSSI=-83dBm
[INFO][1970-01-01 00:00:01] [WiFi] Connexion établie.
[INFO][1970-01-01 00:00:01] [PORTAIL] Serveur HTTP démarré
[INFO][1970-01-01 00:00:01] [PORTAIL] Portail initialisé.
[INFO][1970-01-01 00:00:01] [MQTT] Initialisation du device MQTT.
[ 1589][E][Preferences.cpp:503] getBytesLength(): nvs_get_blob len fail: tempConfort NOT_FOUND
[ 1603][E][Preferences.cpp:503] getBytesLength(): nvs_get_blob len fail: tempReduit NOT_FOUND
[ 1612][E][Preferences.cpp:503] getBytesLength(): nvs_get_blob len fail: tempHorsGel NOT_FOUND
[ 1620][E][Preferences.cpp:503] getBytesLength(): nvs_get_blob len fail: tempBoost NOT_FOUND
[ 1629][E][Preferences.cpp:503] getBytesLength(): nvs_get_blob len fail: tempAmbiante NOT_FOUND
[ 1637][E][Preferences.cpp:503] getBytesLength(): nvs_get_blob len fail: tempConsigne NOT_FOUND
[ 1646][E][Preferences.cpp:503] getBytesLength(): nvs_get_blob len fail: prog NOT_FOUND
[INFO][1970-01-01 00:00:01] [CHAUDIERE][MQTT] Initialisation des entités.
[ 40819][E][WebServer.cpp:638] _handleRequest(): request handler not found
[ 40897][E][WebServer.cpp:638] _handleRequest(): request handler not found
[ 41712][E][WebServer.cpp:638] _handleRequest(): request handler not found
[INFO][1970-01-01 00:01:56] [PORTAIL] Demande de récupération du NetworkID
[RADIO][1970-01-01 00:01:57] [RX][11] 00 80 29 C4 02 41 04 00 27 43 E2
[INFO][1970-01-01 00:01:57] [DEVICE] Réception trame d'association
[INFO][1970-01-01 00:01:57] [DEVICE] Récupération du NetworkID : 00 27 43 E2.
[INFO][1970-01-01 00:01:57] [RADIO] Réception données radio : 11 bytes
[RADIO][1970-01-01 00:01:57] [RX][11] 00 80 29 C4 02 41 04 00 27 43 E2
[INFO][1970-01-01 00:02:49] [PORTAIL] Demande d'association du module Connect
[RADIO][1970-01-01 00:02:49] [RX][11] 00 80 43 8C 02 41 04 00 27 43 E2
[INFO][1970-01-01 00:02:49] [DEVICE] Réception trame d'association
[INFO][1970-01-01 00:02:49] [DEVICE] Récupération du NetworkID : 00 27 43 E2.
[INFO][1970-01-01 00:02:49] [DEVICE] Récupération de l'association ID : 43.
[RADIO][1970-01-01 00:02:49] [TX][10] 80 7E 43 8C 82 41 00 27 43 E2
[INFO][1970-01-01 00:02:50] [PORTAIL] Association réussie.
[INFO][1970-01-01 00:02:50] [RADIO] Réception données radio : 11 bytes
[RADIO][1970-01-01 00:02:50] [RX][11] 80 7E 43 8C 82 41 00 27 43 E2 E2
[INFO][1970-01-01 00:02:50] [CONNECT] Récupération des températures...
[RADIO][1970-01-01 00:02:50] [TX][10] 80 7E 43 01 01 03 79 E0 00 1C
[RADIO][1970-01-01 00:02:52] [TX][10] 80 7E 43 01 01 03 79 E0 00 1C
[RADIO][1970-01-01 00:02:54] [TX][10] 80 7E 43 01 01 03 79 E0 00 1C
[RADIO][1970-01-01 00:02:56] [TX][10] 80 7E 43 01 01 03 79 E0 00 1C
[RADIO][1970-01-01 00:02:58] [TX][10] 80 7E 43 01 01 03 79 E0 00 1C
[RADIO][1970-01-01 00:03:00] [TX][10] 80 7E 43 02 01 03 79 E0 00 1C
[RADIO][1970-01-01 00:03:02] [TX][10] 80 7E 43 02 01 03 79 E0 00 1C
[RADIO][1970-01-01 00:03:05] [TX][10] 80 7E 43 02 01 03 79 E0 00 1C
[RADIO][1970-01-01 00:03:07] [TX][10] 80 7E 43 02 01 03 79 E0 00 1C
[RADIO][1970-01-01 00:03:09] [TX][10] 80 7E 43 02 01 03 79 E0 00 1C
[ERROR][1970-01-01 00:03:11] [CONNECT] Échec de la récupération des températures.
[INFO][1970-01-01 00:03:11] [CONNECT] Récupération des consommations...
[RADIO][1970-01-01 00:03:11] [TX][10] 80 7E 43 03 01 03 7A 18 00 1C
[RADIO][1970-01-01 00:03:13] [TX][10] 80 7E 43 03 01 03 7A 18 00 1C
[RADIO][1970-01-01 00:03:15] [TX][10] 80 7E 43 03 01 03 7A 18 00 1C
[RADIO][1970-01-01 00:03:17] [TX][10] 80 7E 43 03 01 03 7A 18 00 1C
[RADIO][1970-01-01 00:03:20] [TX][10] 80 7E 43 03 01 03 7A 18 00 1C
[RADIO][1970-01-01 00:03:22] [TX][10] 80 7E 43 04 01 03 7A 18 00 1C
[RADIO][1970-01-01 00:03:24] [TX][10] 80 7E 43 04 01 03 7A 18 00 1C
[RADIO][1970-01-01 00:03:26] [TX][10] 80 7E 43 04 01 03 7A 18 00 1C
[RADIO][1970-01-01 00:03:28] [TX][10] 80 7E 43 04 01 03 7A 18 00 1C
[RADIO][1970-01-01 00:03:30] [TX][10] 80 7E 43 04 01 03 7A 18 00 1C
[INFO][1970-01-01 00:03:33] [CONNECT] Récupération du mode ECS...
[RADIO][1970-01-01 00:03:33] [TX][10] 80 7E 43 05 01 03 A0 FC 00 01
[RADIO][1970-01-01 00:03:35] [TX][10] 80 7E 43 05 01 03 A0 FC 00 01
[RADIO][1970-01-01 00:03:37] [TX][10] 80 7E 43 05 01 03 A0 FC 00 01
[RADIO][1970-01-01 00:03:39] [TX][10] 80 7E 43 05 01 03 A0 FC 00 01
[RADIO][1970-01-01 00:03:41] [TX][10] 80 7E 43 05 01 03 A0 FC 00 01
[RADIO][1970-01-01 00:03:43] [TX][10] 80 7E 43 06 01 03 A0 FC 00 01
[RADIO][1970-01-01 00:03:45] [TX][10] 80 7E 43 06 01 03 A0 FC 00 01
[RADIO][1970-01-01 00:03:46] [TX][10] 80 7E 43 06 01 03 A0 FC 00 01
[RADIO][1970-01-01 00:03:48] [TX][10] 80 7E 43 06 01 03 A0 FC 00 01
[RADIO][1970-01-01 00:03:50] [TX][10] 80 7E 43 06 01 03 A0 FC 00 01
[ERROR][1970-01-01 00:03:52] [CONNECT] Récupération impossible
[INFO][1970-01-01 00:03:52] [RADIO] Réception données radio : 114 bytes
[RADIO][1970-01-01 00:03:52] [RX][114] F2 2A AA AA 9F 7F DC FF F7 EB 1A F5 BF D7 3E AA 2D DB FE D7 EF 3D FF FF BA DF 7F BB F3 FE 2F B7 FF F7 FD F3 BF F9 F2 D9 58 75 DD 9F FF A5 7C EE FC F6 3F F5 EB EF 55 9E C3 ED FB FF E
Je ne dois pas être loin du bonheur.
Quelqu’un a une idée?
En vous remerciant de votre aide.
La chaudière a bien confirmé l’association du Connect ? Et as-tu tout simplement redémarrer le Heltec depuis l’association ? Active le mode passif et regarde si tu vois d’autre trame arriver sur une dizaine de minute. Ça permettra de savoir si le networkID est en cause ou non
. Tu peux regarder les logs via le portail directement au lieu de l’USB (si jamais
)
Hello Freedom,
Rien ne se passe sur la chaudière. J’ai toujours le même écran “Appuyer 4 secondes…”.
J’ai refait la manip plusieurs fois après avoir éteint/rallumé la chaudière.
Au bout d’un moment la chaudière retourne à l’écran d’accueil avec le message ponctuel indiquant qu’il n’y a pas de satellite de connecté.
A ta dispo pour faire des manips.
A+