Skip to content
/ uponor Public

ESPHome custom component to hook into uponor floor heating

Notifications You must be signed in to change notification settings

jaxer/uponor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 

Repository files navigation

What is this

Custom ESPHome component that allows connecting Uponor floor heating to Home Assistant.

image

Credits

Disclaimers

Safety: Working with 220-volt devices can be dangerous. Handle with care and expertise. We're not responsible for any injuries or damages.

IPR: This project is purely academic. If any content breaches your Intellectual Property Rights, please let us know. We respect IPR and will promptly address your concerns.

Warranty: Implementing the procedures in this project may void your device's warranty. Proceed with caution and at your own risk.

Hardware that works

I have the followng Uponor controllers and thermometers: IMG-1878 IMG-1879

How its connected

There are two separate controllers at my property, each has 4-5 thermometers connected to and a set of actuators. So I had to create two individual ESPHome devices to hook both controllers to Home Assistant.

First device is running ESP-01 and second running ESP-32. So it is not important which ESP device you choose. Both are connected to rs485 module from aliexpress. You dont need to choose this one specifically, there are plenty of options out there.

IMG-1880

All thermometers are connected to same bus consisting of 4 labeled wires:

  • A-rs485
  • B-rs485
  • +5v
  • -5v

So you take rs485 module, connect it to UART of ESP device and to A/B data lines. You can use those 5 volts from the Uponor bus (making whole thing very compact). Make sure your controller is 5 volts safe.

Example of ESPHome configuration

Copy files from this repo into config/esphome and create a new device yaml file similar to the following. Note that device ID's (0x2BBA, 0x73C5, 0x4DC5, etc) are installation specific. Library is logging a lot of stuff, so you can find those from there.

esphome:
  name: uponor_living
  platform: ESP8266
  board: esp01_1m
  includes:
    - custom/uponor/uponor_base_device.hpp
    - custom/uponor/uponor_bus.hpp
    - custom/uponor/uponor_climate.hpp
    - custom/uponor/uponor_sensors.hpp

wifi:
  ...
api:
  ...
ota:
  ...

logger:
  baud_rate: 0

  logs:
    sensor: ERROR

uart:
  id: uart_bus
  tx_pin: 1
  rx_pin: 3
  baud_rate: 19200

custom_component:
  - lambda: |-
      auto bus = new UponorBus(id(uart_bus));
      return {bus};
    components:
      - id: uponor_bus

climate:
  platform: custom
  lambda: |-
    auto cabinet = new UponorClimate(0x2BBA, (UponorBus*) id(uponor_bus));
    auto corridor = new UponorClimate(0x73C5, (UponorBus*) id(uponor_bus));
    auto shower = new UponorClimate(0x4DC5, (UponorBus*) id(uponor_bus));
    auto garage = new UponorClimate(0x13BA, (UponorBus*) id(uponor_bus));
    auto living = new UponorClimate(0x61C5, (UponorBus*) id(uponor_bus));

    return {
      cabinet, corridor, shower, garage, living
    };
  climates:
    - name: "Cabinet Heating"
    - name: "Corridor Heating"
    - name: "Shower Heating"
    - name: "Garage Heating"
    - name: "Living Heating"

sensor:
  platform: custom
  lambda: |-
    auto cabinet = new UponorSensors(0x2BBA, (UponorBus*) id(uponor_bus));
    auto corridor = new UponorSensors(0x73C5, (UponorBus*) id(uponor_bus));
    auto shower = new UponorSensors(0x4DC5, (UponorBus*) id(uponor_bus));
    auto garage = new UponorSensors(0x13BA, (UponorBus*) id(uponor_bus));
    auto living = new UponorSensors(0x61C5, (UponorBus*) id(uponor_bus));
    
    return {
      cabinet->room_temp,cabinet->floor_temp,cabinet->set_temp,cabinet->heating,
      corridor->room_temp,corridor->floor_temp,corridor->set_temp,corridor->heating,
      shower->room_temp,shower->floor_temp,shower->set_temp,shower->heating,
      garage->room_temp,garage->floor_temp,garage->set_temp,garage->heating,
      living->room_temp,living->floor_temp,living->set_temp,living->heating,
    };
  sensors:
    - name: "Cabinet Room Temperature"
      unit_of_measurement: °C
      accuracy_decimals: 1
      device_class: temperature
    - name: "Cabinet Floor Temperature"
      unit_of_measurement: °C
      accuracy_decimals: 1
      device_class: temperature
    - name: "Cabinet Set Temperature"
      unit_of_measurement: °C
      accuracy_decimals: 1
      device_class: temperature
    - name: "Cabinet Heating On"

    - name: "Corridor Room Temperature"
      unit_of_measurement: °C
      accuracy_decimals: 1
      device_class: temperature
    - name: "Corridor Floor Temperature"
      unit_of_measurement: °C
      accuracy_decimals: 1
      device_class: temperature
    - name: "Corridor Set Temperature"
      unit_of_measurement: °C
      accuracy_decimals: 1
      device_class: temperature
    - name: "Corridor Heating On"

    - name: "Shower Room Temperature"
      unit_of_measurement: °C
      accuracy_decimals: 1
      device_class: temperature
    - name: "Shower Floor Temperature"
      unit_of_measurement: °C
      accuracy_decimals: 1
      device_class: temperature
    - name: "Shower Set Temperature"
      unit_of_measurement: °C
      accuracy_decimals: 1
      device_class: temperature
    - name: "Shower Heating On"

    - name: "Garage Room Temperature"
      unit_of_measurement: °C
      accuracy_decimals: 1
      device_class: temperature
    - name: "Garage Floor Temperature"
      unit_of_measurement: °C
      accuracy_decimals: 1
      device_class: temperature
    - name: "Garage Set Temperature"
      unit_of_measurement: °C
      accuracy_decimals: 1
      device_class: temperature
    - name: "Garage Heating On"

    - name: "Living Room Temperature"
      unit_of_measurement: °C
      accuracy_decimals: 1
      device_class: temperature
    - name: "Living Floor Temperature"
      unit_of_measurement: °C
      accuracy_decimals: 1
      device_class: temperature
    - name: "Living Set Temperature"
      unit_of_measurement: °C
      accuracy_decimals: 1
      device_class: temperature
    - name: "Living Heating On"

You can read more about how custom components work in ESPHome documentation

About

ESPHome custom component to hook into uponor floor heating

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages