2023-03-08 11:05:20 +01:00

64 lines
1.6 KiB
C++

#pragma once
#include "esphome/components/sensor/sensor.h"
#include "esphome/components/truma_inetbox/TrumaiNetBoxApp.h"
namespace esphome {
namespace truma_inetbox {
enum class TRUMA_SENSOR_TYPE {
CURRENT_ROOM_TEMPERATURE,
CURRENT_WATER_TEMPERATURE,
TARGET_ROOM_TEMPERATURE,
TARGET_WATER_TEMPERATURE,
HEATING_MODE,
ELECTRIC_POWER_LEVEL,
ENERGY_MIX,
OPERATING_STATUS,
};
static const char *enum_to_c_str(const TRUMA_SENSOR_TYPE val) {
switch (val) {
case TRUMA_SENSOR_TYPE::CURRENT_ROOM_TEMPERATURE:
return "CURRENT_ROOM_TEMPERATURE";
break;
case TRUMA_SENSOR_TYPE::CURRENT_WATER_TEMPERATURE:
return "CURRENT_WATER_TEMPERATURE";
break;
case TRUMA_SENSOR_TYPE::TARGET_ROOM_TEMPERATURE:
return "TARGET_ROOM_TEMPERATURE";
break;
case TRUMA_SENSOR_TYPE::TARGET_WATER_TEMPERATURE:
return "TARGET_WATER_TEMPERATURE";
break;
case TRUMA_SENSOR_TYPE::HEATING_MODE:
return "HEATING_MODE";
break;
case TRUMA_SENSOR_TYPE::ELECTRIC_POWER_LEVEL:
return "ELECTRIC_POWER_LEVEL";
break;
case TRUMA_SENSOR_TYPE::ENERGY_MIX:
return "ENERGY_MIX";
break;
case TRUMA_SENSOR_TYPE::OPERATING_STATUS:
return "OPERATING_STATUS";
break;
default:
return "";
break;
}
}
class TrumaSensor : public Component, public sensor::Sensor, public Parented<TrumaiNetBoxApp> {
public:
void setup() override;
void dump_config() override;
void set_type(TRUMA_SENSOR_TYPE val) { this->type_ = val; }
protected:
TRUMA_SENSOR_TYPE type_;
private:
};
} // namespace truma_inetbox
} // namespace esphome