configure sensors

This commit is contained in:
Nicu Hodos 2024-05-03 09:57:43 +02:00
parent 6793b2da35
commit aadc7313e7
2 changed files with 7 additions and 4 deletions

View File

@ -19,6 +19,7 @@ namespace Ha {
DeviceConfig() {}
DeviceConfig(const char* id, const char* name) : id(id), name(name) {}
DeviceConfig(DeviceConfig& d) : id(d.id), name(d.name), model(d.model), manufacturer(d.manufacturer), area(d.area), parent(d.parent) {}
void buildConfig(JsonDocument& jsonDoc) {
JsonObject device = jsonDoc.createNestedObject("device");
@ -96,8 +97,8 @@ namespace Ha {
return static_cast<T*>(this);
}
T* asSelfDevice(DeviceConfig* deviceConfig) {
mainDevice = deviceConfig;
T* copyFromDevice(DeviceConfig* deviceConfig) {
mainDevice = new DeviceConfig{*deviceConfig};
mainDevice->id = id;
mainDevice->name = name;
return static_cast<T*>(this);
@ -181,7 +182,6 @@ namespace Ha {
void buildConfig(JsonDocument& jsonDoc) override {
EntityConfig::buildConfig(jsonDoc);
jsonDoc["name"] = "Temperature";
jsonDoc["device_class"] = deviceClass;
jsonDoc["unit_of_measurement"] = unitMeasure;
jsonDoc["value_template"] = valueTemplate;
@ -191,6 +191,7 @@ namespace Ha {
struct TemperatureSensor : Sensor {
TemperatureSensor(const char* name, const char* id) : Sensor(name, id) {
name = "Temperature";
deviceClass = "temperature";
unitMeasure = "°C";
valueTemplate = "{{ value_json.sensor.temperature }}";
@ -199,6 +200,7 @@ namespace Ha {
struct HumiditySensor : Sensor {
HumiditySensor(const char* name, const char* id) : Sensor(name, id) {
name = "Humidity";
deviceClass = "humidity";
unitMeasure = "%";
valueTemplate = "{{ value_json.sensor.humidity }}";
@ -207,6 +209,7 @@ namespace Ha {
struct PressureSensor : Sensor {
PressureSensor(const char* name, const char* id) : Sensor(name, id) {
name = "Pressure";
deviceClass = "pressure";
unitMeasure = "hPa";
valueTemplate = "{{ value_json.sensor.pressure }}";

View File

@ -33,7 +33,7 @@ namespace Mqtt {
}
Ha::Sensor* sensors[] = {
(new Ha::TemperatureSensor{"Oil tank room1", "id4"})->withStateTopic()->asSelfDevice(atTinyDevice)
(new Ha::TemperatureSensor{"Oil tank room1", "id4"})->withStateTopic()->copyFromDevice(atTinyDevice)
// new Ha::TemperatureSensor{"Temperature", "temperature"},
// new Ha::HumiditySensor{"Humidity", "humidity"},
// new Ha::PressureSensor{"Pressure", "pressure"},