diff --git a/gateway/include/ha.h b/gateway/include/ha.h index 562b638..7d57cc5 100644 --- a/gateway/include/ha.h +++ b/gateway/include/ha.h @@ -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(this); } - T* asSelfDevice(DeviceConfig* deviceConfig) { - mainDevice = deviceConfig; + T* copyFromDevice(DeviceConfig* deviceConfig) { + mainDevice = new DeviceConfig{*deviceConfig}; mainDevice->id = id; mainDevice->name = name; return static_cast(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 }}"; diff --git a/gateway/include/mqtt.h b/gateway/include/mqtt.h index dc193a2..3c32568 100644 --- a/gateway/include/mqtt.h +++ b/gateway/include/mqtt.h @@ -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"},