diff --git a/code/espurna/config/arduino.h b/code/espurna/config/arduino.h index 0d4481f3..e770fe20 100644 --- a/code/espurna/config/arduino.h +++ b/code/espurna/config/arduino.h @@ -83,6 +83,7 @@ //#define ALLNET_4DUINO_IOT_WLAN_RELAIS //#define TONBUX_MOSQUITO_KILLER //#define NEO_COOLCAM_POWER_PLUG_WIFI +//#define ESTINK_WIFI_POWER_STRIP //-------------------------------------------------------------------------------- // Features (values below are non-default values) diff --git a/code/espurna/config/hardware.h b/code/espurna/config/hardware.h index 71aaa864..e4594a17 100644 --- a/code/espurna/config/hardware.h +++ b/code/espurna/config/hardware.h @@ -2135,6 +2135,59 @@ #define LED1_PIN 4 #define LED1_PIN_INVERSE 1 + +// ------------------------------------------------------------------------------ +// Estink Wifi Power Strip +// https://www.amazon.de/Steckdosenleiste-Ladeger%C3%A4t-Sprachsteuerung-SmartphonesTablets-Android/dp/B0796W5FZY +// Fornorm Wi-Fi USB Extension Socket (ZLD-34EU) +// https://www.aliexpress.com/item/Fornorm-WiFi-Extension-Socket-with-Surge-Protector-Smart-Power-Strip-3-Outlets-and-4-USB-Charging/32849743948.html +// ----------------------------------------------------------------------------- + +#elif defined(ESTINK_WIFI_POWER_STRIP) + + // Info + #define MANUFACTURER "ESTINK" + #define DEVICE "WIFI_POWER_STRIP" + + // Disable UART noise since this board uses GPIO3 + #define DEBUG_SERIAL_SUPPORT 0 + + // Buttons + #define BUTTON1_PIN 16 + #define BUTTON1_MODE BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH + #define BUTTON1_RELAY 4 + + // Relays + #define RELAY1_PIN 14 // USB power + #define RELAY2_PIN 13 // power plug 1 + #define RELAY3_PIN 4 // power plug 2 + #define RELAY4_PIN 15 // power plug 3 + + #define RELAY1_TYPE RELAY_TYPE_NORMAL + #define RELAY2_TYPE RELAY_TYPE_NORMAL + #define RELAY3_TYPE RELAY_TYPE_NORMAL + #define RELAY4_TYPE RELAY_TYPE_NORMAL + + // LEDs + #define LED1_PIN 0 // power led + #define LED2_PIN 12 // power plug 1 + #define LED3_PIN 3 // power plug 2 + #define LED4_PIN 5 // power plug 3 + + #define LED1_PIN_INVERSE 1 + #define LED2_PIN_INVERSE 1 + #define LED3_PIN_INVERSE 1 + #define LED4_PIN_INVERSE 1 + + #define LED1_MODE LED_MODE_FINDME + #define LED2_MODE LED_MODE_FOLLOW + #define LED3_MODE LED_MODE_FOLLOW + #define LED4_MODE LED_MODE_FOLLOW + + #define LED2_RELAY 2 + #define LED3_RELAY 3 + #define LED4_RELAY 4 + // ----------------------------------------------------------------------------- // TEST boards (do not use!!) // ----------------------------------------------------------------------------- diff --git a/code/espurna/migrate.ino b/code/espurna/migrate.ino index 9d38aa69..5ea604b3 100644 --- a/code/espurna/migrate.ino +++ b/code/espurna/migrate.ino @@ -963,6 +963,35 @@ void migrate() { setSetting("relayGPIO", 0, 12); setSetting("relayType", 0, RELAY_TYPE_NORMAL); + #elif defined(ESTINK_WIFI_POWER_STRIP) + + setSetting("board", 76); + setSetting("btnGPIO", 0, 16); + setSetting("btnRelay", 0, 3); + setSetting("ledGPIO", 0, 0); + setSetting("ledGPIO", 1, 12); + setSetting("ledGPIO", 2, 3); + setSetting("ledGPIO", 3, 5); + setSetting("ledLogic", 0, 1); + setSetting("ledLogic", 1, 1); + setSetting("ledLogic", 2, 1); + setSetting("ledLogic", 3, 1); + setSetting("ledMode", 0, LED_MODE_FINDME); + setSetting("ledMode", 1, LED_MODE_FOLLOW); + setSetting("ledMode", 2, LED_MODE_FOLLOW); + setSetting("ledMode", 3, LED_MODE_FOLLOW); + setSetting("ledRelay", 1, 1); + setSetting("ledRelay", 2, 2); + setSetting("ledRelay", 3, 3); + setSetting("relayGPIO", 0, 14); + setSetting("relayGPIO", 1, 13); + setSetting("relayGPIO", 2, 4); + setSetting("relayGPIO", 3, 15); + setSetting("relayType", 0, RELAY_TYPE_NORMAL); + setSetting("relayType", 1, RELAY_TYPE_NORMAL); + setSetting("relayType", 2, RELAY_TYPE_NORMAL); + setSetting("relayType", 3, RELAY_TYPE_NORMAL); + #else // Allow users to define new settings without migration config diff --git a/code/espurna/utils.ino b/code/espurna/utils.ino index c3b092a5..7eaee736 100644 --- a/code/espurna/utils.ino +++ b/code/espurna/utils.ino @@ -52,6 +52,10 @@ String getCoreRevision() { #endif } +unsigned long maxSketchSpace() { + return (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000; +} + // WTF // Calling ESP.getFreeHeap() is making the system crash on a specific // AiLight bulb, but anywhere else... @@ -235,9 +239,9 @@ void info() { DEBUG_MSG_P(PSTR("[INIT] Flash size (CHIP): %8u bytes\n"), ESP.getFlashChipRealSize()); DEBUG_MSG_P(PSTR("[INIT] Flash size (SDK): %8u bytes / %4d sectors\n"), ESP.getFlashChipSize(), sectors(ESP.getFlashChipSize())); DEBUG_MSG_P(PSTR("[INIT] Firmware size: %8u bytes / %4d sectors\n"), ESP.getSketchSize(), sectors(ESP.getSketchSize())); - DEBUG_MSG_P(PSTR("[INIT] OTA size: %8u bytes / %4d sectors\n"), ESP.getFreeSketchSpace(), sectors(ESP.getFreeSketchSpace())); + DEBUG_MSG_P(PSTR("[INIT] Max OTA size: %8u bytes / %4d sectors\n"), maxSketchSpace(), sectors(maxSketchSpace())); DEBUG_MSG_P(PSTR("[INIT] EEPROM size: %8u bytes / %4d sectors\n"), settingsMaxSize(), sectors(settingsMaxSize())); - DEBUG_MSG_P(PSTR("[INIT] Empty space: %8u bytes / 4 sectors\n"), 4 * SPI_FLASH_SEC_SIZE); + DEBUG_MSG_P(PSTR("[INIT] Empty space: %8u bytes / 4 sectors\n"), 4 * SPI_FLASH_SEC_SIZE); DEBUG_MSG_P(PSTR("\n")); // ------------------------------------------------------------------------- diff --git a/code/platformio.ini b/code/platformio.ini index e4b34aab..384223a2 100644 --- a/code/platformio.ini +++ b/code/platformio.ini @@ -2005,6 +2005,30 @@ upload_port = "${env.ESPURNA_IP}" upload_flags = --auth=${env.ESPURNA_AUTH} --port 8266 extra_scripts = ${common.extra_scripts} +[env:estink-wifi-power-strip] +platform = ${common.platform} +framework = arduino +board = esp01_1m +board_flash_mode = dout +lib_deps = ${common.lib_deps} +lib_ignore = ${common.lib_ignore} +build_flags = ${common.build_flags} -DESTINK_WIFI_POWER_STRIP +monitor_baud = 115200 +extra_scripts = ${common.extra_scripts} + +[env:estink-wifi-power-strip-ota] +platform = ${common.platform} +framework = arduino +board = esp01_1m +board_flash_mode = dout +lib_deps = ${common.lib_deps} +lib_ignore = ${common.lib_ignore} +build_flags = ${common.build_flags} -DESTINK_WIFI_POWER_STRIP +upload_speed = 115200 +upload_port = "${env.ESPURNA_IP}" +upload_flags = --auth=${env.ESPURNA_AUTH} --port 8266 +extra_scripts = ${common.extra_scripts} + # ------------------------------------------------------------------------------ # GENERIC OTA ENVIRONMENTS # ------------------------------------------------------------------------------