Skip to content

Instantly share code, notes, and snippets.

@rattkin
Created December 31, 2024 20:56
Show Gist options
  • Save rattkin/9883e02788bef3735ee2f7698abafd13 to your computer and use it in GitHub Desktop.
Save rattkin/9883e02788bef3735ee2f7698abafd13 to your computer and use it in GitHub Desktop.
substitutions:
name: esphome-web-24f048
friendly_name: rekuperace
esphome:
name: ${name}
friendly_name: ${friendly_name}
min_version: 2024.6.0
name_add_mac_suffix: false
project:
name: esphome.web
version: dev
esp32:
board: esp32dev
framework:
type: arduino
# Enable logging
logger:
# Enable Home Assistant API
api:
# Allow Over-The-Air updates
ota:
- platform: esphome
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
esp32_ble_tracker:
dashboard_import:
package_import_url: github://esphome/example-configs/esphome-web/esp32.yaml@main
import_full_config: true
uart:
id: mod_bus
tx_pin: 16
rx_pin: 17
baud_rate: 19200
stop_bits: 1
modbus:
id: modbus1
modbus_controller:
- id: rekup
## the Modbus device addr.
address: 0x1
modbus_id: modbus1
setup_priority: -10
text_sensor:
- platform: modbus_controller
modbus_controller_id: rekup
id: rekup_bypass_status_text
register_type: read
address: 4050
raw_encode: NONE
name: Rekup Bypass Status
lambda: |-
uint16_t int_mode = (data[item->offset] << 8) + data[item->offset+1];
ESP_LOGD("main","Parsed operation mode int : %d", int_mode);
std::string mode_str;
switch (int_mode) {
case 0: mode_str = "INITIALIZATING"; break;
case 1: mode_str = "OPEN"; break;
case 2: mode_str = "CLOSED"; break;
case 3: mode_str = "OPEN"; break;
case 4: mode_str = "CLOSED"; break;
default: mode_str = "Unknown"; break;
}
return mode_str;
- platform: modbus_controller
modbus_controller_id: rekup
id: rekup_filter_status_text
register_type: read
address: 4100
raw_encode: NONE
name: Rekup Filter Status
lambda: |-
uint16_t int_mode = (data[item->offset] << 8) + data[item->offset+1];
ESP_LOGD("main","Parsed operation mode int : %d", int_mode);
std::string mode_str;
switch (int_mode) {
case 0: mode_str = "CLEAN"; break;
case 1: mode_str = "DIRTY"; break;
default: mode_str = "Unknown"; break;
}
return mode_str;
- platform: modbus_controller
modbus_controller_id: rekup
id: rekup_defrost_status_text
register_type: read
address: 4070
raw_encode: NONE
name: Rekup Defrost Status
lambda: |-
uint16_t int_mode = (data[item->offset] << 8) + data[item->offset+1];
ESP_LOGD("main","Parsed operation mode int : %d", int_mode);
std::string mode_str;
switch (int_mode) {
case 0: mode_str = "NotInitialized"; break;
case 1: mode_str = "PowerUp Delay"; break;
case 2: mode_str = "No Frost"; break;
case 3: mode_str = "NoFrost Delay"; break;
case 4: mode_str = "FrostControl Start Delay"; break;
case 5: mode_str = "Wait For Icing"; break;
case 6: mode_str = "IceDetected Delay"; break;
case 7: mode_str = "Heating"; break;
case 8: mode_str = "Wait for Free Heater"; break;
case 9: mode_str = "FanControl Start Delay"; break;
case 10: mode_str = "FanControl Wait Delay"; break;
case 11: mode_str = "FanControl"; break;
case 12: mode_str = "Fan Off Delay"; break;
case 13: mode_str = "Fan Off"; break;
case 14: mode_str = "Fan Restarting"; break;
case 15: mode_str = "Error"; break;
case 16: mode_str = "Test Mode"; break;
default: mode_str = "Unknown"; break;
}
return mode_str;
sensor:
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup To House temperature"
id: rekup_to_house_temp
register_type: read
address: 4036
unit_of_measurement: "°C"
value_type: S_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup To House humidity"
id: rekup_to_house_humidity
register_type: read
address: 4037
unit_of_measurement: "%"
value_type: S_WORD
accuracy_decimals: 1
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup To Outside Temperature"
id: rekup_to_outside_temp
register_type: read
address: 4046
unit_of_measurement: "°C"
value_type: S_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup To Outside humidity"
id: rekup_to_outside_humidity
register_type: read
address: 4047
unit_of_measurement: "%"
value_type: S_WORD
accuracy_decimals: 1
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup From Outside Temperature"
id: rekup_from_outside_temp
register_type: read
address: 4081
unit_of_measurement: "°C"
value_type: S_WORD
accuracy_decimals: 1
filters:
- multiply: 0.1
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Flow Actual Intake"
id: rekup_prutok_in
register_type: read
address: 4032
unit_of_measurement: "m3/h"
value_type: S_WORD
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Flow Actual Exhaust"
id: rekup_prutok_out
register_type: read
address: 4042
unit_of_measurement: "m3/h"
value_type: S_WORD
- platform: atc_mithermometer
mac_address: A4:C1:38:28:ED:18
temperature:
name: "puda_teplota"
humidity:
name: "puda_vlhkost"
battery_level:
name: "puda_battery-Level"
battery_voltage:
name: "puda_battery-Voltage"
signal_strength:
name: "puda_signal"
- platform: atc_mithermometer
mac_address: A4:C1:38:1B:83:C5
temperature:
name: "chodba_teplota"
humidity:
name: "chodba_vlhkost"
battery_level:
name: "chodba_battery-Level"
battery_voltage:
name: "chodba_battery-Voltage"
signal_strength:
name: "chodba_signal"
select:
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Modbus Control Mode"
address: 8000
value_type: S_WORD
optimistic: TRUE
optionsmap:
"Device LCD": 0
"Modbus Step": 1
"Modbus Flow": 2
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Bypass Mode"
address: 6100
value_type: S_WORD
optimistic: TRUE
optionsmap:
"Auto": 0
"Closed": 1
"Open": 2
switch:
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Bypass Boost switch"
register_type: holding
address: 6104
bitmask: 1
entity_category: config
icon: "mdi:toggle-switch"
number:
- platform: modbus_controller
modbus_controller_id: rekup
name: "Bypass From Inside Temperature"
id: bypass_from_inside_temp
register_type: holding
address: 6101
unit_of_measurement: "°C"
value_type: S_WORD
multiply: 10
mode: slider
- platform: modbus_controller
modbus_controller_id: rekup
name: "Bypass From Outside Temperature"
id: bypass_from_outside_temp
register_type: holding
address: 6102
unit_of_measurement: "°C"
value_type: S_WORD
multiply: 10
mode: slider
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Modbus step setting"
id: rekup_step_setting
register_type: holding
address: 8001
value_type: S_WORD
min_value: 0
max_value: 3
mode: slider
# Maximum value for Flair 325 is 325m3/h
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Modbus flow value"
id: rekup_prutok_nastaveni
register_type: holding
address: 8002
value_type: S_WORD
min_value: 0
max_value: 280
mode: slider
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Flow 1"
id: rekup_flow_1
register_type: holding
address: 6001
unit_of_measurement: "m3/h"
value_type: S_WORD
min_value: 50
max_value: 325
mode: slider
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Flow 2"
id: rekup_flow_2
register_type: holding
address: 6002
unit_of_measurement: "m3/h"
value_type: S_WORD
min_value: 50
max_value: 325
mode: slider
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Flow 3"
id: rekup_flow_3
register_type: holding
address: 6003
unit_of_measurement: "m3/h"
value_type: S_WORD
min_value: 50
max_value: 325
mode: slider
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Fan Imbalance Intake"
id: rekup_imbalance_intake
register_type: holding
address: 6035
unit_of_measurement: "%"
value_type: S_WORD
multiply: 10
min_value: -15
max_value: 15
mode: slider
- platform: modbus_controller
modbus_controller_id: rekup
name: "Rekup Fan Imbalance Exhaust"
id: rekup_imbalance_exhaust
register_type: holding
address: 6036
unit_of_measurement: "%"
value_type: S_WORD
multiply: 10
min_value: -15
max_value: 15
mode: slider
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment