From 348e2694db7b008eb0d0e14703880e975ff4d5fa Mon Sep 17 00:00:00 2001 From: Nicu Hodos Date: Thu, 30 May 2024 08:27:56 +0200 Subject: [PATCH] switch to ha-mqtt library, remove altitude --- include/bme.h | 2 - include/devices.h | 90 +++++++++++++++++++++++ include/display.h | 7 -- include/ha.h | 182 ---------------------------------------------- include/mqtt.h | 153 -------------------------------------- include/ota.h | 7 +- platformio.ini | 4 +- src/esp_clock.cpp | 18 +++-- 8 files changed, 107 insertions(+), 356 deletions(-) create mode 100644 include/devices.h delete mode 100644 include/ha.h delete mode 100644 include/mqtt.h diff --git a/include/bme.h b/include/bme.h index 8360e11..3eab6f8 100644 --- a/include/bme.h +++ b/include/bme.h @@ -10,7 +10,6 @@ namespace Bme { float temp; float humidity; float pressure; - float altitude; float readTemp() { char buf[10]; sprintf(buf, "%.1f", bme.readTemperature() - 2); @@ -27,7 +26,6 @@ namespace Bme { readTemp(); readHumidity(); pressure = bme.readPressure() / 100; - altitude = bme.readAltitude(1006); } } data; diff --git a/include/devices.h b/include/devices.h new file mode 100644 index 0000000..60b0bb1 --- /dev/null +++ b/include/devices.h @@ -0,0 +1,90 @@ +#pragma once + +#define MAIN_DEVICE_ID "esp_clock" +#define SENSOR_ID "bme280" + +#include "ha.h" +#include "display.h" + +using namespace Ha; + +namespace Devices { + + auto espClockDevice = &DeviceConfig::create(MAIN_DEVICE_ID) + .withName("ESP Clock") + .withManufacturer("Espressif") + .withModel("Esp8266 D1 Mini") + .withArea("Living room"); + + Sensor* sensor = Builder::instance(SENSOR_ID) + .withValueTemplate("{{ value_json.temperature }}") + .asDevice(&DeviceConfig::create("esp-clock-living-room") + .withName("Living room") + .withModel("BPE280") + .withArea("Living room") + .withParent(espClockDevice) + ) + .addSecondary(Builder::instance(SENSOR_ID).withValueTemplate("{{ value_json.humidity }}").build()) + .addSecondary(Builder::instance(SENSOR_ID).withValueTemplate("{{ value_json.pressure }}").build()) + .build(); + + Switch* ledMqtt = Builder::instance(new Switch{ "Led", "led", + [](const char* msg) { + strcmp("ON", msg) == 0 ? digitalWrite(LED_BUILTIN, LOW) : digitalWrite(LED_BUILTIN, HIGH); + ledMqtt->updateState(!digitalRead(LED_BUILTIN)); + } + }).withStateTopic().restoreFromState().build(); + + auto brightnessMqtt = Builder::instance(new Number{ "Brightness", "brightness", BRIGHTNESS_MIN, BRIGHTNESS_MAX, BRIGHTNESS_STEP, + [](const char* msg) { + Display::Brightness::set(String{ msg }.toInt()); + } + }).withStateTopic().restoreFromState().build(); + + auto hourFormatMqtt = Builder::instance(new Switch{ "Format 24h", "format_24h", + [](const char* msg) { + strcmp("ON", msg) == 0 ? Display::changeHourFormat24(true) : Display::changeHourFormat24(false); + } + }).withStateTopic().restoreFromState().build(); + + auto button = + Builder