diff --git a/.drone.yml b/.drone.yml index 09f4866..63226e9 100644 --- a/.drone.yml +++ b/.drone.yml @@ -6,6 +6,7 @@ steps: image: python:3 commands: - pip install platformio + - pio check - pio run - name: upload image: python:3 diff --git a/.vscode/.BROWSE.C_CPP.DB b/.vscode/.BROWSE.C_CPP.DB deleted file mode 100644 index f057130..0000000 Binary files a/.vscode/.BROWSE.C_CPP.DB and /dev/null differ diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json deleted file mode 100644 index aa73925..0000000 --- a/.vscode/c_cpp_properties.json +++ /dev/null @@ -1,129 +0,0 @@ -{ - "configurations": [ - { - "name": "!!! WARNING !!! AUTO-GENERATED FILE, PLEASE DO NOT MODIFY IT AND USE https://docs.platformio.org/page/projectconf/section_env_build.html#build-flags" - }, - { - "name": "Win32", - "includePath": [ - "c:/Users/furyf/Dev/deskcontrol/src", - "c:/Users/furyf/Dev/deskcontrol/.pio/libdeps/nodemcu/DHT sensor library for ESPx_ID2029", - "c:/Users/furyf/Dev/deskcontrol/.pio/libdeps/nodemcu/Homie/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266mDNS/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPClient/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/Ticker", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/DNSServer/src", - "c:/Users/furyf/Dev/deskcontrol/.pio/libdeps/nodemcu/ESP Async WebServer_ID306/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/Hash/src", - "c:/Users/furyf/Dev/deskcontrol/.pio/libdeps/nodemcu/Bounce2_ID1106/src", - "c:/Users/furyf/Dev/deskcontrol/.pio/libdeps/nodemcu/AsyncMqttClient_ID346/src", - "c:/Users/furyf/Dev/deskcontrol/.pio/libdeps/nodemcu/ESPAsyncTCP_ID305/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src", - "c:/Users/furyf/Dev/deskcontrol/.pio/libdeps/nodemcu/ArduinoJson_ID64/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/tools/sdk/include", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/tools/sdk/libc/xtensa-lx106-elf/include", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/cores/esp8266", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/tools/sdk/lwip2/include", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/variants/nodemcu", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ArduinoOTA", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/EEPROM", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266AVRISP/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPUpdateServer/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266LLMNR", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266NetBIOS", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266SSDP", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266SdFat/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WebServer/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFiMesh/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266httpUpdate/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/Ethernet/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/GDBStub/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/SD/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/SDFS/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/SPI", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/SPISlave/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/Servo/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/SoftwareSerial/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/TFT_Touch_Shield_V2", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/Wire", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/esp8266/src", - "C:/Users/furyf/.platformio/packages/tool-unity", - "" - ], - "browse": { - "limitSymbolsToIncludedHeaders": true, - "databaseFilename": "${workspaceRoot}/.vscode/.browse.c_cpp.db", - "path": [ - "c:/Users/furyf/Dev/deskcontrol/src", - "c:/Users/furyf/Dev/deskcontrol/.pio/libdeps/nodemcu/DHT sensor library for ESPx_ID2029", - "c:/Users/furyf/Dev/deskcontrol/.pio/libdeps/nodemcu/Homie/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266mDNS/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPClient/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/Ticker", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/DNSServer/src", - "c:/Users/furyf/Dev/deskcontrol/.pio/libdeps/nodemcu/ESP Async WebServer_ID306/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/Hash/src", - "c:/Users/furyf/Dev/deskcontrol/.pio/libdeps/nodemcu/Bounce2_ID1106/src", - "c:/Users/furyf/Dev/deskcontrol/.pio/libdeps/nodemcu/AsyncMqttClient_ID346/src", - "c:/Users/furyf/Dev/deskcontrol/.pio/libdeps/nodemcu/ESPAsyncTCP_ID305/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFi/src", - "c:/Users/furyf/Dev/deskcontrol/.pio/libdeps/nodemcu/ArduinoJson_ID64/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/tools/sdk/include", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/tools/sdk/libc/xtensa-lx106-elf/include", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/cores/esp8266", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/tools/sdk/lwip2/include", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/variants/nodemcu", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ArduinoOTA", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/EEPROM", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266AVRISP/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266HTTPUpdateServer/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266LLMNR", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266NetBIOS", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266SSDP", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266SdFat/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WebServer/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266WiFiMesh/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/ESP8266httpUpdate/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/Ethernet/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/GDBStub/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/SD/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/SDFS/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/SPI", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/SPISlave/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/Servo/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/SoftwareSerial/src", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/TFT_Touch_Shield_V2", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/Wire", - "C:/Users/furyf/.platformio/packages/framework-arduinoespressif8266/libraries/esp8266/src", - "C:/Users/furyf/.platformio/packages/tool-unity", - "" - ] - }, - "defines": [ - "PLATFORMIO=40000", - "ESP8266", - "ARDUINO_ARCH_ESP8266", - "ARDUINO_ESP8266_NODEMCU", - "PIO_FRAMEWORK_ARDUINO_LWIP2_LOW_MEMORY", - "F_CPU=80000000L", - "__ets__", - "ICACHE_FLASH", - "ARDUINO=10805", - "ARDUINO_BOARD=\"PLATFORMIO_NODEMCU\"", - "FLASHMODE_QIO", - "LWIP_OPEN_SRC", - "NONOSDK221=1", - "TCP_MSS=536", - "LWIP_FEATURES=1", - "LWIP_IPV6=0", - "VTABLES_IN_FLASH", - "" - ], - "intelliSenseMode": "clang-x64", - "cStandard": "c99", - "cppStandard": "c++11", - "compilerPath": "\"C:/Users/furyf/.platformio/packages/toolchain-xtensa/bin/xtensa-lx106-elf-gcc.exe\" -mlongcalls -mtext-section-literals" - } - ], - "version": 4 -} \ No newline at end of file diff --git a/.vscode/extensions.json b/.vscode/extensions.json deleted file mode 100644 index 272828b..0000000 --- a/.vscode/extensions.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - // See http://go.microsoft.com/fwlink/?LinkId=827846 - // for the documentation about the extensions.json format - "recommendations": [ - "platformio.platformio-ide" - ] -} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json deleted file mode 100644 index 3247630..0000000 --- a/.vscode/launch.json +++ /dev/null @@ -1,32 +0,0 @@ -// AUTOMATICALLY GENERATED FILE. PLEASE DO NOT MODIFY IT MANUALLY - -// PIO Unified Debugger -// -// Documentation: https://docs.platformio.org/page/plus/debugging.html -// Configuration: https://docs.platformio.org/page/projectconf/section_env_debug.html - -{ - "version": "0.2.0", - "configurations": [ - { - "type": "platformio-debug", - "request": "launch", - "name": "PIO Debug", - "executable": "c:/Users/furyf/Dev/deskcontrol/.pio/build/nodemcu/firmware.elf", - "toolchainBinDir": "C:/Users/furyf/.platformio/packages/toolchain-xtensa/bin", - "preLaunchTask": { - "type": "PlatformIO", - "task": "Pre-Debug" - }, - "internalConsoleOptions": "openOnSessionStart" - }, - { - "type": "platformio-debug", - "request": "launch", - "name": "PIO Debug (skip Pre-Debug)", - "executable": "c:/Users/furyf/Dev/deskcontrol/.pio/build/nodemcu/firmware.elf", - "toolchainBinDir": "C:/Users/furyf/.platformio/packages/toolchain-xtensa/bin", - "internalConsoleOptions": "openOnSessionStart" - } - ] -} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 835c000..0000000 --- a/.vscode/settings.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "terminal.integrated.env.windows": { - "PATH": "C:\\Program Files (x86)\\STMicroelectronics\\st_toolset\\asm;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files (x86)\\STMicroelectronics\\STM32 ST-LINK Utility\\ST-LINK Utility;C:\\Program Files\\doxygen\\bin;C:\\Program Files (x86)\\QuickTime\\QTSystem\\;C:\\Users\\furyf\\scoop\\apps\\nodejs\\current\\bin;C:\\Users\\furyf\\scoop\\apps\\nodejs\\current;C:\\Users\\furyf\\scoop\\apps\\latex\\current\\texmfs\\install\\miktex\\bin\\x64;C:\\Users\\furyf\\scoop\\apps\\latex\\current\\texmfs\\install\\miktex\\bin;C:\\Users\\furyf\\scoop\\apps\\ruby\\current\\gems\\bin;C:\\Users\\furyf\\scoop\\apps\\ruby\\current\\bin;C:\\Users\\furyf\\go\\bin;C:\\Users\\furyf\\scoop\\apps\\composer\\current\\home\\vendor\\bin;C:\\Users\\furyf\\scoop\\apps\\python27\\current\\scripts;C:\\Users\\furyf\\scoop\\apps\\gcc\\current\\bin;C:\\Users\\furyf\\scoop\\apps\\nmap\\current\\bin;C:\\Users\\furyf\\AppData\\Local\\Programs\\Python\\Launcher\\;C:\\Users\\furyf\\scoop\\shims;C:\\Users\\furyf\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\furyf\\scoop\\apps\\msys\\current\\bin;C:\\Users\\furyf\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\System\\PATH;%USERPROFILE%\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Program Files (x86)\\STMicroelectronics\\st_toolset\\asm;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0\\;C:\\WINDOWS\\System32\\OpenSSH\\;C:\\Program Files (x86)\\STMicroelectronics\\STM32 ST-LINK Utility\\ST-LINK Utility;C:\\Program Files\\doxygen\\bin;C:\\Program Files (x86)\\QuickTime\\QTSystem\\;C:\\Users\\furyf\\scoop\\apps\\nodejs\\current\\bin;C:\\Users\\furyf\\scoop\\apps\\nodejs\\current;C:\\Users\\furyf\\scoop\\apps\\latex\\current\\texmfs\\install\\miktex\\bin\\x64;C:\\Users\\furyf\\scoop\\apps\\latex\\current\\texmfs\\install\\miktex\\bin;C:\\Users\\furyf\\scoop\\apps\\ruby\\current\\gems\\bin;C:\\Users\\furyf\\scoop\\apps\\ruby\\current\\bin;C:\\Users\\furyf\\go\\bin;C:\\Users\\furyf\\scoop\\apps\\composer\\current\\home\\vendor\\bin;C:\\Users\\furyf\\scoop\\apps\\python27\\current\\scripts;C:\\Users\\furyf\\scoop\\apps\\gcc\\current\\bin;C:\\Users\\furyf\\scoop\\apps\\nmap\\current\\bin;C:\\Users\\furyf\\AppData\\Local\\Programs\\Python\\Launcher\\;C:\\Users\\furyf\\scoop\\shims;C:\\Users\\furyf\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\furyf\\scoop\\apps\\msys\\current\\bin;C:\\Users\\furyf\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\System\\PATH;%USERPROFILE%\\AppData\\Local\\Microsoft\\WindowsApps", - "PLATFORMIO_CALLER": "vscode" - } -} \ No newline at end of file diff --git a/include/config.h b/include/config.h new file mode 100644 index 0000000..c21a748 --- /dev/null +++ b/include/config.h @@ -0,0 +1,11 @@ +#ifndef CONFIG_H + +#define CONFIG_H + +#define CONFIG_SERIAL_BAUDRATE 115200 + +#define CONFIG_IO_RELAY D1 +#define CONFIG_IO_DHT11 D2 + +#define CONFIG_TEMPERATURE_SEND_INTERVAL 60 +#endif \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index b5d36f4..5363f7a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,27 +1,30 @@ -#include +#include "config.h" +#include #include "DHTesp.h" DHTesp dht; -const int TEMPERATURE_INTERVAL = 60; -unsigned long lastTemperatureSent = 0; -const int PIN_RELAY = D1; -const int PIN_DHT11 = D2; -#define OUTPUT_SET(x) digitalWrite(PIN_RELAY, x ? LOW : HIGH) + + +#define OUTPUT_SET(x) digitalWrite(CONFIG_IO_RELAY, x ? LOW : HIGH) unsigned int timer = 0; unsigned int next_timer_update = 0; HomieNode powerNode("power", "Power", "switch"); HomieNode temperatureNode("temperature", "Temperature", "temperature"); -bool powerStateHandler(const HomieRange& range, const String& value) { +bool powerStateHandler(const HomieRange& range, const String& value) +{ if (value != "on" && value != "off") return false; powerNode.setProperty("state").send(value); powerNode.setProperty("timer").send("0"); timer = 0; - if(value == "on") { + if(value == "on") + { OUTPUT_SET(true); Homie.getLogger() << "Power is on" << endl; - } else { + } + else + { OUTPUT_SET(false); Homie.getLogger() << "Power is off" << endl; } @@ -29,7 +32,8 @@ bool powerStateHandler(const HomieRange& range, const String& value) { return true; } -bool powerTimerHandler(const HomieRange& range, const String& value) { +bool powerTimerHandler(const HomieRange& range, const String& value) +{ int settimer = value.toInt(); if(settimer == 0 || settimer > 120) return false; @@ -44,17 +48,18 @@ bool powerTimerHandler(const HomieRange& range, const String& value) { } -void setupHandler() { - pinMode(PIN_RELAY, OUTPUT); +void setupHandler() +{ + pinMode(CONFIG_IO_RELAY, OUTPUT); OUTPUT_SET(false); powerNode.setProperty("state").send("off"); powerNode.setProperty("timer").send("0"); - - dht.setup(PIN_DHT11, DHTesp::DHT11); // Connect DHT sensor to GPIO 17 + dht.setup(CONFIG_IO_DHT11, DHTesp::DHT11); // Connect DHT sensor to GPIO 17 } -void loopHandler() { +void loopHandler() +{ if(timer) { if(timer < millis()) @@ -65,16 +70,17 @@ void loopHandler() { powerNode.setProperty("state").send("off"); } - if(next_timer_update && millis() > next_timer_update) { + if(next_timer_update && millis() > next_timer_update) + { next_timer_update = millis() + 60*1000; unsigned int time_remaining = timer - millis(); unsigned int min_left = time_remaining / (60*1000); powerNode.setProperty("timer").send(String(min_left)); - } } - if (millis() - lastTemperatureSent >= TEMPERATURE_INTERVAL * 1000UL || lastTemperatureSent == 0) + static unsigned long lastTemperatureSent = 0; + if (millis() - lastTemperatureSent >= CONFIG_TEMPERATURE_SEND_INTERVAL * 1000UL || lastTemperatureSent == 0) { float humidity = dht.getHumidity(); float temperature = dht.getTemperature(); @@ -86,8 +92,9 @@ void loopHandler() { } } -void setup() { - Serial.begin(115200); +void setup() +{ + Serial.begin(CONFIG_SERIAL_BAUDRATE); Homie_setFirmware("deskcontrol", "0.4.2"); @@ -104,6 +111,7 @@ void setup() { Homie.setup(); } -void loop() { +void loop() +{ Homie.loop(); }