Allows you to easily control via MQTT any Micronova equiped pellet stove. (MCZ, Extraflame, Laminox, and many others brands!)

micronova_controller ESP8266 ESP32

I sell on Tindie Donate with PayPal

Kits are available on Tindie!
Currently out of stock. V2 will be in stock soon!
Here is an overview of the additions:

  • possibility to reset the settings with a flat screwdriver
  • IO footprints are now designed to accept screw terminals
  • D0 and RST are connected for deep sleep
  • a row of pins has been added to access unused pins

This Arduino program allows to control easily via MQTT a pellet stove equipped with a MicroNova mainboard.

Working with

all stoves equipped with MicroNova mainboard.

Known brands
  • AMG S.p.A. (Artel, Kalor, Tepor, Foco, Adler)
  • Anselmo Cola
  • Boreal
  • Bronpi
  • Cadel
  • Clam
  • Corisit S.r.l. (Lincar, Vulcania, Arce)
  • Ecoteck
  • EL.FIRE
  • EOSS
  • EvaCalor
  • Fontana Calore
  • Fonte Flamme
  • Galletti
  • Globe-Fire
  • Italiana Camini
  • Jolly Mec
  • Karmek
  • Kepo
  • Klover
  • Laminox
  • LMX
  • La Nordica S.p.A (Extraflame, Dal Zotto)
  • Lorflam
  • MCZ (Brisach, Cadel, FreePoint, Pegaso, Red)
  • Moretti Design
  • Nordic Fire
  • Sicalor
  • Stufe a pellet Italia
  • Tecnoflam
  • Termoflam
  • Thermoflux
  • TS
  • Ungaro
  • Zibro

Confirmed working with

Known models
  • RED Loto
  • MCZ Kaika/Face
  • FreePoint Sharp
  • Anselmo Cola Aloe
  • Kalor Compact (boiler, fumesTempAddr 0xFF, flamePowerAddr 0x37)
  • ITC Layma (boiler, fumesTempAddr 0x3E, no water pressure value available)

What you need

A kit or:

  • An ESP8266 (I recommend the D1 Mini). (approx. 4€)
  • 3 PC817. (less than 2€ for 20pcs)
  • 3 510 Ohms resistors. (less than 2€ for 100pcs)
  • That's all!

The circuit

image

Enable_RX is D2 (GPIO4) on ESP8266 or GPIO35 on ESP32.
RX is D3 (GPIO0) on ESP8266 or GPIO32 on ESP32.
TX is D4 (GPIO2) on ESP8266 or GPIO33 on ESP32.

The optocouplers are used to convert between 3.3V and 5V logic and also to protect the pellet stove and the ESP from each other in case of problem.

Stove's mainboard pinout

There is a 4 pin connector (CN13 or SERIALE) with 5V, 20V, Serial, GND:

Schematics

Connector Drawing

MicroNova protocol

Explained here under "Micronova protocol".

Uploading firmware

With esptool or NodeMCU PyFlasher

  • Download the hex file corresponding to your board and your language in the releases section,
  • Connect your ESP to your computer,
  • Flash your ESP with that hex file (for esptool: esptool write_flash *.hex).

With Arduino IDE

  • Install ESP cards with the board manager (custom URLs: http://arduino.esp8266.com/stable/package_esp8266com_index.json,https://raw.githubusercontent.com/espressif/arduino-esp32/gh-pages/package_esp32_index.json),
  • Install WifiManager and PubSubClient libraries,
  • Copy the content of micronova_controller.ino,
  • Connect your ESP to your computer and flash.

Configure WiFi and the MQTT broker URL

  • Connect to the Pellet heater controller WiFi network.
  • Go to 192.168.4.1.
  • Setup your WiFi credentials.
  • Setup mqtt_server (the IP of your MQTT broker).
  • Optionally adapt mqtt_port if you aren't using 1883.
  • Optionally adapt base_topic if you have multiple stoves.
  • Optionally setup mqtt_user and mqtt_pass.
  • Optionally set hydro_mode from 0 to 1 if your pellet stove has the boiler feature.

MQTT details

First of all, if you use Home Assistant read this paragraph.

The different topics

  • The mqtt_topic, it's the common part between all the topics (default: micronova).
  • The pong_topic, message "Powered up" sent every 25 seconds (mqtt_topic/pong).
  • The state_topic, this is the topic containing the detailed status of the stove (mqtt_topic/state).
  • The onoff_topic, this is the topic informing if the stove is turned off or on (mqtt_topic/onoff).
  • The ambtemp_topic, this is the topic where you can read the ambient temperature (mqtt_topic/ambtemp).
  • The fumetemp_topic, this is the topic on which you can read the temperature of the fumes (mqtt_topic/fumetemp).
  • The flame_topic, this is the topic on which you can read the power of the flame (in percent) (mqtt_topic/flamepower).
  • The watertemp_topic, this is the topic on which you can read the water temperature (only if you have a hydro pellet stove) (mqtt_topic/watertemp).
  • The waterpres_topic, this is the topic on which you can read the water pressure in bars (only if you have a hydro pellet stove) (mqtt_topic/waterpres).
  • The in_topic, it is the topic allowing to control the stove (mqtt_topic/intopic).

Controlling the stove

  • To light the stove send ON to in_topic, without retain flag.
  • To turn off the stove send OFF to in_topic, with or without retain flag.
  • To force extinction of the stove send force to in_topic, without retain flag.
  • To put the ESP into deep sleep send Sleep to in_topic, with retain flag.
  • To wake up the ESP send Wake to in_topic, with retain flag. (When the ESP is in deep sleep, it wakes up every 5 minutes to check if the Wake message has been received.)

Reset all settings

If you want to reset all the settings here is what you can do:

  • send reset to in_topic or
  • connect the RESET_PIN (D5 (GPIO14) on ESP8266 or GPIO25 on ESP32) to GND (this is not the RST pin of the ESP) or
  • esptool erase_flash but this will also delete the program.

Home Assistant

Here is what to add to configuration.yaml:

switch:
  - platform: mqtt
    name: ""    #E.g. "Living room"
    state_topic: "mqtt_topic/onoff"    #You have to edit that
    command_topic: "mqtt_topic/intopic"    #Also that
    payload_on: "ON"
    payload_off: "OFF"
    state_on: "ON"
    state_off: "OFF"
    retain: false
    optimistic: false
    qos: 0
    icon: mdi:fire
sensor:
  - platform: mqtt
    name: ""    #E.g. "Stove controller power state living room"
    state_topic: "mqtt_topic/pong"
    qos: 0
    icon: mdi:power
  - platform: mqtt
    name: ""    #E.g. "Living room"
    state_topic: "mqtt_topic/ambtemp"
    qos: 0
    unit_of_measurement: "ºC"
    icon: mdi:thermometer
  - platform: mqtt
    name: ""    #E.g. "Fumes temp living room"
    state_topic: "mqtt_topic/fumetemp"
    qos: 0
    unit_of_measurement: "°C"
    icon: mdi:thermometer
  - platform: mqtt
    name: ""    #E.g. "Stove state living room"
    state_topic: "mqtt_topic/state"
    qos: 0
    icon: mdi:fire-alert
  - platform: mqtt
    name: ""    #E.g. "Flame power living room"
    state_topic: "mqtt_topic/flamepower"
    qos: 0
    unit_of_measurement: "%"
    icon: mdi:fire
    #Uncomment below if you own an hydro stove
#  - platform: mqtt
#    name: ""    #E.g. "Water temp living room"
#    state_topic: "mqtt_topic/watertemp"
#    qos: 0
#    unit_of_measurement: "ºC"
#    icon: mdi:coolant-temperature
#  - platform: mqtt
#    name: ""    #E.g. "Water pressure living room"
#    state_topic: "mqtt_topic/waterpres"
#    qos: 0
#    unit_of_measurement: "bar"
#    icon: mdi:gauge

Thanks

Thanks to @pedrware for the photo of the mainboard and his explanations of some of the problems encountered.
Thanks to ridiculouslab for his analysis of the serial protocol.

License

Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

Disclaimer

THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Comments
  • Add compatibility for ESP-01 and Breakout board

    Add compatibility for ESP-01 and Breakout board

    Hello, could you help me to add compatibility for this board? https://it.aliexpress.com/item/1005001970616935.html?gatewayAdapt=glo2ita&aff_fcid=56c564640e8546c3b341b78030ca809e-1645366026748-07392-_AOI1W4&tt=CPS_NORMAL&aff_fsk=_AOI1W4&aff_platform=shareComponent-detail&sk=_AOI1W4&aff_trace_key=56c564640e8546c3b341b78030ca809e-1645366026748-07392-_AOI1W4&terminal_id=ca5e0087d8a249f4b348a3734cd59a20&afSmartRedirect=n

    The breakout board can convert from 5V to 3.3V and also adapt the signal but need TX and RX pin, in this board we have only one serial PIN so i don't know how can i adapt this...

    Best Regards Stefano

  • Flue gas temp (was on 0x5A for Micronova Mod0047 EVO) and waterpres incorrect

    Flue gas temp (was on 0x5A for Micronova Mod0047 EVO) and waterpres incorrect

    Hello everyone, today was the day. I used the controls in Homeassistant.

    Basically it works - but:

    • The smoke temperature does not fit a maximum of 10 ° C
    • The water pressure is stated three times too high
    • Flame power remains at 0 (but you can only see it in the MQTT Explorer

    Pellet stove used: ITC Layma 18kW Micronova Mod0047 EVO

    Addendum to the interference suppression, as soon as I use the 18V from the motherboard, my WLAN quality drops, now I use an interference suppression board (filtering / smoothing the input voltage), the WLAN reception is good.

  • Problems with power OFF / power demand

    Problems with power OFF / power demand

    Hi there,

    QA strikes again ;-)

    Since the penultimate change to the source code, I have had the symptoms that I cannot switch off the oven if it has been running for a long time. I can shift gears, but it continues to burn stubbornly.

    The water temperature and room temperature are updated and are valid. Only the switch on / off and the power requirement are frozen.

    When I switch off the oven on the display, everything is updated and works again.

    Regards Gerald

  • feat: adds AutoDiscover sensors for HomeAssistant

    feat: adds AutoDiscover sensors for HomeAssistant

    Following this discussion https://github.com/philibertc/micronova_controller/discussions/15 and because I used to create my MQTT sensors like this, I decided to open this PR to enable it.

    @philibertc can you please review it and suggest changes?

    The device "Micronova Controller" will be available under MQTT integration: image

    The final result of the entities is: image

  • Question about 5V Pin

    Question about 5V Pin

    Hey @philibertc

    I have a pellet stove (L'Asolana Marina) which clearly has a Micronova controller board, but i'm unable to access the PCB for interfacing with it. But it has a SUB9 connector on the back with has 3 connected pins (GND,20V,Serial).

    I would like your circuit, but the optocoupler that is connected to RX_ENABLE needs 5V which i do not have with the 3P-connection. Since its only driving a optocoupler, i was thinking about using a step-down board and use the 20V to drive this optocoupler. Do you think this will work or is it too dangerous to try it? Any ideas?

    I would use a circuit like this: image

    The official micronova WIFI board pcb front pcb back also only connects 3 pins and seem to directly convert the 20V down as well.

    Thanks in advance :)

  • Why a 500 Ohm resistor

    Why a 500 Ohm resistor

    Hi there,

    I'm developing my own PCB because and I'm using your project as a base, thanks for that !

    I'm just wondering why you picked a 500 ohm resistor, let me try to explain:

    • 5V / 510 Ohm = 0,0098 A == 9,8 mA
    • 3,3V / 510 Ohm = 0,00064 == 6,4 mA

    Since an optocoupler is just a LED it is designed to have 20mA over the IR LED

    This means the ideal resistor should be:

    • 5V / 0,02 A = 250 Ohm
    • 3,3 V / 0,02 A = 165 Ohm

    I'm guessing the led emits enough IR to activate the collector and thus work. Or I'm I missing something?

  • Safer way to turn the stove off

    Safer way to turn the stove off

    Turning the stove on works fine over writing 0x01 to RAM 0x21, turning it off (sending 0x06 to RAM 0x21) seems to be problematic. My stove enters "turning off mode" but takes pretty long to do so (~50min), so this is not the procedure used by programs or the power button which takes around 10min. Searching around in the internet told me that i am not the only one which has this issue. The stove also has a infrared control, which seem to write commands to RAM 0x58. So sending 10 times 0x5a to RAM 0x58 with a delay of 100ms turns the stove off safely.

    You should consider changing your code to this method as well, since it seems the better way and also should work for all stoves.

    There are other "IR commands" that can be written to 0x58 with a delay of 100ms. To set power and temp, send it at least twice, for the power button (longpress) at least 10 times.

    | State | Description | |-------|---------------| | 0x54 | Power + | | 0x50 | Power -, | | 0x52 | Temperature + | | 0x58 | Temperature - | | 0x5a | Power ON/OFF |

  • Add new Model

    Add new Model "L'Asolana Marina"

    Hey, as promised in #53, here my MR:

    This model has no boiler at all. I figured out a few more options to control, see here: https://github.com/eni23/micronova-controller#known-locations but the ones you use for temp, fumes, fan and turn on/off work with your sketch.

  • Use the 5V from the new micro serial output.

    Use the 5V from the new micro serial output.

    Hello @philibertc, what is the inconvenience of using the 5V output of the micro nova board to power your pcb and the wemos d1 mini? So it would be possible to power everything without the need for external power. I look forward to feedback, thank you very much for your attention...

  • Jolly Mec synthesis modular 80 + micronova wifi module

    Jolly Mec synthesis modular 80 + micronova wifi module

    Hi there !

    First of all, thank you for the work you provided on this integration !

    I recently bought a jolly mec stove, and cannot say I'm convinced by the terrible micronova app I've got with the wifi module.

    My first question would be, when you speak about the micronova board, are you speaking about the wifi module ? Is there anything I can do to connect my stove and monitor/manage it remotely using your app and do I still need the custom made board to do so ?

    In any circumstance, I'd like to be able to achieve the following

    1. simply change the temperature so I an keep running in stand-by mode, and go from 23 degrees during daytime to 20c° during night time.
    2. Enable geofencing, so my stove will automatically go back to 20c° qhen out of home
    3. get push notifications (the damn micronova app doesnt send any!!!) when pellet levels are low

    If I could reach out to you on any discord chan to discuss this brielfy, this would help me alot I guess. ;)

    Thanks !

  • Preliminary write/read for temp+power

    Preliminary write/read for temp+power

    A bit dirty write-to-stove values - but works like a charm on Feretti stove (we can't use static array for that).

    For reading EEPROM values we must add 0x20 to the address - the stove replies with added value (e.g. 0x7F becomes 0x9F in RX from stove, we still write to 0x7F)

    If checskum is higher than 0xFF then we must substract 256Dec from value - now we MUST know if the value will be higher than 0xFF and calculate accordingly.

    Confirmed working for ~7 days with HomeAssistant. ESP8266+optorelays breakboard+MQTT.

  • Wiring for La Nordica Extraflame Emma Plus

    Wiring for La Nordica Extraflame Emma Plus

    Hi,

    First of all, thanks for putting this project together!

    I'm trying to use this project to control/monitor the aforementioned pellet stove, but am struggling to find the right connections. The control board I have is the one listed in this PDF on page 40, 'board code' (whatever that may mean) 00227575. Here's a picture of the board (sorry for poor quality, I took it from a webshop since mine is in the stove and I don't want to spend time disassembling it): image

    As you can see the 'Seriale' connector is positioned otherwise than in the readme of this repository. In my stove, there is also a cable connected to it (tested all 3 wires, it's just an extension cable), which has a panel mount connector (exactly the same type as on the board) on the rear of the stove: image

    I also noticed that the extension cable only has 3 wires, while the board connector has 4 pins. I measured all 4 pins with my DMM, and got the following results (numbering following your drawing of the connector in the readme):

    1. GND, blue wire in extension cord (confirmed by measuring continuity between this pin and the negative CMOS battery pin
    2. Black wire in extension cord, measuring constant +5V
    3. Red wire in extension cord, measuring fluctuating +17-19V (approx every second)
    4. No wire in extnesion cord, measuing constant +5V

    I also measured all pins with my oscilloscope, but no obvious digital signal is visible.

    So I'm at a loss as to which pin is the serial data pin, can someone help me out?

Loads a signed kernel driver which allows you to map any driver to kernel mode without any traces of the signed / mapped driver.
Loads a signed kernel driver which allows you to map any driver to kernel mode without any traces of the signed / mapped driver.

CosMapper Loads a signed kernel driver (signed with leaked cert) which allows you to map any driver to kernel mode without any traces of the signed /

Jan 2, 2023
An easy to build CO2 Monitor/Meter with Android and iOS App for real time visualization and charting of air data, data logger, a variety of communication options (BLE, WIFI, MQTT, ESP-Now) and many supported sensors.
An easy to build CO2 Monitor/Meter with Android and iOS App for real time visualization and charting of air data, data logger, a variety of communication options (BLE, WIFI, MQTT, ESP-Now) and many supported sensors.

CO2-Gadget An easy to build CO2 Monitor/Meter with cell phone App for real time visualization and charting of air data, datalogger, a variety of commu

Dec 17, 2022
C library designed for the TI MSP432P401R microprocessor and the TI Educational Booster Pack, to easily play and control songs with the integrated Piezo Buzzer.

MusicLib C library designed for the TI MSP432P401R microprocessor and the TI Educational Booster Pack, to easily play and control songs with the integ

Nov 24, 2021
Controlling Servos with a Esp-wroom-32 via MQTT with an Android Client

esp32_servos_mqtt Controlling Servos with a Esp-wroom-32 via MQTT with an Android Client Added two files, first is the schematic for the connection wi

Oct 7, 2022
C/C++ language server supporting multi-million line code base, powered by libclang. Emacs, Vim, VSCode, and others with language server protocol support. Cross references, completion, diagnostics, semantic highlighting and more

Archived cquery is no longer under development. clangd and ccls are both good replacements. cquery cquery is a highly-scalable, low-latency language s

Jan 2, 2023
The whole design is modular, parametric (cost and others), field repairable, and super extensible
The whole design is modular, parametric (cost and others), field repairable, and super extensible

Easy-Transceiver The whole design is modular, parametric (cost and others), field repairable, and super extensible. It is almost trivial to add suppor

Oct 2, 2022
BSD-licensed Yamaha FM sound cores (OPM, OPN, OPL, and others)

ymfm ymfm is a collection of BSD-licensed Yamaha FM sound cores (OPM, OPN, OPL, and others), written by Aaron Giles Supported environments This code s

Dec 31, 2022
Some hypervisor research notes. There is also a useful exploit template that you can use to verify / falsify any assumptions you may make while auditing code, and for exploit development.

Introduction Over the past few weeks, I've been doing some hypervisor research here and there, with most of my focus being on PCI device emulation cod

Nov 18, 2022
Allows to swap the Fn key and left Control key and other tweaks on Macbook Pro and Apple keyboards in GNU/Linux

A patched hid-apple kernel module UPDATE August 2020: swap_fn_leftctrl is now built-in in Linux 5.8 ?? UPDATE Jun 2020: New feature added (swap_fn_f13

Dec 29, 2022
A python package to provide you with many useful tools for osu! servers, written in C++ for the best speeds possible.

pysu_bindings A python package to provide you with many useful tools for osu! servers, written in C++ for the best speeds possible. What? As most peop

Nov 29, 2021
Dec 19, 2021
A simple tool using PC mouse via USART to control MCU and LCD/OLED (with LVGL library), if your screen cannot be controlled by touch.
A simple tool using PC mouse via USART to control MCU and LCD/OLED (with LVGL library), if your screen cannot be controlled by touch.

LVGL_USB_Mouse A simple tool using PC mouse via USART to control MCU and LCD/OLED (with LVGL library), if your screen cannot be controlled by touch. 如

May 5, 2022
Had a tough time playing Microsoft Wordament ? Well WORDament_Solver has your back. It suggests you meaningful words you can use while playing the game and help you top the leaderboard.
Had a tough time playing Microsoft Wordament ? Well WORDament_Solver has your back. It suggests you meaningful words you can use while playing the game and help you top the leaderboard.

WORDament_Solver Had a tough time playing Microsoft Wordament ? Well WORDament_Solver has your back. It suggests you meaningful words you can use whil

Aug 19, 2021
Control Heidelberg Wallbox Energy Control over WiFi using ESP8266 and configure your own local load management
Control Heidelberg Wallbox Energy Control over WiFi using ESP8266 and configure your own local load management

< scroll down for English version and additional information > wbec WLAN-Anbindung der Heidelberg WallBox Energy Control über ESP8266 Die Heidelberg W

Jan 3, 2023
Control your older LG TV via HomeKit

LG TV Controller for HomeKit Flash to an M5Atom RS232 Kit, and add your LG TV to your HomeKit home. Should work with most other ESP32 kits as well. Qu

Sep 1, 2022
A C library for RP2040-powered boards to control LCDs via the I2C protocol

picoi2clcd A C library to control I2C LCD displays using the Rapsberry Pi Pico (or really any board using the RP2040 microcontroller). License All of

Oct 16, 2021
Dec 25, 2022
Budgie Control Center is a fork of GNOME Control Center for the Budgie 10 Series.

Budgie Control Center Budgie Control Center is a fork of GNOME Settings / GNOME Control Center with the intent of providing a simplified list of setti

Dec 12, 2022
A header-only library for C++(0x) that allows automagic pretty-printing of any container.

cxx-prettyprint =============== A pretty printing library for C++ containers. Synopsis: Simply by including this header-only library in your sourc

Nov 26, 2022