добавляет HALightBrightness
This commit is contained in:
parent
820aba5fd7
commit
5e67dc7438
13
.vscode/settings.json
vendored
Normal file
13
.vscode/settings.json
vendored
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"files.associations": {
|
||||||
|
"array": "cpp",
|
||||||
|
"deque": "cpp",
|
||||||
|
"list": "cpp",
|
||||||
|
"string": "cpp",
|
||||||
|
"unordered_map": "cpp",
|
||||||
|
"vector": "cpp",
|
||||||
|
"string_view": "cpp",
|
||||||
|
"initializer_list": "cpp",
|
||||||
|
"ranges": "cpp"
|
||||||
|
}
|
||||||
|
}
|
@ -1,14 +1,18 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <ESP8266WiFi.h>
|
||||||
#include <IRremoteESP8266.h>
|
#include <IRremoteESP8266.h>
|
||||||
#include <IRsend.h>
|
#include <IRsend.h>
|
||||||
|
#include <HALightBrightness.hpp>
|
||||||
|
|
||||||
class IRLight {
|
class IRLight: public HALightBrightnessController {
|
||||||
private:
|
private:
|
||||||
bool state;
|
bool state;
|
||||||
|
short brightness;
|
||||||
|
|
||||||
IRsend *irsend;
|
IRsend *irsend;
|
||||||
|
|
||||||
const uint16_t rawDataOn[67] = {
|
const uint16_t RDOn[67] = {
|
||||||
8980, 4420, 580, 520, 630, 470, 630, 520, 580, 520, 630, 470,
|
8980, 4420, 580, 520, 630, 470, 630, 520, 580, 520, 630, 470,
|
||||||
630, 520, 580, 520, 630, 1570, 630, 1620, 580, 1620, 630, 1620,
|
630, 520, 580, 520, 630, 1570, 630, 1620, 580, 1620, 630, 1620,
|
||||||
580, 1570, 680, 1570, 630, 1570, 630, 1570, 630, 520, 630, 1570,
|
580, 1570, 680, 1570, 630, 1570, 630, 1570, 630, 520, 630, 1570,
|
||||||
@ -16,7 +20,7 @@ private:
|
|||||||
630, 470, 630, 520, 630, 1570, 630, 1570, 630, 1620, 630, 1570,
|
630, 470, 630, 520, 630, 1570, 630, 1570, 630, 1620, 630, 1570,
|
||||||
630, 1570, 630, 1570, 680, 1570, 630};
|
630, 1570, 630, 1570, 680, 1570, 630};
|
||||||
|
|
||||||
const uint16_t rawDataOff[67] = {
|
const uint16_t RDOff[67] = {
|
||||||
8980, 4370, 680, 420, 730, 420, 680, 420, 680, 420, 730, 420,
|
8980, 4370, 680, 420, 730, 420, 680, 420, 680, 420, 730, 420,
|
||||||
680, 420, 680, 420, 730, 1470, 730, 1520, 680, 1520, 730, 1470,
|
680, 420, 680, 420, 730, 1470, 730, 1520, 680, 1520, 730, 1470,
|
||||||
730, 1470, 730, 1520, 680, 1520, 730, 1470, 730, 420, 680, 470,
|
730, 1470, 730, 1520, 680, 1520, 730, 1470, 730, 420, 680, 470,
|
||||||
@ -24,14 +28,46 @@ private:
|
|||||||
680, 470, 580, 1620, 630, 470, 630, 1570, 630, 520, 580, 520,
|
680, 470, 580, 1620, 630, 470, 630, 1570, 630, 520, 580, 520,
|
||||||
630, 1570, 680, 1520, 730, 1520, 680};
|
630, 1570, 680, 1520, 730, 1520, 680};
|
||||||
|
|
||||||
|
const uint16_t RDCentralButton[67] = {
|
||||||
|
9030, 4320, 680, 470, 630, 470, 680, 420, 680, 470, 630, 470,
|
||||||
|
680, 420, 680, 470, 630, 1570, 680, 1520, 680, 1520, 680, 1520,
|
||||||
|
730, 1520, 680, 1520, 680, 1520, 680, 1570, 680, 420, 680, 1520,
|
||||||
|
680, 470, 680, 1520, 680, 470, 630, 470, 680, 420, 680, 470,
|
||||||
|
630, 470, 630, 470, 680, 1520, 680, 470, 680, 1520, 630, 1570,
|
||||||
|
680, 1520, 680, 1570, 680, 1520, 680};
|
||||||
|
|
||||||
|
const uint16_t RDBrightnessUp[67] = {
|
||||||
|
9080,4270, 730,420, 680,420, 680,420, 730,420, 680,420, 680,420, 730,420,
|
||||||
|
680,1520, 680,1520, 730,1470, 730,1470, 730,1520, 680,1520, 730,1470,
|
||||||
|
730,1520, 680,420, 680,470, 580,1620, 580,520, 630,520, 580,1620, 580,520,
|
||||||
|
630,520, 580,520, 630,1570, 580,570, 580,1570, 630,1620, 630,520, 580,1570,
|
||||||
|
730,1520, 680,1520, 730};
|
||||||
|
|
||||||
|
const uint16_t RDBrightnessDown[67] = {
|
||||||
|
9030, 4320, 630, 520, 630, 470, 630, 470, 630, 520, 630, 470,
|
||||||
|
630, 470, 630, 520, 630, 1570, 630, 1570, 630, 1620, 630, 1570,
|
||||||
|
630, 1570, 630, 1620, 630, 1570, 630, 1570, 630, 470, 680, 470,
|
||||||
|
630, 1570, 630, 1570, 680, 1570, 630, 1570, 630, 470, 680, 470,
|
||||||
|
630, 470, 630, 1570, 680, 470, 630, 470, 630, 470, 680, 470,
|
||||||
|
630, 1570, 630, 1570, 680, 1570, 630};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
IRLight(int pin);
|
IRLight(int pin);
|
||||||
IRLight(IRsend *irsend);
|
IRLight(IRsend *irsend);
|
||||||
|
|
||||||
|
void setState(bool state);
|
||||||
|
bool getState();
|
||||||
void on();
|
void on();
|
||||||
void off();
|
void off();
|
||||||
void begin();
|
|
||||||
|
|
||||||
bool getState();
|
void setBrightness(int brightness);
|
||||||
|
int getBrightness();
|
||||||
|
|
||||||
|
void brightnessUp();
|
||||||
|
void brightnessDown();
|
||||||
|
int getBrightnessScale();
|
||||||
|
|
||||||
|
void begin();
|
||||||
|
|
||||||
~IRLight();
|
~IRLight();
|
||||||
};
|
};
|
@ -1,32 +1,16 @@
|
|||||||
#include <HALight.hpp>
|
#include <HALight.hpp>
|
||||||
|
|
||||||
|
HALight::HALight(PubSubClient &client, const char *name, const char *unique_id)
|
||||||
|
: HAControllableDevice(client, "light", name, unique_id) {}
|
||||||
|
|
||||||
HALight::HALight(PubSubClient &client, const char *name, const char *unique_id,
|
HALight::HALight(PubSubClient &client, const char *name, const char *unique_id,
|
||||||
HALightController &baseLight)
|
HALightController &baseLight)
|
||||||
: HAControllableDevice(client, "light", name, unique_id),
|
: HAControllableDevice(client, "light", name, unique_id),
|
||||||
light(&baseLight) {}
|
light(&baseLight) {}
|
||||||
|
|
||||||
void HALight::sendState() {
|
JSON_DOCUMENT_TYPE HALight::createConfigJSON() {
|
||||||
StaticJsonDocument<256> doc;
|
JSON_DOCUMENT_TYPE doc;
|
||||||
|
|
||||||
buffer[0] = '\0';
|
|
||||||
|
|
||||||
if (light->getState()) {
|
|
||||||
doc["state"] = "ON";
|
|
||||||
} else {
|
|
||||||
doc["state"] = "OFF";
|
|
||||||
}
|
|
||||||
|
|
||||||
serializeJson(doc, buffer, buffer_size);
|
|
||||||
|
|
||||||
Serial.println(state_topic);
|
|
||||||
client.publish(state_topic, buffer, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void HALight::sendConfig() {
|
|
||||||
StaticJsonDocument<256> doc;
|
|
||||||
|
|
||||||
buffer[0] = '\0';
|
|
||||||
|
|
||||||
doc["~"] = device_topic;
|
doc["~"] = device_topic;
|
||||||
doc["name"] = name;
|
doc["name"] = name;
|
||||||
doc["unique_id"] = unique_id;
|
doc["unique_id"] = unique_id;
|
||||||
@ -34,6 +18,42 @@ void HALight::sendConfig() {
|
|||||||
doc["stat_t"] = "~/state";
|
doc["stat_t"] = "~/state";
|
||||||
doc["schema"] = "json";
|
doc["schema"] = "json";
|
||||||
|
|
||||||
|
return doc;
|
||||||
|
}
|
||||||
|
|
||||||
|
JSON_DOCUMENT_TYPE HALight::createStateJSON() {
|
||||||
|
JSON_DOCUMENT_TYPE doc;
|
||||||
|
|
||||||
|
if (light->getState()) {
|
||||||
|
doc["state"] = "ON";
|
||||||
|
} else {
|
||||||
|
doc["state"] = "OFF";
|
||||||
|
}
|
||||||
|
|
||||||
|
return doc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HALight::innerHanlder(JSON_DOCUMENT_TYPE &doc) {
|
||||||
|
if (strcmp(doc["state"], "ON") == 0) {
|
||||||
|
light->setState(true);
|
||||||
|
} else {
|
||||||
|
light->setState(false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void HALight::sendState() {
|
||||||
|
JSON_DOCUMENT_TYPE doc = createStateJSON();
|
||||||
|
|
||||||
|
buffer[0] = '\0';
|
||||||
|
serializeJson(doc, buffer, buffer_size);
|
||||||
|
|
||||||
|
Serial.println(state_topic);
|
||||||
|
client.publish(state_topic, buffer, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void HALight::sendConfig() {
|
||||||
|
JSON_DOCUMENT_TYPE doc = createConfigJSON();
|
||||||
|
buffer[0] = '\0';
|
||||||
serializeJson(doc, buffer, buffer_size);
|
serializeJson(doc, buffer, buffer_size);
|
||||||
client.publish(config_topic, buffer, true);
|
client.publish(config_topic, buffer, true);
|
||||||
}
|
}
|
||||||
@ -42,14 +62,10 @@ void HALight::handle(char *topic, byte *payload, unsigned int length) {
|
|||||||
if (strcmp(topic, command_topic) != 0)
|
if (strcmp(topic, command_topic) != 0)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
StaticJsonDocument<256> doc;
|
JSON_DOCUMENT_TYPE doc;
|
||||||
deserializeJson(doc, (const byte *)payload, length);
|
deserializeJson(doc, (const byte *)payload, length);
|
||||||
|
|
||||||
if (strcmp(doc["state"], "ON") == 0) {
|
innerHanlder(doc);
|
||||||
light->setState(true);
|
|
||||||
} else {
|
|
||||||
light->setState(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
sendState();
|
sendState();
|
||||||
}
|
}
|
@ -8,10 +8,17 @@ public:
|
|||||||
virtual bool getState() = 0;
|
virtual bool getState() = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
#define JSON_DOCUMENT_TYPE StaticJsonDocument<256>
|
||||||
|
|
||||||
class HALight : public HAControllableDevice {
|
class HALight : public HAControllableDevice {
|
||||||
private:
|
private:
|
||||||
HALightController *light;
|
HALightController *light;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual JSON_DOCUMENT_TYPE createConfigJSON();
|
||||||
|
virtual JSON_DOCUMENT_TYPE createStateJSON();
|
||||||
|
virtual void innerHanlder(JSON_DOCUMENT_TYPE &doc);
|
||||||
|
HALight(PubSubClient &client, const char *name, const char *unique_id);
|
||||||
public:
|
public:
|
||||||
HALight(PubSubClient &client, const char *name, const char *unique_id,
|
HALight(PubSubClient &client, const char *name, const char *unique_id,
|
||||||
HALightController &baseLight);
|
HALightController &baseLight);
|
||||||
|
37
lib/HomeAssistantDevices/HALightBrightness.cpp
Normal file
37
lib/HomeAssistantDevices/HALightBrightness.cpp
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
#include <HALightBrightness.hpp>
|
||||||
|
|
||||||
|
|
||||||
|
HALightBrightness::HALightBrightness(PubSubClient &client, const char *name, const char *unique_id,
|
||||||
|
HALightBrightnessController &baseLight)
|
||||||
|
: HALight(client, "light", name, baseLight),
|
||||||
|
light(&baseLight) {}
|
||||||
|
|
||||||
|
|
||||||
|
JSON_DOCUMENT_TYPE HALightBrightness::createConfigJSON() {
|
||||||
|
JSON_DOCUMENT_TYPE doc = HALight::createConfigJSON();
|
||||||
|
|
||||||
|
doc["brightness"] = true;
|
||||||
|
doc["brightness_scale"] = light->getBrightnessScale();
|
||||||
|
// doc["color_mode"] = true;
|
||||||
|
// doc["supported_color_modes"] =
|
||||||
|
|
||||||
|
// JSON_DOCUMENT_TYPE doc;
|
||||||
|
return doc;
|
||||||
|
}
|
||||||
|
|
||||||
|
JSON_DOCUMENT_TYPE HALightBrightness::createStateJSON() {
|
||||||
|
JSON_DOCUMENT_TYPE doc = HALight::createStateJSON();
|
||||||
|
|
||||||
|
doc["brightness"] = light->getBrightness();
|
||||||
|
|
||||||
|
// JSON_DOCUMENT_TYPE doc;
|
||||||
|
return doc;
|
||||||
|
}
|
||||||
|
|
||||||
|
void HALightBrightness::innerHanlder(JSON_DOCUMENT_TYPE &doc) {
|
||||||
|
if (doc.containsKey("brightness")) {
|
||||||
|
light->setBrightness(doc["brightness"]);
|
||||||
|
}
|
||||||
|
delay(50);
|
||||||
|
HALight::innerHanlder(doc);
|
||||||
|
}
|
25
lib/HomeAssistantDevices/HALightBrightness.hpp
Normal file
25
lib/HomeAssistantDevices/HALightBrightness.hpp
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <HALight.hpp>
|
||||||
|
|
||||||
|
class HALightBrightnessController: public HALightController {
|
||||||
|
public:
|
||||||
|
virtual void setBrightness(int value) = 0;
|
||||||
|
virtual int getBrightness() = 0;
|
||||||
|
|
||||||
|
|
||||||
|
virtual int getBrightnessScale() = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
class HALightBrightness : public HALight {
|
||||||
|
private:
|
||||||
|
HALightBrightnessController *light;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
JSON_DOCUMENT_TYPE createConfigJSON();
|
||||||
|
JSON_DOCUMENT_TYPE createStateJSON();
|
||||||
|
void innerHanlder(JSON_DOCUMENT_TYPE &doc);
|
||||||
|
public:
|
||||||
|
HALightBrightness(PubSubClient &client, const char *name, const char *unique_id,
|
||||||
|
HALightBrightnessController &baseLight);
|
||||||
|
};
|
@ -1,3 +1,4 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <HALight.hpp>
|
#include <HALight.hpp>
|
||||||
|
#include <HALightBrightness.hpp>
|
@ -19,3 +19,4 @@ lib_deps =
|
|||||||
bblanchon/ArduinoJson@^6.19.4
|
bblanchon/ArduinoJson@^6.19.4
|
||||||
crankyoldgit/IRremoteESP8266@^2.8.2
|
crankyoldgit/IRremoteESP8266@^2.8.2
|
||||||
monitor_speed = 115200
|
monitor_speed = 115200
|
||||||
|
monitor_filters = default, esp8266_exception_decoder
|
@ -10,18 +10,72 @@ IRLight::IRLight(IRsend *irsend) {
|
|||||||
state = false;
|
state = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void IRLight::setState(bool state) {
|
||||||
|
if (state)
|
||||||
|
on();
|
||||||
|
else
|
||||||
|
off();
|
||||||
|
}
|
||||||
|
|
||||||
void IRLight::on() {
|
void IRLight::on() {
|
||||||
state = true;
|
state = true;
|
||||||
irsend->sendRaw(rawDataOn, 67, 38);
|
irsend->sendRaw(RDOn, 67, 38);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IRLight::off() {
|
void IRLight::off() {
|
||||||
state = false;
|
state = false;
|
||||||
irsend->sendRaw(rawDataOff, 67, 38);
|
irsend->sendRaw(RDOff, 67, 38);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IRLight::begin() { irsend->begin(); }
|
void IRLight::setBrightness(int newBrightness) {
|
||||||
|
if (newBrightness > brightness) {
|
||||||
|
for (int i = 0; i < newBrightness - brightness; i++) {
|
||||||
|
brightnessUp();
|
||||||
|
delay(250);
|
||||||
|
}
|
||||||
|
} else if (newBrightness < brightness) {
|
||||||
|
for (int i = 0; i < brightness - newBrightness; i++) {
|
||||||
|
brightnessDown();
|
||||||
|
delay(250);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
brightness = newBrightness;
|
||||||
|
}
|
||||||
|
|
||||||
bool IRLight::getState() { return state; }
|
void IRLight::brightnessUp() {
|
||||||
|
if (brightness < getBrightnessScale()) {
|
||||||
|
brightness++;
|
||||||
|
irsend->sendRaw(RDBrightnessUp, 67, 38);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
IRLight::~IRLight() { delete irsend; }
|
void IRLight::brightnessDown() {
|
||||||
|
if (brightness > 0) {
|
||||||
|
brightness--;
|
||||||
|
irsend->sendRaw(RDBrightnessDown, 67, 38);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void IRLight::begin() {
|
||||||
|
irsend->begin();
|
||||||
|
irsend->sendRaw(RDCentralButton, 67, 38);
|
||||||
|
brightness = 14;
|
||||||
|
delay(250);
|
||||||
|
off();
|
||||||
|
}
|
||||||
|
|
||||||
|
int IRLight::getBrightnessScale() {
|
||||||
|
return 14;
|
||||||
|
}
|
||||||
|
|
||||||
|
int IRLight::getBrightness() {
|
||||||
|
return brightness;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool IRLight::getState() {
|
||||||
|
return state;
|
||||||
|
}
|
||||||
|
|
||||||
|
IRLight::~IRLight() {
|
||||||
|
delete irsend;
|
||||||
|
}
|
@ -12,6 +12,12 @@ void IRLightController::setState(bool state) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IRLightController::getState() { return irlight.getState(); }
|
bool IRLightController::getState() {
|
||||||
|
return irlight.getState();
|
||||||
|
}
|
||||||
|
|
||||||
|
void IRLightController::setBrightness(int value) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
IRLightController::~IRLightController() {}
|
IRLightController::~IRLightController() {}
|
@ -3,7 +3,7 @@
|
|||||||
#include <HomeAssistantDevices.hpp>
|
#include <HomeAssistantDevices.hpp>
|
||||||
#include <IRLight.h>
|
#include <IRLight.h>
|
||||||
|
|
||||||
class IRLightController : public HALightController {
|
class IRLightController : public HALightBrightnessController {
|
||||||
private:
|
private:
|
||||||
IRLight &irlight;
|
IRLight &irlight;
|
||||||
|
|
||||||
@ -12,5 +12,10 @@ public:
|
|||||||
void begin();
|
void begin();
|
||||||
void setState(bool state);
|
void setState(bool state);
|
||||||
bool getState();
|
bool getState();
|
||||||
|
|
||||||
|
void setBrightness(int value);
|
||||||
|
int getBrightness();
|
||||||
|
int getBrightnessScale();
|
||||||
|
|
||||||
~IRLightController();
|
~IRLightController();
|
||||||
};
|
};
|
61
src/main.cpp
61
src/main.cpp
@ -17,8 +17,7 @@ DHT dht(DHTPIN, DHTTYPE);
|
|||||||
|
|
||||||
IRLight irlight(4);
|
IRLight irlight(4);
|
||||||
|
|
||||||
IRLightController light(irlight);
|
HALightBrightness halight(client, "light", "l-1", irlight);
|
||||||
HALight halight(client, "light", "l-1", light);
|
|
||||||
|
|
||||||
void setup_wifi();
|
void setup_wifi();
|
||||||
void reconnect();
|
void reconnect();
|
||||||
@ -45,11 +44,19 @@ void setup() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
dht.begin();
|
dht.begin();
|
||||||
light.begin();
|
irlight.begin();
|
||||||
|
|
||||||
client.subscribe("homeassistant/status");
|
client.subscribe("homeassistant/status");
|
||||||
halight.subscribeToCommandTopic();
|
halight.subscribeToCommandTopic();
|
||||||
|
|
||||||
|
if (WiFi.status() == WL_CONNECTED) {
|
||||||
|
mqtt_publish_config();
|
||||||
|
delay(100);
|
||||||
|
// mqtt_publish_state();
|
||||||
|
halight.sendState();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
mqtt_publish_config();
|
mqtt_publish_config();
|
||||||
|
|
||||||
if (WiFi.status() == WL_CONNECTED) {
|
if (WiFi.status() == WL_CONNECTED) {
|
||||||
@ -59,6 +66,7 @@ void setup() {
|
|||||||
mqtt_publish_state();
|
mqtt_publish_state();
|
||||||
halight.sendState();
|
halight.sendState();
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop() {
|
void loop() {
|
||||||
@ -67,15 +75,17 @@ void loop() {
|
|||||||
}
|
}
|
||||||
client.loop();
|
client.loop();
|
||||||
|
|
||||||
|
/*
|
||||||
long now = millis();
|
long now = millis();
|
||||||
|
|
||||||
if (now - lastMsg > 60000) {
|
if (now - lastMsg > 60000) {
|
||||||
lastMsg = now;
|
lastMsg = now;
|
||||||
temp = round2(dht.readTemperature());
|
temp = round2(dht.readTemperature());
|
||||||
|
|
||||||
hum = round2(dht.readHumidity());
|
hum = round2(dht.readHumidity());
|
||||||
mqtt_publish_state();
|
mqtt_publish_state();
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
delay(100);
|
delay(100);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -93,7 +103,7 @@ void mqtt_callback(char *topic, byte *payload, unsigned int length) {
|
|||||||
mqtt_publish_config();
|
mqtt_publish_config();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
halight.handle(topic, payload, length);
|
halight.handle(topic, payload, length);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,51 +147,10 @@ void reconnect() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void mqtt_publish_config() {
|
void mqtt_publish_config() {
|
||||||
/*
|
|
||||||
StaticJsonDocument<256> doc;
|
|
||||||
char buffer[256];
|
|
||||||
|
|
||||||
doc["device_class"] = "temperature";
|
|
||||||
doc["name"] = "Temperature";
|
|
||||||
doc["unit_of_meas"] = "°C";
|
|
||||||
doc["stat_t"] = HOMEASSISTANT_TOPIC "/state";
|
|
||||||
doc["value_template"] = "{{value_json.temperature}}";
|
|
||||||
doc["unique_id"] = "t";
|
|
||||||
|
|
||||||
serializeJson(doc, buffer);
|
|
||||||
|
|
||||||
client.publish(HOMEASSISTANT_TOPIC "/t/config", buffer, true);
|
|
||||||
|
|
||||||
doc["device_class"] = "humidity";
|
|
||||||
doc["name"] = "Humidity";
|
|
||||||
doc["unit_of_meas"] = "%";
|
|
||||||
doc["stat_t"] = HOMEASSISTANT_TOPIC "/state";
|
|
||||||
doc["value_template"] = "{{value_json.humidity}}";
|
|
||||||
doc["unique_id"] = "h";
|
|
||||||
|
|
||||||
serializeJson(doc, buffer);
|
|
||||||
|
|
||||||
client.publish(HOMEASSISTANT_TOPIC "/h/config", buffer, true);
|
|
||||||
*/
|
|
||||||
halight.sendConfig();
|
halight.sendConfig();
|
||||||
}
|
}
|
||||||
|
|
||||||
void mqtt_publish_state() {
|
void mqtt_publish_state() {
|
||||||
/*
|
|
||||||
Serial.println("===== Sending Data =====");
|
|
||||||
StaticJsonDocument<256> doc;
|
|
||||||
char buffer[256];
|
|
||||||
|
|
||||||
doc["temperature"] = round2(temp);
|
|
||||||
doc["humidity"] = round2(hum);
|
|
||||||
|
|
||||||
Serial.printf("Temperature: %f\n", round2(temp));
|
|
||||||
Serial.printf("Humidity: %f\n", round2(hum));
|
|
||||||
|
|
||||||
serializeJson(doc, buffer);
|
|
||||||
|
|
||||||
client.publish(HOMEASSISTANT_TOPIC "/state", buffer, true);
|
|
||||||
*/
|
|
||||||
// Loop until we're reconnected
|
// Loop until we're reconnected
|
||||||
while (!client.connected()) {
|
while (!client.connected()) {
|
||||||
Serial.print("Attempting MQTT connection...");
|
Serial.print("Attempting MQTT connection...");
|
||||||
|
Loading…
Reference in New Issue
Block a user