diff --git a/src/ArduinoHA.h b/src/ArduinoHA.h new file mode 100644 index 0000000..673848d --- /dev/null +++ b/src/ArduinoHA.h @@ -0,0 +1,2 @@ +#include "HADevice.h" +#include "HAMqtt.h" diff --git a/src/ArduinoHADefines.h b/src/ArduinoHADefines.h new file mode 100644 index 0000000..fe4420a --- /dev/null +++ b/src/ArduinoHADefines.h @@ -0,0 +1,4 @@ +// Turns on debug information of the ArduinoHA core. +// Please note that you need to initialize serial interface manually +// by calling Serial.begin([baudRate]) before initializing ArduinoHA. +#define ARDUINOHA_DEBUG diff --git a/src/HADevice.cpp b/src/HADevice.cpp new file mode 100644 index 0000000..8327c5e --- /dev/null +++ b/src/HADevice.cpp @@ -0,0 +1,54 @@ +#include "HADevice.h" + +HADevice::HADevice(const char* uniqueId) : + _uniqueId(uniqueId), + _manufacturer(nullptr), + _model(nullptr), + _name(nullptr), + _softwareVersion(nullptr), + _viaDevice(nullptr) +{ + +} + +String HADevice::serialize() const +{ + String output; + output.concat("{"); + output.concat("{\"identifiers\":\""); + output.concat(_uniqueId); + output.concat("\"}"); + + if (_manufacturer != nullptr) { + output.concat(",{\"manufacturer\":\""); + output.concat(_manufacturer); + output.concat("\"}"); + } + + if (_model != nullptr) { + output.concat(",{\"model\":\""); + output.concat(_model); + output.concat("\"}"); + } + + if (_name != nullptr) { + output.concat(",{\"name\":\""); + output.concat(_name); + output.concat("\"}"); + } + + if (_softwareVersion != nullptr) { + output.concat(",{\"sw_version\":\""); + output.concat(_softwareVersion); + output.concat("\"}"); + } + + if (_viaDevice != nullptr) { + output.concat(",{\"via_device\":\""); + output.concat(_viaDevice); + output.concat("\"}"); + } + + output += "}"; + return output; +} diff --git a/src/HADevice.h b/src/HADevice.h new file mode 100644 index 0000000..a4c7fd1 --- /dev/null +++ b/src/HADevice.h @@ -0,0 +1,40 @@ +#ifndef HADEVICE_H +#define HADEVICE_H + +#include + +class HADevice +{ +public: + HADevice(const char* uniqueId); + + inline const char* getUniqueId() const + { return _uniqueId; } + + inline void setManufacturer(const char* manufacturer) + { _manufacturer = manufacturer; } + + inline void setModel(const char* model) + { _model = model; } + + inline void setName(const char* name) + { _name = name; } + + inline void setSoftwareVersion(const char* softwareVersion) + { _softwareVersion = softwareVersion; } + + inline void setViaDevice(const char* viaDevice) + { _viaDevice = viaDevice; } + + String serialize() const; + +private: + const char* _uniqueId; + const char* _manufacturer; + const char* _model; + const char* _name; + const char* _softwareVersion; + const char* _viaDevice; +}; + +#endif