diff --git a/include/ir.h b/include/ir.h deleted file mode 100644 index e9f0bf2..0000000 --- a/include/ir.h +++ /dev/null @@ -1,102 +0,0 @@ -#if IR - -#include -#include -#include -#include "display.h" - -#define IR_INPUT_PIN D6 - -#define MQTT_HOST IPAddress(192, 168, 5, 138) -#define MQTT_PORT 1883 - -namespace Ir { - - void loop(); - Task tLoop(TASK_IMMEDIATE, TASK_FOREVER, loop, &ts, true); - - IRrecv irrecv(IR_INPUT_PIN); - bool avrOn = false; - - uint8_t readCommand() { - uint8_t lastCommand = 0; - decode_results results; - if (irrecv.decode(&results)) { - if (results.decode_type == NEC && results.command != 0) { - Serial.print(F(" C=0x")); - Serial.print(results.command, HEX); - Serial.println(); - lastCommand = results.command; - } - irrecv.resume(); // Receive the next value - } - return lastCommand; - } - - void command(const char c[]) { - avrOn = true; - tCheckWifi.cancel(); - Wifi::reconnect(); - Display::displayText(c); - } - - void loop() { - if (uint8_t lastCommand = readCommand()) { - switch (lastCommand) - { - case 0x9F: - avrOn = false; - tCheckWifi.restartDelayed(); - Display::displayText("Off"); - Mqtt::commands.push(lastCommand); - break; - case 0x12: - Display::displayText("Slp"); - Mqtt::commands.push(lastCommand); - break; - case 0xC1: - Display::displayText("Mute"); - Mqtt::commands.push(lastCommand); - break; - case 0xC4: - command("Play"); - Mqtt::commands.push(lastCommand); - break; - case 0xC7: - avrOn ? Display::displayText(" Up") : Display::changeBrightness(true); - break; - case 0xC8: - avrOn ? Display::displayText(" Dn") : Display::changeBrightness(false); - break; - case 0xD0: - command("Stop"); - Mqtt::commands.push(lastCommand); - break; - case 0xC0: - command("On"); - Mqtt::commands.push(lastCommand); - break; - case 0x84: - Display::displayTemp(Bmp::data.readTemp()); - break; - default: - Display::displayValue(lastCommand); - Mqtt::commands.push(lastCommand); - break; - } - } - } - - void setup() { - irrecv.enableIRIn(); // Start the receiver - } -} - -#else -namespace Ir { - bool avrOn = false; - - void setup() {} - void loop() {} -} -#endif \ No newline at end of file diff --git a/include/mqtt.h b/include/mqtt.h index b752d52..76cdc6e 100644 --- a/include/mqtt.h +++ b/include/mqtt.h @@ -1,6 +1,5 @@ #pragma once -#include #include #include #include "ha.h" @@ -13,30 +12,14 @@ namespace Mqtt { void publishInit(); - void publishCommand(); void publishBmp280(); void connect(); void disconnect(); Task tReConnect(5 * TASK_MINUTE, TASK_FOREVER, connect, &ts); Task tPublishInit(TASK_IMMEDIATE, TASK_ONCE, publishInit, &ts); - Task tPublishCommand(TASK_SECOND, TASK_FOREVER, publishCommand, &ts); AsyncMqttClient client; - struct { - const char* topic = "esp_clock/sensor/ir/value"; - std::queue queue; - uint8_t getCurrent() { - return queue.empty() ? 0 : queue.front(); - } - void push(uint8_t el) { - if (client.connected()) queue.push(el); - } - void pop() { - queue.pop(); - } - } commands; - const char* espClockTopic = "homeassistant/+/esp_clock/#"; void connect() { @@ -128,18 +111,6 @@ namespace Mqtt { publish(Ha::Sensor::stateTopic, message); } - void publishCommand() { - if (uint8_t cmd = commands.getCurrent()) { - char message[32]; - sprintf(message, "%X", cmd); - if (publish(commands.topic, message) != 0) { - Serial.print(cmd, HEX); - Serial.println(); - commands.queue.pop(); - } - } - } - void onMessage(char* topic, char* payload, AsyncMqttClientMessageProperties properties, size_t len, size_t index, size_t total) { char msg[len + 1]; memcpy(msg, payload, len); @@ -157,14 +128,12 @@ namespace Mqtt { Display::onHourFormatChanged(hourFormatMqtt->publishState); client.onConnect([](bool sessionPresent) { tPublishInit.enable(); - tPublishCommand.enableDelayed(); client.subscribe(espClockTopic, 0); tReConnect.disable(); Serial.println("Connected to MQTT"); }); client.onDisconnect([](AsyncMqttClientDisconnectReason reason) { tReConnect.enableDelayed(); - tPublishCommand.disable(); Serial.println("Disconnected from MQTT"); }); client.onMessage(onMessage); diff --git a/platformio.ini b/platformio.ini index 799a95b..a6d8a43 100644 --- a/platformio.ini +++ b/platformio.ini @@ -19,12 +19,11 @@ lib_deps = adafruit/Adafruit BusIO@^1.9.8 jchristensen/Timezone@^1.2.4 marvinroger/AsyncMqttClient@^0.9.0 - crankyoldgit/IRremoteESP8266@^2.7.18 arkhipenko/TaskScheduler@^3.7.0 adafruit/Adafruit Unified Sensor @ ^1.1.4 adafruit/Adafruit BMP280 Library@^2.5.0 bblanchon/ArduinoJson@6.16.1 -build_flags = -D IR=0 -D WIFI_ALWAYS_ON=1 +build_flags = -D WIFI_ALWAYS_ON=1 [env:laptop_home] diff --git a/src/esp_clock.cpp b/src/esp_clock.cpp index f95dd8e..39e7106 100644 --- a/src/esp_clock.cpp +++ b/src/esp_clock.cpp @@ -17,7 +17,6 @@ Task tWifiConnected(TASK_IMMEDIATE, TASK_ONCE, onWifiConnected, &ts); #include "bmp.h" #include "ntp_time.h" #include "ota.h" -#include "ir.h" #define BUTTON D3 @@ -49,7 +48,6 @@ void setup() { Display::setup(); Ota::setup(); Ntp::setup(); - Ir::setup(); Mqtt::setup(); Bmp::setup(); @@ -70,7 +68,6 @@ void onWifiConnected() { Serial.println("Wifi connected event"); Wifi::printStatus(); Ota::tLoop.enable(); - if (!Ir::avrOn) tCheckWifi.restartDelayed(); Mqtt::connect(); if (time_t newTime = Ntp::updateTime()) { Serial.println(asctime(localtime(&newTime)));