Alpine Boiler with ESPHome Modbus Sucess

ESPHomeAlpineBoiler

Documentation for ESPHome Modbus Alpine Boiler Interface. I hope it helps. I went from no experience with ESPHome or Modbus to getting this working in about 2 days. Hopefully, this will help others be quicker.

This is a short tutorial to add an Alpine Burnham (US Boiler) Boiler to homeassistant. Tested on model number: ALP150BW-4T02 but should work on most similar models.
Putting this together leveraged research from many people online, amazon comments, etc:

  1. mini-monitor/sage_boiler.py at 2a5aa291621a5854905e9478b27a4e6be3f260f4 Ā· alanmitchell/mini-monitor Ā· GitHub
  2. sage2-boiler/sage_boiler.py at a68b0b43a903ca77330988d63fe86876771404aa Ā· jdleslie/sage2-boiler Ā· GitHub
  3. https://www.ccontrols.com/support/dp/Sage2.doc
  4. Hardware ā€” Mini-Monitor Documentation 0.0.1 documentation

Components Needed (Just a few bucks for all of this):

  1. TTL to RS485 Module 485 . https://www.amazon.com/gp/product/B07YZTGHGG Could use the more common Max485, but this board is a little easier as does not need flow control.(but may need a resister). If you use the Max485, you need to set the flow control pin and do more complicated wiring.
  2. Wemos Mini D1. https://www.amazon.com/gp/product/B081PX9YFV . Could use any ESP module you like, but these are cheap
  3. Cat 5/6 Ethernet Cable (which you will destroy)
  4. 120 Ohm Resistor. (I used a 100 Ohm and still worked) This was the trick, without this I was beating my head against the wall!

Prep the Boiler:

You must set the ā€œBoiler Addressā€ to 1 in order to read data from the boiler. This is done on the ā€œAdjustā€, ā€œSequence Slaveā€, ā€œBoiler Addressā€ menu item available through the touch screen control on the boiler. The Factory default for this setting is ā€œNoneā€, so it must be changed in order for the monitoring system to work. The default password is 76 , if it asks you for one.

Install ESPHome:

Load ESPHome onto the Wemos. Do this first. Just load a standard firmware, so you can update it later without needing to program it manually. Make sure you also have the ESPHome integration loaded. Below wiring instructions assume you power the Wemos D1 via USB so the 5V pin is energized.

Solder the Components:

You need to solder the Wemos to the RS485 Adapter and the RS485 Adapter to the CAT 5/6 Cable and resister.

First for the Wemos to RS485:

Wemos RS485 Comment
5V Vcc Works best with 5 V
RX RX Yes, RX to RX. Not a mistake. This 485 board is labeled this way!
TX TX Yes, TX to TX. Not a mistake.This 485 board is labeled this way!
G G

I have confirmed my boards are wired TX-TX and RX-RX. Another user says theirs needed to be TX-RX and RX-TX, so try both if yours is not working. Be sure to power the Wemos D1 via USB so the 5V pin is energized.

Next for the RS485 to the Cat 5/6 Cable

RS485 Cat 5/6 Comment
A+ Pin 8 Often this is the brown cable. Will be twisted with brown/white cable
B- Pin 7 Often this is the brown/white cable. Will be twisted with brown cable
G Labeled with a Chinese Character Pin 6 Often this is green. Might be optional, but I did it

Now the big trick is if your cable is short (mine was) you need a 120 Ohm resistor between A+ and B- wires near the adapter. I soldered it across the two (Brown and Brown/White) CAT5 wires, a few mm before the 485 Module. Without this, you will get reflections and get error messages in ESPHome and nothing worked. Once I did this, things worked perfectly.

Now connect other side of CAT 5/6 cable to the boiler. The boiler controller has a MODBUS RS485 interface that is accessed through a standard RJ45 jack on the side of the boiler. You want the top jack labeled ā€œBoiler to Boilerā€.

Now, you can go back into ESPHome and load the following YAML onto the WEMOS. These are the sensorā€™s I am using. If you want more sensors, you can look at the code linked at the top of the page, to add more holding register sensors. I will update this code as I learn more. But this should give you the most important sensors. There are two ways to determine the firing rate. I used the method that worked for mine. I also scale the firing rate to Btu/h to match what is displayed on the boiler display panel.

esphome:
  name: boiler

esp8266:
  board: d1_mini

uart:
  id: mod_bus
  tx_pin: GPIO1
  rx_pin: GPIO3
  baud_rate: 38400
  

modbus:
  id: modbus1

modbus_controller:
  - id: vlb
    ## the Modbus device addr
    address: 0x1
    modbus_id: modbus1
    setup_priority: -10
    command_throttle: 100ms

sensor:
  - platform: modbus_controller
    modbus_controller_id: vlb
    name: "outlet_temp"
    id: outlet_temp
    register_type: holding
    address: 0x7
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - lambda: return x * 0.18 + 32.0;
    unit_of_measurement: "Ā°F"
  - platform: modbus_controller
    modbus_controller_id: vlb
    name: "fan_rate"
    id: fan_rate
    register_type: holding
    address: 0x8
    value_type: U_WORD
    accuracy_decimals: 1
    bitmask: 0x7FFF
    unit_of_measurement: "rpm"
  - platform: modbus_controller
    modbus_controller_id: vlb
    name: "max_rpm"
    id: max_rpm
    register_type: holding
    address: 193
    value_type: U_WORD
    accuracy_decimals: 1
    unit_of_measurement: "rpm"  
  - platform: template
    name: "firing_rate"
    lambda: |-
      return 118000.0 * id(fan_rate).state / id(max_rpm).state; 
    unit_of_measurement: "Btu/h"
  - platform: modbus_controller
    modbus_controller_id: vlb
    name: "outdoor_temp"
    id: outdoor_temp
    register_type: holding
    address: 170
    value_type: U_WORD
    accuracy_decimals: 1
    unit_of_measurement: "Ā°F"
    filters:
    - lambda: |-
        if (x > 32767 ) {
           return (x - 65536.0) * 0.18 + 32.0;
        } else {
           return x * 0.18 + 32.0;
        }  
# Alpine 150 = BTU Heat Rating: 118000 Btu/h
binary_sensor:
  - platform: modbus_controller
    modbus_controller_id: vlb
    id: ch_demand
    name: "Heat Demand"
    register_type: holding
    address: 66
  - platform: modbus_controller
    modbus_controller_id: vlb
    id: water_demand
    name: "Water Demand"
    register_type: holding
    address: 83 

# Enable logging
logger:
  level: VERBOSE
  baud_rate: 0
# Enable Home Assistant API
api:

ota:
  password: "UseAGoodPassword"

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Boiler Fallback Hotspot"
    password: "UseAGoodPassword"

captive_portal:

web_server:
  port: 80

the ALP150 is rated at 118000.0 BTU. If you have a different model, update the value in the YAML to match your maximum output.

3 Likes

Thanks for writing this up. I just got an Alpine (ALP150BW-4T02) boiler. I wired up everything but Iā€™m not getting any values in HA. All the entitles are ā€œUnknownā€. Other than changing the wifi info and the btu to 119000 I kept the code the same. I soldering in a 120 ohm resistor between the A+ and B- terminals on the 485 board. Do you see anything that jumps out at you?

This is how I wired it up. Once I get things working on a prototype board Iā€™m going to print some boards. This is how I wired everythingā€¦

esphome:
  name: boiler

esp8266:
  board: d1_mini

uart:
  id: mod_bus
  tx_pin: GPIO1
  rx_pin: GPIO3
  baud_rate: 38400
  

modbus:
  id: modbus1

modbus_controller:
  - id: vlb
    ## the Modbus device addr
    address: 0x1
    modbus_id: modbus1
    setup_priority: -10
    command_throttle: 100ms

sensor:
  - platform: modbus_controller
    modbus_controller_id: vlb
    name: "outlet_temp"
    id: outlet_temp
    register_type: holding
    address: 0x7
    value_type: U_WORD
    accuracy_decimals: 1
    filters:
    - lambda: return x * 0.18 + 32.0;
    unit_of_measurement: "Ā°F"
  - platform: modbus_controller
    modbus_controller_id: vlb
    name: "fan_rate"
    id: fan_rate
    register_type: holding
    address: 0x8
    value_type: U_WORD
    accuracy_decimals: 1
    bitmask: 0x7FFF
    unit_of_measurement: "rpm"
  - platform: modbus_controller
    modbus_controller_id: vlb
    name: "max_rpm"
    id: max_rpm
    register_type: holding
    address: 193
    value_type: U_WORD
    accuracy_decimals: 1
    unit_of_measurement: "rpm"  
  - platform: template
    name: "firing_rate"
    lambda: |-
      return 118000.0 * id(fan_rate).state / id(max_rpm).state; 
    unit_of_measurement: "Btu/h"
  - platform: modbus_controller
    modbus_controller_id: vlb
    name: "outdoor_temp"
    id: outdoor_temp
    register_type: holding
    address: 170
    value_type: U_WORD
    accuracy_decimals: 1
    unit_of_measurement: "Ā°F"
    filters:
    - lambda: |-
        if (x > 32767 ) {
           return (x - 65536.0) * 0.18 + 32.0;
        } else {
           return x * 0.18 + 32.0;
        }  
# Alpine 150 = BTU Heat Rating: 118000 Btu/h
binary_sensor:
  - platform: modbus_controller
    modbus_controller_id: vlb
    id: ch_demand
    name: "Heat Demand"
    register_type: holding
    address: 66
  - platform: modbus_controller
    modbus_controller_id: vlb
    id: water_demand
    name: "Water Demand"
    register_type: holding
    address: 83 

# Enable logging
logger:
  level: VERBOSE
  baud_rate: 0
# Enable Home Assistant API
api:
  password: !secret api_password

ota:
  password: !secret ota_password

wifi:
  ssid: !secret wifi_ssid
  password: !secret wifi_password

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Boiler Fallback Hotspot"
    password: ""

captive_portal:

web_server:
  port: 80

Logging

[23:21:53][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xAA count 1
[23:21:53][V][modbus:199]: Modbus write: 01.03.00.AA.00.01.A4.2A (8)
[23:21:53][V][modbus_controller:486]: Command sent 3 0xAA 1
[23:21:53][V][component:204]: Component modbus_controller took a long time for an operation (0.06 s).
[23:21:53][V][component:205]: Components should block for at most 20-30ms.
[23:21:53][C][ota:093]: Over-The-Air Updates:
[23:21:53][C][ota:094]:   Address: boiler.local:8266
[23:21:53][C][ota:097]:   Using Password.
[23:21:53][D][api:102]: Accepted 192.168.42.200
[23:21:53][V][api.connection:901]: Hello from client: 'Home Assistant 2023.3.4 (192.168.42.200)' | API Version 1.7
[23:21:53][C][api:138]: API Server:
[23:21:53][C][api:139]:   Address: boiler.local:6053
[23:21:53][C][api:143]:   Using noise encryption: NO
[23:21:53][C][modbus_controller:275]: ModbusController:
[23:21:53][C][modbus_controller:276]:   Address: 0x01
[23:21:53][C][modbus_controller:278]: sensormap
[23:21:53][C][modbus_controller:280]:  Sensor type=3 start=0x7 offset=0x0 count=1 size=2
[23:21:53][C][modbus_controller:280]:  Sensor type=3 start=0x7 offset=0x2 count=1 size=2
[23:21:53][C][modbus_controller:280]:  Sensor type=3 start=0x42 offset=0x0 count=1 size=2
[23:21:53][C][modbus_controller:280]:  Sensor type=3 start=0x53 offset=0x0 count=1 size=2
[23:21:53][C][modbus_controller:280]:  Sensor type=3 start=0xAA offset=0x0 count=1 size=2
[23:21:53][C][modbus_controller:280]:  Sensor type=3 start=0xC1 offset=0x0 count=1 size=2
[23:21:53][C][modbus_controller:284]: ranges
[23:21:53][C][modbus_controller:286]:   Range type=3 start=0x7 count=2 skip_updates=0
[23:21:53][C][modbus_controller:286]:   Range type=3 start=0x42 count=1 skip_updates=0
[23:21:53][C][modbus_controller:286]:   Range type=3 start=0x53 count=1 skip_updates=0
[23:21:53][C][modbus_controller:286]:   Range type=3 start=0xAA count=1 skip_updates=0
[23:21:53][C][modbus_controller:286]:   Range type=3 start=0xC1 count=1 skip_updates=0
[23:21:53][W][api.connection:083]: Home Assistant 2023.3.4 (192.168.42.200): Connection closed
[23:21:53][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xAA count 1
[23:21:53][V][modbus:199]: Modbus write: 01.03.00.AA.00.01.A4.2A (8)
[23:21:53][V][modbus_controller:486]: Command sent 3 0xAA 1
[23:21:53][V][component:204]: Component modbus_controller took a long time for an operation (0.06 s).
[23:21:53][V][component:205]: Components should block for at most 20-30ms.
[23:21:53][V][api:114]: Removing connection to Home Assistant 2023.3.4 (192.168.42.200)
[23:21:53][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xAA count 1
[23:21:54][V][modbus:199]: Modbus write: 01.03.00.AA.00.01.A4.2A (8)
[23:21:54][V][modbus_controller:486]: Command sent 3 0xAA 1
[23:21:54][D][api:102]: Accepted 192.168.42.200
[23:21:54][V][api.connection:901]: Hello from client: 'Home Assistant 2023.3.4 (192.168.42.200)' | API Version 1.7
[23:21:54][W][api.connection:083]: Home Assistant 2023.3.4 (192.168.42.200): Connection closed
[23:21:54][V][api:114]: Removing connection to Home Assistant 2023.3.4 (192.168.42.200)
[23:21:54][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xAA count 1
[23:21:54][V][modbus:199]: Modbus write: 01.03.00.AA.00.01.A4.2A (8)
[23:21:54][V][modbus_controller:486]: Command sent 3 0xAA 1
[23:21:54][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xAA count 1
[23:21:54][V][modbus:199]: Modbus write: 01.03.00.AA.00.01.A4.2A (8)
[23:21:54][V][modbus_controller:486]: Command sent 3 0xAA 1
[23:21:54][D][modbus_controller:029]: Modbus command to device=1 register=0xAA countdown=0 no response received - removed from send queue
[23:21:54][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xC1 count 1
[23:21:54][V][modbus:199]: Modbus write: 01.03.00.C1.00.01.D5.F6 (8)
[23:21:54][V][modbus_controller:486]: Command sent 3 0xC1 1
[23:21:55][D][api:102]: Accepted 192.168.42.200
[23:21:55][V][api.connection:901]: Hello from client: 'Home Assistant 2023.3.4 (192.168.42.200)' | API Version 1.7
[23:21:55][W][api.connection:083]: Home Assistant 2023.3.4 (192.168.42.200): Connection closed
[23:21:55][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xC1 count 1
[23:21:55][V][modbus:199]: Modbus write: 01.03.00.C1.00.01.D5.F6 (8)
[23:21:55][V][modbus_controller:486]: Command sent 3 0xC1 1
[23:21:55][V][component:204]: Component modbus_controller took a long time for an operation (0.06 s).
[23:21:55][V][component:205]: Components should block for at most 20-30ms.
[23:21:55][V][api:114]: Removing connection to Home Assistant 2023.3.4 (192.168.42.200)
[23:21:55][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xC1 count 1
[23:21:55][V][modbus:199]: Modbus write: 01.03.00.C1.00.01.D5.F6 (8)
[23:21:55][V][modbus_controller:486]: Command sent 3 0xC1 1
[23:21:55][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xC1 count 1
[23:21:55][V][modbus:199]: Modbus write: 01.03.00.C1.00.01.D5.F6 (8)
[23:21:55][V][modbus_controller:486]: Command sent 3 0xC1 1
[23:21:56][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xC1 count 1
[23:21:56][V][modbus:199]: Modbus write: 01.03.00.C1.00.01.D5.F6 (8)
[23:21:56][V][modbus_controller:486]: Command sent 3 0xC1 1
[23:21:56][D][api:102]: Accepted 192.168.42.200
[23:21:56][V][api.connection:901]: Hello from client: 'Home Assistant 2023.3.4 (192.168.42.200)' | API Version 1.7
[23:21:56][W][api.connection:083]: Home Assistant 2023.3.4 (192.168.42.200): Connection closed
[23:21:56][V][api:114]: Removing connection to Home Assistant 2023.3.4 (192.168.42.200)
[23:21:56][D][modbus_controller:029]: Modbus command to device=1 register=0xC1 countdown=0 no response received - removed from send queue
[23:21:56][D][api:102]: Accepted 192.168.42.200
[23:21:56][V][api.connection:901]: Hello from client: 'Home Assistant 2023.3.4 (192.168.42.200)' | API Version 1.7
[23:21:56][W][api.connection:083]: Home Assistant 2023.3.4 (192.168.42.200): Connection closed
[23:21:56][V][api:114]: Removing connection to Home Assistant 2023.3.4 (192.168.42.200)
[23:21:57][D][api:102]: Accepted 192.168.42.200
[23:21:57][V][api.connection:901]: Hello from client: 'Home Assistant 2023.3.4 (192.168.42.200)' | API Version 1.7
[23:21:57][W][api.connection:083]: Home Assistant 2023.3.4 (192.168.42.200): Connection closed
[23:21:57][V][api:114]: Removing connection to Home Assistant 2023.3.4 (192.168.42.200)
[23:22:27][V][modbus_controller:158]: Updating modbus component
[23:22:27][V][modbus_controller:124]: Range : 7 Size: 2 (3) skip: 0
[23:22:27][V][modbus_controller:124]: Range : 42 Size: 1 (3) skip: 0
[23:22:27][V][modbus_controller:124]: Range : 53 Size: 1 (3) skip: 0
[23:22:27][V][modbus_controller:124]: Range : AA Size: 1 (3) skip: 0
[23:22:28][V][modbus_controller:124]: Range : C1 Size: 1 (3) skip: 0
[23:22:28][V][component:204]: Component modbus_controller took a long time for an operation (0.08 s).
[23:22:28][V][component:205]: Components should block for at most 20-30ms.
[23:22:28][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x07 count 2
[23:22:28][V][modbus:199]: Modbus write: 01.03.00.07.00.02.75.CA (8)
[23:22:28][V][modbus_controller:486]: Command sent 3 0x7 2
[23:22:28][V][component:204]: Component modbus_controller took a long time for an operation (0.06 s).
[23:22:28][V][component:205]: Components should block for at most 20-30ms.
[23:22:28][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x07 count 2
[23:22:28][V][modbus:199]: Modbus write: 01.03.00.07.00.02.75.CA (8)
[23:22:28][V][modbus_controller:486]: Command sent 3 0x7 2
[23:22:28][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x07 count 2
[23:22:28][V][modbus:199]: Modbus write: 01.03.00.07.00.02.75.CA (8)
[23:22:28][V][modbus_controller:486]: Command sent 3 0x7 2
[23:22:28][V][sensor:076]: 'firing_rate': Received new state nan
[23:22:28][D][sensor:126]: 'firing_rate': Sending state nan Btu/h with 1 decimals of accuracy
[23:22:28][V][json:036]: Attempting to allocate 512 bytes for JSON serialization
[23:22:28][V][json:056]: Size after shrink 72 bytes
[23:22:28][V][component:204]: Component template.sensor took a long time for an operation (0.07 s).
[23:22:28][V][component:205]: Components should block for at most 20-30ms.
[23:22:28][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x07 count 2
[23:22:28][V][modbus:199]: Modbus write: 01.03.00.07.00.02.75.CA (8)
[23:22:28][V][modbus_controller:486]: Command sent 3 0x7 2
[23:22:29][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x07 count 2
[23:22:29][V][modbus:199]: Modbus write: 01.03.00.07.00.02.75.CA (8)
[23:22:29][V][modbus_controller:486]: Command sent 3 0x7 2
[23:22:29][D][modbus_controller:029]: Modbus command to device=1 register=0x07 countdown=0 no response received - removed from send queue
[23:22:29][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x42 count 1
[23:22:29][V][modbus:199]: Modbus write: 01.03.00.42.00.01.24.1E (8)
[23:22:29][V][modbus_controller:486]: Command sent 3 0x42 1
[23:22:29][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x42 count 1
[23:22:29][V][modbus:199]: Modbus write: 01.03.00.42.00.01.24.1E (8)
[23:22:29][V][modbus_controller:486]: Command sent 3 0x42 1
[23:22:30][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x42 count 1
[23:22:30][V][modbus:199]: Modbus write: 01.03.00.42.00.01.24.1E (8)
[23:22:30][V][modbus_controller:486]: Command sent 3 0x42 1
[23:22:30][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x42 count 1
[23:22:30][V][modbus:199]: Modbus write: 01.03.00.42.00.01.24.1E (8)
[23:22:30][V][modbus_controller:486]: Command sent 3 0x42 1
[23:22:30][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x42 count 1
[23:22:30][V][modbus:199]: Modbus write: 01.03.00.42.00.01.24.1E (8)
[23:22:30][V][modbus_controller:486]: Command sent 3 0x42 1
[23:22:30][D][modbus_controller:029]: Modbus command to device=1 register=0x42 countdown=0 no response received - removed from send queue

It looks correct. I like your diagram! Did you try the other port on the boiler, just in case I goofed it?

What is the U3AMS thing? Perhaps grounding to the other components is causing issues? My circuit is much simpler. I power my D1 via USB, it connects to the TTL board, TTL to Boiler. Nothing else. Double check the pins on the ethernet? Did you set the Boiler Address, not sure it is required but I read it was.

The AMS117-3.3 steps down from 5V to 3.3V. How are you power the TTL to 485 board? The 5V out of the d1 mini?

The two jacks on the boiler are label ā€œBoiler to Boilerā€ and ā€œEnvironment to Zone Panelā€. Boiler to boiler makes sense.

I set the Sequence Slave Boiler Address = 1

I found a bad solder joint on the tx and rx lines. So now the rx and tx LEDs light up on the TTL to 485 board. But Iā€™m still not getting data. I connected an ethernet jack to my cable and verified continuity between Brown and A+ and Brown/White and B-. I also then verified continuity between RX and RX and TX and TX.

Yes, I power the TTL with 5V from the d1 mini. Try that

Doh the 5V out is only connected when powered via USB. Going to be fun to resolderā€¦

Argh. Iā€™ll make the clearer in writeup

So I actually had spare parts and rather than resolder everything I put the 2nd set in a breadboard. It still doesnā€™t work. Iā€™ll look at it more this weekend.

It now works on the breadboard! Iā€™ll post a wiring diagram of the breadboard. Based on what I learned I hope I can get my original circuit working. Iā€™ll let you how it goes. Thanks!

Edit: I had to connect RX to TX and TX to RX between the D1 Mini and the TTL to 422 Board and separate the ground on the A/B side of the 422 board from the common ground

As promised:
image

I might print a board to make it look real nice :smiley:

Awesome! Really TX->RX ? Your TTL board must be different than mine. Your new diagram is still the old diagram. I did confirm mine is TX->TX and RX->RX and appears we used the same amazon link and the pinouts are the same! So weird

Good call. Updated.

Here is a parts list
Case: https://www.amazon.com/gp/product/B083LC22JZ
TTL To RS422: https://www.amazon.com/dp/B07YZTGHGG
D1 Mini: https://www.amazon.com/gp/product/B081PX9YFV
5V to 3.3V Regulator (AMS1117-3.3): https://www.amazon.com/gp/product/B07CP4P5XJ

image

EDIT:
Wiring diagram if powering via USB as in your instructions:

Did you ever print the board?

Yes, but I made a few mistakes on the first rev. I just ordered a second rev. Should arrive in a couple weeks.

Any chance of selling one if it works for you? Greatly interested in simplifying the setup.

Sure! The min buy from the vendor was 5. I only need 1ā€¦ sooooo, if you cover shipping Iā€™ll send you an unpopulated board.

Edit: Just as a side note, getting board printed is super cheap. 5x two layer boards only cost $3.50 (including shipping). I designed the board on https://easyeda.com and got it printed by https://jlcpcb.com.

Thanks for the details. I only need one, and assuming you donā€™t need all 5, Iā€™d be super appreciative and would cover the your costs + shipping for one of them. I can DM you my details if youā€™re amenable.

Works for me. @jaaem do you want one too if it works?

No thank you. I am fine with the ugly solder job! Quite proud of it! I also have other things soldered in, a Methane sensor (not really useful) and a temp/humidity/pressure meter.

1 Like

Iā€™m prototyping this project and am not getting any sensor readings. Iā€™m using the esphome config above with minor mods for Wi-Fi and BTU. Looking at the TX/RX LEDā€™s, I only see one blink when trying to read the registers. As mentioned above, I set the slave sequencer address to 1. I even restarted the boiler. Here is a picture of my mock-up. Does anything stand out as being incorrect? I tried swapping TX/RX as there seems to be some chance that it may work both ways based on the discussion above.

Logs

[12:40:16][V][modbus_controller:124]: Range : 7 Size: 2 (3) skip: 0
[12:40:16][V][modbus_controller:124]: Range : 42 Size: 1 (3) skip: 0
[12:40:16][V][modbus_controller:124]: Range : 53 Size: 1 (3) skip: 0
[12:40:16][V][modbus_controller:124]: Range : AA Size: 1 (3) skip: 0
[12:40:16][V][modbus_controller:124]: Range : C1 Size: 1 (3) skip: 0
[12:40:16][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x07 count 2
[12:40:16][V][modbus:199]: Modbus write: 01.03.00.07.00.02.75.CA (8)
[12:40:16][V][modbus_controller:486]: Command sent 3 0x7 2
[12:40:17][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x07 count 2
[12:40:17][V][modbus:199]: Modbus write: 01.03.00.07.00.02.75.CA (8)
[12:40:17][V][modbus_controller:486]: Command sent 3 0x7 2
[12:40:17][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x07 count 2
[12:40:17][V][modbus:199]: Modbus write: 01.03.00.07.00.02.75.CA (8)
[12:40:17][V][modbus_controller:486]: Command sent 3 0x7 2
[12:40:17][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x07 count 2
[12:40:17][V][modbus:199]: Modbus write: 01.03.00.07.00.02.75.CA (8)
[12:40:17][V][modbus_controller:486]: Command sent 3 0x7 2
[12:40:17][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x07 count 2
[12:40:17][V][modbus:199]: Modbus write: 01.03.00.07.00.02.75.CA (8)
[12:40:17][V][modbus_controller:486]: Command sent 3 0x7 2
[12:40:18][D][modbus_controller:029]: Modbus command to device=1 register=0x07 countdown=0 no response received - removed from send queue
[12:40:18][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x42 count 1
[12:40:18][V][modbus:199]: Modbus write: 01.03.00.42.00.01.24.1E (8)
[12:40:18][V][modbus_controller:486]: Command sent 3 0x42 1
[12:40:18][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x42 count 1
[12:40:18][V][modbus:199]: Modbus write: 01.03.00.42.00.01.24.1E (8)
[12:40:18][V][modbus_controller:486]: Command sent 3 0x42 1
[12:40:18][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x42 count 1
[12:40:18][V][modbus:199]: Modbus write: 01.03.00.42.00.01.24.1E (8)
[12:40:18][V][modbus_controller:486]: Command sent 3 0x42 1
[12:40:18][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x42 count 1
[12:40:18][V][modbus:199]: Modbus write: 01.03.00.42.00.01.24.1E (8)
[12:40:18][V][modbus_controller:486]: Command sent 3 0x42 1
[12:40:19][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x42 count 1
[12:40:19][V][modbus:199]: Modbus write: 01.03.00.42.00.01.24.1E (8)
[12:40:19][V][modbus_controller:486]: Command sent 3 0x42 1
[12:40:19][D][modbus_controller:029]: Modbus command to device=1 register=0x42 countdown=0 no response received - removed from send queue
[12:40:19][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x53 count 1
[12:40:19][V][modbus:199]: Modbus write: 01.03.00.53.00.01.74.1B (8)
[12:40:19][V][modbus_controller:486]: Command sent 3 0x53 1
[12:40:19][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x53 count 1
[12:40:19][V][modbus:199]: Modbus write: 01.03.00.53.00.01.74.1B (8)
[12:40:19][V][modbus_controller:486]: Command sent 3 0x53 1
[12:40:20][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x53 count 1
[12:40:20][V][modbus:199]: Modbus write: 01.03.00.53.00.01.74.1B (8)
[12:40:20][V][modbus_controller:486]: Command sent 3 0x53 1
[12:40:20][V][sensor:043]: ā€˜firing_rateā€™: Received new state nan
[12:40:20][D][sensor:093]: ā€˜firing_rateā€™: Sending state nan Btu/h with 1 decimals of accuracy
[12:40:20][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x53 count 1
[12:40:20][V][modbus:199]: Modbus write: 01.03.00.53.00.01.74.1B (8)
[12:40:20][V][modbus_controller:486]: Command sent 3 0x53 1
[12:40:20][V][modbus_controller:035]: Sending next modbus command to device 1 register 0x53 count 1
[12:40:20][V][modbus:199]: Modbus write: 01.03.00.53.00.01.74.1B (8)
[12:40:20][V][modbus_controller:486]: Command sent 3 0x53 1
[12:40:20][D][modbus_controller:029]: Modbus command to device=1 register=0x53 countdown=0 no response received - removed from send queue
[12:40:20][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xAA count 1
[12:40:20][V][modbus:199]: Modbus write: 01.03.00.AA.00.01.A4.2A (8)
[12:40:20][V][modbus_controller:486]: Command sent 3 0xAA 1
[12:40:21][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xAA count 1
[12:40:21][V][modbus:199]: Modbus write: 01.03.00.AA.00.01.A4.2A (8)
[12:40:21][V][modbus_controller:486]: Command sent 3 0xAA 1
[12:40:21][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xAA count 1
[12:40:21][V][modbus:199]: Modbus write: 01.03.00.AA.00.01.A4.2A (8)
[12:40:21][V][modbus_controller:486]: Command sent 3 0xAA 1
[12:40:21][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xAA count 1
[12:40:21][V][modbus:199]: Modbus write: 01.03.00.AA.00.01.A4.2A (8)
[12:40:21][V][modbus_controller:486]: Command sent 3 0xAA 1
[12:40:21][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xAA count 1
[12:40:21][V][modbus:199]: Modbus write: 01.03.00.AA.00.01.A4.2A (8)
[12:40:21][V][modbus_controller:486]: Command sent 3 0xAA 1
[12:40:22][D][modbus_controller:029]: Modbus command to device=1 register=0xAA countdown=0 no response received - removed from send queue
[12:40:22][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xC1 count 1
[12:40:22][V][modbus:199]: Modbus write: 01.03.00.C1.00.01.D5.F6 (8)
[12:40:22][V][modbus_controller:486]: Command sent 3 0xC1 1
[12:40:22][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xC1 count 1
[12:40:22][V][modbus:199]: Modbus write: 01.03.00.C1.00.01.D5.F6 (8)
[12:40:22][V][modbus_controller:486]: Command sent 3 0xC1 1
[12:40:22][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xC1 count 1
[12:40:22][V][modbus:199]: Modbus write: 01.03.00.C1.00.01.D5.F6 (8)
[12:40:22][V][modbus_controller:486]: Command sent 3 0xC1 1
[12:40:23][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xC1 count 1
[12:40:23][V][modbus:199]: Modbus write: 01.03.00.C1.00.01.D5.F6 (8)
[12:40:23][V][modbus_controller:486]: Command sent 3 0xC1 1
[12:40:23][V][modbus_controller:035]: Sending next modbus command to device 1 register 0xC1 count 1
[12:40:23][V][modbus:199]: Modbus write: 01.03.00.C1.00.01.D5.F6 (8)
[12:40:23][V][modbus_controller:486]: Command sent 3 0xC1 1
[12:40:23][D][modbus_controller:029]: Modbus command to device=1 register=0xC1 countdown=0 no response received - removed from send queue

Looks just like mine, except I have TX-TX, RX-RX

Check that your brown/brown-white correspond to 8 and 7 . Maybe your cable is different. If your cable is long, you may not need resister. Sorry for bad picture
.

1 Like