This commit is contained in:
Nicu Hodos 2024-05-15 11:15:12 +02:00
parent e9e30ae025
commit c88e832fbe

View File

@ -8,6 +8,7 @@
namespace Ha { namespace Ha {
uint16_t (*publisher)(const char* topic, const char* message); uint16_t (*publisher)(const char* topic, const char* message);
typedef void (*onMessage)(const char* msg);
struct DeviceConfig { struct DeviceConfig {
const char* id = nullptr; const char* id = nullptr;
@ -17,7 +18,6 @@ namespace Ha {
const char* area = nullptr; const char* area = nullptr;
DeviceConfig* parent = nullptr; DeviceConfig* parent = nullptr;
DeviceConfig() {}
DeviceConfig(const char* id) : id(id) {} DeviceConfig(const char* id) : id(id) {}
DeviceConfig(DeviceConfig& d) : id(d.id), name(d.name), model(d.model), manufacturer(d.manufacturer), area(d.area), parent(d.parent) {} DeviceConfig(DeviceConfig& d) : id(d.id), name(d.name), model(d.model), manufacturer(d.manufacturer), area(d.area), parent(d.parent) {}
@ -107,7 +107,6 @@ namespace Ha {
publisher(configTopic, ""); publisher(configTopic, "");
} }
}; };
List<Component> Component::components; List<Component> Component::components;
struct AbstractBuilder { struct AbstractBuilder {
@ -124,20 +123,16 @@ namespace Ha {
}; };
List<AbstractBuilder> AbstractBuilder::builders; List<AbstractBuilder> AbstractBuilder::builders;
template <class T = Component> template <class T>
struct Builder : AbstractBuilder { struct Builder : AbstractBuilder {
T* cmp; T* cmp;
Builder() : AbstractBuilder() {}
Builder(T* cmp) : AbstractBuilder(), cmp(cmp) {} Builder(T* cmp) : AbstractBuilder(), cmp(cmp) {}
Builder(const char* id) : AbstractBuilder() { Builder(const char* id) : AbstractBuilder() {
cmp = new T{id}; cmp = new T{id};
} }
static Builder& instance() {
return *(new Builder<T>());
}
static Builder& instance(T* c) { static Builder& instance(T* c) {
return *(new Builder<T>(c)); return *(new Builder<T>(c));
} }
@ -167,7 +162,6 @@ namespace Ha {
} }
}; };
typedef void (*onMessage)(const char* msg);
struct Command : Component { struct Command : Component {
char commandTopic[TOPIC_SIZE]; char commandTopic[TOPIC_SIZE];
onMessage f; onMessage f;
@ -285,20 +279,18 @@ namespace Ha {
}; };
struct HumiditySensor : Sensor { struct HumiditySensor : Sensor {
HumiditySensor(const char* name, const char* id) : Sensor(name, id) { HumiditySensor(const char* id, const char* name = "Humidity") : Sensor(name, id) {
name = "Humidity";
deviceClass = "humidity"; deviceClass = "humidity";
unitMeasure = "%"; unitMeasure = "%";
valueTemplate = "{{ value_json.sensor.humidity }}"; // valueTemplate = "{{ value_json.sensor.humidity }}";
} }
}; };
struct PressureSensor : Sensor { struct PressureSensor : Sensor {
PressureSensor(const char* name, const char* id) : Sensor(name, id) { PressureSensor(const char* id, const char* name = "Pressure") : Sensor(name, id) {
name = "Pressure";
deviceClass = "pressure"; deviceClass = "pressure";
unitMeasure = "hPa"; unitMeasure = "hPa";
valueTemplate = "{{ value_json.sensor.pressure }}"; // valueTemplate = "{{ value_json.sensor.pressure }}";
} }
}; };
} }