diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3f79f7b..55ce096 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -27,17 +27,17 @@ jobs: matrix: include: - id: test - file: tests/test1.yaml - name: Test tests/test1.yaml - pio_cache_key: test1 - #- id: test - # file: tests/test2.yaml - # name: Test tests/test2.yaml - # pio_cache_key: test2 - #- id: test - # file: tests/test3.yaml - # name: Test tests/test3.yaml - # pio_cache_key: test3 + file: tests/test.esp32_ard.yaml + name: Test tests/test.esp32_ard.yaml + pio_cache_key: test.esp32_ard + - id: test + file: tests/test.esp32_idf.yaml + name: Test tests/test.esp32_idf.yaml + pio_cache_key: test.esp32_idf + - id: test + file: tests/test.rp2040.yaml + name: Test tests/test.rp2040.yaml + pio_cache_key: test.rp2040 steps: - uses: actions/checkout@v3 diff --git a/test/test1.yaml b/test/test1.yaml deleted file mode 100644 index 996eabe..0000000 --- a/test/test1.yaml +++ /dev/null @@ -1,242 +0,0 @@ -esphome: - name: "truma_esp32_ard" - - on_boot: - then: - # read time from external source (connected via I2C) - - ds1307.read_time - -external_components: - - source: - type: local - path: ./components - components: ["truma_inetbox", "uart"] - -esp32: - board: mhetesp32devkit - framework: - type: arduino - -i2c: - sda: 14 - scl: 27 - scan: false - id: i2c_bus_a - -time: - - platform: ds1307 - update_interval: never - id: esptime - -uart: - - id: lin_uart_bus - tx_pin: 17 - rx_pin: 16 - baud_rate: 9600 - data_bits: 8 - parity: NONE - stop_bits: 2 - -truma_inetbox: - uart_id: lin_uart_bus - time_id: esptime - cs_pin: 5 - fault_pin: 18 - # 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 - - - 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 - -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 diff --git a/tests/test.common.binary_sensor.yaml b/tests/test.common.binary_sensor.yaml new file mode 100644 index 0000000..b9deba9 --- /dev/null +++ b/tests/test.common.binary_sensor.yaml @@ -0,0 +1,38 @@ + - platform: truma_inetbox + name: "CP Plus alive" + type: 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 diff --git a/tests/test.common.button.yaml b/tests/test.common.button.yaml new file mode 100644 index 0000000..1ae2d7f --- /dev/null +++ b/tests/test.common.button.yaml @@ -0,0 +1,37 @@ + - 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 diff --git a/tests/test.common.climate.yaml b/tests/test.common.climate.yaml new file mode 100644 index 0000000..d6fe4bc --- /dev/null +++ b/tests/test.common.climate.yaml @@ -0,0 +1,6 @@ + - platform: truma_inetbox + name: "Truma Room" + type: ROOM + - platform: truma_inetbox + name: "Truma Water" + type: WATER diff --git a/tests/test.common.number.yaml b/tests/test.common.number.yaml new file mode 100644 index 0000000..298fa66 --- /dev/null +++ b/tests/test.common.number.yaml @@ -0,0 +1,9 @@ + - 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 diff --git a/tests/test.common.sensor.yaml b/tests/test.common.sensor.yaml new file mode 100644 index 0000000..45970ac --- /dev/null +++ b/tests/test.common.sensor.yaml @@ -0,0 +1,27 @@ + - 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 diff --git a/tests/test.common.switch.yaml b/tests/test.common.switch.yaml new file mode 100644 index 0000000..02e69ff --- /dev/null +++ b/tests/test.common.switch.yaml @@ -0,0 +1,60 @@ + - 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 diff --git a/tests/test.common.truma_inetbox.yaml b/tests/test.common.truma_inetbox.yaml new file mode 100644 index 0000000..dc0dddb --- /dev/null +++ b/tests/test.common.truma_inetbox.yaml @@ -0,0 +1,13 @@ + uart_id: lin_uart_bus + time_id: esptime + cs_pin: 5 + fault_pin: 18 + # 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." \ No newline at end of file diff --git a/tests/test.common.uart.yaml b/tests/test.common.uart.yaml new file mode 100644 index 0000000..58ce76f --- /dev/null +++ b/tests/test.common.uart.yaml @@ -0,0 +1,7 @@ + - id: lin_uart_bus + tx_pin: 12 + rx_pin: 13 + baud_rate: 9600 + data_bits: 8 + parity: NONE + stop_bits: 2 \ No newline at end of file diff --git a/tests/test.esp32_ard.yaml b/tests/test.esp32_ard.yaml new file mode 100644 index 0000000..6d8a203 --- /dev/null +++ b/tests/test.esp32_ard.yaml @@ -0,0 +1,38 @@ +esphome: + name: "esp32_ard" + + on_boot: + then: + # read time from external source (connected via I2C) + - ds1307.read_time + +external_components: + - source: + type: local + path: ../components + components: ["truma_inetbox", "uart"] + +esp32: + board: esp32dev + framework: + type: arduino + +i2c: + sda: 14 + scl: 27 + scan: false + id: i2c_bus_a + +time: + - platform: ds1307 + update_interval: never + id: esptime + +uart: !include test.common.uart.yaml +truma_inetbox: !include test.common.truma_inetbox.yaml +binary_sensor: !include test.common.binary_sensor.yaml +button: !include test.common.button.yaml +climate: !include test.common.climate.yaml +number: !include test.common.number.yaml +sensor: !include test.common.sensor.yaml +switch: !include test.common.switch.yaml \ No newline at end of file diff --git a/tests/test.esp32_idf.yaml b/tests/test.esp32_idf.yaml new file mode 100644 index 0000000..e0cc804 --- /dev/null +++ b/tests/test.esp32_idf.yaml @@ -0,0 +1,38 @@ +esphome: + name: "esp32_idf" + + on_boot: + then: + # read time from external source (connected via I2C) + - ds1307.read_time + +external_components: + - source: + type: local + path: ../components + components: ["truma_inetbox", "uart"] + +esp32: + board: esp32dev + framework: + type: esp-idf + +i2c: + sda: 14 + scl: 27 + scan: false + id: i2c_bus_a + +time: + - platform: ds1307 + update_interval: never + id: esptime + +uart: !include test.common.uart.yaml +truma_inetbox: !include test.common.truma_inetbox.yaml +binary_sensor: !include test.common.binary_sensor.yaml +button: !include test.common.button.yaml +climate: !include test.common.climate.yaml +number: !include test.common.number.yaml +sensor: !include test.common.sensor.yaml +switch: !include test.common.switch.yaml \ No newline at end of file diff --git a/tests/test.rp2040.yaml b/tests/test.rp2040.yaml new file mode 100644 index 0000000..28b5fd4 --- /dev/null +++ b/tests/test.rp2040.yaml @@ -0,0 +1,38 @@ +esphome: + name: "esp32_idf" + + on_boot: + then: + # read time from external source (connected via I2C) + - ds1307.read_time + +external_components: + - source: + type: local + path: ../components + components: ["truma_inetbox", "uart"] + +rp2040: + board: rpipicow + framework: + platform_version: https://github.com/maxgerhardt/platform-raspberrypi.git + +i2c: + sda: 14 + scl: 27 + scan: false + id: i2c_bus_a + +time: + - platform: ds1307 + update_interval: never + id: esptime + +uart: !include test.common.uart.yaml +truma_inetbox: !include test.common.truma_inetbox.yaml +binary_sensor: !include test.common.binary_sensor.yaml +button: !include test.common.button.yaml +climate: !include test.common.climate.yaml +number: !include test.common.number.yaml +sensor: !include test.common.sensor.yaml +switch: !include test.common.switch.yaml \ No newline at end of file