Hello.
J’avance lentement.
Je me dis que c’est une peu usine à gaz. Finalement c’est plus un défi que je me suis lancé mais pas forcément une amélioration intéressante.
Par contre, @SebCaps j’ai vu ton PR et ça semble prometteur. Bravo.
@BmD_Online merci. Pareil que toi une sorte de défi, d’autant plus que je n’ai pas encore réussi à récuperer les info du chauffe eau donc assez inutile pour le moment (pour moi en tt cas), mais je ne désespère pas ![]()
Bonjour, j’ai un atlantic calypso sur socle, que j’utilise avec un bridge sauter ; je suis très intéressé par le projet, j’ai une première question @Hugot : c’est quoi la différence entre un atlantic calypso et un explorer ? de visu ce sont les mêmes modèles, est-ce une différence de dénomination entre la france et la belgique ? Et au final as tu réussi à piloter ton atlantic via ha ?
Merci par avance de vos réponses
saisissez ou collez du code ici
hello,
Auriez-vous encore à disposition 1 pcb et les composants (excepter l’Arduino) à vendre?
D’avance merci,
Bonjour,
Quelques nouvelles.
Le travaille du concepteur est super et nous permettra bientôt d’avoir une version aboutie.
Les pertes de paquets empêchent certaines communication entre le IHM et le chauffe eau. Mais c’est résolu. Il subsiste quelques pertes, et c’est en investigation.
Pour ce qui est du partage de ma version.
Il n’y a aucun soucis. Je peux même fournir certains composants, car acheté par 10. Par contre, il faut savoir que je n’utilise pas le même ESP32 que certains d’entre vous. J’utilise une des versions les moins cher de Aliexpress. Je pourrai vous donner la référence car si vous n’utilisez pas la même version que moi, il y aura des problèmes de compatibilité.
Au niveau des connecteurs aussi. J’ai fait une version ultra simple, car j’ai simplement coupé les fils d’origine.
Je peux éventuellement voir pour faire une version avec les connecteurs qui vous arrangent, mais je préviens qu’il faudra être un peu patient.
Salut,
Merci pour ton retour.
Super pour le travail en collaboration avec le développeur pour enrayer cette perte de paquet !
Pour le modèle d’ESP32, si je met un Arduino officiel ça va foirer ?
Le développeur travaille sur une version pour un Arduino officiel ?
En effet, je préférerais conserver les connecteurs, question de garantie en autre…
Super taf en tout cas !
Salut,
Je Reviens aux nouvelles car le sujet n’est plus très actif on dirait ?
Salut,
Une petite baisse de température sur le sujet, je l’avoue ;-).
Petite baisse uniquement…
Hello, as-tu tenté de le connecter via ce projet ?
J’ai le même modèle et j’arrive jamais à le connecter à Cozytouch …
Salut à tous,
Ayant fait fabriquer la version 2 du PCB ; je peux confirmer / témoigner que cette version est pleinement fonctionnelle avec les chauffe eau Atlantic Calypso en version E/F (sans unité extérieur).
Quel setup de pro !
L’essentiel est dans le résultat
Merci à tous et tout particulièrement :
- @tukutt pour l’adaptateur (maintenant porté directement sur le PCBv2)
- @Arrnooo pour l’idée de la nouvelle conception de PCB (largement + simple)
- @BmD_Online pour le portage sur clone chinois et le support durant toutes nos tentatives
- @Jean-Marc_Collin & @Quentin57520 pour leur patience

Petit message « commercial » : il me reste 1 PCB V2 et 3PCB V1.
MP pour les personnes intéressés ![]()
Salut,
Pour le montage du projet sur Visual Studio, tu as utilisé les nouveaux fichiers du github ?
J’ai une floppé d’erreurs quand je veux build le projet après avoir modifier le fichier Exampleconfiguration.h en renseignant mes informations :
PS C:\Users\Dark-\Documents\PlatformIO\Projects\AquaMQTT> pio run -e arduino_nano_esp32
Processing arduino_nano_esp32 (framework: arduino; platform: https://github.com/pioarduino/platform-espressif32/releases/download/51.03.05/platform-espressif32.zip; board: arduino_nano_esp32)
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/arduino_nano_esp32.html
PLATFORM: Espressif 32 (51.3.5) > Arduino Nano ESP32
HARDWARE: ESP32S3 240MHz, 320KB RAM, 16MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, dfu, esp-bridge, esp-builtin, esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES:
- framework-arduinoespressif32 @ 3.0.5
- framework-arduinoespressif32-libs @ 5.1.0+sha.33fbade6b8
- tool-dfuutil-arduino @ 1.11.0
- tool-esptoolpy @ 4.7.5
- tool-mklittlefs @ 3.2.0
- tool-riscv32-esp-elf-gdb @ 11.2.0+20220823
- tool-xtensa-esp-elf-gdb @ 11.2.0+20230208
- toolchain-riscv32-esp @ 12.2.0+20230208
- toolchain-xtensa-esp32s3 @ 12.2.0+20230208
LDF: Library Dependency Finder -> https://bit.ly/configure-pio-ldf
LDF Modes: Finder ~ chain, Compatibility ~ soft
Found 48 compatible libraries
Scanning dependencies...
Dependency Graph
|-- RingBuffer @ 1.0.5
|-- FastCRC @ 1.41.0
|-- Time @ 1.6.1
|-- MQTT @ 2.5.2
|-- Adafruit BusIO @ 1.16.1
|-- RTClib @ 2.1.4
|-- Wire @ 3.0.5
|-- SPI @ 3.0.5
|-- SimpleKalmanFilter @ 0.2.0+sha.77372f5
|-- ArduinoJson @ 7.2.0
|-- ArduinoOTA @ 3.0.5
|-- AtlanticSerialProtocol
|-- WiFi @ 3.0.5
Building in release mode
Compiling .pio\build\arduino_nano_esp32\src\buffer\FrameBuffer.cpp.o
Compiling .pio\build\arduino_nano_esp32\src\handler\RTC.cpp.o
Compiling .pio\build\arduino_nano_esp32\src\main.cpp.o
Compiling .pio\build\arduino_nano_esp32\src\message\legacy\MainEnergyMessage.cpp.o
Compiling .pio\build\arduino_nano_esp32\src\message\legacy\MainStatusMessage.cpp.o
In file included from src/buffer/FrameBuffer.cpp:1:
include/buffer/FrameBuffer.h:12:63: error: expected ')' before 'channel'
12 | explicit FrameBuffer(aquamqtt::message::FrameBufferChannel channel);
| ~ ^~~~~~~~
| )
include/buffer/FrameBuffer.h:39:24: error: 'FrameBufferChannel' in namespace 'aquamqtt::message' does not name a type
39 | aquamqtt::message::FrameBufferChannel mChannel;
| ^~~~~~~~~~~~~~~~~~
In file included from src/buffer/FrameBuffer.cpp:5:
include/state/DHWState.h:53:38: error: 'aquamqtt::message::FrameBufferChannel' has not been declared
53 | void updateFrameBufferStatistics(message::FrameBufferChannel source, BufferStatistics statistics);
| ^~~~~~~
include/state/DHWState.h:55:47: error: 'aquamqtt::message::FrameBufferChannel' has not been declared
55 | BufferStatistics getFrameBufferStatistics(message::FrameBufferChannel source);
| ^~~~~~~
include/state/DHWState.h:67:31: error: 'aquamqtt::message::FrameBufferChannel' has not been declared
67 | void debugAddToDropBuffer(message::FrameBufferChannel source, int val);
| ^~~~~~~
include/state/DHWState.h:69:32: error: 'aquamqtt::message::FrameBufferChannel' has not been declared
69 | size_t debugTakeDropBuffer(message::FrameBufferChannel source, uint8_t* buffer);
| ^~~~~~~
src/buffer/FrameBuffer.cpp:12:32: error: 'FrameBufferChannel' does not name a type
12 | FrameBuffer::FrameBuffer(const FrameBufferChannel channel)
| ^~~~~~~~~~~~~~~~~~
src/buffer/FrameBuffer.cpp:12:1: error: no declaration matches 'FrameBuffer::FrameBuffer(int)'
12 | FrameBuffer::FrameBuffer(const FrameBufferChannel channel)
| ^~~~~~~~~~~
include/buffer/FrameBuffer.h:9:7: note: candidates are: 'constexpr FrameBuffer::FrameBuffer(const FrameBuffer&)'
9 | class FrameBuffer
| ^~~~~~~~~~~
include/buffer/FrameBuffer.h:9:7: note: 'FrameBuffer::FrameBuffer()'
include/buffer/FrameBuffer.h:9:7: note: 'class FrameBuffer' defined here
src/buffer/FrameBuffer.cpp:16:5: error: mixing declarations and function-definitions is forbidden
16 | , mChannel(channel)
| ^
src/buffer/FrameBuffer.cpp:16:15: error: expected constructor, destructor, or type conversion before '(' token
16 | , mChannel(channel)
| ^
src/buffer/FrameBuffer.cpp: In member function 'int FrameBuffer::pushByte(int)':
src/buffer/FrameBuffer.cpp:61:58: error: 'mChannel' was not declared in this scope
61 | DHWState::getInstance().debugAddToDropBuffer(mChannel, retVal);
| ^~~~~~~~
src/buffer/FrameBuffer.cpp: In member function 'int FrameBuffer::handleFrame()':
src/buffer/FrameBuffer.cpp:127:68: error: 'PROTOCOL_ODYSSEE' was not declared in this scope
127 | if (protocolVersion == PROTOCOL_NEXT || protocolVersion == PROTOCOL_ODYSSEE)
| ^~~~~~~~~~~~~~~~
src/buffer/FrameBuffer.cpp:205:17: error: 'mChannel' was not declared in this scope
205 | if (mChannel == FrameBufferChannel::CH_LISTENER && config::DEBUG_PUBLISH_FRAME_TIMING_IN_LISTENER_MODE)
| ^~~~~~~~
src/buffer/FrameBuffer.cpp:205:29: error: 'FrameBufferChannel' has not been declared
205 | if (mChannel == FrameBufferChannel::CH_LISTENER && config::DEBUG_PUBLISH_FRAME_TIMING_IN_LISTENER_MODE)
| ^~~~~~~~~~~~~~~~~~
src/buffer/FrameBuffer.cpp:227:32: error: 'EXTRA_MESSAGE_IDENTIFIER' was not declared in this scope
227 | || (frameId == EXTRA_MESSAGE_IDENTIFIER && mHandle217))
| ^~~~~~~~~~~~~~~~~~~~~~~~
src/buffer/FrameBuffer.cpp: In member function 'bool FrameBuffer::isSync()':
src/buffer/FrameBuffer.cpp:260:14: error: 'PROTOCOL_ODYSSEE' was not declared in this scope
260 | case PROTOCOL_ODYSSEE:
| ^~~~~~~~~~~~~~~~
src/buffer/FrameBuffer.cpp:261:76: error: 'HMI_MESSAGE_LENGTH_ODYSSEE' was not declared in this scope
261 | return ((mBuffer[0] == HMI_MESSAGE_IDENTIFIER && mBuffer[1] == HMI_MESSAGE_LENGTH_ODYSSEE)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
src/buffer/FrameBuffer.cpp:262:80: error: 'MAIN_MESSAGE_LENGTH_ODYSSEE' was not declared in this scope
262 | || (mBuffer[0] == MAIN_MESSAGE_IDENTIFIER && mBuffer[1] == MAIN_MESSAGE_LENGTH_ODYSSEE)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
src/buffer/FrameBuffer.cpp:263:82: error: 'ENERGY_MESSAGE_LENGTH_ODYSSEE' was not declared in this scope
263 | || (mBuffer[0] == ENERGY_MESSAGE_IDENTIFIER && mBuffer[1] == ENERGY_MESSAGE_LENGTH_ODYSSEE)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/buffer/FrameBuffer.cpp:264:81: error: 'ERROR_MESSAGE_LENGTH_ODYSSEE' was not declared in this scope
264 | || (mBuffer[0] == ERROR_MESSAGE_IDENTIFIER && mBuffer[1] == ERROR_MESSAGE_LENGTH_ODYSSEE)
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/buffer/FrameBuffer.cpp:265:39: error: 'EXTRA_MESSAGE_IDENTIFIER' was not declared in this scope
265 | || (mBuffer[0] == EXTRA_MESSAGE_IDENTIFIER && mBuffer[1] == EXTRA_MESSAGE_LENGTH_ODYSSEE));
| ^~~~~~~~~~~~~~~~~~~~~~~~
src/buffer/FrameBuffer.cpp:265:81: error: 'EXTRA_MESSAGE_LENGTH_ODYSSEE' was not declared in this scope
265 | || (mBuffer[0] == EXTRA_MESSAGE_IDENTIFIER && mBuffer[1] == EXTRA_MESSAGE_LENGTH_ODYSSEE));
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
*** [.pio\build\arduino_nano_esp32\src\buffer\FrameBuffer.cpp.o] Error 1
In file included from include/state/HMIStateProxy.h:5,
from src/handler/RTC.cpp:6:
include/state/DHWState.h:53:38: error: 'aquamqtt::message::FrameBufferChannel' has not been declared
53 | void updateFrameBufferStatistics(message::FrameBufferChannel source, BufferStatistics statistics);
| ^~~~~~~
include/state/DHWState.h:55:47: error: 'aquamqtt::message::FrameBufferChannel' has not been declared
55 | BufferStatistics getFrameBufferStatistics(message::FrameBufferChannel source);
| ^~~~~~~
include/state/DHWState.h:67:31: error: 'aquamqtt::message::FrameBufferChannel' has not been declared
67 | void debugAddToDropBuffer(message::FrameBufferChannel source, int val);
| ^~~~~~~
include/state/DHWState.h:69:32: error: 'aquamqtt::message::FrameBufferChannel' has not been declared
69 | size_t debugTakeDropBuffer(message::FrameBufferChannel source, uint8_t* buffer);
| ^~~~~~~
*** [.pio\build\arduino_nano_esp32\src\handler\RTC.cpp.o] Error 1
In file included from include/task/ControllerTask.h:4,
from src/main.cpp:8:
include/buffer/FrameBuffer.h:12:63: error: expected ')' before 'channel'
12 | explicit FrameBuffer(aquamqtt::message::FrameBufferChannel channel);
| ~ ^~~~~~~~
| )
include/buffer/FrameBuffer.h:39:24: error: 'FrameBufferChannel' in namespace 'aquamqtt::message' does not name a type
39 | aquamqtt::message::FrameBufferChannel mChannel;
| ^~~~~~~~~~~~~~~~~~
*** [.pio\build\arduino_nano_esp32\src\main.cpp.o] Error 1
=============================================================================== [FAILED] Took 16.08 seconds ===============================================================================
Environment Status Duration
------------------ -------- ------------
arduino_nano_esp32 FAILED 00:00:16.078
========================================================================== 1 failed, 0 succeeded in 00:00:16.078 ==========================================================================
Salut j’ai compilé, la dernière version dispo sur github la 1.7.2.
La je pense qu’il y a une ou des modif en trop. ( Plus probablement juste un ; qui a sauté).
Dans vscode, utilise la vue git pour voir les differences ou repart depuis le début.
C’est en cours de build, je vais voir la suite si tout fonctionne, je croise les doigts !
EDIT : Un petite erreur de DFU, j’ai dû décommenter la ligne dans le fichier plateform.ini puis tout relancer, croisons les doigts
EDIT2 : Je ne crois pas avoir toutes les informations qui remontent comparé à toi ?
Photo de mon PCB + branchements :
EDIT3: En branchant les fils dans le bon sens ça marche mieux ![]()
En revanche les valeurs sous main ne sont pas affichées en permanence de mon côté, je ne les aient pas toutes !
Tu utilises quelle entité de ton côté ?
Un grand merci à tous pour votre aide pour son projet qui se concrétise enfin !
Bonjour à tous,
Cela fait un moment que je fait quelque test sans trop avoir le temps, aujourd’hui je suis bloquer je pense du au code qui n’est pas adapté à mon ballon, pour résumé :
Ballon Thermor Aeromax 5
Interface graphique E
Régulation H
AquaMQTT V1
Nano esp32 arduino officiel
j’ai pas grand chose qui remonte en mode Listener, voici une capture d’écran :
Lorsque je suis en mode Listener et que je change la température sur le ballon la valeur change sur HA mais lorsque je suis en mode MIMT et que je change une valeur sous HA rien ne se passe sur le ballon.
est ce que quelqu’un aurait eu un cas similaire à tout hasard?
Salut @Quentin57520, ça y est tu tiens le bon bout.
Concernant les capteurs remonté, j’ai tout ce qui est documenté pour le mode LEGACY.
Cf le nombre de topic de chaque catégorie ci-dessous.

Les données peuvent mettre un peu de temps à remonter notamment le main.
Ca devrait être bon maintenant ?
Un truc « m’intrigue », sur la photo de ta carte, tu as 1 connecteur de plus que sur mon installation
: celui au dessus du connecteur vers le PCB avec les fil bleus/bruns… Tu es connecté au signal heure pleine/heure creuse ? Connecté à des panneaux solaire ?
Ah c’est pour cela. En effet le main et le hmi mettent pas mal de temps à remonter, je ne comprends pas pourquoi.
Alors pour le connecteur supplémentaire sur la carte de mon ballon, non je n’ai pas d’abonnement HC/HP et pas encore de PV (ça viendra
) donc très bonne question !
De mémoire, il me semble que le dév avait mis 30 minutes de délai pour interroger le tout à l’initialisation pour éviter d’avoir trop de requêtes, après chaque changement est instantané.
Je vois, tout paraît plus clair du coup, merci pour cette précision importante !
Édit : moment commercial : pour celui que ça intéresse, j’ai un PCB V1 complet ![]()
Bravo @SebCaps et @Quentin57520, ça fait plaisir de voir les projets finalisés et fonctionner.
Perso, je suis resté en mode LISTENER, ça me suffit de lire des infos sans besoin de pilotage du chauffe eau.








