Skip to content

dala318/esphome-rego600

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

esphome-rego600

Started as a fork of Husdata H60 Arduino get started code but it is now broken out as stand-alone custom component. Used a lot of influence from the following projects:

To be used as custom component to ESPHome

Harware

The component is not bound the any specific harware setup, it only requires that a UART port of the MCU is connectred to the external comms-port of the heat-pump. This far, successfull communication of one sensor and one binary_sensor has been made with a lab-setup as this one Serial communication via optocouplers

Future planned functions

  • Extent entity type support
  • Provide ready-made input and output entities based on heat-pump model

NOTE: This integration is still in development and used at own risk. Connecting unsupported devices to your heat-pump via service interface may cause important settings to be overwritten and lost. Please start small with some read-only sensors.

Add the following to your ESPHome config

All entities are extendable with normal additional attrubutes as "unit_of_measurement", "state_class" etc.

An as complete as possible configuration package as possible is provided in rego600.yaml. Please use information from above provided links to adapt to your needs and model. When up and working it might be a good idea to prepare these type of templates rego1000-v3.7.0.yaml

external_components:
  - source: github://dala318/esphome-rego600

uart:
  id: uart_bus
  tx_pin: GPIO12
  rx_pin: GPIO13
  baud_rate: 19200
  debug:            # Optional, good for degugging input/output of UART
    direction: BOTH
    dummy_receiver: false

rego600:
  uart_id: uart_bus
  log_all: true
  id: rego600_hub
  log_all: true     # Optional, print some more
  read_delay: 10ms  # Optional, delay to first reading of UART
  retry_sleep: 20ms # Optional, delay between read attempts
  retry_attempts: 1 # Optional, number of read retry attempts
  # model: rego600    # Not in use!

binary_sensor:
  - platform: rego600
    rego600_id: rego600_hub  # Optional if only one hub
    name: Radiator pump P1
    rego_variable: 0x0203

sensor:
  - platform: homeassistant  # Get actual indoor temp from other sensor, could also be a sensor read from rego600
    entity_id: sensor.indoor_temperature
    id: indoor_temp

  - platform: rego600
    name: Radiator return GT1
    rego_variable: 0x0209
    value_factor: 0.1         # Optional, scale factor multiply register-value -> real
    # All configurations inherited from basic sensor
    unit_of_measurement: °C
    state_class: measurement
    accuracy_decimals: 1

  - platform: rego600
    name: Outdoor GT2
    rego_variable: 0x020A

number:               # UNTESTED!
  - platform: rego600
    name: GT1 Target value
    rego_variable: 0x006E
    value_factor: 0.1 # Optional, scale factor multiply register-value -> real
    retry_write: 1    # Optional, retry writing event if com bussy
    # All configurations inherited from basic number
    min_value: 0
    max_value: 100
    step: 1

button:               # UNTESTED!
  - platform: rego600
    name: External control
    rego_variable: 0x0213
    payload: 0x01     # Optional, data to provide on action
    retry_write: 3    # Optional, retry writing event if com bussy

# Disabled: not really finalized, use the number component to set values
# climate:
#   - platform: rego600
#     name: House temp
#     rego_variable: 0x0010
#     sensor_id: indoor_temp

Function overview

Flow overview for updating a single sensor entity

graph TD;
    start(Start);
    send[Send command]
    read_delay[Wait read_delay]
    data_available{Data in RX-buffer?}
    retry_sleep[Wait retry_sleep];
    retry_attempts{< retry_attempts};
    read_data[Read data]
    error(Error)
    validate_data{Data valid?}
    ok(Update sensor)

    start-->send;
    send-->read_delay;
    read_delay-->data_available

    data_available-->|no|retry_attempts;
    retry_attempts-->|yes|retry_sleep;
    retry_sleep-->data_available;
    retry_attempts-->|no|error;

    data_available-->|yes|read_data;
    read_data-->validate_data;
    validate_data-->|yes|ok
    validate_data-->|no|error
Loading

For HW debugging it's suggested to use a stream server to your config for direct connection between your PC and heat-pump. But have not tested this in combination and possible that the rego600 component and stream_server will not work together, stealing received messages from each other.