Add heater error code sensors.

This commit is contained in:
Your Name 2023-03-19 18:42:07 +01:00
parent 7a2bf42454
commit 975797a300
8 changed files with 29 additions and 1 deletions

View File

@ -203,7 +203,8 @@ struct StatusFrameHeater { // NOLINT(altera-struct-pack-align)
u_int16_t current_temp_water; u_int16_t current_temp_water;
u_int16_t current_temp_room; u_int16_t current_temp_room;
OperatingStatus operating_status; OperatingStatus operating_status;
u_int16_t error_code; u_int8_t error_code_low;
u_int8_t error_code_high;
u_int8_t heater_unknown_2; u_int8_t heater_unknown_2;
} __attribute__((packed)); } __attribute__((packed));

View File

@ -30,6 +30,9 @@ void TrumaHeaterBinarySensor::setup() {
case TRUMA_BINARY_SENSOR_TYPE::HEATER_ELECTRICITY: case TRUMA_BINARY_SENSOR_TYPE::HEATER_ELECTRICITY:
this->publish_state(status_heater->energy_mix_a == EnergyMix::ENERGY_MIX_ELECTRICITY); this->publish_state(status_heater->energy_mix_a == EnergyMix::ENERGY_MIX_ELECTRICITY);
break; break;
case TRUMA_BINARY_SENSOR_TYPE::HEATER_HAS_ERROR:
this->publish_state(status_heater->error_code_high != 0x00);
break;
default: default:
break; break;
} }

View File

@ -30,6 +30,7 @@ CONF_SUPPORTED_TYPE = {
"HEATER_MIX_1": (truma_inetbox_ns.class_("TrumaHeaterBinarySensor", binary_sensor.BinarySensor, cg.Component), TRUMA_BINARY_SENSOR_TYPE_dummy_ns.HEATER_MIX_1), "HEATER_MIX_1": (truma_inetbox_ns.class_("TrumaHeaterBinarySensor", binary_sensor.BinarySensor, cg.Component), TRUMA_BINARY_SENSOR_TYPE_dummy_ns.HEATER_MIX_1),
"HEATER_MIX_2": (truma_inetbox_ns.class_("TrumaHeaterBinarySensor", binary_sensor.BinarySensor, cg.Component), TRUMA_BINARY_SENSOR_TYPE_dummy_ns.HEATER_MIX_2), "HEATER_MIX_2": (truma_inetbox_ns.class_("TrumaHeaterBinarySensor", binary_sensor.BinarySensor, cg.Component), TRUMA_BINARY_SENSOR_TYPE_dummy_ns.HEATER_MIX_2),
"HEATER_ELECTRICITY": (truma_inetbox_ns.class_("TrumaHeaterBinarySensor", binary_sensor.BinarySensor, cg.Component), TRUMA_BINARY_SENSOR_TYPE_dummy_ns.HEATER_ELECTRICITY), "HEATER_ELECTRICITY": (truma_inetbox_ns.class_("TrumaHeaterBinarySensor", binary_sensor.BinarySensor, cg.Component), TRUMA_BINARY_SENSOR_TYPE_dummy_ns.HEATER_ELECTRICITY),
"HEATER_HAS_ERROR": (truma_inetbox_ns.class_("TrumaHeaterBinarySensor", binary_sensor.BinarySensor, cg.Component), TRUMA_BINARY_SENSOR_TYPE_dummy_ns.HEATER_HAS_ERROR),
# TrumaTimerBinarySensor # TrumaTimerBinarySensor
"TIMER_ACTIVE": (truma_inetbox_ns.class_("TrumaTimerBinarySensor", binary_sensor.BinarySensor, cg.Component), TRUMA_BINARY_SENSOR_TYPE_dummy_ns.TIMER_ACTIVE), "TIMER_ACTIVE": (truma_inetbox_ns.class_("TrumaTimerBinarySensor", binary_sensor.BinarySensor, cg.Component), TRUMA_BINARY_SENSOR_TYPE_dummy_ns.TIMER_ACTIVE),
"TIMER_ROOM": (truma_inetbox_ns.class_("TrumaTimerBinarySensor", binary_sensor.BinarySensor, cg.Component), TRUMA_BINARY_SENSOR_TYPE_dummy_ns.TIMER_ROOM), "TIMER_ROOM": (truma_inetbox_ns.class_("TrumaTimerBinarySensor", binary_sensor.BinarySensor, cg.Component), TRUMA_BINARY_SENSOR_TYPE_dummy_ns.TIMER_ROOM),

View File

@ -10,6 +10,7 @@ enum class TRUMA_BINARY_SENSOR_TYPE {
HEATER_MIX_1, HEATER_MIX_1,
HEATER_MIX_2, HEATER_MIX_2,
HEATER_ELECTRICITY, HEATER_ELECTRICITY,
HEATER_HAS_ERROR,
TIMER_ACTIVE, TIMER_ACTIVE,
TIMER_ROOM, TIMER_ROOM,
@ -36,6 +37,9 @@ static const char *enum_to_c_str(const TRUMA_BINARY_SENSOR_TYPE val) {
case TRUMA_BINARY_SENSOR_TYPE::HEATER_ELECTRICITY: case TRUMA_BINARY_SENSOR_TYPE::HEATER_ELECTRICITY:
return "HEATER_ELECTRICITY"; return "HEATER_ELECTRICITY";
break; break;
case TRUMA_BINARY_SENSOR_TYPE::HEATER_HAS_ERROR:
return "HEATER_HAS_ERROR";
break;
case TRUMA_BINARY_SENSOR_TYPE::TIMER_ACTIVE: case TRUMA_BINARY_SENSOR_TYPE::TIMER_ACTIVE:
return "TIMER_ACTIVE"; return "TIMER_ACTIVE";

View File

@ -34,6 +34,10 @@ void TrumaSensor::setup() {
case TRUMA_SENSOR_TYPE::OPERATING_STATUS: case TRUMA_SENSOR_TYPE::OPERATING_STATUS:
this->publish_state(static_cast<float>(status_heater->operating_status)); this->publish_state(static_cast<float>(status_heater->operating_status));
break; break;
case TRUMA_SENSOR_TYPE::HEATER_ERROR_CODE:
float errorcode = status_heater->error_code_high * 100.0f + status_heater->error_code_low;
this->publish_state(errorcode);
break;
} }
}); });
} }

View File

@ -14,6 +14,7 @@ enum class TRUMA_SENSOR_TYPE {
ELECTRIC_POWER_LEVEL, ELECTRIC_POWER_LEVEL,
ENERGY_MIX, ENERGY_MIX,
OPERATING_STATUS, OPERATING_STATUS,
HEATER_ERROR_CODE,
}; };
static const char *enum_to_c_str(const TRUMA_SENSOR_TYPE val) { static const char *enum_to_c_str(const TRUMA_SENSOR_TYPE val) {
@ -42,6 +43,9 @@ static const char *enum_to_c_str(const TRUMA_SENSOR_TYPE val) {
case TRUMA_SENSOR_TYPE::OPERATING_STATUS: case TRUMA_SENSOR_TYPE::OPERATING_STATUS:
return "OPERATING_STATUS"; return "OPERATING_STATUS";
break; break;
case TRUMA_SENSOR_TYPE::HEATER_ERROR_CODE:
return "HEATER_ERROR_CODE";
break;
default: default:
return ""; return "";
break; break;

View File

@ -42,6 +42,7 @@ CONF_SUPPORTED_TYPE = {
"ELECTRIC_POWER_LEVEL": (TRUMA_SENSOR_TYPE_dummy_ns.ELECTRIC_POWER_LEVEL, UNIT_WATT, ICON_POWER, 0, DEVICE_CLASS_TEMPERATURE), "ELECTRIC_POWER_LEVEL": (TRUMA_SENSOR_TYPE_dummy_ns.ELECTRIC_POWER_LEVEL, UNIT_WATT, ICON_POWER, 0, DEVICE_CLASS_TEMPERATURE),
"ENERGY_MIX": (TRUMA_SENSOR_TYPE_dummy_ns.ENERGY_MIX, UNIT_EMPTY, ICON_GAS_CYLINDER, 0, DEVICE_CLASS_TEMPERATURE), "ENERGY_MIX": (TRUMA_SENSOR_TYPE_dummy_ns.ENERGY_MIX, UNIT_EMPTY, ICON_GAS_CYLINDER, 0, DEVICE_CLASS_TEMPERATURE),
"OPERATING_STATUS": (TRUMA_SENSOR_TYPE_dummy_ns.OPERATING_STATUS, UNIT_EMPTY, ICON_POWER, 0, DEVICE_CLASS_TEMPERATURE), "OPERATING_STATUS": (TRUMA_SENSOR_TYPE_dummy_ns.OPERATING_STATUS, UNIT_EMPTY, ICON_POWER, 0, DEVICE_CLASS_TEMPERATURE),
"HEATER_ERROR_CODE": (TRUMA_SENSOR_TYPE_dummy_ns.HEATER_ERROR_CODE, UNIT_EMPTY, ICON_POWER, 0, DEVICE_CLASS_TEMPERATURE),
} }

View File

@ -8,6 +8,10 @@ esphome:
external_components: external_components:
- source: github://Fabian-Schmidt/esphome-truma_inetbox - source: github://Fabian-Schmidt/esphome-truma_inetbox
#- source:
# type: local
# path: ./components
# components: ["truma_inetbox", "uart"]
esp32: esp32:
board: mhetesp32devkit board: mhetesp32devkit
@ -74,6 +78,9 @@ binary_sensor:
- platform: truma_inetbox - platform: truma_inetbox
name: "Heater mode Elec" name: "Heater mode Elec"
type: HEATER_ELECTRICITY type: HEATER_ELECTRICITY
- platform: truma_inetbox
name: "Heater has error"
type: HEATER_HAS_ERROR
- platform: truma_inetbox - platform: truma_inetbox
name: "Timer active" name: "Timer active"
@ -130,6 +137,9 @@ sensor:
- platform: truma_inetbox - platform: truma_inetbox
name: "Operating status" name: "Operating status"
type: OPERATING_STATUS type: OPERATING_STATUS
- platform: truma_inetbox
name: "Heater error code"
type: HEATER_ERROR_CODE
switch: switch:
- platform: template - platform: template