From f03d72240720bb8769631fefcb01bdb5bb4c4a99 Mon Sep 17 00:00:00 2001 From: Your Name Date: Fri, 18 Aug 2023 15:18:04 +0200 Subject: [PATCH] add WomoLinController example. --- WomoLinControllerEthernet.yaml | 251 ++++++++++++++++++++++++++++ WomoLinControllerEthernetMqtt.yaml | 255 +++++++++++++++++++++++++++++ 2 files changed, 506 insertions(+) create mode 100644 WomoLinControllerEthernet.yaml create mode 100644 WomoLinControllerEthernetMqtt.yaml diff --git a/WomoLinControllerEthernet.yaml b/WomoLinControllerEthernet.yaml new file mode 100644 index 0000000..31f19ff --- /dev/null +++ b/WomoLinControllerEthernet.yaml @@ -0,0 +1,251 @@ +esphome: + # https://womolin.de/products/womolin-lin-controller/ + name: "womo_lin_controller" + +external_components: + - source: github://Fabian-Schmidt/esphome-truma_inetbox + # - source: + # type: local + # path: ./components + components: ["truma_inetbox"] + +esp32: + board: esp32dev + framework: + type: arduino + +logger: + baud_rate: 2000000 + # level: VERY_VERBOSE + # level: VERBOSE + # level: DEBUG + # level: INFO + # level: WARN + level: NONE + +ethernet: + type: KSZ8081RNA + mdc_pin: 23 + mdio_pin: 18 + clk_mode: GPIO16_OUT + +uart: + - id: lin_uart_bus + tx_pin: 15 + rx_pin: 14 + baud_rate: 9600 + data_bits: 8 + parity: NONE + stop_bits: 2 + +truma_inetbox: + id: truma_inetbox_id + uart_id: lin_uart_bus + # # Advanced users can use `on_heater_message` action. The heater data is in the `message` variable. + # on_heater_message: + # then: + # - logger.log: "Message from CP Plus." + # - if: + # condition: + # lambda: return message->operating_status == truma_inetbox::OperatingStatus::OPERATING_STATUS_OFF; + # then: + # - logger.log: "Heater is off." + +binary_sensor: + - platform: truma_inetbox + name: "CP Plus alive" + type: CP_PLUS_CONNECTED + id: CP_PLUS_CONNECTED + + - platform: truma_inetbox + name: "Room Heater active" + type: HEATER_ROOM + id: HEATER_ROOM + - platform: truma_inetbox + name: "Water Heater active" + type: HEATER_WATER + id: HEATER_WATER + - platform: truma_inetbox + name: "Heater mode Gas" + type: HEATER_GAS + - platform: truma_inetbox + name: "Heater mode Mix 1" + type: HEATER_MIX_1 + - platform: truma_inetbox + name: "Heater mode Mix 2" + type: HEATER_MIX_2 + - platform: truma_inetbox + name: "Heater mode Elec" + type: HEATER_ELECTRICITY + - platform: truma_inetbox + name: "Heater has error" + type: HEATER_HAS_ERROR + + - platform: truma_inetbox + name: "Timer active" + type: TIMER_ACTIVE + id: TIMER_ACTIVE + - platform: truma_inetbox + name: "Timer Room Heater active" + type: TIMER_ROOM + - platform: truma_inetbox + name: "Timer Water Heater active" + type: TIMER_WATER + +climate: + - platform: truma_inetbox + name: "Truma Room" + type: ROOM + - platform: truma_inetbox + name: "Truma Water" + type: WATER + +number: + - platform: truma_inetbox + name: "Target Room Temperature" + type: TARGET_ROOM_TEMPERATURE + - platform: truma_inetbox + name: "Target Water Temperature" + type: TARGET_WATER_TEMPERATURE + - platform: truma_inetbox + name: "electric power level" + type: ELECTRIC_POWER_LEVEL + - platform: truma_inetbox + name: "Aircon Temperature" + type: AIRCON_MANUAL_TEMPERATURE + +sensor: + - platform: truma_inetbox + name: "Current Room Temperature" + type: CURRENT_ROOM_TEMPERATURE + - platform: truma_inetbox + name: "Current Water Temperature" + type: CURRENT_WATER_TEMPERATURE + - platform: truma_inetbox + name: "Target Room Temperature" + type: TARGET_ROOM_TEMPERATURE + - platform: truma_inetbox + name: "Target Water Temperature" + type: TARGET_WATER_TEMPERATURE + - platform: truma_inetbox + name: "Heating mode" + type: HEATING_MODE + - platform: truma_inetbox + name: "electric power level" + type: ELECTRIC_POWER_LEVEL + - platform: truma_inetbox + name: "Energy mix" + type: ENERGY_MIX + - platform: truma_inetbox + name: "Operating status" + type: OPERATING_STATUS + - platform: truma_inetbox + name: "Heater error code" + type: HEATER_ERROR_CODE + +switch: + - platform: template + name: "Activate Room Heater" + lambda: |- + return id(HEATER_ROOM).state; + turn_on_action: + - truma_inetbox.heater.set_target_room_temperature: + # You can use lambda functions + temperature: !lambda |- + return 16; + # Optional set heating mode: `"OFF"`, `ECO`, `HIGH`, `BOOST` + heating_mode: ECO + turn_off_action: + - truma_inetbox.heater.set_target_room_temperature: + # Disable heater by setting temperature to `0`. + temperature: 0 + - platform: template + name: "Activate Water Heater" + lambda: |- + return id(HEATER_WATER).state; + turn_on_action: + - truma_inetbox.heater.set_target_water_temperature: + # Set water temp as number: `0`, `40`, `60`, `80` + temperature: 40 + turn_off_action: + - truma_inetbox.heater.set_target_water_temperature: + # Disable heater by setting temperature to `0`. + temperature: 0 + - platform: template + name: "Activate Water Heater (enum)" + lambda: |- + return id(HEATER_WATER).state; + turn_on_action: + - truma_inetbox.heater.set_target_water_temperature_enum: + # Set water temp as text: `"OFF"`, `ECO`, `HIGH`, `BOOST` + temperature: ECO + turn_off_action: + # You can also use the simplified syntax. + - truma_inetbox.heater.set_target_water_temperature_enum: "OFF" + - platform: template + name: "Active Timer" + lambda: |- + return id(TIMER_ACTIVE).state; + turn_on_action: + - truma_inetbox.timer.activate: + start: 7:00 + stop: 9:30 + # Required: Set room temp to a number between 5 and 30 + room_temperature: 13 + # Optional: Set heating mode: `"OFF"`, `ECO`, `HIGH`, `BOOST` + heating_mode: ECO + # Optional: Set water temp as number: `0`, `40`, `60`, `80` + water_temperature: 0 + # Optional: Set energy mix to: `GAS`, `MIX`, `ELECTRICITY` + energy_mix: GAS + # Optional: Set electricity level to `0`, `900`, `1800` + watt: 0 + + turn_off_action: + # You can also use the simplified syntax. + - truma_inetbox.timer.disable + +button: + - platform: template + name: "Energy mix GAS only" + on_press: + - truma_inetbox.heater.set_energy_mix: + # Set energy mix to: `GAS`, `MIX`, `ELECTRICITY` + energy_mix: GAS + - platform: template + name: "Energy mix MIX 1" + on_press: + - truma_inetbox.heater.set_energy_mix: + energy_mix: MIX + # Set electricity level to `0`, `900`, `1800` + watt: 900W + - platform: template + name: "Energy mix MIX 2" + on_press: + - truma_inetbox.heater.set_energy_mix: + energy_mix: MIX + watt: 1800 + - platform: template + name: "Energy mix ELECTRICITY only" + on_press: + - truma_inetbox.heater.set_energy_mix: + energy_mix: ELECTRICITY + watt: 1800W + - platform: template + name: "Set electric power level to 0 Watt" + on_press: + - truma_inetbox.heater.set_electric_power_level: 0 + - platform: template + name: "Set electric power level to 900 Watt" + on_press: + - truma_inetbox.heater.set_electric_power_level: 900 + - platform: template + name: "Set electric power level to 1800 Watt" + on_press: + - truma_inetbox.heater.set_electric_power_level: 1800 + +# web_server: +# port: 80 +# local: true +# version: 2 +# include_internal: true \ No newline at end of file diff --git a/WomoLinControllerEthernetMqtt.yaml b/WomoLinControllerEthernetMqtt.yaml new file mode 100644 index 0000000..fc036fa --- /dev/null +++ b/WomoLinControllerEthernetMqtt.yaml @@ -0,0 +1,255 @@ +esphome: + # https://womolin.de/products/womolin-lin-controller/ + name: "womo_lin_controller" + +external_components: + - source: github://Fabian-Schmidt/esphome-truma_inetbox + # - source: + # type: local + # path: ./components + components: ["truma_inetbox"] + +esp32: + board: esp32dev + framework: + type: arduino + +logger: + baud_rate: 2000000 + # level: VERY_VERBOSE + # level: VERBOSE + # level: DEBUG + # level: INFO + # level: WARN + level: NONE + +ethernet: + type: KSZ8081RNA + mdc_pin: 23 + mdio_pin: 18 + clk_mode: GPIO16_OUT + +mqtt: + id: mqtt_client + broker: 192.168.1.1 + +uart: + - id: lin_uart_bus + tx_pin: 15 + rx_pin: 14 + baud_rate: 9600 + data_bits: 8 + parity: NONE + stop_bits: 2 + +truma_inetbox: + id: truma_inetbox_id + uart_id: lin_uart_bus + # # Advanced users can use `on_heater_message` action. The heater data is in the `message` variable. + # on_heater_message: + # then: + # - logger.log: "Message from CP Plus." + # - if: + # condition: + # lambda: return message->operating_status == truma_inetbox::OperatingStatus::OPERATING_STATUS_OFF; + # then: + # - logger.log: "Heater is off." + +binary_sensor: + - platform: truma_inetbox + name: "CP Plus alive" + type: CP_PLUS_CONNECTED + id: CP_PLUS_CONNECTED + + - platform: truma_inetbox + name: "Room Heater active" + type: HEATER_ROOM + id: HEATER_ROOM + - platform: truma_inetbox + name: "Water Heater active" + type: HEATER_WATER + id: HEATER_WATER + - platform: truma_inetbox + name: "Heater mode Gas" + type: HEATER_GAS + - platform: truma_inetbox + name: "Heater mode Mix 1" + type: HEATER_MIX_1 + - platform: truma_inetbox + name: "Heater mode Mix 2" + type: HEATER_MIX_2 + - platform: truma_inetbox + name: "Heater mode Elec" + type: HEATER_ELECTRICITY + - platform: truma_inetbox + name: "Heater has error" + type: HEATER_HAS_ERROR + + - platform: truma_inetbox + name: "Timer active" + type: TIMER_ACTIVE + id: TIMER_ACTIVE + - platform: truma_inetbox + name: "Timer Room Heater active" + type: TIMER_ROOM + - platform: truma_inetbox + name: "Timer Water Heater active" + type: TIMER_WATER + +climate: + - platform: truma_inetbox + name: "Truma Room" + type: ROOM + - platform: truma_inetbox + name: "Truma Water" + type: WATER + +number: + - platform: truma_inetbox + name: "Target Room Temperature" + type: TARGET_ROOM_TEMPERATURE + - platform: truma_inetbox + name: "Target Water Temperature" + type: TARGET_WATER_TEMPERATURE + - platform: truma_inetbox + name: "electric power level" + type: ELECTRIC_POWER_LEVEL + - platform: truma_inetbox + name: "Aircon Temperature" + type: AIRCON_MANUAL_TEMPERATURE + +sensor: + - platform: truma_inetbox + name: "Current Room Temperature" + type: CURRENT_ROOM_TEMPERATURE + - platform: truma_inetbox + name: "Current Water Temperature" + type: CURRENT_WATER_TEMPERATURE + - platform: truma_inetbox + name: "Target Room Temperature" + type: TARGET_ROOM_TEMPERATURE + - platform: truma_inetbox + name: "Target Water Temperature" + type: TARGET_WATER_TEMPERATURE + - platform: truma_inetbox + name: "Heating mode" + type: HEATING_MODE + - platform: truma_inetbox + name: "electric power level" + type: ELECTRIC_POWER_LEVEL + - platform: truma_inetbox + name: "Energy mix" + type: ENERGY_MIX + - platform: truma_inetbox + name: "Operating status" + type: OPERATING_STATUS + - platform: truma_inetbox + name: "Heater error code" + type: HEATER_ERROR_CODE + +switch: + - platform: template + name: "Activate Room Heater" + lambda: |- + return id(HEATER_ROOM).state; + turn_on_action: + - truma_inetbox.heater.set_target_room_temperature: + # You can use lambda functions + temperature: !lambda |- + return 16; + # Optional set heating mode: `"OFF"`, `ECO`, `HIGH`, `BOOST` + heating_mode: ECO + turn_off_action: + - truma_inetbox.heater.set_target_room_temperature: + # Disable heater by setting temperature to `0`. + temperature: 0 + - platform: template + name: "Activate Water Heater" + lambda: |- + return id(HEATER_WATER).state; + turn_on_action: + - truma_inetbox.heater.set_target_water_temperature: + # Set water temp as number: `0`, `40`, `60`, `80` + temperature: 40 + turn_off_action: + - truma_inetbox.heater.set_target_water_temperature: + # Disable heater by setting temperature to `0`. + temperature: 0 + - platform: template + name: "Activate Water Heater (enum)" + lambda: |- + return id(HEATER_WATER).state; + turn_on_action: + - truma_inetbox.heater.set_target_water_temperature_enum: + # Set water temp as text: `"OFF"`, `ECO`, `HIGH`, `BOOST` + temperature: ECO + turn_off_action: + # You can also use the simplified syntax. + - truma_inetbox.heater.set_target_water_temperature_enum: "OFF" + - platform: template + name: "Active Timer" + lambda: |- + return id(TIMER_ACTIVE).state; + turn_on_action: + - truma_inetbox.timer.activate: + start: 7:00 + stop: 9:30 + # Required: Set room temp to a number between 5 and 30 + room_temperature: 13 + # Optional: Set heating mode: `"OFF"`, `ECO`, `HIGH`, `BOOST` + heating_mode: ECO + # Optional: Set water temp as number: `0`, `40`, `60`, `80` + water_temperature: 0 + # Optional: Set energy mix to: `GAS`, `MIX`, `ELECTRICITY` + energy_mix: GAS + # Optional: Set electricity level to `0`, `900`, `1800` + watt: 0 + + turn_off_action: + # You can also use the simplified syntax. + - truma_inetbox.timer.disable + +button: + - platform: template + name: "Energy mix GAS only" + on_press: + - truma_inetbox.heater.set_energy_mix: + # Set energy mix to: `GAS`, `MIX`, `ELECTRICITY` + energy_mix: GAS + - platform: template + name: "Energy mix MIX 1" + on_press: + - truma_inetbox.heater.set_energy_mix: + energy_mix: MIX + # Set electricity level to `0`, `900`, `1800` + watt: 900W + - platform: template + name: "Energy mix MIX 2" + on_press: + - truma_inetbox.heater.set_energy_mix: + energy_mix: MIX + watt: 1800 + - platform: template + name: "Energy mix ELECTRICITY only" + on_press: + - truma_inetbox.heater.set_energy_mix: + energy_mix: ELECTRICITY + watt: 1800W + - platform: template + name: "Set electric power level to 0 Watt" + on_press: + - truma_inetbox.heater.set_electric_power_level: 0 + - platform: template + name: "Set electric power level to 900 Watt" + on_press: + - truma_inetbox.heater.set_electric_power_level: 900 + - platform: template + name: "Set electric power level to 1800 Watt" + on_press: + - truma_inetbox.heater.set_electric_power_level: 1800 + +# web_server: +# port: 80 +# local: true +# version: 2 +# include_internal: true \ No newline at end of file