делает некоторые правки

This commit is contained in:
Maxim Slipenko 2023-01-18 15:24:20 +03:00
parent dae8020ee5
commit 5ac3add676
8 changed files with 72 additions and 39 deletions

2
.gitignore vendored
View File

@ -4,4 +4,4 @@
.vscode/launch.json .vscode/launch.json
.vscode/ipch .vscode/ipch
include/config.h include/config.hpp

23
.vscode/settings.json vendored
View File

@ -1,13 +1,14 @@
{ {
"files.associations": { "files.associations": {
"array": "cpp", "array": "cpp",
"deque": "cpp", "deque": "cpp",
"list": "cpp", "list": "cpp",
"string": "cpp", "string": "cpp",
"unordered_map": "cpp", "unordered_map": "cpp",
"vector": "cpp", "vector": "cpp",
"string_view": "cpp", "string_view": "cpp",
"initializer_list": "cpp", "initializer_list": "cpp",
"ranges": "cpp" "ranges": "cpp"
} },
"clang-tidy.checks": ["readability-*", "modernize-*", "bugprone-*"]
} }

View File

@ -1,3 +1,7 @@
/*
* Copyright 2023 Maxim Slipenko
*/
#pragma once
// Настройки WiFi // Настройки WiFi
#define WIFI_SSID "SSID_HERE" #define WIFI_SSID "SSID_HERE"
#define WIFI_PASS "PASS_HERE" #define WIFI_PASS "PASS_HERE"

View File

@ -16,9 +16,9 @@ private:
HALightBrightnessController *light; HALightBrightnessController *light;
protected: protected:
JSON_DOCUMENT_TYPE createConfigJSON(); JSON_DOCUMENT_TYPE createConfigJSON() override;
JSON_DOCUMENT_TYPE createStateJSON(); JSON_DOCUMENT_TYPE createStateJSON() override;
void innerHanlder(JSON_DOCUMENT_TYPE &doc); void innerHanlder(JSON_DOCUMENT_TYPE &doc) override;
public: public:
HALightBrightness(PubSubClient &client, const char *name, const char *unique_id, HALightBrightness(PubSubClient &client, const char *name, const char *unique_id,
HALightBrightnessController &baseLight); HALightBrightnessController &baseLight);

View File

@ -20,3 +20,7 @@ lib_deps =
crankyoldgit/IRremoteESP8266@^2.8.2 crankyoldgit/IRremoteESP8266@^2.8.2
monitor_speed = 115200 monitor_speed = 115200
monitor_filters = default, esp8266_exception_decoder monitor_filters = default, esp8266_exception_decoder
check_tool = cppcheck, clangtidy
check_flags =
cppcheck: -v --suppress=*:*/.pio/*
clangtidy: --checks=-*,clang-diagnostic-*,-clang-diagnostic-unused-value,clang-analyzer-*,-*,bugprone-*,performance-*,readability-*,-readability-magic-numbers,-readability-braces-around-statements,-readability-inconsistent-declaration-parameter-name,-readability-named-parameter --fix

View File

@ -1,3 +1,6 @@
/*
* Copyright 2023 Maxim Slipenko
*/
#include <DHT.h> #include <DHT.h>
#include <ESP8266WiFi.h> #include <ESP8266WiFi.h>
#include <IRLight.h> #include <IRLight.h>
@ -8,8 +11,8 @@
#include <HomeAssistantDevices.hpp> #include <HomeAssistantDevices.hpp>
#include <IRLightController.hpp> #include <IRLightController.hpp>
#include <config.h> #include <config.hpp>
#include <utils.h> #include <utils.hpp>
static const char ISR_Root_x1[] PROGMEM = R"EOF( static const char ISR_Root_x1[] PROGMEM = R"EOF(
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
@ -68,7 +71,8 @@ float temp;
float hum; float hum;
long lastMsg = 0; long lastMsg = 0;
void setup() { void setup()
{
Serial.begin(115200); Serial.begin(115200);
delay(1000); delay(1000);
@ -84,8 +88,10 @@ void setup() {
mqtt_publish_state(); mqtt_publish_state();
} }
void loop() { void loop()
if (!client.connected()) { {
if (!client.connected())
{
reconnect(); reconnect();
} }
client.loop(); client.loop();
@ -104,7 +110,8 @@ void loop() {
delay(100); delay(100);
} }
void setup_wifi() { void setup_wifi()
{
delay(10); delay(10);
Serial.println(); Serial.println();
Serial.print("Connecting to "); Serial.print("Connecting to ");
@ -112,7 +119,8 @@ void setup_wifi() {
WiFi.begin(WIFI_SSID, WIFI_PASS); WiFi.begin(WIFI_SSID, WIFI_PASS);
while (WiFi.status() != WL_CONNECTED) { while (WiFi.status() != WL_CONNECTED)
{
delay(500); delay(500);
Serial.print("."); Serial.print(".");
} }
@ -126,12 +134,14 @@ void setup_wifi() {
WiFi.persistent(true); WiFi.persistent(true);
} }
void setup_time() { void setup_time()
{
configTime(0, 0, "pool.ntp.org"); configTime(0, 0, "pool.ntp.org");
Serial.print(F("Waiting for NTP time sync: ")); Serial.print(F("Waiting for NTP time sync: "));
time_t nowSecs = time(nullptr); time_t nowSecs = time(nullptr);
while (nowSecs < 8 * 3600 * 2) { while (nowSecs < 8 * 3600 * 2)
{
delay(500); delay(500);
Serial.print(F(".")); Serial.print(F("."));
yield(); yield();
@ -145,13 +155,15 @@ void setup_time() {
Serial.print(asctime(&timeinfo)); Serial.print(asctime(&timeinfo));
} }
void setup_mqtt() { void setup_mqtt()
{
espClient.setTrustAnchors(&certISRG); espClient.setTrustAnchors(&certISRG);
client.setServer(MQTT_SERVER, MQTT_PORT); client.setServer(MQTT_SERVER, MQTT_PORT);
client.setCallback(mqtt_callback); client.setCallback(mqtt_callback);
if (!client.connected()) { if (!client.connected())
{
reconnect(); reconnect();
} }
@ -159,13 +171,18 @@ void setup_mqtt() {
halight.subscribeToCommandTopic(); halight.subscribeToCommandTopic();
} }
void reconnect() { void reconnect()
{
// 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...");
if (client.connect("ESP8266Client", MQTT_LOGIN, MQTT_PASS)) { if (client.connect("ESP8266Client", MQTT_LOGIN, MQTT_PASS))
{
Serial.println("connected"); Serial.println("connected");
} else { }
else
{
Serial.print("failed, rc="); Serial.print("failed, rc=");
Serial.print(client.state()); Serial.print(client.state());
Serial.println(" try again in 5 seconds"); Serial.println(" try again in 5 seconds");
@ -175,15 +192,20 @@ void reconnect() {
} }
} }
void mqtt_callback(char *topic, byte *payload, unsigned int length) { const int unused = 0;
void mqtt_callback(char *topic, byte *payload, unsigned int length)
{
Serial.print("Message arrived ["); Serial.print("Message arrived [");
Serial.print(topic); Serial.print(topic);
Serial.print("] "); Serial.print("] ");
Serial.println(); Serial.println();
if (strcmp(topic, "homeassistant/status") == 0) { if (strcmp(topic, "homeassistant/status") == 0)
{
payload[length] = '\0'; payload[length] = '\0';
if (strcmp((char *)payload, "online") == 0) { if (strcmp(reinterpret_cast<char *>(payload), "online") == 0)
{
Serial.println("Home Assistant is online"); Serial.println("Home Assistant is online");
mqtt_publish_config(); mqtt_publish_config();
} }
@ -192,10 +214,12 @@ void mqtt_callback(char *topic, byte *payload, unsigned int length) {
halight.handle(topic, payload, length); halight.handle(topic, payload, length);
} }
void mqtt_publish_config() { void mqtt_publish_config()
{
halight.sendConfig(); halight.sendConfig();
} }
void mqtt_publish_state() { void mqtt_publish_state()
{
halight.sendState(); halight.sendState();
} }

View File

@ -1 +1 @@
double round2(double value) { return (int)(value * 100 + 0.5) / 100.0; } // double round2(double value) { return (int)(value * 100 + 0.5) / 100.0; }