Burnham Alpine Interface Board

I built on @jaaem work and printed a circuit board. I’m also powering the circuit with a USB to 5V barrel connector instead of micro USB.

I have 3 more boards if anyone wants one. Just pay shipping

Parts:
Case: https://www.amazon.com/gp/product/B083LC22JZ
AMS1117-3.3 3.3V Voltage Regulator: https://www.amazon.com/gp/product/B07CP4P5XJ
TTL to RS485 Module 485: https://www.amazon.com/gp/product/B07YZTGHGG
D1 Mini (ESP8266): https://www.amazon.com/gp/product/B081PX9YFV
120 Ohm Resistor: https://www.amazon.com/EDGELEC-Resistor-Tolerance-Multiple-Resistance/dp/B07QH5QLR1
Connectors: https://www.amazon.com/gp/product/B091MQSM63
USB to Barrel: https://www.amazon.com/gp/product/B073SNC45F
DC Power Supply Jack Socket: https://www.amazon.com/gp/product/B082GHXS1Q






image

esphome:
  name: boiler

esp8266:
  board: d1_mini

uart:
  id: mod_bus
  tx_pin: GPIO3
  rx_pin: GPIO1
  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 11900.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: 119000 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:
  encryption:
    key: "mxZeFzB2BiiUbCwflfkhM43uMqlDzoMJy2ChJhBsdRM="

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

Nice job. I just noticed that you have

tx_pin: GPIO3
rx_pin: GPIO1

Whereas the OP had it reversed. That could explain why you thought you had your pins crossed.

I wired RX to TX and TX to RX. Hence the pin swap.