#include #include "BROSE9323.h" #include "bitmaps.h" #include "nano_flash_bridge.h" // WiFi / MQTT credentials (gitignored, copy secrets.example.h -> secrets.h) #if __has_include("secrets.h") #include "secrets.h" #else #error "Missing src/esp32/secrets.h - copy src/esp32/secrets.example.h to secrets.h and fill it in" #endif // fixes #include #include // fonts #include #include // #include #include #include #include #include #include // wdt? #include #include // hassio #include byte mac[] = {0x34, 0x86, 0x5d, 0x3a, 0x08, 0x28}; // EthernetClient client; WiFiClient client; HADevice device(mac, sizeof(mac)); HAMqtt mqtt(client, device); HASwitch flipDotDisplay("FlipDotDisplayClock"); bool hassioDisplayStatus = true; HASwitch powerSwitch("FlipDotDisplayPower"); bool power = true; const int led1 = BUILTIN_LED; // Pin of the LED const int relay = 13; // Pin of the relay, powers the panels and the Nano (LOW = on) // Link to the Nano on UART2. Serial (UART0) stays free for USB / debug output. HardwareSerial &nanoSerial = Serial2; const int nano_rx = 16; // UART2 RX, wired to the Nano TX (through a 5V -> 3.3V divider) const int nano_tx = 17; // UART2 TX, wired to the Nano RX // Optional: GPIO that resets the Nano through an NPN transistor (HIGH = reset), -1 = not wired. // Needed to flash a Nano with the Optiboot bootloader, which doesn't start after a power cycle. const int nano_reset = -1; bool relay_on = false; // Max wait for the Nano's READY after power on (also the wait when Nano TX is not wired to our RX) const uint32_t NANO_BOOT_TIMEOUT = 3000; const uint32_t NANO_BAUD = 115200; // Flashing the Nano over WiFi (see README.md, pio run -e nano_ota -t upload) const uint16_t NANO_FLASH_PORT = 2323; // The bootloader baud rate is chosen by the uploader (57600 old bootloader, 115200 Optiboot) const uint32_t NANO_POWER_OFF_TIME = 1000; // relay off time to make sure the Nano resets const uint32_t NANO_RESET_DELAY = 200; // after power on, before the reset pulse const uint32_t NANO_RESET_PULSE = 50; int hour = 0; int minute = 0; int second = 0; // WiFiMulti wifiMulti; const char *ssid = WIFI_SSID; const char *password = WIFI_PASSWORD; BROSE9323 display(84, 19, 28); uint32_t next_display; // ntp #define MYTZ "CET-1CEST,M3.5.0,M10.5.0/3" const char *ntpServer = "pool.ntp.org"; const long gmtOffset_sec = 3600; const int daylightOffset_sec = 3600; // const int daylightOffset_sec = 0; bool wifiStatus = false; bool otaPanicMode = true;