From b583bc48f4c5ae19ad6628693bdee34e984c7629 Mon Sep 17 00:00:00 2001 From: arendst Date: Sat, 6 Jan 2018 17:34:42 +0100 Subject: [PATCH 01/11] v5.10.0j - MQTT/JSON language consolidation complete 5.10.0j * Allow conditional code based on core version * Removed all MQTT, JSON and Command language defines from locale files (#1473) --- README.md | 2 +- sonoff/_releasenotes.ino | 6 +- sonoff/i18n.h | 123 ++++++++++++++++++++++++++++------- sonoff/language/de-DE.h | 62 +----------------- sonoff/language/en-GB.h | 62 +----------------- sonoff/language/it-IT.h | 62 +----------------- sonoff/language/nl-NL.h | 62 +----------------- sonoff/language/pl-PL.h | 62 +----------------- sonoff/sonoff.ino | 82 +++++++++++------------ sonoff/sonoff_post.h | 4 ++ sonoff/support.ino | 18 ++--- sonoff/user_config.h | 4 +- sonoff/webserver.ino | 2 +- sonoff/xdrv_01_light.ino | 2 +- sonoff/xdrv_02_irremote.ino | 2 +- sonoff/xdrv_04_snfbridge.ino | 22 +++---- sonoff/xsns_03_energy.ino | 16 ++--- sonoff/xsns_05_ds18x20.ino | 2 +- sonoff/xsns_09_bmp.ino | 2 +- 19 files changed, 190 insertions(+), 407 deletions(-) diff --git a/README.md b/README.md index b0e26f219..edff41892 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ## Sonoff-Tasmota Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE. -Current version is **5.10.0i** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. +Current version is **5.10.0j** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. ### ATTENTION All versions diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index 049c47119..6bdada0bb 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -1,4 +1,8 @@ -/* 5.10.0i +/* 5.10.0j + * Allow conditional code based on core version + * Removed all MQTT, JSON and Command language defines from locale files (#1473) + * + * 5.10.0i * Add device function pointers * Moved Command and JSON English language defines to one file (i18n.h) * Update it-IT.h language file (#1449) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index a1a832dc5..c0f3b0c91 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -20,49 +20,113 @@ #ifndef _I18N_H_ #define _I18N_H_ -/********************************************************************************************/ +/*********************************************************************************************\ + * All text used in Commands, MQTT, JSON messages only in English (#1473) + * + * (At this location they can/may be overruled by language files using undefs) +\*********************************************************************************************/ -// Text used in JSON messages only in English (#1473) +#define D_JSON_ABORTED "Aborted" +#define D_JSON_ACTIVE "Active" #define D_JSON_ADDRESS "Address" #define D_JSON_AIRQUALITY "AirQuality" #define D_JSON_ANALOG_INPUT "Analog" -#define D_JSON_CO2 "Carbon dioxide" +#define D_JSON_AP "AP" // Access Point +#define D_JSON_APMAC_ADDRESS "APMac" +#define D_JSON_APPENDED "Appended" +#define D_JSON_BAUDRATE "Baudrate" +#define D_JSON_BLINK "Blink" +#define D_JSON_BLOCKED_LOOP "Blocked Loop" +#define D_JSON_BOOTVERSION "Boot" +#define D_JSON_BOOTCOUNT "BootCount" +#define D_JSON_BUILDDATETIME "BuildDateTime" +#define D_JSON_CO2 "CarbonDioxide" +#define D_JSON_COMMAND "Command" +#define D_JSON_COREVERSION "Core" #define D_JSON_COUNTER "Counter" -#define D_JSON_CURRENT "Current" // As in Voltage and Current +#define D_JSON_CURRENT "Current" // As in Voltage and Current #define D_JSON_DATA "Data" +#define D_JSON_DNSSERVER "DNSServer" #define D_JSON_DONE "Done" +#define D_JSON_EMPTY "Empty" +#define D_JSON_ENDDST "EndDST" // End Daylight Savings Time +#define D_JSON_ERASE "Erase" +#define D_JSON_ERROR "Error" +#define D_JSON_EVERY "Every" +#define D_JSON_FAILED "Failed" +#define D_JSON_FALLBACKTOPIC "FallbackTopic" +#define D_JSON_FLASHMODE "FlashMode" +#define D_JSON_FLASHSIZE "FlashSize" +#define D_JSON_FREEMEMORY "Free" +#define D_JSON_FROM "from" +#define D_JSON_GAS "Gas" +#define D_JSON_GATEWAY "Gateway" +#define D_JSON_HEAPSIZE "Heap" #define D_JSON_HIGH "High" #define D_JSON_HUMIDITY "Humidity" +#define D_JSON_I2CSCAN_DEVICES_FOUND_AT "Device(s) found at" +#define D_JSON_I2CSCAN_UNKNOWN_ERROR_AT "Unknown error at" +#define D_JSON_I2CSCAN_NO_DEVICES_FOUND "No devices found" +#define D_JSON_ID "Id" #define D_JSON_ILLUMINANCE "Illuminance" #define D_JSON_UNKNOWN "Unknown" #define D_JSON_LIGHT "Light" +#define D_JSON_LOCAL_TIME "Local" #define D_JSON_LOW "Low" +#define D_JSON_MAC "Mac" +#define D_JSON_MASK "Mask" +#define D_JSON_NO "No" #define D_JSON_NOISE "Noise" +#define D_JSON_NONE "None" #define D_JSON_OR "or" #define D_JSON_PERIOD "Period" #define D_JSON_POWERFACTOR "Factor" #define D_JSON_POWERUSAGE "Power" #define D_JSON_PRESSURE "Pressure" #define D_JSON_PRESSUREATSEALEVEL "SeaPressure" +#define D_JSON_PROGRAMFLASHSIZE "ProgramFlashSize" +#define D_JSON_PROGRAMSIZE "ProgramSize" +#define D_JSON_RESTARTING "Restarting" +#define D_JSON_RESTARTREASON "RestartReason" +#define D_JSON_RSSI "RSSI" +#define D_JSON_SAVEADDRESS "SaveAddress" +#define D_JSON_SAVECOUNT "SaveCount" +#define D_JSON_SAVED "Saved" +#define D_JSON_SAVESTATE "SaveState" +#define D_JSON_SDKVERSION "SDK" +#define D_JSON_SELECTED "selected" +#define D_JSON_SSID "SSId" +#define D_JSON_STARTDST "StartDST" // Start Daylight Savings Time +#define D_JSON_STARTED "Started" +#define D_JSON_SUBNETMASK "Subnetmask" +#define D_JSON_SUCCESSFUL "Successful" +#define D_JSON_SWITCH "Switch" #define D_JSON_SYNC "Sync" #define D_JSON_TEMPERATURE "Temperature" +#define D_JSON_TEMPERATURE_UNIT "TempUnit" +#define D_JSON_TIME "Time" #define D_JSON_TODAY "Today" #define D_JSON_TOTAL "Total" #define D_JSON_TYPE "Type" -#define D_JSON_UV_LEVEL "UV Level" +#define D_JSON_UPTIME "Uptime" +#define D_JSON_UTC_TIME "UTC" +#define D_JSON_UV_LEVEL "UvLevel" +#define D_JSON_VCC "Vcc" +#define D_JSON_VERSION "Version" #define D_JSON_VOLTAGE "Voltage" +#define D_JSON_WIFI "Wifi" #define D_JSON_WRONG "Wrong" #define D_JSON_YESTERDAY "Yesterday" -// Result -#define D_RSLT_RESULT "RESULT" -#define D_RSLT_INFO "INFO" -#define D_RSLT_STATE "STATE" -#define D_RSLT_SENSOR "SENSOR" -#define D_RSLT_UPTIME "UPTIME" -#define D_RSLT_MARGINS "MARGINS" -#define D_RSLT_WARNING "WARNING" #define D_RSLT_ENERGY "ENERGY" +#define D_RSLT_INFO "INFO" +#define D_RSLT_MARGINS "MARGINS" +#define D_RSLT_POWER "POWER" +#define D_RSLT_RESULT "RESULT" +#define D_RSLT_SENSOR "SENSOR" +#define D_RSLT_STATE "STATE" +#define D_RSLT_UPTIME "UPTIME" +#define D_RSLT_WARNING "WARNING" // Commands sonoff.ino #define D_CMND_MQTTHOST "MqttHost" @@ -102,7 +166,6 @@ #define D_STATUS10_SENSOR "SNS" #define D_STATUS11_STATUS "STS" #define D_CMND_POWER "Power" - #define D_RSLT_POWER "POWER" #define D_CMND_POWERONSTATE "PowerOnState" #define D_CMND_PULSETIME "PulseTime" #define D_CMND_BLINKTIME "BlinkTime" @@ -119,7 +182,7 @@ #define D_CMND_MODULE "Module" #define D_CMND_MODULES "Modules" #define D_CMND_GPIO "GPIO" - #define D_NOT_SUPPORTED "Not supported" + #define D_JSON_NOT_SUPPORTED "Not supported" #define D_CMND_GPIOS "GPIOs" #define D_CMND_PWM "PWM" #define D_CMND_PWMFREQUENCY "PWMFrequency" @@ -130,7 +193,7 @@ #define D_CMND_SLEEP "Sleep" #define D_CMND_UPLOAD "Upload" #define D_CMND_UPGRADE "Upgrade" - #define D_ONE_OR_GT "1 or >%s to upgrade" + #define D_JSON_ONE_OR_GT "1 or >%s to upgrade" #define D_CMND_OTAURL "OtaUrl" #define D_CMND_SERIALLOG "SerialLog" #define D_CMND_SYSLOG "SysLog" @@ -153,18 +216,19 @@ #define D_CMND_FRIENDLYNAME "FriendlyName" #define D_CMND_SWITCHMODE "SwitchMode" #define D_CMND_WEBSERVER "Webserver" - #define D_WEBSERVER_MODE "WebServerMode" - #define D_ACTIVE_FOR "Active for" - #define D_ON_DEVICE "on" + #define D_JSON_WEBSERVER_MODE "WebServerMode" + #define D_JSON_ACTIVE_FOR "Active for" + #define D_JSON_ON_DEVICE "on" + #define D_JSON_WITH_IP_ADDRESS "with IP address" #define D_CMND_WEBPASSWORD "WebPassword" #define D_CMND_WEBLOG "WebLog" #define D_CMND_EMULATION "Emulation" #define D_CMND_TELEPERIOD "TelePeriod" #define D_CMND_RESTART "Restart" - #define D_ONE_TO_RESTART "1 to restart" + #define D_JSON_ONE_TO_RESTART "1 to restart" #define D_CMND_RESET "Reset" - #define D_RESET_AND_RESTARTING "Reset and Restarting" - #define D_ONE_TO_RESET "1 to reset" + #define D_JSON_RESET_AND_RESTARTING "Reset and Restarting" + #define D_JSON_ONE_TO_RESET "1 to reset" #define D_CMND_TIMEZONE "Timezone" #define D_CMND_ALTITUDE "Altitude" #define D_CMND_LEDPOWER "LedPower" @@ -209,19 +273,32 @@ #define D_CMND_MAXPOWER "MaxPower" #define D_CMND_MAXPOWERHOLD "MaxPowerHold" #define D_CMND_MAXPOWERWINDOW "MaxPowerWindow" + #define D_JSON_MAXPOWERREACHED "MaxPowerReached" + #define D_JSON_MAXPOWERREACHEDRETRY "MaxPowerReachedRetry" #define D_CMND_SAFEPOWER "SafePower" #define D_CMND_SAFEPOWERHOLD "SafePowerHold" #define D_CMND_SAFEPOWERWINDOW "SafePowerWindow" + #define D_JSON_POWERMONITOR "PowerMonitor" #define D_CMND_MAXENERGY "MaxEnergy" #define D_CMND_MAXENERGYSTART "MaxEnergyStart" + #define D_JSON_ENERGYMONITOR "EnergyMonitor" + #define D_JSON_MAXENERGYREACHED "MaxEnergyReached" // Commands xdrv_04_snfbridge.ino #define D_CMND_RFCODE "RfCode" #define D_CMND_RFHIGH "RfHigh" #define D_CMND_RFHOST "RfHost" #define D_CMND_RFKEY "RfKey" + #define D_JSON_START_LEARNING "Start learning" + #define D_JSON_SET_TO_DEFAULT "Set to default" + #define D_JSON_DEFAULT_SENT "Default sent" + #define D_JSON_LEARNED_SENT "Learned sent" + #define D_JSON_LEARNING_ACTIVE "Learning active" + #define D_JSON_LEARN_FAILED "Learn failed" + #define D_JSON_LEARNED "Learned" #define D_CMND_RFLOW "RfLow" #define D_CMND_RFSYNC "RfSync" + #define D_JSON_RFRECEIVED "RfReceived" // Commands xdrv_05_domoticz.ino #define D_CMND_DOMOTICZ "Domoticz" @@ -296,7 +373,7 @@ const char S_JSON_COMMAND_NVALUE_UNIT[] PROGMEM = "{\"%s\":\"%d%s\"} const char S_JSON_COMMAND_NVALUE_UNIT_NVALUE_UNIT[] PROGMEM = "{\"%s\":\"%d%s (%d%s)\"}"; const char S_JSON_COMMAND_NVALUE_SVALUE[] PROGMEM = "{\"%s\":\"%d (%s)\"}"; -const char S_JSON_COMMAND_NVALUE_ACTIVE_NVALUE[] PROGMEM = "{\"%s\":\"%d (" D_ACTIVE " %d)\"}"; +const char S_JSON_COMMAND_NVALUE_ACTIVE_NVALUE[] PROGMEM = "{\"%s\":\"%d (" D_JSON_ACTIVE " %d)\"}"; const char S_JSON_COMMAND_NVALUE[] PROGMEM = "{\"%s\":%d}"; const char S_JSON_COMMAND_SVALUE[] PROGMEM = "{\"%s\":\"%s\"}"; diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 65a3d587b..3af1998f8 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -44,32 +44,24 @@ #define D_DECIMAL_SEPARATOR "." // Common -#define D_ABORTED "abgebrochen" -#define D_ACTIVE "aktiv" #define D_ADMIN "Admin" #define D_AIR_QUALITY "Luftqualität" #define D_AP "AP" // Access Point -#define D_APMAC_ADDRESS "AP-Mac" -#define D_APPENDED "angehängt" #define D_AS "wie" #define D_AUTO "AUTO" -#define D_BAUDRATE "Baudrate" #define D_BLINK "Blinken" #define D_BLINKOFF "BlinkenAus" -#define D_BOOTVERSION "Boot" #define D_BOOT_COUNT "Anzahl Startvorgänge" -#define D_BOOTCOUNT "BootZähler" #define D_BRIGHTLIGHT "hell" -#define D_BUILDDATETIME "BuildDatumUhrzeit" #define D_BUTTON "Knopf" #define D_BY "von" // Written by me +#define D_BYTES "Bytes" #define D_CELSIUS "Celsius" #define D_CO2 "CO²" #define D_CODE "code" // Button code #define D_COLDLIGHT "kalt" #define D_COMMAND "Befehl" #define D_CONNECTED "verbunden" -#define D_COREVERSION "Core" #define D_COUNT "zählen" #define D_COUNTER "Zähler" #define D_CURRENT "Strom" // As in Voltage and Current @@ -78,36 +70,25 @@ #define D_DEBUG "debug" #define D_DISABLED "deaktiviert" #define D_DNS_SERVER "DNS Server" -#define D_DNSSERVER "DNSServer" #define D_DONE "erledigt" #define D_DST_TIME "DST" -#define D_EMPTY "leer" #define D_EMULATION "Emulation" #define D_ENABLED "aktiviert" -#define D_ENDDST "EndDST" // End Daylight Savings Time #define D_ERASE "löschen" #define D_ERROR "Fehler" -#define D_EVERY "alle" #define D_FAHRENHEIT "Fahrenheit" #define D_FAILED "fehlgeschlagen" #define D_FALLBACK "Fallback" #define D_FALLBACK_TOPIC "Fallback topic" -#define D_FALLBACKTOPIC "FallbackTopic" #define D_FALSE "falsch" #define D_FILE "Datei" -#define D_FLASHMODE "FlashMode" -#define D_FLASHSIZE "FlashSize" #define D_FREE_MEMORY "Freier Arbeitsspeicher" -#define D_FREEMEMORY "frei" -#define D_FROM "von" #define D_GAS "Gas" #define D_GATEWAY "Gateway" #define D_GROUP "Gruppe" -#define D_HEAPSIZE "Heap-Größe" #define D_HOST "Host" #define D_HOSTNAME "Hostname" #define D_HUMIDITY "Feuchtigkeit" -#define D_ID "ID" #define D_ILLUMINANCE "Beleuchtungsintensität" #define D_IMMEDIATE "direkt" // Button immediate #define D_INDEX "Index" @@ -115,15 +96,10 @@ #define D_INITIALIZED "initialisiert" #define D_IP_ADDRESS "IP-Addresse" #define D_LIGHT "Licht" -#define D_LIMIT "Grenzwert" -#define D_LOCAL_TIME "lokale Zeit" #define D_LWT "LWT" -#define D_MAC "MAC" -#define D_MASK "Maske" #define D_MODULE "Modul" #define D_MQTT "MQTT" #define D_MULTI_PRESS "Mehrfachdruck" -#define D_NO "nein" #define D_NOISE "Lautstärke" #define D_NONE "keine" #define D_OFF "aus" @@ -138,41 +114,26 @@ #define D_PRESSURE "Druck" #define D_PRESSUREATSEALEVEL "MeeresDruck" #define D_PROGRAM_FLASH_SIZE "Ges. Flash Speicher" -#define D_PROGRAMFLASHSIZE "ProgramFlashSize" #define D_PROGRAM_SIZE "Ben. Flash Speicher" -#define D_PROGRAMSIZE "ProgramSize" #define D_PROJECT "Projekt" #define D_RECEIVED "erhalten" #define D_RESTART "Neustart" #define D_RESTARTING "starte neu" #define D_RESTART_REASON "Grund für Neustart" -#define D_RESTARTREASON "RestartReason" #define D_RESTORE "Wiederherstellung" #define D_RETAINED "beibehalten" #define D_SAVE "Speichern" -#define D_SAVEADDRESS "SaveAddress" -#define D_SAVECOUNT "SaveCount" -#define D_SAVESTATE "SaveState" -#define D_SDKVERSION "SDK" -#define D_SELECTED "ausgewählt" #define D_SENSOR "Sensor" #define D_SERIAL "Seriell" -#define D_BYTES "Bytes" #define D_SSID "SSID" #define D_START "Start" -#define D_STARTED "gestartet" -#define D_STARTDST "StartDST" // Start Daylight Savings Time #define D_STD_TIME "STD" #define D_STOP "Stop" #define D_SUBNET_MASK "Subnetzmaske" -#define D_SUBNETMASK "Subnetmaske" #define D_SUBSCRIBE_TO "subscribe to" #define D_SUCCESSFUL "erfolgreich" -#define D_SWITCH "Schalter" #define D_SYS "Sys " // Sys log #define D_TEMPERATURE "Temperatur" -#define D_TEMPERATURE_UNIT "TempUnit" -#define D_TIME "Zeit" #define D_TO "zu" #define D_TOGGLE "An/Aus" #define D_TOPIC "topic" @@ -184,13 +145,11 @@ #define D_USER "Benutzer" #define D_UTC_TIME "UTC" #define D_UV_LEVEL "UV Level" -#define D_VCC "VCC" #define D_VERSION "Version" #define D_VOLTAGE "Spannung" #define D_WARMLIGHT "warm" #define D_WEB "Web" // Web log #define D_WEB_SERVER "Web-Server" -#define D_WIFI "WLAN" // sonoff.ino #define D_LEVEL_10 "level 1-0" @@ -227,10 +186,7 @@ #define D_CHECKING_CONNECTION "Prüfe Verbindung..." #define D_QUERY_DONE "Suchanfrage abgeschlossen. MQTT-Services gefunden" #define D_MQTT_SERVICE_FOUND "MQTT-Service gefunden bei" -#define D_I2CSCAN_DEVICES_FOUND_AT "Gerät(e) gefunden bei" #define D_FOUND_AT "gefunden bei" -#define D_I2CSCAN_UNKNOWN_ERROR_AT "unbekannter Fehler bei" -#define D_I2CSCAN_NO_DEVICES_FOUND "keine Geräte gefunden" #define D_SYSLOG_HOST_NOT_FOUND "Syslog Host nicht gefunden" // settings.ino @@ -392,17 +348,6 @@ #define D_JSON_IRHVAC_TEMP "TEMPERATUR" #define D_JSON_IRRECEIVED "IR empfangen" -// xdrv_04_snfbridge.ino -#define D_RFRECEIVED "RF empfangen" -#define D_START_LEARNING "starte Anlernen" -#define D_SET_TO_DEFAULT "auf Standard zurücksetzen" -#define D_DEFAULT_SENT "Standard gesendet" -#define D_LEARNED_SENT "Anlernen gesendet" -#define D_LEARNING_ACTIVE "Anlernen aktiv" -#define D_LEARN_FAILED "Anlernen fehlgeschlagen" -#define D_LEARNED "angelernt" -#define D_SAVED "gespeichert" - // xdrv_05_domoticz.ino #define D_DOMOTICZ_PARAMETERS "Domoticz parameters" #define D_DOMOTICZ_IDX "Idx" @@ -421,11 +366,6 @@ #define D_DOMOTICZ_UPDATE_TIMER "Update timer" // xsns_03_energy.ino -#define D_MAXPOWERREACHED "MaxPowerReached" -#define D_MAXPOWERREACHEDRETRY "MaxPowerReachedRetry" -#define D_POWERMONITOR "PowerMonitor" -#define D_ENERGYMONITOR "EnergyMonitor" -#define D_MAXENERGYREACHED "MaxEnergyReached" #define D_ENERGY_TODAY "Energie heute" #define D_ENERGY_YESTERDAY "Energie gestern" #define D_ENERGY_TOTAL "Energie insgesamt" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index d10851f2a..b043618f0 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -44,32 +44,24 @@ #define D_DECIMAL_SEPARATOR "." // Common -#define D_ABORTED "Aborted" -#define D_ACTIVE "Active" #define D_ADMIN "Admin" #define D_AIR_QUALITY "Air quality" #define D_AP "AP" // Access Point -#define D_APMAC_ADDRESS "APMac" -#define D_APPENDED "Appended" #define D_AS "as" #define D_AUTO "AUTO" -#define D_BAUDRATE "Baudrate" #define D_BLINK "Blink" #define D_BLINKOFF "BlinkOff" -#define D_BOOTVERSION "Boot" #define D_BOOT_COUNT "Boot Count" -#define D_BOOTCOUNT "BootCount" #define D_BRIGHTLIGHT "Bright" -#define D_BUILDDATETIME "BuildDateTime" #define D_BUTTON "Button" #define D_BY "by" // Written by me +#define D_BYTES "Bytes" #define D_CELSIUS "Celsius" #define D_CO2 "Carbon dioxide" #define D_CODE "code" // Button code #define D_COLDLIGHT "Cold" #define D_COMMAND "Command" #define D_CONNECTED "Connected" -#define D_COREVERSION "Core" #define D_COUNT "Count" #define D_COUNTER "Counter" #define D_CURRENT "Current" // As in Voltage and Current @@ -78,36 +70,25 @@ #define D_DEBUG "Debug" #define D_DISABLED "Disabled" #define D_DNS_SERVER "DNS Server" -#define D_DNSSERVER "DNSServer" #define D_DONE "Done" #define D_DST_TIME "DST" -#define D_EMPTY "Empty" #define D_EMULATION "Emulation" #define D_ENABLED "Enabled" -#define D_ENDDST "EndDST" // End Daylight Savings Time #define D_ERASE "Erase" #define D_ERROR "Error" -#define D_EVERY "Every" #define D_FAHRENHEIT "Fahrenheit" #define D_FAILED "Failed" #define D_FALLBACK "Fallback" #define D_FALLBACK_TOPIC "Fallback Topic" -#define D_FALLBACKTOPIC "FallbackTopic" #define D_FALSE "False" #define D_FILE "File" -#define D_FLASHMODE "FlashMode" -#define D_FLASHSIZE "FlashSize" #define D_FREE_MEMORY "Free Memory" -#define D_FREEMEMORY "Free" -#define D_FROM "from" #define D_GAS "Gas" #define D_GATEWAY "Gateway" #define D_GROUP "Group" -#define D_HEAPSIZE "Heap" #define D_HOST "Host" #define D_HOSTNAME "Hostname" #define D_HUMIDITY "Humidity" -#define D_ID "Id" #define D_ILLUMINANCE "Illuminance" #define D_IMMEDIATE "immediate" // Button immediate #define D_INDEX "Index" @@ -115,15 +96,10 @@ #define D_INITIALIZED "Initialized" #define D_IP_ADDRESS "IP Address" #define D_LIGHT "Light" -#define D_LIMIT "Limit" -#define D_LOCAL_TIME "Local" #define D_LWT "LWT" -#define D_MAC "Mac" -#define D_MASK "Mask" #define D_MODULE "Module" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-press" -#define D_NO "No" #define D_NOISE "Noise" #define D_NONE "None" #define D_OFF "Off" @@ -138,41 +114,26 @@ #define D_PRESSURE "Pressure" #define D_PRESSUREATSEALEVEL "SeaPressure" #define D_PROGRAM_FLASH_SIZE "Program Flash Size" -#define D_PROGRAMFLASHSIZE "ProgramFlashSize" #define D_PROGRAM_SIZE "Program Size" -#define D_PROGRAMSIZE "ProgramSize" #define D_PROJECT "Project" #define D_RECEIVED "Received" #define D_RESTART "Restart" #define D_RESTARTING "Restarting" #define D_RESTART_REASON "Restart Reason" -#define D_RESTARTREASON "RestartReason" #define D_RESTORE "restore" #define D_RETAINED "retained" #define D_SAVE "Save" -#define D_SAVEADDRESS "SaveAddress" -#define D_SAVECOUNT "SaveCount" -#define D_SAVESTATE "SaveState" -#define D_SDKVERSION "SDK" -#define D_SELECTED "selected" #define D_SENSOR "Sensor" #define D_SERIAL "Serial" -#define D_BYTES "Bytes" #define D_SSID "SSId" #define D_START "Start" -#define D_STARTED "Started" -#define D_STARTDST "StartDST" // Start Daylight Savings Time #define D_STD_TIME "STD" #define D_STOP "Stop" #define D_SUBNET_MASK "Subnet Mask" -#define D_SUBNETMASK "Subnetmask" #define D_SUBSCRIBE_TO "Subscribe to" #define D_SUCCESSFUL "Successful" -#define D_SWITCH "Switch" #define D_SYS "Sys" // Sys log #define D_TEMPERATURE "Temperature" -#define D_TEMPERATURE_UNIT "TempUnit" -#define D_TIME "Time" #define D_TO "to" #define D_TOGGLE "Toggle" #define D_TOPIC "Topic" @@ -184,13 +145,11 @@ #define D_USER "User" #define D_UTC_TIME "UTC" #define D_UV_LEVEL "UV Level" -#define D_VCC "Vcc" #define D_VERSION "Version" #define D_VOLTAGE "Voltage" #define D_WARMLIGHT "Warm" #define D_WEB "Web" // Web log #define D_WEB_SERVER "Web Server" -#define D_WIFI "Wifi" // sonoff.ino #define D_LEVEL_10 "level 1-0" @@ -227,10 +186,7 @@ #define D_CHECKING_CONNECTION "Checking connection..." #define D_QUERY_DONE "Query done. MQTT services found" #define D_MQTT_SERVICE_FOUND "MQTT service found on" -#define D_I2CSCAN_DEVICES_FOUND_AT "Device(s) found at" #define D_FOUND_AT "found at" -#define D_I2CSCAN_UNKNOWN_ERROR_AT "Unknown error at" -#define D_I2CSCAN_NO_DEVICES_FOUND "No devices found" #define D_SYSLOG_HOST_NOT_FOUND "Syslog Host not found" // settings.ino @@ -392,17 +348,6 @@ #define D_JSON_IRHVAC_TEMP "TEMP" #define D_JSON_IRRECEIVED "IrReceived" -// xdrv_04_snfbridge.ino -#define D_RFRECEIVED "RfReceived" -#define D_START_LEARNING "Start learning" -#define D_SET_TO_DEFAULT "Set to default" -#define D_DEFAULT_SENT "Default sent" -#define D_LEARNED_SENT "Learned sent" -#define D_LEARNING_ACTIVE "Learning active" -#define D_LEARN_FAILED "Learn failed" -#define D_LEARNED "Learned" -#define D_SAVED "Saved" - // xdrv_05_domoticz.ino #define D_DOMOTICZ_PARAMETERS "Domoticz parameters" #define D_DOMOTICZ_IDX "Idx" @@ -421,11 +366,6 @@ #define D_DOMOTICZ_UPDATE_TIMER "Update timer" // xsns_03_energy.ino -#define D_MAXPOWERREACHED "MaxPowerReached" -#define D_MAXPOWERREACHEDRETRY "MaxPowerReachedRetry" -#define D_POWERMONITOR "PowerMonitor" -#define D_ENERGYMONITOR "EnergyMonitor" -#define D_MAXENERGYREACHED "MaxEnergyReached" #define D_ENERGY_TODAY "Energy Today" #define D_ENERGY_YESTERDAY "Energy Yesterday" #define D_ENERGY_TOTAL "Energy Total" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 40e0a6f4a..24e76af5a 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -44,32 +44,24 @@ #define D_DECIMAL_SEPARATOR "." // Common -#define D_ABORTED "Aborted" -#define D_ACTIVE "Active" #define D_ADMIN "Admin" #define D_AIR_QUALITY "Qualita' dell'aria" #define D_AP "AP" // Access Point -#define D_APMAC_ADDRESS "APMac" -#define D_APPENDED "Appended" #define D_AS "come" #define D_AUTO "AUTO" -#define D_BAUDRATE "Baudrate" #define D_BLINK "Blink" #define D_BLINKOFF "BlinkOff" -#define D_BOOTVERSION "Boot" #define D_BOOT_COUNT "Boot Count" -#define D_BOOTCOUNT "BootCount" #define D_BRIGHTLIGHT "Luminoso" -#define D_BUILDDATETIME "BuildDateTime" #define D_BUTTON "Pulsante" #define D_BY "da" // Written by me +#define D_BYTES "Bytes" #define D_CELSIUS "Celsius" #define D_CO2 "CO2" #define D_CODE "codice" // Button code #define D_COLDLIGHT "Fredda" #define D_COMMAND "Command" #define D_CONNECTED "Connesso" -#define D_COREVERSION "Core" #define D_COUNT "Conteggio" #define D_COUNTER "Contatore" #define D_CURRENT "Corrente" // As in Voltage and Current @@ -78,36 +70,25 @@ #define D_DEBUG "Debug" #define D_DISABLED "Disabilitato" #define D_DNS_SERVER "DNS Server" -#define D_DNSSERVER "DNSServer" #define D_DONE "Fatto" #define D_DST_TIME "DST" -#define D_EMPTY "Empty" #define D_EMULATION "Emulazione" #define D_ENABLED "Abilitato" -#define D_ENDDST "EndDST" // End Daylight Savings Time #define D_ERASE "Erase" #define D_ERROR "Error" -#define D_EVERY "Ogni" #define D_FAHRENHEIT "Fahrenheit" #define D_FAILED "Fallito" #define D_FALLBACK "Fallback" #define D_FALLBACK_TOPIC "Topic Riserva" -#define D_FALLBACKTOPIC "FallbackTopic" #define D_FALSE "False" #define D_FILE "File" -#define D_FLASHMODE "FlashMode" -#define D_FLASHSIZE "FlashSize" #define D_FREE_MEMORY "Memoria Libera" -#define D_FREEMEMORY "Free" -#define D_FROM "from" #define D_GAS "Gas" #define D_GATEWAY "Gateway" #define D_GROUP "Gruppo" -#define D_HEAPSIZE "Heap" #define D_HOST "Host" #define D_HOSTNAME "Hostname" #define D_HUMIDITY "Umidita'" -#define D_ID "Id" #define D_ILLUMINANCE "Illuminazione" #define D_IMMEDIATE "immediato" // Button immediate #define D_INDEX "Index" @@ -115,15 +96,10 @@ #define D_INITIALIZED "Inizializzato" #define D_IP_ADDRESS "Indirizzo IP" #define D_LIGHT "Luce" -#define D_LIMIT "Limit" -#define D_LOCAL_TIME "Local" #define D_LWT "LWT" -#define D_MAC "Mac" -#define D_MASK "Mask" #define D_MODULE "Module" #define D_MQTT "MQTT" #define D_MULTI_PRESS "multi-pressione" -#define D_NO "No" #define D_NOISE "Rumore" #define D_NONE "Nessuno" #define D_OFF "Off" @@ -138,41 +114,26 @@ #define D_PRESSURE "Pressione" #define D_PRESSUREATSEALEVEL "Pressione al livello del mare" #define D_PROGRAM_FLASH_SIZE "Dimensione Flash Programma" -#define D_PROGRAMFLASHSIZE "ProgramFlashSize" #define D_PROGRAM_SIZE "Dimensione Programma" -#define D_PROGRAMSIZE "ProgramSize" #define D_PROJECT "Project" #define D_RECEIVED "Ricevuto" #define D_RESTART "Riavvio" #define D_RESTARTING "Restarting" #define D_RESTART_REASON "Causa Riavvio" -#define D_RESTARTREASON "RestartReason" #define D_RESTORE "ripristino" #define D_RETAINED "salvato" #define D_SAVE "Salva" -#define D_SAVEADDRESS "SaveAddress" -#define D_SAVECOUNT "SaveCount" -#define D_SAVESTATE "SaveState" -#define D_SDKVERSION "SDK" -#define D_SELECTED "selected" #define D_SENSOR "Sensore" #define D_SERIAL "Seriale" -#define D_BYTES "Bytes" #define D_SSID "SSId" #define D_START "Start" -#define D_STARTED "Started" -#define D_STARTDST "StartDST" // Start Daylight Savings Time #define D_STD_TIME "STD" #define D_STOP "Stop" #define D_SUBNET_MASK "Maschera sottorete" -#define D_SUBNETMASK "Subnetmask" #define D_SUBSCRIBE_TO "Sottoscrivi a" #define D_SUCCESSFUL "Successful" -#define D_SWITCH "Switch" #define D_SYS "Sys" // Sys log #define D_TEMPERATURE "Temperature" -#define D_TEMPERATURE_UNIT "TempUnit" -#define D_TIME "Time" #define D_TO "a" #define D_TOGGLE "Toggle" #define D_TOPIC "Topic" @@ -184,13 +145,11 @@ #define D_USER "Utente" #define D_UTC_TIME "UTC" #define D_UV_LEVEL "Livello UV" -#define D_VCC "Vcc" #define D_VERSION "Version" #define D_VOLTAGE "Tensione" #define D_WARMLIGHT "Calda" #define D_WEB "Web" // Web log #define D_WEB_SERVER "Web Server" -#define D_WIFI "Wifi" // sonoff.ino #define D_LEVEL_10 "level 1-0" @@ -227,10 +186,7 @@ #define D_CHECKING_CONNECTION "Controllo connessione..." #define D_QUERY_DONE "Query eseguita. Servizio MQTT trovato" #define D_MQTT_SERVICE_FOUND "Servizio MQTT trovato su" -#define D_I2CSCAN_DEVICES_FOUND_AT "Dispositivo/i trovato a" #define D_FOUND_AT "trovato a" -#define D_I2CSCAN_UNKNOWN_ERROR_AT "Errore sconosciuto a" -#define D_I2CSCAN_NO_DEVICES_FOUND "Nessun dispositivo trovato" #define D_SYSLOG_HOST_NOT_FOUND "Syslog Host non trovato" // settings.ino @@ -392,17 +348,6 @@ #define D_JSON_IRHVAC_TEMP "TEMP" #define D_JSON_IRRECEIVED "IrReceived" -// xdrv_04_snfbridge.ino -#define D_RFRECEIVED "RfReceived" -#define D_START_LEARNING "Avvio apprendimento" -#define D_SET_TO_DEFAULT "Imposta al default" -#define D_DEFAULT_SENT "Default inviato" -#define D_LEARNED_SENT "Apprendimento inviato" -#define D_LEARNING_ACTIVE "Apprendimento attivo" -#define D_LEARN_FAILED "Apprendimento fallito" -#define D_LEARNED "Appreso" -#define D_SAVED "Salvato" - // xdrv_05_domoticz.ino #define D_DOMOTICZ_PARAMETERS "Parametri Domoticz" #define D_DOMOTICZ_IDX "Idx" @@ -421,11 +366,6 @@ #define D_DOMOTICZ_UPDATE_TIMER "Intervallo di aggiornamento" // xsns_03_energy.ino -#define D_MAXPOWERREACHED "MaxPowerReached" -#define D_MAXPOWERREACHEDRETRY "MaxPowerReachedRetry" -#define D_POWERMONITOR "PowerMonitor" -#define D_ENERGYMONITOR "EnergyMonitor" -#define D_MAXENERGYREACHED "MaxEnergyReached" #define D_ENERGY_TODAY "Energia Oggi" #define D_ENERGY_YESTERDAY "Energia Ieri" #define D_ENERGY_TOTAL "Energia Totale" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 7fd308853..822120162 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -44,32 +44,24 @@ #define D_DECIMAL_SEPARATOR "," // Common -#define D_ABORTED "Afgebroken" -#define D_ACTIVE "Actief" #define D_ADMIN "Admin" #define D_AIR_QUALITY "Lucht kwalitiet" #define D_AP "AP" // Access Point -#define D_APMAC_ADDRESS "APMac" -#define D_APPENDED "Aangevuld" #define D_AS "als" #define D_AUTO "AUTO" -#define D_BAUDRATE "Baudrate" #define D_BLINK "Knipper" #define D_BLINKOFF "KnipperUit" -#define D_BOOTVERSION "Boot" #define D_BOOT_COUNT "Herstarts" -#define D_BOOTCOUNT "Herstarts" #define D_BRIGHTLIGHT "Fel" -#define D_BUILDDATETIME "BuildDateTime" #define D_BUTTON "DrukKnop" #define D_BY "door" // Written by me +#define D_BYTES "Bytes" #define D_CELSIUS "Celsius" #define D_CO2 "Koolstofdioxide" #define D_CODE "code" // Button code #define D_COLDLIGHT "Koud" #define D_COMMAND "Opdracht" #define D_CONNECTED "Verbonden" -#define D_COREVERSION "Core" #define D_COUNT "Aantal" #define D_COUNTER "Teller" #define D_CURRENT "Stroom" // As in Voltage and Current @@ -78,36 +70,25 @@ #define D_DEBUG "Debug" #define D_DISABLED "Uitgeschakeld" #define D_DNS_SERVER "DNS Server" -#define D_DNSSERVER "DNSServer" #define D_DONE "Klaar" #define D_DST_TIME "ZT" -#define D_EMPTY "Leeg" #define D_EMULATION "Emulatie" #define D_ENABLED "Geactiveerd" -#define D_ENDDST "WinterTijd" // End Daylight Savings Time #define D_ERASE "Wissen" #define D_ERROR "Fout" -#define D_EVERY "Iedere" #define D_FAHRENHEIT "Fahrenheit" #define D_FAILED "Mislukt" #define D_FALLBACK "Fallback" #define D_FALLBACK_TOPIC "Fallback Topic" -#define D_FALLBACKTOPIC "FallbackTopic" #define D_FALSE "Onwaar" #define D_FILE "Bestand" -#define D_FLASHMODE "FlashStand" -#define D_FLASHSIZE "FlashGrootte" #define D_FREE_MEMORY "Vrij geheugen" -#define D_FREEMEMORY "Vrij" -#define D_FROM "van" #define D_GAS "Gas" #define D_GATEWAY "Gateway" #define D_GROUP "Groep" -#define D_HEAPSIZE "Heap" #define D_HOST "Host" #define D_HOSTNAME "Hostnaam" #define D_HUMIDITY "Luchtvochtigheid" -#define D_ID "Id" #define D_ILLUMINANCE "Verlichtingssterkte" #define D_IMMEDIATE "onmiddelijk" // Button immediate #define D_INDEX "Index" @@ -115,15 +96,10 @@ #define D_INITIALIZED "Geinitialiseerd" #define D_IP_ADDRESS "IP Adres" #define D_LIGHT "Licht" -#define D_LIMIT "Grenswaarde" -#define D_LOCAL_TIME "Plaatselijk" #define D_LWT "LWT" -#define D_MAC "Mac" -#define D_MASK "Masker" #define D_MODULE "Module" #define D_MQTT "MQTT" #define D_MULTI_PRESS "meervoudig" -#define D_NO "Nee" #define D_NOISE "Lawaai" #define D_NONE "Geen" #define D_OFF "Uit" @@ -138,41 +114,26 @@ #define D_PRESSURE "Luchtdruk" #define D_PRESSUREATSEALEVEL "ZeeLuchtdruk" #define D_PROGRAM_FLASH_SIZE "Programma Flash Grootte" -#define D_PROGRAMFLASHSIZE "ProgrammaFlashGrootte" #define D_PROGRAM_SIZE "Programma Grootte" -#define D_PROGRAMSIZE "ProgrammaGrootte" #define D_PROJECT "Project" #define D_RECEIVED "Ontvangen" #define D_RESTART "Herstart" #define D_RESTARTING "Herstarten" #define D_RESTART_REASON "Reden herstart" -#define D_RESTARTREASON "RedenHerstart" #define D_RESTORE "herstellen" #define D_RETAINED "retained" #define D_SAVE "Opslaan" -#define D_SAVEADDRESS "OpslagAdres" -#define D_SAVECOUNT "AantalOpslagen" -#define D_SAVESTATE "OpslagToestand" -#define D_SDKVERSION "SDK" -#define D_SELECTED "gekozen" #define D_SENSOR "Sensor" #define D_SERIAL "Serieel" -#define D_BYTES "Bytes" #define D_SSID "SSId" #define D_START "Start" -#define D_STARTED "Gestart" -#define D_STARTDST "Zomertijd" // Start Daylight Savings Time #define D_STD_TIME "WT" #define D_STOP "Stop" #define D_SUBNET_MASK "Subnet Masker" -#define D_SUBNETMASK "Subnetmasker" #define D_SUBSCRIBE_TO "Abonneer op" #define D_SUCCESSFUL "Gelukt" -#define D_SWITCH "Schakelaar" #define D_SYS "Sys" // Sys log #define D_TEMPERATURE "Temperatuur" -#define D_TEMPERATURE_UNIT "TempEenheid" -#define D_TIME "Tijd" #define D_TO "naar" #define D_TOGGLE "Toggle" // Wissel, Tuimel #define D_TOPIC "Topic" // Onderwerp @@ -184,13 +145,11 @@ #define D_USER "Gebruiker" #define D_UTC_TIME "UTC" #define D_UV_LEVEL "UV niveau" -#define D_VCC "Vcc" #define D_VERSION "Versie" #define D_VOLTAGE "Spanning" #define D_WARMLIGHT "Warm" #define D_WEB "Web" // Web log #define D_WEB_SERVER "Webserver" -#define D_WIFI "Wifi" // sonoff.ino #define D_LEVEL_10 "niveau 1-0" @@ -227,10 +186,7 @@ #define D_CHECKING_CONNECTION "Controleer verbinding..." #define D_QUERY_DONE "Aanvraag klaar. Aantal MQTT diensten gevonden" #define D_MQTT_SERVICE_FOUND "MQTT dienst gevonden op" -#define D_I2CSCAN_DEVICES_FOUND_AT "Apparaten gevonden op" #define D_FOUND_AT "gevonden op" -#define D_I2CSCAN_UNKNOWN_ERROR_AT "Onbekende fout op" -#define D_I2CSCAN_NO_DEVICES_FOUND "Geen apparaten gevonden" #define D_SYSLOG_HOST_NOT_FOUND "Syslog Host niet gevonden" // settings.ino @@ -392,17 +348,6 @@ #define D_JSON_IRHVAC_TEMP "TEMP" #define D_JSON_IRRECEIVED "IrReceived" -// xdrv_04_snfbridge.ino -#define D_RFRECEIVED "RfReceived" -#define D_START_LEARNING "Start leren" -#define D_SET_TO_DEFAULT "Zet standaard waarden" -#define D_DEFAULT_SENT "Standaard verzonden" -#define D_LEARNED_SENT "Geleerde verzonden" -#define D_LEARNING_ACTIVE "Leren actief" -#define D_LEARN_FAILED "Leren mislukt" -#define D_LEARNED "Geleerd" -#define D_SAVED "Opgeslagen" - // xdrv_05_domoticz.ino #define D_DOMOTICZ_PARAMETERS "Domoticz parameters" #define D_DOMOTICZ_IDX "Idx" @@ -421,11 +366,6 @@ #define D_DOMOTICZ_UPDATE_TIMER "Bijwerk timer" // xsns_03_energy.ino -#define D_MAXPOWERREACHED "MaxPowerReached" -#define D_MAXPOWERREACHEDRETRY "MaxPowerReachedRetry" -#define D_POWERMONITOR "PowerMonitor" -#define D_ENERGYMONITOR "EnergyMonitor" -#define D_MAXENERGYREACHED "MaxEnergyReached" #define D_ENERGY_TODAY "Verbruik vandaag" #define D_ENERGY_YESTERDAY "Verbruik gisteren" #define D_ENERGY_TOTAL "Verbruik totaal" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index a1d115a1d..d349ae06a 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -44,32 +44,24 @@ #define D_DECIMAL_SEPARATOR "," // Common -#define D_ABORTED "Anulowany" -#define D_ACTIVE "Aktywny" #define D_ADMIN "Admin" #define D_AIR_QUALITY "Jakosc powietrza" #define D_AP "AP" // Access Point -#define D_APMAC_ADDRESS "APMac" -#define D_APPENDED "Dolaczony" #define D_AS "jak" #define D_AUTO "AUTO" -#define D_BAUDRATE "Szybkosc transmisji" #define D_BLINK "Miganie" #define D_BLINKOFF "MiganieWyl" -#define D_BOOTVERSION "Uruchomienie" #define D_BOOT_COUNT "Licznik uruchomienia" -#define D_BOOTCOUNT "LiczUruchomienia" #define D_BRIGHTLIGHT "Jasny" -#define D_BUILDDATETIME "ZbudowanoDataCzas" #define D_BUTTON "Przycisk" #define D_BY "by" // Written by me +#define D_BYTES "Bajtow" #define D_CELSIUS "Celsiusza" #define D_CO2 "Dwutlenku węgla" #define D_CODE "kod" // Button code #define D_COLDLIGHT "Zimny" #define D_COMMAND "Komenda" #define D_CONNECTED "Polaczony" -#define D_COREVERSION "Wersja" #define D_COUNT "Licz" #define D_COUNTER "Licznik" #define D_CURRENT "Biezacy" // As in Voltage and Current @@ -78,36 +70,25 @@ #define D_DEBUG "Debug" #define D_DISABLED "Zablokowany" #define D_DNS_SERVER "Server DNS" -#define D_DNSSERVER "ServerDNS" #define D_DONE "Wykonane" #define D_DST_TIME "DST" -#define D_EMPTY "Pusty" #define D_EMULATION "Emulacja" #define D_ENABLED "Otwarty" -#define D_ENDDST "KoniecDST" // End Daylight Savings Time #define D_ERASE "Nadpisz" #define D_ERROR "Blad" -#define D_EVERY "Kazdy" #define D_FAHRENHEIT "Fahrenheita" #define D_FAILED "Bledny" #define D_FALLBACK "Awaryjny" #define D_FALLBACK_TOPIC "Zastepczy temat" -#define D_FALLBACKTOPIC "ZastepczyTemat" #define D_FALSE "Falsz" #define D_FILE "Plik" -#define D_FLASHMODE "FlashMode" -#define D_FLASHSIZE "FlashWielkosc" #define D_FREE_MEMORY "Wolna pamiec" -#define D_FREEMEMORY "Wolne" -#define D_FROM "z" #define D_GAS "Gas" #define D_GATEWAY "Brama" #define D_GROUP "Grupa" -#define D_HEAPSIZE "Stos" #define D_HOST "Serwer" #define D_HOSTNAME "Nazwa serwera" #define D_HUMIDITY "Wilgotnosc" -#define D_ID "ID" #define D_ILLUMINANCE "Oswietlenie" #define D_IMMEDIATE "Natychmiastowe" // Button immediate #define D_INDEX "Indeks" @@ -115,15 +96,10 @@ #define D_INITIALIZED "Zainicjowany" #define D_IP_ADDRESS "Adres IP" #define D_LIGHT "Swiatlo" -#define D_LIMIT "Wartość graniczna" -#define D_LOCAL_TIME "Lokalny" #define D_LWT "LWT" -#define D_MAC "Mac" -#define D_MASK "Maska" #define D_MODULE "Modul" #define D_MQTT "MQTT" #define D_MULTI_PRESS "wielokrotne-nacisniecie" -#define D_NO "Nie" #define D_NOISE "Halas" #define D_NONE "Brak" #define D_OFF "Wylaczony" @@ -138,41 +114,26 @@ #define D_PRESSURE "Cisnienie" #define D_PRESSUREATSEALEVEL "Cisnienie na poziomie morza" #define D_PROGRAM_FLASH_SIZE "Wielkosc programu flash" -#define D_PROGRAMFLASHSIZE "ProgramFlashSize" #define D_PROGRAM_SIZE "Wielkosc programu" -#define D_PROGRAMSIZE "ProgramSize" #define D_PROJECT "Projekt" #define D_RECEIVED "Otrzymany" #define D_RESTART "Restart" #define D_RESTARTING "Restartowanie" #define D_RESTART_REASON "Przyczyna restartu" -#define D_RESTARTREASON "PrzyczynaRestartu" #define D_RESTORE "Przywracanie" #define D_RETAINED "Zachowane" #define D_SAVE "Zapisz" -#define D_SAVEADDRESS "AdresZapisu" -#define D_SAVECOUNT "LicznikZapisu" -#define D_SAVESTATE "StanZapisu" -#define D_SDKVERSION "SDK" -#define D_SELECTED "Wybrany" #define D_SENSOR "Czujnik" #define D_SERIAL "Serial" -#define D_BYTES "Bajtow" #define D_SSID "SSID" #define D_START "Start" -#define D_STARTED "Uruchomiony" -#define D_STARTDST "StartDST" // Start Daylight Savings Time #define D_STD_TIME "STD" #define D_STOP "Stop" #define D_SUBNET_MASK "Maska podsieci" -#define D_SUBNETMASK "MaskaPodsieci" #define D_SUBSCRIBE_TO "Subskrybuj do" #define D_SUCCESSFUL "Powodzenie" -#define D_SWITCH "Przelacznik" #define D_SYS "System " // Sys log #define D_TEMPERATURE "Temperatura" -#define D_TEMPERATURE_UNIT "JednTemp" -#define D_TIME "Czas" #define D_TO "do" #define D_TOGGLE "Przelacz" #define D_TOPIC "Temat" @@ -184,13 +145,11 @@ #define D_USER "Uzytkownik" #define D_UTC_TIME "UTC" #define D_UV_LEVEL "Poziom UV" -#define D_VCC "VCC" #define D_VERSION "Wersja" #define D_VOLTAGE "Napiecie" #define D_WARMLIGHT "Nagrzanie" #define D_WEB "Web" // Web log #define D_WEB_SERVER "Web Server" -#define D_WIFI "Wifi" // sonoff.ino #define D_LEVEL_10 "poziom 1-0" @@ -227,10 +186,7 @@ #define D_CHECKING_CONNECTION "Sprawdzanie polaczenia..." #define D_QUERY_DONE "Wykonano zapytanie. Znaleziono uslugi MQTT" #define D_MQTT_SERVICE_FOUND "Usluga MQTT została znaleziona" -#define D_I2CSCAN_DEVICES_FOUND_AT "Znaleziono urządzenie(a) na" #define D_FOUND_AT "znalezione w" -#define D_I2CSCAN_UNKNOWN_ERROR_AT "Nieznany blad w" -#define D_I2CSCAN_NO_DEVICES_FOUND "Nie znaleziono urzadzen" #define D_SYSLOG_HOST_NOT_FOUND "Syslog Host nie znaleziony" // settings.ino @@ -392,17 +348,6 @@ #define D_JSON_IRHVAC_TEMP "TEMP" #define D_JSON_IRRECEIVED "IrReceived" -// xdrv_04_snfbridge.ino -#define D_RFRECEIVED "RfReceived" -#define D_START_LEARNING "Zacznij nauke" -#define D_SET_TO_DEFAULT "Ustaw domyslne" -#define D_DEFAULT_SENT "Domyslne wyslane" -#define D_LEARNED_SENT "Wyuczone wyslane" -#define D_LEARNING_ACTIVE "Wyuczone aktywne" -#define D_LEARN_FAILED "Uczenie niepowodzenie" -#define D_LEARNED "Wyuczone" -#define D_SAVED "Zapisane" - // xdrv_05_domoticz.ino #define D_DOMOTICZ_PARAMETERS "Parametry Domoticz" #define D_DOMOTICZ_IDX "Idx" @@ -421,11 +366,6 @@ #define D_DOMOTICZ_UPDATE_TIMER "Zaktualizuj czasomierz" // xsns_03_energy.ino -#define D_MAXPOWERREACHED "MaksMocOsiagnieta" -#define D_MAXPOWERREACHEDRETRY "MaksMocOsiagnietaPonowienie" -#define D_POWERMONITOR "MonitorMocy" -#define D_ENERGYMONITOR "MonitorEnergii" -#define D_MAXENERGYREACHED "MaksEnergiaOsiagnieta" #define D_ENERGY_TODAY "Energia Dzisiaj" #define D_ENERGY_YESTERDAY "Energia Wczoraj" #define D_ENERGY_TOTAL "Energia suma" diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index ea521309e..88c2f7be9 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -25,8 +25,8 @@ - Select IDE Tools - Flash Size: "1M (no SPIFFS)" ====================================================*/ -#define VERSION 0x050A0009 -#define VERSION_STRING "5.10.0i" // Would be great to have a macro that fills this from VERSION ... +#define VERSION 0x050A000A +#define VERSION_STRING "5.10.0j" // Would be great to have a macro that fills this from VERSION ... // Location specific includes #include "sonoff.h" // Enumaration used in user_config.h @@ -436,7 +436,7 @@ void MqttPublishPowerBlinkState(byte device) if ((device < 1) || (device > devices_present)) { device = 1; } - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":\"" D_BLINK " %s\"}"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"%s\":\"" D_JSON_BLINK " %s\"}"), GetPowerDevice(scommand, device, sizeof(scommand)), GetStateText(bitRead(blink_mask, device -1))); MqttPublishPrefixTopic_P(5, S_RSLT_POWER); @@ -467,17 +467,17 @@ void MqttConnected() } if (mqtt_connection_flag) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_MODULE "\":\"%s\",\"" D_VERSION "\":\"" VERSION_STRING "\",\"" D_FALLBACKTOPIC "\":\"%s\",\"" D_CMND_GROUPTOPIC "\":\"%s\"}"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_MODULE "\":\"%s\",\"" D_JSON_VERSION "\":\"" VERSION_STRING "\",\"" D_JSON_FALLBACKTOPIC "\":\"%s\",\"" D_CMND_GROUPTOPIC "\":\"%s\"}"), my_module.name, mqtt_client, Settings.mqtt_grptopic); MqttPublishPrefixTopic_P(2, PSTR(D_RSLT_INFO "1")); #ifdef USE_WEBSERVER if (Settings.webserver) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_WEBSERVER_MODE "\":\"%s\",\"" D_CMND_HOSTNAME "\":\"%s\",\"" D_CMND_IPADDRESS "\":\"%s\"}"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_WEBSERVER_MODE "\":\"%s\",\"" D_CMND_HOSTNAME "\":\"%s\",\"" D_CMND_IPADDRESS "\":\"%s\"}"), (2 == Settings.webserver) ? D_ADMIN : D_USER, my_hostname, WiFi.localIP().toString().c_str()); MqttPublishPrefixTopic_P(2, PSTR(D_RSLT_INFO "2")); } #endif // USE_WEBSERVER - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_RESTARTREASON "\":\"%s\"}"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_RESTARTREASON "\":\"%s\"}"), (GetResetReason() == "Exception") ? ESP.getResetInfo().c_str() : GetResetReason().c_str()); MqttPublishPrefixTopic_P(2, PSTR(D_RSLT_INFO "3")); if (Settings.tele_period) { @@ -531,7 +531,6 @@ void MqttReconnect() #ifndef USE_MQTT_TLS #ifdef USE_DISCOVERY #ifdef MQTT_HOST_DISCOVERY -// if (!strlen(MQTT_HOST)) { if (!strlen(Settings.mqtt_host)) { MdnsDiscoverMqttServer(); } @@ -838,7 +837,7 @@ void MqttDataCallback(char* topic, byte* data, unsigned int data_len) AddLog(LOG_LEVEL_DEBUG); if (type != NULL) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_COMMAND "\":\"" D_ERROR "\"}")); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_COMMAND "\":\"" D_JSON_ERROR "\"}")); if (Settings.ledstate &0x02) { blinks++; } @@ -889,11 +888,11 @@ void MqttDataCallback(char* topic, byte* data, unsigned int data_len) backlog_index &= 0xF; blcommand = strtok(NULL, ";"); } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_APPENDED); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_APPENDED); } else { uint8_t blflag = (backlog_pointer == backlog_index); backlog_pointer = backlog_index; - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, blflag ? D_EMPTY : D_ABORTED); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, blflag ? D_JSON_EMPTY : D_JSON_ABORTED); } } else if (CMND_DELAY == command_code) { @@ -960,9 +959,6 @@ void MqttDataCallback(char* topic, byte* data, unsigned int data_len) } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_NVALUE, command, Settings.blinkcount); } -// else if (light_type && LightCommand(type, index, dataBuf, data_len, payload)) { - // Serviced -// } else if (CMND_SAVEDATA == command_code) { if ((payload >= 0) && (payload <= 3600)) { Settings.save_data = payload; @@ -970,7 +966,7 @@ void MqttDataCallback(char* topic, byte* data, unsigned int data_len) } SettingsSaveAll(); if (Settings.save_data > 1) { - snprintf_P(stemp1, sizeof(stemp1), PSTR(D_EVERY " %d " D_UNIT_SECOND), Settings.save_data); + snprintf_P(stemp1, sizeof(stemp1), PSTR(D_JSON_EVERY " %d " D_UNIT_SECOND), Settings.save_data); } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, (Settings.save_data > 1) ? stemp1 : GetStateText(Settings.save_data)); } @@ -1132,7 +1128,7 @@ void MqttDataCallback(char* topic, byte* data, unsigned int data_len) if (jsflg) { snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data); } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_NOT_SUPPORTED); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_NOT_SUPPORTED); } } else if (CMND_GPIOS == command_code) { @@ -1226,9 +1222,9 @@ void MqttDataCallback(char* topic, byte* data, unsigned int data_len) // We also need at least 3 chars to make a valid version number string. if (((1 == data_len) && (1 == payload)) || ((data_len >= 3) && NewerVersion(dataBuf))) { ota_state_flag = 3; - snprintf_P(mqtt_data, sizeof(mqtt_data), "{\"%s\":\"" D_VERSION " " VERSION_STRING " " D_FROM " %s\"}", command, Settings.ota_url); + snprintf_P(mqtt_data, sizeof(mqtt_data), "{\"%s\":\"" D_JSON_VERSION " " VERSION_STRING " " D_JSON_FROM " %s\"}", command, Settings.ota_url); } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), "{\"%s\":\"" D_ONE_OR_GT "\"}", command, VERSION_STRING); + snprintf_P(mqtt_data, sizeof(mqtt_data), "{\"%s\":\"" D_JSON_ONE_OR_GT "\"}", command, VERSION_STRING); } } else if (CMND_OTAURL == command_code) { @@ -1329,7 +1325,7 @@ void MqttDataCallback(char* topic, byte* data, unsigned int data_len) Settings.sta_config = payload; wifi_state_flag = Settings.sta_config; snprintf_P(stemp1, sizeof(stemp1), kWifiConfig[Settings.sta_config]); - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_WIFICONFIG "\":\"%s " D_SELECTED "\"}"), stemp1); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_WIFICONFIG "\":\"%s " D_JSON_SELECTED "\"}"), stemp1); if (WifiState() != WIFI_RESTART) { // snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s after restart"), mqtt_data); restart_flag = 2; @@ -1362,7 +1358,7 @@ void MqttDataCallback(char* topic, byte* data, unsigned int data_len) Settings.webserver = payload; } if (Settings.webserver) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_WEBSERVER "\":\"" D_ACTIVE_FOR " %s " D_ON_DEVICE " %s " D_WITH_IP_ADDRESS " %s\"}"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_WEBSERVER "\":\"" D_JSON_ACTIVE_FOR " %s " D_JSON_ON_DEVICE " %s " D_JSON_WITH_IP_ADDRESS " %s\"}"), (2 == Settings.webserver) ? D_ADMIN : D_USER, my_hostname, WiFi.localIP().toString().c_str()); } else { snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, GetStateText(0)); @@ -1404,28 +1400,28 @@ void MqttDataCallback(char* topic, byte* data, unsigned int data_len) switch (payload) { case 1: restart_flag = 2; - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_RESTARTING); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_RESTARTING); break; case 99: AddLog_P(LOG_LEVEL_INFO, PSTR(D_LOG_APPLICATION D_RESTARTING)); ESP.restart(); break; default: - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_ONE_TO_RESTART); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_ONE_TO_RESTART); } } else if (CMND_RESET == command_code) { switch (payload) { case 1: restart_flag = 211; - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command , D_RESET_AND_RESTARTING); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command , D_JSON_RESET_AND_RESTARTING); break; case 2: restart_flag = 212; - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_RESET "\":\"" D_ERASE ", " D_RESET_AND_RESTARTING "\"}")); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_RESET "\":\"" D_JSON_ERASE ", " D_JSON_RESET_AND_RESTARTING "\"}")); break; default: - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_ONE_TO_RESET); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_ONE_TO_RESET); } } else if (CMND_TIMEZONE == command_code) { @@ -1504,8 +1500,8 @@ void MqttDataCallback(char* topic, byte* data, unsigned int data_len) } if (type == NULL) { blinks = 201; - snprintf_P(topicBuf, sizeof(topicBuf), PSTR(D_COMMAND)); - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_COMMAND "\":\"" D_JSON_UNKNOWN "\"}")); + snprintf_P(topicBuf, sizeof(topicBuf), PSTR(D_JSON_COMMAND)); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_COMMAND "\":\"" D_JSON_UNKNOWN "\"}")); type = (char*)topicBuf; } if (mqtt_data[0] != '\0') { @@ -1691,20 +1687,20 @@ void PublishStatus(uint8_t payload) } if ((0 == payload) || (99 == payload)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS "\":{\"" D_CMND_MODULE "\":%d,\"" D_CMND_FRIENDLYNAME "\":\"%s\",\"" D_CMND_TOPIC "\":\"%s\",\"" D_CMND_BUTTONTOPIC "\":\"%s\",\"" D_CMND_POWER "\":%d,\"" D_CMND_POWERONSTATE "\":%d,\"" D_CMND_LEDSTATE "\":%d,\"" D_CMND_SAVEDATA "\":%d,\"" D_SAVESTATE "\":%d,\"" D_CMND_BUTTONRETAIN "\":%d,\"" D_CMND_POWERRETAIN "\":%d}}"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS "\":{\"" D_CMND_MODULE "\":%d,\"" D_CMND_FRIENDLYNAME "\":\"%s\",\"" D_CMND_TOPIC "\":\"%s\",\"" D_CMND_BUTTONTOPIC "\":\"%s\",\"" D_CMND_POWER "\":%d,\"" D_CMND_POWERONSTATE "\":%d,\"" D_CMND_LEDSTATE "\":%d,\"" D_CMND_SAVEDATA "\":%d,\"" D_JSON_SAVESTATE "\":%d,\"" D_CMND_BUTTONRETAIN "\":%d,\"" D_CMND_POWERRETAIN "\":%d}}"), Settings.module +1, Settings.friendlyname[0], Settings.mqtt_topic, Settings.button_topic, power, Settings.poweronstate, Settings.ledstate, Settings.save_data, Settings.flag.save_state, Settings.flag.mqtt_button_retain, Settings.flag.mqtt_power_retain); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS)); } if ((0 == payload) || (1 == payload)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS1_PARAMETER "\":{\"" D_BAUDRATE "\":%d,\"" D_CMND_GROUPTOPIC "\":\"%s\",\"" D_CMND_OTAURL "\":\"%s\",\"" D_UPTIME "\":%d,\"" D_CMND_SLEEP "\":%d,\"" D_BOOTCOUNT "\":%d,\"" D_SAVECOUNT "\":%d,\"" D_SAVEADDRESS "\":\"%X\"}}"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS1_PARAMETER "\":{\"" D_JSON_BAUDRATE "\":%d,\"" D_CMND_GROUPTOPIC "\":\"%s\",\"" D_CMND_OTAURL "\":\"%s\",\"" D_JSON_UPTIME "\":%d,\"" D_CMND_SLEEP "\":%d,\"" D_JSON_BOOTCOUNT "\":%d,\"" D_JSON_SAVECOUNT "\":%d,\"" D_JSON_SAVEADDRESS "\":\"%X\"}}"), baudrate, Settings.mqtt_grptopic, Settings.ota_url, uptime, Settings.sleep, Settings.bootcount, Settings.save_flag, GetSettingsAddress()); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "1")); } if ((0 == payload) || (2 == payload)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS2_FIRMWARE "\":{\"" D_VERSION "\":\"" VERSION_STRING "\",\"" D_BUILDDATETIME "\":\"%s\",\"" D_BOOTVERSION "\":%d,\"" D_COREVERSION "\":\"%s\",\"" D_SDKVERSION "\":\"%s\"}}"), - GetBuildDateAndTime().c_str(), ESP.getBootVersion(), ESP.getCoreVersion().c_str(), ESP.getSdkVersion()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS2_FIRMWARE "\":{\"" D_JSON_VERSION "\":\"" VERSION_STRING "\",\"" D_JSON_BUILDDATETIME "\":\"%s\",\"" D_JSON_BOOTVERSION "\":%d,\"" D_JSON_COREVERSION "\":\"" ARDUINO_ESP8266_RELEASE "\",\"" D_JSON_SDKVERSION "\":\"%s\"}}"), + GetBuildDateAndTime().c_str(), ESP.getBootVersion(), ESP.getSdkVersion()); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "2")); } @@ -1715,26 +1711,26 @@ void PublishStatus(uint8_t payload) } if ((0 == payload) || (4 == payload)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS4_MEMORY "\":{\"" D_PROGRAMSIZE "\":%d,\"" D_FREEMEMORY "\":%d,\"" D_HEAPSIZE "\":%d,\"" D_PROGRAMFLASHSIZE "\":%d,\"" D_FLASHSIZE "\":%d,\"" D_FLASHMODE "\":%d}}"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS4_MEMORY "\":{\"" D_JSON_PROGRAMSIZE "\":%d,\"" D_JSON_FREEMEMORY "\":%d,\"" D_JSON_HEAPSIZE "\":%d,\"" D_JSON_PROGRAMFLASHSIZE "\":%d,\"" D_JSON_FLASHSIZE "\":%d,\"" D_JSON_FLASHMODE "\":%d}}"), ESP.getSketchSize()/1024, ESP.getFreeSketchSpace()/1024, ESP.getFreeHeap()/1024, ESP.getFlashChipSize()/1024, ESP.getFlashChipRealSize()/1024, ESP.getFlashChipMode()); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "4")); } if ((0 == payload) || (5 == payload)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS5_NETWORK "\":{\"" D_CMND_HOSTNAME "\":\"%s\",\"" D_CMND_IPADDRESS "\":\"%s\",\"" D_GATEWAY "\":\"%s\",\"" D_SUBNETMASK "\":\"%s\",\"" D_DNSSERVER "\":\"%s\",\"" D_MAC "\":\"%s\",\"" D_CMND_WEBSERVER "\":%d,\"" D_CMND_WIFICONFIG "\":%d}}"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS5_NETWORK "\":{\"" D_CMND_HOSTNAME "\":\"%s\",\"" D_CMND_IPADDRESS "\":\"%s\",\"" D_JSON_GATEWAY "\":\"%s\",\"" D_JSON_SUBNETMASK "\":\"%s\",\"" D_JSON_DNSSERVER "\":\"%s\",\"" D_JSON_MAC "\":\"%s\",\"" D_CMND_WEBSERVER "\":%d,\"" D_CMND_WIFICONFIG "\":%d}}"), my_hostname, WiFi.localIP().toString().c_str(), IPAddress(Settings.ip_address[1]).toString().c_str(), IPAddress(Settings.ip_address[2]).toString().c_str(), IPAddress(Settings.ip_address[3]).toString().c_str(), WiFi.macAddress().c_str(), Settings.webserver, Settings.sta_config); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "5")); } if (((0 == payload) || (6 == payload)) && Settings.flag.mqtt_enabled) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS6_MQTT "\":{\"" D_CMND_MQTTHOST "\":\"%s\",\"" D_CMND_MQTTPORT "\":%d,\"" D_CMND_MQTTCLIENT D_MASK "\":\"%s\",\"" D_CMND_MQTTCLIENT "\":\"%s\",\"" D_CMND_MQTTUSER "\":\"%s\",\"MAX_PACKET_SIZE\":%d,\"KEEPALIVE\":%d}}"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS6_MQTT "\":{\"" D_CMND_MQTTHOST "\":\"%s\",\"" D_CMND_MQTTPORT "\":%d,\"" D_CMND_MQTTCLIENT D_JSON_MASK "\":\"%s\",\"" D_CMND_MQTTCLIENT "\":\"%s\",\"" D_CMND_MQTTUSER "\":\"%s\",\"MAX_PACKET_SIZE\":%d,\"KEEPALIVE\":%d}}"), Settings.mqtt_host, Settings.mqtt_port, Settings.mqtt_client, mqtt_client, Settings.mqtt_user, MQTT_MAX_PACKET_SIZE, MQTT_KEEPALIVE); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "6")); } if ((0 == payload) || (7 == payload)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS7_TIME "\":{\"" D_UTC_TIME "\":\"%s\",\"" D_LOCAL_TIME "\":\"%s\",\"" D_STARTDST "\":\"%s\",\"" D_ENDDST "\":\"%s\",\"" D_CMND_TIMEZONE "\":%d}}"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS7_TIME "\":{\"" D_JSON_UTC_TIME "\":\"%s\",\"" D_JSON_LOCAL_TIME "\":\"%s\",\"" D_JSON_STARTDST "\":\"%s\",\"" D_JSON_ENDDST "\":\"%s\",\"" D_CMND_TIMEZONE "\":%d}}"), GetTime(0).c_str(), GetTime(1).c_str(), GetTime(2).c_str(), GetTime(3).c_str(), Settings.timezone); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "7")); } @@ -1771,32 +1767,32 @@ void MqttShowState() { char stemp1[16]; - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_TIME "\":\"%s\",\"" D_UPTIME "\":%d"), mqtt_data, GetDateAndTime().c_str(), uptime); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":%d"), mqtt_data, GetDateAndTime().c_str(), uptime); #ifdef USE_ADC_VCC dtostrfd((double)ESP.getVcc()/1000, 3, stemp1); - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_VCC "\":%s"), mqtt_data, stemp1); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_VCC "\":%s"), mqtt_data, stemp1); #endif for (byte i = 0; i < devices_present; i++) { snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":\"%s\""), mqtt_data, GetPowerDevice(stemp1, i +1, sizeof(stemp1)), GetStateText(bitRead(power, i))); } - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_WIFI "\":{\"" D_AP "\":%d,\"" D_SSID "\":\"%s\",\"" D_RSSI "\":%d,\"" D_APMAC_ADDRESS "\":\"%s\"}}"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_WIFI "\":{\"" D_JSON_AP "\":%d,\"" D_JSON_SSID "\":\"%s\",\"" D_JSON_RSSI "\":%d,\"" D_JSON_APMAC_ADDRESS "\":\"%s\"}}"), mqtt_data, Settings.sta_active +1, Settings.sta_ssid[Settings.sta_active], WifiGetRssiAsQuality(WiFi.RSSI()), WiFi.BSSIDstr().c_str()); } boolean MqttShowSensor() { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_TIME "\":\"%s\""), mqtt_data, GetDateAndTime().c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_JSON_TIME "\":\"%s\""), mqtt_data, GetDateAndTime().c_str()); int json_data_start = strlen(mqtt_data); for (byte i = 0; i < MAX_SWITCHES; i++) { if (pin[GPIO_SWT1 +i] < 99) { boolean swm = ((FOLLOW_INV == Settings.switchmode[i]) || (PUSHBUTTON_INV == Settings.switchmode[i]) || (PUSHBUTTONHOLD_INV == Settings.switchmode[i])); - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_SWITCH "%d\":\"%s\""), mqtt_data, i +1, GetStateText(swm ^ lastwallswitch[i])); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_SWITCH "%d\":\"%s\""), mqtt_data, i +1, GetStateText(swm ^ lastwallswitch[i])); } } XsnsCall(FUNC_JSON_APPEND); boolean json_data_available = (strlen(mqtt_data) - json_data_start); if (strstr_P(mqtt_data, PSTR(D_TEMPERATURE))) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_TEMPERATURE_UNIT "\":\"%c\""), mqtt_data, TempUnit()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"" D_JSON_TEMPERATURE_UNIT "\":\"%c\""), mqtt_data, TempUnit()); } snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s}"), mqtt_data); @@ -1875,7 +1871,7 @@ void PerformEverySecond() if ((2 == RtcTime.minute) && latest_uptime_flag) { latest_uptime_flag = false; uptime++; - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_TIME "\":\"%s\",\"" D_UPTIME "\":%d}"), GetDateAndTime().c_str(), uptime); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":%d}"), GetDateAndTime().c_str(), uptime); MqttPublishPrefixTopic_P(2, PSTR(D_RSLT_UPTIME)); } if ((3 == RtcTime.minute) && !latest_uptime_flag) { @@ -2257,9 +2253,9 @@ void StateLoop() ota_state_flag = 0; if (ota_result) { SetFlashModeDout(); // Force DOUT for both ESP8266 and ESP8285 - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR(D_SUCCESSFUL ". " D_RESTARTING)); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR(D_JSON_SUCCESSFUL ". " D_JSON_RESTARTING)); } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR(D_FAILED " %s"), ESPhttpUpdate.getLastErrorString().c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR(D_JSON_FAILED " %s"), ESPhttpUpdate.getLastErrorString().c_str()); } restart_flag = 2; // Restart anyway to keep memory clean webserver MqttPublishPrefixTopic_P(1, PSTR(D_CMND_UPGRADE)); diff --git a/sonoff/sonoff_post.h b/sonoff/sonoff_post.h index 56e696573..1ab165587 100644 --- a/sonoff/sonoff_post.h +++ b/sonoff/sonoff_post.h @@ -103,5 +103,9 @@ void WifiWpsStatusCallback(wps_cb_status status); #define MESSZ 405 // Max number of characters in JSON message string (6 x DS18x20 sensors) #endif +#include // Arduino_Esp8266 version information (ARDUINO_ESP8266_RELEASE and ARDUINO_ESP8266_RELEASE_2_3_0) +#ifndef ARDUINO_ESP8266_RELEASE +#define ARDUINO_ESP8266_RELEASE "STAGED" +#endif #endif // _SONOFF_POST_H_ \ No newline at end of file diff --git a/sonoff/support.ino b/sonoff/support.ino index 1cbe12cd0..a03efa378 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -71,7 +71,7 @@ String GetResetReason() { char buff[32]; if (oswatch_blocked_loop) { - strncpy_P(buff, PSTR(D_BLOCKED_LOOP), sizeof(buff)); + strncpy_P(buff, PSTR(D_JSON_BLOCKED_LOOP), sizeof(buff)); return String(buff); } else { return ESP.getResetReason(); @@ -461,10 +461,12 @@ void WifiBegin(uint8_t flag) #ifdef USE_EMULATION UdpDisconnect(); #endif // USE_EMULATION - if (!strncmp_P(ESP.getSdkVersion(),PSTR("1.5.3"),5)) { - AddLog_P(LOG_LEVEL_DEBUG, S_LOG_WIFI, PSTR(D_PATCH_ISSUE_2186)); - WiFi.mode(WIFI_OFF); // See https://github.com/esp8266/Arduino/issues/2186 - } + +#ifdef ARDUINO_ESP8266_RELEASE_2_3_0 // (!strncmp_P(ESP.getSdkVersion(),PSTR("1.5.3"),5)) + AddLog_P(LOG_LEVEL_DEBUG, S_LOG_WIFI, PSTR(D_PATCH_ISSUE_2186)); + WiFi.mode(WIFI_OFF); // See https://github.com/esp8266/Arduino/issues/2186 +#endif + WiFi.disconnect(); WiFi.mode(WIFI_STA); // Disable AP mode if (Settings.sleep) { @@ -840,7 +842,7 @@ void I2cScan(char *devs, unsigned int devs_len) byte any = 0; char tstr[10]; - snprintf_P(devs, devs_len, PSTR("{\"" D_CMND_I2CSCAN "\":\"" D_I2CSCAN_DEVICES_FOUND_AT)); + snprintf_P(devs, devs_len, PSTR("{\"" D_CMND_I2CSCAN "\":\"" D_JSON_I2CSCAN_DEVICES_FOUND_AT)); for (address = 1; address <= 127; address++) { Wire.beginTransmission(address); error = Wire.endTransmission(); @@ -850,13 +852,13 @@ void I2cScan(char *devs, unsigned int devs_len) any = 1; } else if (4 == error) { - snprintf_P(devs, devs_len, PSTR("{\"" D_CMND_I2CSCAN "\":\"" D_I2CSCAN_UNKNOWN_ERROR_AT " 0x%2x\"}"), address); + snprintf_P(devs, devs_len, PSTR("{\"" D_CMND_I2CSCAN "\":\"" D_JSON_I2CSCAN_UNKNOWN_ERROR_AT " 0x%2x\"}"), address); } } if (any) { strncat(devs, "\"}", devs_len); } else { - snprintf_P(devs, devs_len, PSTR("{\"" D_CMND_I2CSCAN "\":\"" D_I2CSCAN_NO_DEVICES_FOUND "\"}")); + snprintf_P(devs, devs_len, PSTR("{\"" D_CMND_I2CSCAN "\":\"" D_JSON_I2CSCAN_NO_DEVICES_FOUND "\"}")); } } diff --git a/sonoff/user_config.h b/sonoff/user_config.h index e86666752..103baa65e 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -184,7 +184,7 @@ // #define USE_ADS1115 // Add I2C code for ADS1115 16 bit A/D converter based on Adafruit ADS1x15 library (no library needed) (+0k7 code) // #define USE_ADS1115_I2CDEV // Add I2C code for ADS1115 16 bit A/D converter using library i2cdevlib-Core and i2cdevlib-ADS1115 (+2k code) // #define USE_INA219 // Add I2C code for INA219 Low voltage and current sensor (+1k code) -// #define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices +// #define USE_DISPLAY // Add I2C Display Support for LCD, Oled and up to eigth Matrices (+19k code) #define MTX_ADDRESS1 0x71 // [DisplayAddress[1]] I2C address of first 8x8 matrix module #define MTX_ADDRESS2 0x74 // [DisplayAddress[2]] I2C address of second 8x8 matrix module #define MTX_ADDRESS3 0x75 // [DisplayAddress[3]] I2C address of third 8x8 matrix module @@ -195,7 +195,7 @@ #define MTX_ADDRESS8 0x00 // [DisplayAddress[8]] I2C address of eigth 8x8 matrix module #endif // USE_I2C -//#define USE_SPI // SPI using library theo_TFT +//#define USE_SPI // SPI using library TasmotaTFT #ifdef USE_SPI #ifndef USE_DISPLAY #define USE_DISPLAY // Add SPI Display support for 320x240 and 480x320 TFT diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index c14f1a1e7..1b13e8690 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -1481,7 +1481,7 @@ void HandleInformation() func += F(" #if defined(USE_MHZ19) || defined(USE_SENSEAIR) -const char HTTP_SNS_CO2[] PROGMEM = "%s{s}%s " D_CO2 "{m}%d " D_UNIT_PPM "{e}"; // {s} = +const char HTTP_SNS_CO2[] PROGMEM = "%s{s}%s " D_CO2 "{m}%d " D_UNIT_PARTS_PER_MILLION "{e}"; // {s} = #endif // USE_WEBSERVER const char S_MAIN_MENU[] PROGMEM = D_MAIN_MENU; diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 9165dd8d7..244a036b4 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -149,6 +149,7 @@ #define D_WEB_SERVER "Web-Server" // sonoff.ino +#define D_WARNING_MINIMAL_VERSION "WARNING This version does not support persistent settings" #define D_LEVEL_10 "level 1-0" #define D_LEVEL_01 "level 0-1" #define D_SERIAL_LOGGING_DISABLED "Serielles logging deaktiviert" @@ -385,6 +386,11 @@ #define D_SENSOR_DID_NOT_ACK_COMMAND "Sensor hat ACK-Befehl nicht ausgeführt" #define D_SHT1X_FOUND "SHT1X gefunden" +// xsns_18_pms5003.ino +#define D_STANDARD_CONCENTRATION "Standard Concentration" +#define D_ENVIRONMENTAL_CONCENTRATION "Environmental Concentration" +#define D_PARTICALS_BEYOND "Particals beyond" + // sonoff_template.h // Max string length is 8 characters including suffixes #define D_SENSOR_NONE "None" @@ -420,11 +426,14 @@ #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" +#define D_UNIT_MICROGRAM_PER_CUBIC_METER "ug/m3" +#define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "µs" #define D_UNIT_MILLIAMPERE "mA" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "min" -#define D_UNIT_PPM "ppm" +#define D_UNIT_PARTS_PER_DECILITER "ppd" +#define D_UNIT_PARTS_PER_MILLION "ppm" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sek" #define D_UNIT_SECTORS "Sektoren" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index feb3b5bdf..c8ef6f223 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -149,6 +149,7 @@ #define D_WEB_SERVER "Web Server" // sonoff.ino +#define D_WARNING_MINIMAL_VERSION "WARNING This version does not support persistent settings" #define D_LEVEL_10 "level 1-0" #define D_LEVEL_01 "level 0-1" #define D_SERIAL_LOGGING_DISABLED "Serial logging disabled" @@ -385,6 +386,11 @@ #define D_SENSOR_DID_NOT_ACK_COMMAND "Sensor did not ACK command" #define D_SHT1X_FOUND "SHT1X found" +// xsns_18_pms5003.ino +#define D_STANDARD_CONCENTRATION "Standard Concentration" +#define D_ENVIRONMENTAL_CONCENTRATION "Environmental Concentration" +#define D_PARTICALS_BEYOND "Particals beyond" + // sonoff_template.h // Max string length is 8 characters including suffixes #define D_SENSOR_NONE "None" @@ -420,11 +426,14 @@ #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" +#define D_UNIT_MICROGRAM_PER_CUBIC_METER "ug/m3" +#define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" -#define D_UNIT_PPM "ppm" +#define D_UNIT_PARTS_PER_DECILITER "ppd" +#define D_UNIT_PARTS_PER_MILLION "ppm" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" #define D_UNIT_SECTORS "sectors" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 942ba81ff..34b9132f0 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -149,6 +149,7 @@ #define D_WEB_SERVER "Web Server" // sonoff.ino +#define D_WARNING_MINIMAL_VERSION "WARNING This version does not support persistent settings" #define D_LEVEL_10 "level 1-0" #define D_LEVEL_01 "level 0-1" #define D_SERIAL_LOGGING_DISABLED "Log seriale disabilitato" @@ -385,6 +386,11 @@ #define D_SENSOR_DID_NOT_ACK_COMMAND "Sensore non ha eseguito il comando ACK" #define D_SHT1X_FOUND "SHT1X trovato" +// xsns_18_pms5003.ino +#define D_STANDARD_CONCENTRATION "Standard Concentration" +#define D_ENVIRONMENTAL_CONCENTRATION "Environmental Concentration" +#define D_PARTICALS_BEYOND "Particals beyond" + // sonoff_template.h // Max string length is 8 characters including suffixes #define D_SENSOR_NONE "None" @@ -420,11 +426,14 @@ #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" +#define D_UNIT_MICROGRAM_PER_CUBIC_METER "ug/m3" +#define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" -#define D_UNIT_PPM "ppm" +#define D_UNIT_PARTS_PER_DECILITER "ppd" +#define D_UNIT_PARTS_PER_MILLION "ppm" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" #define D_UNIT_SECTORS "settori" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index ad2feece8..9850c8b0e 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -149,6 +149,7 @@ #define D_WEB_SERVER "Webserver" // sonoff.ino +#define D_WARNING_MINIMAL_VERSION "WAARSCHUWING Deze versie bewaart geen instellingen" #define D_LEVEL_10 "niveau 1-0" #define D_LEVEL_01 "niveau 0-1" #define D_SERIAL_LOGGING_DISABLED "Serieel logging uitgeschakeld" @@ -385,6 +386,11 @@ #define D_SENSOR_DID_NOT_ACK_COMMAND "Geen opdracht ACK van sensor" #define D_SHT1X_FOUND "SHT1X gevonden" +// xsns_18_pms5003.ino +#define D_STANDARD_CONCENTRATION "Standard Concentration" +#define D_ENVIRONMENTAL_CONCENTRATION "Environmental Concentration" +#define D_PARTICALS_BEYOND "Particals beyond" + // sonoff_template.h // Max string length is 8 characters including suffixes #define D_SENSOR_NONE "Geen" @@ -420,11 +426,14 @@ #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" +#define D_UNIT_MICROGRAM_PER_CUBIC_METER "ug/m3" +#define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" -#define D_UNIT_PPM "ppm" +#define D_UNIT_PARTS_PER_DECILITER "ppd" +#define D_UNIT_PARTS_PER_MILLION "ppm" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" #define D_UNIT_SECTORS "sectoren" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index f3a743cb1..79e2afbe5 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -149,6 +149,7 @@ #define D_WEB_SERVER "Web Server" // sonoff.ino +#define D_WARNING_MINIMAL_VERSION "WARNING This version does not support persistent settings" #define D_LEVEL_10 "poziom 1-0" #define D_LEVEL_01 "poziom 0-1" #define D_SERIAL_LOGGING_DISABLED "Wylaczony dziennik na porcie szeregowym" @@ -385,6 +386,11 @@ #define D_SENSOR_DID_NOT_ACK_COMMAND "Czujnik nie otrzymal komendy ACK" #define D_SHT1X_FOUND "SHT1X znaleziony" +// xsns_18_pms5003.ino +#define D_STANDARD_CONCENTRATION "Standard Concentration" +#define D_ENVIRONMENTAL_CONCENTRATION "Environmental Concentration" +#define D_PARTICALS_BEYOND "Particals beyond" + // sonoff_template.h // Max string length is 8 characters including suffixes #define D_SENSOR_NONE "Brak" @@ -420,11 +426,14 @@ #define D_UNIT_KILOOHM "kOhm" #define D_UNIT_KILOWATTHOUR "kWh" #define D_UNIT_LUX "lx" +#define D_UNIT_MICROGRAM_PER_CUBIC_METER "ug/m3" +#define D_UNIT_MICROMETER "um" #define D_UNIT_MICROSECOND "us" #define D_UNIT_MILLIAMPERE "mA" #define D_UNIT_MILLISECOND "ms" #define D_UNIT_MINUTE "Min" -#define D_UNIT_PPM "ppm" +#define D_UNIT_PARTS_PER_DECILITER "ppd" +#define D_UNIT_PARTS_PER_MILLION "ppm" #define D_UNIT_PRESSURE "hPa" #define D_UNIT_SECOND "sec" #define D_UNIT_SECTORS "sektory" diff --git a/sonoff/language/zh-CN.h b/sonoff/language/zh-CN.h new file mode 100644 index 000000000..c1a5ec75b --- /dev/null +++ b/sonoff/language/zh-CN.h @@ -0,0 +1,469 @@ +/* + zh-CN.h - localization for Chinese (Simplified) - China for Sonoff-Tasmota + + Copyright (C) 2018 Theo Arends (translated by killadm) + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef _LANGUAGE_ZH_CN_H_ +#define _LANGUAGE_ZH_CN_H_ + +/*************************** ATTENTION *******************************\ + * + * Due to memory constraints only UTF-8 is supported. + * To save code space keep text as short as possible. + * Time and Date provided by SDK can not be localized (yet). + * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. + * Use online command Prefix to translate cmnd, stat and tele. + * +\*********************************************************************/ + +// "2017-03-07T11:08:02" - ISO8601:2004 +#define D_YEAR_MONTH_SEPARATOR "-" +#define D_MONTH_DAY_SEPARATOR "-" +#define D_DATE_TIME_SEPARATOR "T" +#define D_HOUR_MINUTE_SEPARATOR ":" +#define D_MINUTE_SECOND_SEPARATOR ":" + +#define D_DAY3LIST "SunMonTueWedThuFriSat" +#define D_MONTH3LIST "JanFebMarAprMayJunJulAugSepOctNovDec" + +// Non JSON decimal separator +#define D_DECIMAL_SEPARATOR "." + +// Common +#define D_ADMIN "Admin" +#define D_AIR_QUALITY "空气质量" +#define D_AP "AP" // Access Point +#define D_AS "名称:" +#define D_AUTO "自动" +#define D_BLINK "闪烁" +#define D_BLINKOFF "闪烁关" +#define D_BOOT_COUNT "启动次数" +#define D_BRIGHTLIGHT "亮度" +#define D_BUTTON "按钮" +#define D_BY "by" // Written by me +#define D_BYTES "大小:" +#define D_CELSIUS "摄氏" +#define D_CO2 "二氧化碳" +#define D_CODE "代码" // Button code +#define D_COLDLIGHT "冷" +#define D_COMMAND "命令:" +#define D_CONNECTED "已连接" +#define D_COUNT "数量:" +#define D_COUNTER "Counter" +#define D_CURRENT "电流" // As in Voltage and Current +#define D_DATA "数据:" +#define D_DARKLIGHT "Dark" +#define D_DEBUG "调试" +#define D_DISABLED "禁用" +#define D_DNS_SERVER "DNS服务器" +#define D_DONE "完成" +#define D_DST_TIME "DST" +#define D_EMULATION "设备模拟" +#define D_ENABLED "启用" +#define D_ERASE "擦除" +#define D_ERROR "错误" +#define D_FAHRENHEIT "华氏" +#define D_FAILED "失败" +#define D_FALLBACK "Fallback" +#define D_FALLBACK_TOPIC "Fallback Topic" +#define D_FALSE "False" +#define D_FILE "文件:" +#define D_FREE_MEMORY "空闲内存" +#define D_GAS "气体" +#define D_GATEWAY "网关" +#define D_GROUP "组:" +#define D_HOST "主机" +#define D_HOSTNAME "主机名" +#define D_HUMIDITY "湿度" +#define D_ILLUMINANCE "照度" +#define D_IMMEDIATE "immediate" // Button immediate +#define D_INDEX "索引:" +#define D_INFO "信息" +#define D_INITIALIZED "初始化完成" +#define D_IP_ADDRESS "IP地址" +#define D_LIGHT "灯" +#define D_LWT "LWT" +#define D_MODULE "模块" +#define D_MQTT "MQTT" +#define D_MULTI_PRESS "多次按键" +#define D_NOISE "嘈杂" +#define D_NONE "无" +#define D_OFF "关" +#define D_OFFLINE "离线" +#define D_OK "好" +#define D_ON "开" +#define D_ONLINE "在线" +#define D_PASSWORD "密码" +#define D_PORT "端口" +#define D_POWER_FACTOR "功率因数" +#define D_POWERUSAGE "功率" +#define D_PRESSURE "气压" +#define D_PRESSUREATSEALEVEL "海平面气压" +#define D_PROGRAM_FLASH_SIZE "固件 Flash 大小" +#define D_PROGRAM_SIZE "固件大小" +#define D_PROJECT "项目:" +#define D_RECEIVED "已接收" +#define D_RESTART "重启" +#define D_RESTARTING "正在重启" +#define D_RESTART_REASON "重启原因" +#define D_RESTORE "恢复" +#define D_RETAINED "已保留" +#define D_SAVE "保存" +#define D_SENSOR "传感器" +#define D_SSID "名称" +#define D_START "开始" +#define D_STD_TIME "STD" +#define D_STOP "停止" +#define D_SUBNET_MASK "子网掩码" +#define D_SUBSCRIBE_TO "订阅" +#define D_SUCCESSFUL "成功" +#define D_TEMPERATURE "温度" +#define D_TO "to" +#define D_TOGGLE "切换" +#define D_TOPIC "主题" +#define D_TRANSMIT "发送" +#define D_TRUE "True" +#define D_UPGRADE "升级" +#define D_UPLOAD "上传" +#define D_UPTIME "运行时间" +#define D_USER "用户名" +#define D_UTC_TIME "UTC" +#define D_UV_LEVEL "紫外线水平" +#define D_VERSION "版本" +#define D_VOLTAGE "电压" +#define D_WARMLIGHT "暖" +#define D_WEB_SERVER "Web Server" + +// sonoff.ino +#define D_WARNING_MINIMAL_VERSION "警告:精简固件不支持配置持久化保存" +#define D_LEVEL_10 "level 1-0" +#define D_LEVEL_01 "level 0-1" +#define D_SERIAL_LOGGING_DISABLED "串口日志已禁用" +#define D_SYSLOG_LOGGING_REENABLED "Syslog 日志已开启" + +#define D_SET_BAUDRATE_TO "设置波特率为:" +#define D_RECEIVED_TOPIC "接收到的主题:" +#define D_DATA_SIZE "数据大小:" +#define D_ANALOG_INPUT "Analog" + +#define D_FINGERPRINT "验证 TLS 指纹..." +#define D_TLS_CONNECT_FAILED_TO "TLS 连接失败" +#define D_RETRY_IN "重试倒计时:" +#define D_VERIFIED "验证成功" +#define D_INSECURE "指纹无效导致连接不安全" +#define D_CONNECT_FAILED_TO "连接失败:" + +// support.ino +#define D_OSWATCH "osWatch" +#define D_BLOCKED_LOOP "Blocked Loop" +#define D_WPS_FAILED_WITH_STATUS "WPSconfig FAILED with status" +#define D_ACTIVE_FOR_3_MINUTES "active for 3 minutes" +#define D_FAILED_TO_START "未能启动" +#define D_PATCH_ISSUE_2186 "Patch issue 2186" +#define D_CONNECTING_TO_AP "连接到 AP" +#define D_IN_MODE "模式:" +#define D_CONNECT_FAILED_NO_IP_ADDRESS "连接失败,因为没有获取到IP地址" +#define D_CONNECT_FAILED_AP_NOT_REACHED "连接失败,无法连接AP" +#define D_CONNECT_FAILED_WRONG_PASSWORD "连接失败,AP密码不正确" +#define D_CONNECT_FAILED_AP_TIMEOUT "连接失败,AP超时" +#define D_ATTEMPTING_CONNECTION "尝试连接..." +#define D_CHECKING_CONNECTION "检查连接..." +#define D_QUERY_DONE "查询完成。 发现MQTT服务" +#define D_MQTT_SERVICE_FOUND "发现MQTT服务:" +#define D_FOUND_AT "found at" +#define D_SYSLOG_HOST_NOT_FOUND "Syslog主机未找到" + +// settings.ino +#define D_SAVED_TO_FLASH_AT "保存到 flash:" +#define D_LOADED_FROM_FLASH_AT "从 flash 载入" +#define D_USE_DEFAULTS "使用默认设置" +#define D_ERASED_SECTOR "擦除删除" + +// webserver.ino +#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "固件版本过低 - 请升级" +#define D_WEBSERVER_ACTIVE_ON "Web服务器:" +#define D_WITH_IP_ADDRESS "IP地址:" +#define D_WEBSERVER_STOPPED "Web 服务器已停止" +#define D_FILE_NOT_FOUND "文件未找到" +#define D_REDIRECTED "重定向到认证页面" +#define D_WIFIMANAGER_SET_ACCESSPOINT_AND_STATION "Wifimanager set AccessPoint and keep Station" +#define D_WIFIMANAGER_SET_ACCESSPOINT "Wifimanager 设置接入点" +#define D_TRYING_TO_CONNECT "尝试将设备连接到网络" + +#define D_RESTART_IN "重启需要" +#define D_SECONDS "秒" +#define D_DEVICE_WILL_RESTART "设备将在几分钟内重启" +#define D_BUTTON_TOGGLE "状态切换" +#define D_CONFIGURATION "设置" +#define D_INFORMATION "信息" +#define D_FIRMWARE_UPGRADE "固件升级" +#define D_CONSOLE "控制台" +#define D_CONFIRM_RESTART "确认重启" + +#define D_CONFIGURE_MODULE "模块设置" +#define D_CONFIGURE_WIFI "WiFi设置" +#define D_CONFIGURE_MQTT "MQTT设置" +#define D_CONFIGURE_DOMOTICZ "Domoticz设置" +#define D_CONFIGURE_LOGGING "日志设置" +#define D_CONFIGURE_OTHER "其他设置" +#define D_CONFIRM_RESET_CONFIGURATION "确认重置配置" +#define D_RESET_CONFIGURATION "重置配置" +#define D_BACKUP_CONFIGURATION "备份配置" +#define D_RESTORE_CONFIGURATION "还原配置" +#define D_MAIN_MENU "主菜单" + +#define D_MODULE_PARAMETERS "模块设置" +#define D_MODULE_TYPE "模块类型" +#define D_GPIO "GPIO" +#define D_SERIAL_IN "串口输入(RX)" +#define D_SERIAL_OUT "串口输出(TX)" + +#define D_WIFI_PARAMETERS "Wifi设置" +#define D_SCAN_FOR_WIFI_NETWORKS "扫描无线网络" +#define D_SCAN_DONE "扫描完毕" +#define D_NO_NETWORKS_FOUND "未找到任何网络" +#define D_REFRESH_TO_SCAN_AGAIN "刷新并重试" +#define D_DUPLICATE_ACCESSPOINT "重复AP" +#define D_SKIPPING_LOW_QUALITY "忽略弱信号网络" +#define D_RSSI "RSSI" +#define D_WEP "WEP" +#define D_WPA_PSK "WPA PSK" +#define D_WPA2_PSK "WPA2 PSK" +#define D_AP1_SSID "AP1 名称" +#define D_AP1_PASSWORD "AP1 密码" +#define D_AP2_SSID "AP2 名称" +#define D_AP2_PASSWORD "AP2 密码" + +#define D_MQTT_PARAMETERS "MQTT设置" +#define D_CLIENT "客户端" +#define D_FULL_TOPIC "完整主题" + +#define D_LOGGING_PARAMETERS "日志设置" +#define D_SERIAL_LOG_LEVEL "串口日志级别" +#define D_WEB_LOG_LEVEL "Web 日志级别" +#define D_SYS_LOG_LEVEL "Syslog 日志级别" +#define D_MORE_DEBUG "全部调试" +#define D_SYSLOG_HOST "Syslog 主机地址" +#define D_SYSLOG_PORT "Syslog 端口" +#define D_TELEMETRY_PERIOD "上报周期" + +#define D_OTHER_PARAMETERS "其他设置" +#define D_WEB_ADMIN_PASSWORD "WEB管理密码" +#define D_MQTT_ENABLE "启用MQTT" +#define D_FRIENDLY_NAME "昵称" +#define D_BELKIN_WEMO "贝尔金 WeMo" +#define D_HUE_BRIDGE "飞利浦 Hue 网桥" +#define D_SINGLE_DEVICE "单设备" +#define D_MULTI_DEVICE "多设备" + +#define D_SAVE_CONFIGURATION "保存设置" +#define D_CONFIGURATION_SAVED "设置已保存" +#define D_CONFIGURATION_RESET "设置已重置" + +#define D_PROGRAM_VERSION "固件版本" +#define D_BUILD_DATE_AND_TIME "编译时间" +#define D_CORE_AND_SDK_VERSION "内核版本" +#define D_FLASH_WRITE_COUNT "刷机次数" +#define D_MAC_ADDRESS "MAC地址" +#define D_MQTT_HOST "MQTT主机" +#define D_MQTT_PORT "MQTT端口" +#define D_MQTT_CLIENT "MQTT客户端" +#define D_MQTT_USER "MQTT用户名" +#define D_MQTT_TOPIC "MQTT 主题(Topic)" +#define D_MQTT_GROUP_TOPIC "MQTT 主题组(Group Topic)" +#define D_MQTT_FULL_TOPIC "MQTT 完整主题(Full Topic)" +#define D_MDNS_DISCOVERY "mDNS 发现" +#define D_MDNS_ADVERTISE "mDNS 广播" +#define D_ESP_CHIP_ID "ESP芯片ID" +#define D_FLASH_CHIP_ID "Flash芯片ID" +#define D_FLASH_CHIP_SIZE "Flash大小" +#define D_FREE_PROGRAM_SPACE "空闲程序空间" + +#define D_UPGRADE_BY_WEBSERVER "通过Web升级" +#define D_OTA_URL "OTA地址" +#define D_START_UPGRADE "开始升级" +#define D_UPGRADE_BY_FILE_UPLOAD "通过文件升级" +#define D_UPLOAD_STARTED "开始上传" +#define D_UPGRADE_STARTED "开始升级" +#define D_UPLOAD_DONE "上传完成" +#define D_UPLOAD_ERR_1 "没有选择文件" +#define D_UPLOAD_ERR_2 "没有足够空间" +#define D_UPLOAD_ERR_3 "固件头不是 0xE9" +#define D_UPLOAD_ERR_4 "固件太大" +#define D_UPLOAD_ERR_5 "上传缓冲区不匹配" +#define D_UPLOAD_ERR_6 "上传失败。 启用日志记录 3" +#define D_UPLOAD_ERR_7 "上传取消" +#define D_UPLOAD_ERR_8 "错误的固件" +#define D_UPLOAD_ERR_9 "固件太大" +#define D_UPLOAD_ERROR_CODE "上传错误代码" + +#define D_ENTER_COMMAND "输入命令" +#define D_ENABLE_WEBLOG_FOR_RESPONSE "如果预期响应,则启用Weblog 2" +#define D_NEED_USER_AND_PASSWORD "需要 user=<用户名>&password=<密码>" + +// xdrv_wemohue.ino +#define D_MULTICAST_DISABLED "组播已禁用" +#define D_MULTICAST_REJOINED "组播已(重新)加入" +#define D_MULTICAST_JOIN_FAILED "组播加入失败" +#define D_FAILED_TO_SEND_RESPONSE "请求发送失败" + +#define D_WEMO "WeMo" +#define D_WEMO_BASIC_EVENT "WeMo 基础事件" +#define D_WEMO_EVENT_SERVICE "WeMo 事件服务" +#define D_WEMO_META_SERVICE "WeMo meta 服务" +#define D_WEMO_SETUP "WeMo 设置" +#define D_RESPONSE_SENT "发送请求" + +#define D_HUE "Hue" +#define D_HUE_BRIDGE_SETUP "Hue 设置" +#define D_HUE_API_NOT_IMPLEMENTED "Hue API 未实现" +#define D_HUE_API "Hue API" +#define D_HUE_POST_ARGS "Hue POST 参数" +#define D_3_RESPONSE_PACKETS_SENT "3 请求包发送" + +// xdrv_02_irremote.ino +#define D_JSON_INVALID_JSON "无效的JSON" +#define D_JSON_PROTOCOL_NOT_SUPPORTED "协议不支持" +#define D_JSON_IR_PROTOCOL "协议" +#define D_JSON_IR_BITS "BITS" +#define D_JSON_IR_DATA "数据" +#define D_JSON_IRHVAC_VENDOR "供应商" +#define D_JSON_IRHVAC_POWER "电源" +#define D_JSON_IRHVAC_MODE "模式" +#define D_JSON_IRHVAC_FANSPEED "风扇转速" +#define D_JSON_IRHVAC_TEMP "温度" +#define D_JSON_IRRECEIVED "IrReceived" + +// xdrv_05_domoticz.ino +#define D_DOMOTICZ_PARAMETERS "Domoticz 设置" +#define D_DOMOTICZ_IDX "Idx" +#define D_DOMOTICZ_KEY_IDX "Key idx" +#define D_DOMOTICZ_SWITCH_IDX "开关 idx" +#define D_DOMOTICZ_SENSOR_IDX "传感器 idx" + #define D_DOMOTICZ_TEMP "温度" + #define D_DOMOTICZ_TEMP_HUM "温度,湿度" + #define D_DOMOTICZ_TEMP_HUM_BARO "温度,湿度,气压" + #define D_DOMOTICZ_POWER_ENERGY "功率,电量" + #define D_DOMOTICZ_ILLUMINANCE "照度" + #define D_DOMOTICZ_COUNT "数值" + #define D_DOMOTICZ_VOLTAGE "电压" + #define D_DOMOTICZ_CURRENT "电流" + #define D_DOMOTICZ_AIRQUALITY "空气质量" +#define D_DOMOTICZ_UPDATE_TIMER "更新计时器" + +// xdrv_03_energy.ino +#define D_ENERGY_TODAY "今日用电量" +#define D_ENERGY_YESTERDAY "昨日用电量" +#define D_ENERGY_TOTAL "总用电量" + +// xsns_05_ds18b20.ino +#define D_SENSOR_BUSY "传感器正忙" +#define D_SENSOR_CRC_ERROR "传感器 CRC 校验错误" +#define D_SENSORS_FOUND "发现传感器" + +// xsns_06_dht.ino +#define D_TIMEOUT_WAITING_FOR "等待超时" +#define D_START_SIGNAL_LOW "开始低电平" +#define D_START_SIGNAL_HIGH "开始高电平" +#define D_PULSE "pulse" +#define D_CHECKSUM_FAILURE "校验失败" + +// xsns_07_sht1x.ino +#define D_SENSOR_DID_NOT_ACK_COMMAND "传感器没有确认命令" +#define D_SHT1X_FOUND "发现 SHT1X 传感器" + +// xsns_18_pms5003.ino +#define D_STANDARD_CONCENTRATION "标准颗粒物浓度" +#define D_ENVIRONMENTAL_CONCENTRATION "大气环境下浓度" +#define D_PARTICALS_BEYOND "颗粒物直径大于" + +// sonoff_template.h +// Max string length is 8 characters including suffixes +#define D_SENSOR_NONE "None" +#define D_SENSOR_DHT11 "DHT11" +#define D_SENSOR_AM2301 "AM2301" +#define D_SENSOR_SI7021 "SI7021" +#define D_SENSOR_DS18X20 "DS18x20" +#define D_SENSOR_I2C_SCL "I2C SCL" +#define D_SENSOR_I2C_SDA "I2C SDA" +#define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_IRSEND "IRsend" +#define D_SENSOR_SWITCH "Switch" // Suffix "1" +#define D_SENSOR_BUTTON "Button" // Suffix "1" +#define D_SENSOR_RELAY "Relay" // Suffix "1i" +#define D_SENSOR_LED "Led" // Suffix "1i" +#define D_SENSOR_PWM "PWM" // Suffix "1" +#define D_SENSOR_COUNTER "Counter" // Suffix "1" +#define D_SENSOR_IRRECV "IRrecv" +#define D_SENSOR_MHZ_RX "MHZ Rx" +#define D_SENSOR_MHZ_TX "MHZ Tx" +#define D_SENSOR_PZEM_RX "PZEM Rx" +#define D_SENSOR_PZEM_TX "PZEM Tx" +#define D_SENSOR_SAIR_RX "SAir Rx" +#define D_SENSOR_SAIR_TX "SAir Tx" +#define D_SENSOR_SPI_CS "SPI CS" +#define D_SENSOR_SPI_DC "SPI DC" +#define D_SENSOR_BACKLIGHT "BkLight" +#define D_SENSOR_PMS5003 "PMS5003" + +// Units +#define D_UNIT_AMPERE "安" +#define D_UNIT_HOUR "时" +#define D_UNIT_KILOOHM "千欧" +#define D_UNIT_KILOWATTHOUR "千瓦时" +#define D_UNIT_LUX "勒克斯" +#define D_UNIT_MICROGRAM_PER_CUBIC_METER "微克/立方米" +#define D_UNIT_MICROMETER "微米" +#define D_UNIT_MICROSECOND "微秒" +#define D_UNIT_MILLIAMPERE "毫安" +#define D_UNIT_MILLISECOND "毫秒" +#define D_UNIT_MINUTE "分" +#define D_UNIT_PARTS_PER_DECILITER "每分升" +#define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_PRESSURE "百帕" +#define D_UNIT_SECOND "秒" +#define D_UNIT_SECTORS "扇区" +#define D_UNIT_VOLT "伏" +#define D_UNIT_WATT "瓦" +#define D_UNIT_WATTHOUR "瓦时" + +// Log message prefix +#define D_LOG_APPLICATION "APP: " // Application +#define D_LOG_BRIDGE "BRG: " // Bridge +#define D_LOG_CONFIG "CFG: " // Settings +#define D_LOG_COMMAND "CMD: " // Command +#define D_LOG_DEBUG "DBG: " // Debug +#define D_LOG_DHT "DHT: " // DHT sensor +#define D_LOG_DOMOTICZ "DOM: " // Domoticz +#define D_LOG_DSB "DSB: " // DS18xB20 sensor +#define D_LOG_HTTP "HTP: " // HTTP webserver +#define D_LOG_I2C "I2C: " // I2C +#define D_LOG_IRR "IRR: " // Infra Red Received +#define D_LOG_LOG "LOG: " // Logging +#define D_LOG_MODULE "MOD: " // Module +#define D_LOG_MDNS "DNS: " // mDNS +#define D_LOG_MQTT "MQT: " // MQTT +#define D_LOG_OTHER "OTH: " // Other +#define D_LOG_RESULT "RSL: " // Result +#define D_LOG_RFR "RFR: " // RF Received +#define D_LOG_SERIAL "SER: " // Serial +#define D_LOG_SHT1 "SHT: " // SHT1x sensor +#define D_LOG_UPLOAD "UPL: " // Upload +#define D_LOG_UPNP "UPP: " // UPnP +#define D_LOG_WIFI "WIF: " // Wifi + +#endif // _LANGUAGE_ZH_CN_H_ diff --git a/sonoff/settings.h b/sonoff/settings.h index 4110de993..de6688563 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -262,7 +262,7 @@ struct SYSCFG { struct RTCMEM { uint16_t valid; // 000 byte oswatch_blocked_loop; // 002 - uint8_t unused; // 003 + uint8_t ota_loader; // 003 unsigned long energy_kWhtoday; // 004 unsigned long energy_kWhtotal; // 008 unsigned long pulse_counter[MAX_COUNTERS]; // 00C diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index aeb660e7b..f6f580548 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -80,7 +80,7 @@ typedef unsigned long power_t; // Power (Relay) type #define STATES 20 // State loops per second #define SYSLOG_TIMER 600 // Seconds to restore syslog_level #define SERIALLOG_TIMER 600 // Seconds to disable SerialLog -#define OTA_ATTEMPTS 10 // Number of times to try fetching the new firmware +#define OTA_ATTEMPTS 5 // Number of times to try fetching the new firmware #define INPUT_BUFFER_SIZE 250 // Max number of characters in (serial) command buffer #define CMDSZ 24 // Max number of characters in command diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index dd1b3b0b2..e848dda88 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -25,8 +25,7 @@ - Select IDE Tools - Flash Size: "1M (no SPIFFS)" ====================================================*/ -#define VERSION 0x050B0101 -#define VERSION_STRING "5.11.1a" // Would be great to have a macro that fills this from VERSION ... +#define VERSION 0x050B0101 // 5.11.1a // Location specific includes #include "sonoff.h" // Enumaration used in user_config.h @@ -120,6 +119,7 @@ int mqtt_connection_flag = 2; // MQTT connection messages flag int ota_state_flag = 0; // OTA state flag int ota_result = 0; // OTA result byte ota_retry_counter = OTA_ATTEMPTS; // OTA retry counter +char *ota_url; // OTA url string int restart_flag = 0; // Sonoff restart flag int wifi_state_flag = WIFI_RESTART; // Wifi state flag int uptime = 0; // Current uptime in hours @@ -188,6 +188,7 @@ uint8_t xdrv_present = 0; // Number of drivers found boolean (*xdrv_func_ptr[XDRV_MAX])(byte); // Driver Function Pointers uint8_t xsns_present = 0; // Number of External Sensors found boolean (*xsns_func_ptr[XSNS_MAX])(byte); // External Sensor Function Pointers for simple implementation of sensors +char my_version[33]; // Composed version string char my_hostname[33]; // Composed Wifi hostname char mqtt_client[33]; // Composed MQTT Clientname char serial_in_buffer[INPUT_BUFFER_SIZE + 2]; // Receive buffer @@ -467,8 +468,8 @@ void MqttConnected() } if (mqtt_connection_flag) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_MODULE "\":\"%s\",\"" D_JSON_VERSION "\":\"" VERSION_STRING "\",\"" D_JSON_FALLBACKTOPIC "\":\"%s\",\"" D_CMND_GROUPTOPIC "\":\"%s\"}"), - my_module.name, mqtt_client, Settings.mqtt_grptopic); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_MODULE "\":\"%s\",\"" D_JSON_VERSION "\":\"%s\",\"" D_JSON_FALLBACKTOPIC "\":\"%s\",\"" D_CMND_GROUPTOPIC "\":\"%s\"}"), + my_module.name, my_version, mqtt_client, Settings.mqtt_grptopic); MqttPublishPrefixTopic_P(2, PSTR(D_RSLT_INFO "1")); #ifdef USE_WEBSERVER if (Settings.webserver) { @@ -1222,9 +1223,9 @@ void MqttDataCallback(char* topic, byte* data, unsigned int data_len) // We also need at least 3 chars to make a valid version number string. if (((1 == data_len) && (1 == payload)) || ((data_len >= 3) && NewerVersion(dataBuf))) { ota_state_flag = 3; - snprintf_P(mqtt_data, sizeof(mqtt_data), "{\"%s\":\"" D_JSON_VERSION " " VERSION_STRING " " D_JSON_FROM " %s\"}", command, Settings.ota_url); + snprintf_P(mqtt_data, sizeof(mqtt_data), "{\"%s\":\"" D_JSON_VERSION " %s " D_JSON_FROM " %s\"}", command, my_version, Settings.ota_url); } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), "{\"%s\":\"" D_JSON_ONE_OR_GT "\"}", command, VERSION_STRING); + snprintf_P(mqtt_data, sizeof(mqtt_data), "{\"%s\":\"" D_JSON_ONE_OR_GT "\"}", command, my_version); } } else if (CMND_OTAURL == command_code) { @@ -1699,8 +1700,8 @@ void PublishStatus(uint8_t payload) } if ((0 == payload) || (2 == payload)) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS2_FIRMWARE "\":{\"" D_JSON_VERSION "\":\"" VERSION_STRING "\",\"" D_JSON_BUILDDATETIME "\":\"%s\",\"" D_JSON_BOOTVERSION "\":%d,\"" D_JSON_COREVERSION "\":\"" ARDUINO_ESP8266_RELEASE "\",\"" D_JSON_SDKVERSION "\":\"%s\"}}"), - GetBuildDateAndTime().c_str(), ESP.getBootVersion(), ESP.getSdkVersion()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_STATUS D_STATUS2_FIRMWARE "\":{\"" D_JSON_VERSION "\":\"%s\",\"" D_JSON_BUILDDATETIME "\":\"%s\",\"" D_JSON_BOOTVERSION "\":%d,\"" D_JSON_COREVERSION "\":\"" ARDUINO_ESP8266_RELEASE "\",\"" D_JSON_SDKVERSION "\":\"%s\"}}"), + my_version, GetBuildDateAndTime().c_str(), ESP.getBootVersion(), ESP.getSdkVersion()); MqttPublishPrefixTopic_P(option, PSTR(D_CMND_STATUS "2")); } @@ -2224,6 +2225,8 @@ void StateLoop() if (ota_state_flag && (backlog_pointer == backlog_index)) { ota_state_flag--; if (2 == ota_state_flag) { + ota_url = Settings.ota_url; + RtcSettings.ota_loader = 0; // Try requested image first ota_retry_counter = OTA_ATTEMPTS; ESPhttpUpdate.rebootOnUpdate(false); SettingsSave(1); // Free flash for OTA update @@ -2241,10 +2244,32 @@ void StateLoop() ota_result = 0; ota_retry_counter--; if (ota_retry_counter) { -// snprintf_P(log_data, sizeof(log_data), PSTR("OTA: Attempt %d"), OTA_ATTEMPTS - ota_retry_counter); -// AddLog(LOG_LEVEL_INFO); - ota_result = (HTTP_UPDATE_FAILED != ESPhttpUpdate.update(Settings.ota_url)); +#ifndef BE_MINIMAL + if (RtcSettings.ota_loader) { + char *pch = strrchr(Settings.ota_url, '-'); // Change from filename-DE.bin into filename-minimal.bin + char *ech = strrchr(Settings.ota_url, '.'); // Change from filename.bin into filename-minimal.bin + if (!pch) { + pch = ech; + } + if (pch) { + strlcpy(mqtt_data, Settings.ota_url, pch - Settings.ota_url +1); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s-" D_JSON_MINIMAL "%s"), mqtt_data, ech); // Minimal filename must be filename-minimal + ota_url = mqtt_data; // Try minimal image + } + } +#endif // BE_MINIMAL + snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_UPLOAD "%s"), ota_url); + AddLog(LOG_LEVEL_DEBUG); + ota_result = (HTTP_UPDATE_FAILED != ESPhttpUpdate.update(ota_url)); if (!ota_result) { +#ifndef BE_MINIMAL + int ota_error = ESPhttpUpdate.getLastError(); +// snprintf_P(log_data, sizeof(log_data), PSTR(D_LOG_UPLOAD "Ota error %d"), ota_error); +// AddLog(LOG_LEVEL_DEBUG); + if ((HTTP_UE_TOO_LESS_SPACE == ota_error) || (HTTP_UE_BIN_FOR_WRONG_FLASH == ota_error)) { + RtcSettings.ota_loader = 1; // Try minimal image next + } +#endif // BE_MINIMAL ota_state_flag = 2; // Upgrade failed - retry } } @@ -2607,6 +2632,16 @@ void setup() Serial.println(); seriallog_level = LOG_LEVEL_INFO; // Allow specific serial messages until config loaded + snprintf_P(my_version, sizeof(my_version), PSTR("%d.%d.%d"), VERSION >> 24 & 0xff, VERSION >> 16 & 0xff, VERSION >> 8 & 0xff); + if (VERSION & 0x1f) { + idx = strlen(my_version); + my_version[idx] = 96 + (VERSION & 0x1f); + my_version[idx +1] = 0; + } +#ifdef BE_MINIMAL + snprintf_P(my_version, sizeof(my_version), PSTR("%s-" D_JSON_MINIMAL), my_version); +#endif // BE_MINIMAL + SettingsLoad(); SettingsDelta(); @@ -2689,9 +2724,13 @@ void setup() blink_powersave = power; - snprintf_P(log_data, sizeof(log_data), PSTR(D_PROJECT " %s %s (" D_CMND_TOPIC " %s, " D_FALLBACK " %s, " D_CMND_GROUPTOPIC " %s) " D_VERSION " " VERSION_STRING), - PROJECT, Settings.friendlyname[0], Settings.mqtt_topic, mqtt_client, Settings.mqtt_grptopic); + snprintf_P(log_data, sizeof(log_data), PSTR(D_PROJECT " %s %s (" D_CMND_TOPIC " %s, " D_FALLBACK " %s, " D_CMND_GROUPTOPIC " %s) " D_VERSION " %s"), + PROJECT, Settings.friendlyname[0], Settings.mqtt_topic, mqtt_client, Settings.mqtt_grptopic, my_version); AddLog(LOG_LEVEL_INFO); +#ifdef BE_MINIMAL + snprintf_P(log_data, sizeof(log_data), PSTR(D_WARNING_MINIMAL_VERSION)); + AddLog(LOG_LEVEL_INFO); +#endif // BE_MINIMAL RtcInit(); XSnsInit(); diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index 518538290..07d51b157 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -86,7 +86,8 @@ enum UserSelectablePins { GPIO_SAIR_RX, // SenseAir Serial interface GPIO_SPI_CS, // SPI Chip Select GPIO_SPI_DC, // SPI Data Direction - GPIO_BACKLIGHT, + GPIO_BACKLIGHT, // Display backlight control + GPIO_PMS5003, // Plantower PMS5003 Serial interface GPIO_SENSOR_END }; // Text in webpage Module Parameters and commands GPIOS and GPIO @@ -155,7 +156,8 @@ const char kSensors[GPIO_SENSOR_END][9] PROGMEM = { D_SENSOR_SAIR_RX, D_SENSOR_SPI_CS, D_SENSOR_SPI_DC, - D_SENSOR_BACKLIGHT + D_SENSOR_BACKLIGHT, + D_SENSOR_PMS5003 }; // Programmer selectable GPIO functionality offset by user selectable GPIOs diff --git a/sonoff/support.ino b/sonoff/support.ino index a03efa378..166e1ad81 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -612,6 +612,12 @@ void WifiCheck(uint8_t param) WifiCheckIp(); } if ((WL_CONNECTED == WiFi.status()) && (static_cast(WiFi.localIP()) != 0) && !wifi_config_type) { +#ifdef BE_MINIMAL + if (1 == RtcSettings.ota_loader) { + RtcSettings.ota_loader = 0; + ota_state_flag = 3; + } +#endif // BE_MINIMAL #ifdef USE_DISCOVERY if (!mdns_begun) { mdns_begun = MDNS.begin(my_hostname); diff --git a/sonoff/user_config.h b/sonoff/user_config.h index 103baa65e..f3f76b822 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -34,6 +34,7 @@ //#define MY_LANGUAGE de-DE // German in Germany //#define MY_LANGUAGE pl-PL // Polish in Poland //#define MY_LANGUAGE it-IT // Italian in Italy +//#define MY_LANGUAGE zh-CN // Chinese (Simplified) in China // -- Project ------------------------------------- #define PROJECT "sonoff" // PROJECT is used as the default topic delimiter and OTA file name diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index bc37f1bb2..2b095c31d 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -278,7 +278,7 @@ const char HTTP_COUNTER[] PROGMEM = "
"; const char HTTP_END[] PROGMEM = "
" - "

" D_PROGRAMNAME " " VERSION_STRING " " D_BY " " D_AUTHOR "
" + "

" D_PROGRAMNAME " {mv " D_BY " " D_AUTHOR "
" "" "" ""; @@ -423,6 +423,7 @@ void ShowPage(String &page) } } page += FPSTR(HTTP_END); + page.replace(F("{mv"), my_version); SetHeader(); WebServer->send(200, FPSTR(HDR_CTYPE_HTML), page); } @@ -926,8 +927,7 @@ void HandleBackupConfiguration() WebServer->setContentLength(sizeof(buffer)); char attachment[100]; - snprintf_P(attachment, sizeof(attachment), PSTR("attachment; filename=Config_%s_" VERSION_STRING ".dmp"), - Settings.friendlyname[0]); + snprintf_P(attachment, sizeof(attachment), PSTR("attachment; filename=Config_%s_%s.dmp"), Settings.friendlyname[0], my_version); WebServer->sendHeader(F("Content-Disposition"), attachment); WebServer->send(200, FPSTR(HDR_CTYPE_STREAM), ""); memcpy(buffer, &Settings, sizeof(buffer)); @@ -1479,7 +1479,7 @@ void HandleInformation() // }2 =
"); func += F(D_PROGRAM_VERSION "}2" VERSION_STRING); func += F("}1" D_BUILD_DATE_AND_TIME "}2"); func += GetBuildDateAndTime(); - func += F("}1" D_CORE_AND_SDK_VERSION "}2"); func += ESP.getCoreVersion(); func += F("/"); func += String(ESP.getSdkVersion()); + func += F("}1" D_CORE_AND_SDK_VERSION "}2" ARDUINO_ESP8266_RELEASE "/"); func += String(ESP.getSdkVersion()); func += F("}1" D_UPTIME "}2"); func += String(uptime); func += F(" Hours"); snprintf_P(stopic, sizeof(stopic), PSTR(" at %X"), GetSettingsAddress()); func += F("}1" D_FLASH_WRITE_COUNT "}2"); func += String(Settings.save_flag); func += stopic; diff --git a/sonoff/xdrv_01_light.ino b/sonoff/xdrv_01_light.ino index ef5eb1530..44801bfc1 100644 --- a/sonoff/xdrv_01_light.ino +++ b/sonoff/xdrv_01_light.ino @@ -1096,7 +1096,7 @@ boolean LightCommand() light_wakeup_active = 3; Settings.light_scheme = LS_WAKEUP; LightPowerOn(); - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_STARTED); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, D_JSON_STARTED); } else if ((CMND_COLORTEMPERATURE == command_code) && ((LST_COLDWARM == light_subtype) || (LST_RGBWC == light_subtype))) { // ColorTemp if (option != '\0') { diff --git a/sonoff/xdrv_02_irremote.ino b/sonoff/xdrv_02_irremote.ino index 632198d4c..93a778c24 100644 --- a/sonoff/xdrv_02_irremote.ino +++ b/sonoff/xdrv_02_irremote.ino @@ -339,7 +339,7 @@ boolean IrSendCommand() error = true; } if (error) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_IRSEND "\":\"" D_NO " " D_JSON_IR_PROTOCOL ", " D_JSON_IR_BITS " " D_JSON_OR " " D_JSON_IR_DATA "\"}")); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_CMND_IRSEND "\":\"" D_JSON_NO " " D_JSON_IR_PROTOCOL ", " D_JSON_IR_BITS " " D_JSON_OR " " D_JSON_IR_DATA "\"}")); } } #ifdef USE_IR_HVAC diff --git a/sonoff/xdrv_04_snfbridge.ino b/sonoff/xdrv_04_snfbridge.ino index f7d414856..94d0db208 100644 --- a/sonoff/xdrv_04_snfbridge.ino +++ b/sonoff/xdrv_04_snfbridge.ino @@ -40,7 +40,7 @@ unsigned long sonoff_bridge_last_learn_time = 0; void SonoffBridgeLearnFailed() { sonoff_bridge_learn_active = 0; - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, D_CMND_RFKEY, sonoff_bridge_learn_key, D_LEARN_FAILED); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, D_CMND_RFKEY, sonoff_bridge_learn_key, D_JSON_LEARN_FAILED); MqttPublishPrefixTopic_P(5, PSTR(D_CMND_RFKEY)); } @@ -71,7 +71,7 @@ void SonoffBridgeReceived() for (byte i = 0; i < 9; i++) { Settings.rf_code[sonoff_bridge_learn_key][i] = serial_in_buffer[i +1]; } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, D_CMND_RFKEY, sonoff_bridge_learn_key, D_LEARNED); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, D_CMND_RFKEY, sonoff_bridge_learn_key, D_JSON_LEARNED); MqttPublishPrefixTopic_P(5, PSTR(D_CMND_RFKEY)); } else { SonoffBridgeLearnFailed(); @@ -90,7 +90,7 @@ void SonoffBridgeReceived() if (!((received_id == sonoff_bridge_last_received_id) && (now - sonoff_bridge_last_time < SFB_TIME_AVOID_DUPLICATE))) { sonoff_bridge_last_received_id = received_id; sonoff_bridge_last_time = now; - strncpy_P(rfkey, PSTR("\"" D_NONE "\""), sizeof(rfkey)); + strncpy_P(rfkey, PSTR("\"" D_JSON_NONE "\""), sizeof(rfkey)); for (byte i = 1; i <= 16; i++) { if (Settings.rf_code[i][0]) { uint32_t send_id = Settings.rf_code[i][6] << 16 | Settings.rf_code[i][7] << 8 | Settings.rf_code[i][8]; @@ -100,9 +100,9 @@ void SonoffBridgeReceived() } } } - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_RFRECEIVED "\":{\"" D_JSON_SYNC "\":%d,\"" D_JSON_LOW "\":%d,\"" D_JSON_HIGH "\":%d,\"" D_JSON_DATA "\":\"%06X\",\"" D_CMND_RFKEY "\":%s}}"), + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_RFRECEIVED "\":{\"" D_JSON_SYNC "\":%d,\"" D_JSON_LOW "\":%d,\"" D_JSON_HIGH "\":%d,\"" D_JSON_DATA "\":\"%06X\",\"" D_CMND_RFKEY "\":%s}}"), sync_time, low_time, high_time, received_id, rfkey); - MqttPublishPrefixTopic_P(6, PSTR(D_RFRECEIVED)); + MqttPublishPrefixTopic_P(6, PSTR(D_JSON_RFRECEIVED)); #ifdef USE_DOMOTICZ DomoticzSensor(DZ_COUNT, received_id); // Send rid as Domoticz Counter value #endif // USE_DOMOTICZ @@ -255,11 +255,11 @@ boolean SonoffBridgeCommand() sonoff_bridge_learn_active = 0; if (2 == XdrvMailbox.payload) { // Learn RF data SonoffBridgeLearn(XdrvMailbox.index); - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_START_LEARNING); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_JSON_START_LEARNING); } else if (3 == XdrvMailbox.payload) { // Unlearn RF data Settings.rf_code[XdrvMailbox.index][0] = 0; - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_SET_TO_DEFAULT); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_JSON_SET_TO_DEFAULT); } else if (4 == XdrvMailbox.payload) { // Save RF data provided by RFSync, RfLow, RfHigh and last RfCode for (byte i = 0; i < 6; i++) { @@ -268,18 +268,18 @@ boolean SonoffBridgeCommand() Settings.rf_code[XdrvMailbox.index][6] = (sonoff_bridge_last_send_code >> 16) & 0xff; Settings.rf_code[XdrvMailbox.index][7] = (sonoff_bridge_last_send_code >> 8) & 0xff; Settings.rf_code[XdrvMailbox.index][8] = sonoff_bridge_last_send_code & 0xff; - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_SAVED); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_JSON_SAVED); } else { if ((1 == XdrvMailbox.payload) || (0 == Settings.rf_code[XdrvMailbox.index][0])) { SonoffBridgeSend(0, XdrvMailbox.index); // Send default RF data - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_DEFAULT_SENT); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_JSON_DEFAULT_SENT); } else { SonoffBridgeSend(XdrvMailbox.index, 0); // Send learned RF data - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_LEARNED_SENT); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, XdrvMailbox.index, D_JSON_LEARNED_SENT); } } } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, sonoff_bridge_learn_key, D_LEARNING_ACTIVE); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_INDEX_SVALUE, command, sonoff_bridge_learn_key, D_JSON_LEARNING_ACTIVE); } } else serviced = false; return serviced; diff --git a/sonoff/xsns_03_energy.ino b/sonoff/xsns_03_energy.ino index 1de36db02..e0e7db308 100644 --- a/sonoff/xsns_03_energy.ino +++ b/sonoff/xsns_03_energy.ino @@ -569,7 +569,7 @@ void EnergyMarginCheck() } else { energy_mplh_counter--; if (!energy_mplh_counter) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_MAXPOWERREACHED "\":\"%d%s\"}"), energy_power_u, (Settings.flag.value_units) ? " " D_UNIT_WATT : ""); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_MAXPOWERREACHED "\":\"%d%s\"}"), energy_power_u, (Settings.flag.value_units) ? " " D_UNIT_WATT : ""); MqttPublishPrefixTopic_P(1, S_RSLT_WARNING); EnergyMqttShow(); ExecuteCommandPower(1, 0); @@ -592,11 +592,11 @@ void EnergyMarginCheck() if (energy_mplr_counter) { energy_mplr_counter--; if (energy_mplr_counter) { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_POWERMONITOR "\":\"%s\"}"), GetStateText(1)); - MqttPublishPrefixTopic_P(5, PSTR(D_POWERMONITOR)); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_POWERMONITOR "\":\"%s\"}"), GetStateText(1)); + MqttPublishPrefixTopic_P(5, PSTR(D_JSON_POWERMONITOR)); ExecuteCommandPower(1, 1); } else { - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0)); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_MAXPOWERREACHEDRETRY "\":\"%s\"}"), GetStateText(0)); MqttPublishPrefixTopic_P(1, S_RSLT_WARNING); EnergyMqttShow(); } @@ -610,14 +610,14 @@ void EnergyMarginCheck() energy_daily_u = (uint16_t)(energy_daily * 1000); if (!energy_max_energy_state && (RtcTime.hour == Settings.energy_max_energy_start)) { energy_max_energy_state = 1; - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1)); - MqttPublishPrefixTopic_P(5, PSTR(D_ENERGYMONITOR)); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_ENERGYMONITOR "\":\"%s\"}"), GetStateText(1)); + MqttPublishPrefixTopic_P(5, PSTR(D_JSON_ENERGYMONITOR)); ExecuteCommandPower(1, 1); } else if ((1 == energy_max_energy_state) && (energy_daily_u >= Settings.energy_max_energy)) { energy_max_energy_state = 2; dtostrfd(energy_daily, 3, mqtt_data); - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_MAXENERGYREACHED "\":\"%s%s\"}"), mqtt_data, (Settings.flag.value_units) ? " " D_UNIT_KILOWATTHOUR : ""); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_MAXENERGYREACHED "\":\"%s%s\"}"), mqtt_data, (Settings.flag.value_units) ? " " D_UNIT_KILOWATTHOUR : ""); MqttPublishPrefixTopic_P(1, S_RSLT_WARNING); EnergyMqttShow(); ExecuteCommandPower(1, 0); @@ -629,7 +629,7 @@ void EnergyMarginCheck() void EnergyMqttShow() { // {"Time":"2017-12-16T11:48:55","ENERGY":{"Total":0.212,"Yesterday":0.000,"Today":0.014,"Period":2.0,"Power":22.0,"Factor":1.00,"Voltage":213.6,"Current":0.100}} - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_TIME "\":\"%s\""), GetDateAndTime().c_str()); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("{\"" D_JSON_TIME "\":\"%s\""), GetDateAndTime().c_str()); EnergyShow(1); MqttPublishPrefixTopic_P(2, PSTR(D_RSLT_ENERGY), Settings.flag.mqtt_sensor_retain); } diff --git a/sonoff/xsns_05_ds18x20.ino b/sonoff/xsns_05_ds18x20.ino index 9825e36c8..fa525da36 100644 --- a/sonoff/xsns_05_ds18x20.ino +++ b/sonoff/xsns_05_ds18x20.ino @@ -372,7 +372,7 @@ void Ds18x20Show(boolean json) for (byte j = 0; j < 6; j++) { sprintf(address+2*j, "%02X", ds18x20_address[ds18x20_index[i]][6-j]); // Skip sensor type and crc } - snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_ID "\":\"%s\",\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, stemp, address, temperature); + snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_ID "\":\"%s\",\"" D_JSON_TEMPERATURE "\":%s}"), mqtt_data, stemp, address, temperature); } #ifdef USE_DOMOTICZ if (domoticz_flag) { diff --git a/sonoff/xsns_09_bmp.ino b/sonoff/xsns_09_bmp.ino index 77143b94b..a2776f82f 100644 --- a/sonoff/xsns_09_bmp.ino +++ b/sonoff/xsns_09_bmp.ino @@ -460,7 +460,7 @@ void BmpShow(boolean json) snprintf_P(json_sealevel, sizeof(json_sealevel), PSTR(",\"" D_JSON_PRESSUREATSEALEVEL "\":%s"), sea_pressure); #ifdef USE_BME680 char json_gas[40]; - snprintf_P(json_gas, sizeof(json_gas), PSTR(",\"" D_GAS "\":%s"), gas_resistance); + snprintf_P(json_gas, sizeof(json_gas), PSTR(",\"" D_JSON_GAS "\":%s"), gas_resistance); snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s,\"%s\":{\"" D_JSON_TEMPERATURE "\":%s%s,\"" D_JSON_PRESSURE "\":%s%s%s}"), mqtt_data, bmp_name, temperature, (bmp_model >= 2) ? json_humidity : "", pressure, (Settings.altitude != 0) ? json_sealevel : "", (bmp_model >= 3) ? json_gas : ""); #else From a94e38cffb2c6a4a38b95585a484f992bbdbd627 Mon Sep 17 00:00:00 2001 From: arendst Date: Sat, 6 Jan 2018 18:12:10 +0100 Subject: [PATCH 02/11] Add ESP8266 v2.4.0 board files See wiki for more information --- arduino/version 2.4.0/boards.txt | 2106 ++++++++++++++++++++++++++++ arduino/version 2.4.0/platform.txt | 131 ++ 2 files changed, 2237 insertions(+) create mode 100644 arduino/version 2.4.0/boards.txt create mode 100644 arduino/version 2.4.0/platform.txt diff --git a/arduino/version 2.4.0/boards.txt b/arduino/version 2.4.0/boards.txt new file mode 100644 index 000000000..f2dd8b569 --- /dev/null +++ b/arduino/version 2.4.0/boards.txt @@ -0,0 +1,2106 @@ +menu.BoardModel=Model +menu.UploadSpeed=Upload Speed +menu.UploadTool=Upload Using +menu.CpuFrequency=CPU Frequency +menu.CrystalFreq=Crystal Frequency +menu.FlashSize=Flash Size +menu.FlashMode=Flash Mode +menu.FlashFreq=Flash Frequency +menu.ResetMethod=Reset Method +menu.ESPModule=Module +menu.Debug=Debug port +menu.DebugLevel=Debug Level +menu.LwIPVariant=lwIP Variant + +############################################################## +generic.name=Generic ESP8266 Module + +generic.upload.tool=esptool +generic.upload.speed=115200 +generic.upload.resetmethod=ck +generic.upload.maximum_size=434160 +generic.upload.maximum_data_size=81920 +generic.upload.wait_for_upload_port=true +generic.serial.disableDTR=true +generic.serial.disableRTS=true + +generic.build.mcu=esp8266 +generic.build.f_cpu=80000000L +generic.build.board=ESP8266_ESP01 +generic.build.core=esp8266 +generic.build.variant=generic +generic.build.flash_mode=qio +generic.build.spiffs_pagesize=256 +generic.build.debug_port= +generic.build.debug_level= + +generic.menu.UploadTool.esptool=Serial +generic.menu.UploadTool.esptool.upload.tool=esptool +generic.menu.UploadTool.esptool.upload.verbose=-vv +generic.menu.UploadTool.espupload=OTA_upload +generic.menu.UploadTool.espupload.upload.tool=espupload + +generic.menu.CpuFrequency.80=80 MHz +generic.menu.CpuFrequency.80.build.f_cpu=80000000L +generic.menu.CpuFrequency.160=160 MHz +generic.menu.CpuFrequency.160.build.f_cpu=160000000L + +generic.menu.CrystalFreq.26=26 MHz +generic.menu.CrystalFreq.40=40 MHz +generic.menu.CrystalFreq.40.build.extra_flags=-DF_CRYSTAL=40000000 + +generic.menu.FlashFreq.40=40MHz +generic.menu.FlashFreq.40.build.flash_freq=40 +generic.menu.FlashFreq.80=80MHz +generic.menu.FlashFreq.80.build.flash_freq=80 + +generic.menu.FlashMode.dio=DIO +generic.menu.FlashMode.dio.build.flash_mode=dio +generic.menu.FlashMode.qio=QIO +generic.menu.FlashMode.qio.build.flash_mode=qio +generic.menu.FlashMode.dout=DOUT +generic.menu.FlashMode.dout.build.flash_mode=dout +generic.menu.FlashMode.qout=QOUT +generic.menu.FlashMode.qout.build.flash_mode=qout + +generic.menu.UploadSpeed.115200=115200 +generic.menu.UploadSpeed.115200.upload.speed=115200 +generic.menu.UploadSpeed.9600=9600 +generic.menu.UploadSpeed.9600.upload.speed=9600 +generic.menu.UploadSpeed.57600=57600 +generic.menu.UploadSpeed.57600.upload.speed=57600 +generic.menu.UploadSpeed.256000.windows=256000 +generic.menu.UploadSpeed.256000.upload.speed=256000 +generic.menu.UploadSpeed.230400.linux=230400 +generic.menu.UploadSpeed.230400.macosx=230400 +generic.menu.UploadSpeed.230400.upload.speed=230400 +generic.menu.UploadSpeed.460800.linux=460800 +generic.menu.UploadSpeed.460800.macosx=460800 +generic.menu.UploadSpeed.460800.upload.speed=460800 +generic.menu.UploadSpeed.512000.windows=512000 +generic.menu.UploadSpeed.512000.upload.speed=512000 +generic.menu.UploadSpeed.921600=921600 +generic.menu.UploadSpeed.921600.upload.speed=921600 + +generic.menu.FlashSize.512K64=512K (64K SPIFFS) +generic.menu.FlashSize.512K64.build.flash_size=512K +generic.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld +generic.menu.FlashSize.512K64.build.spiffs_start=0x6B000 +generic.menu.FlashSize.512K64.build.spiffs_end=0x7B000 +generic.menu.FlashSize.512K64.build.spiffs_blocksize=4096 +generic.menu.FlashSize.512K64.upload.maximum_size=434160 + +generic.menu.FlashSize.512K128=512K (128K SPIFFS) +generic.menu.FlashSize.512K128.build.flash_size=512K +generic.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld +generic.menu.FlashSize.512K128.build.spiffs_start=0x5B000 +generic.menu.FlashSize.512K128.build.spiffs_end=0x7B000 +generic.menu.FlashSize.512K128.build.spiffs_blocksize=4096 +generic.menu.FlashSize.512K128.upload.maximum_size=368624 + +generic.menu.FlashSize.512K0=512K (no SPIFFS) +generic.menu.FlashSize.512K0.build.flash_size=512K +generic.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld +generic.menu.FlashSize.512K0.upload.maximum_size=499696 + +generic.menu.FlashSize.1M512=1M (512K SPIFFS) +generic.menu.FlashSize.1M512.build.flash_size=1M +generic.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld +generic.menu.FlashSize.1M512.build.spiffs_start=0x7B000 +generic.menu.FlashSize.1M512.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M512.build.spiffs_blocksize=8192 +generic.menu.FlashSize.1M512.upload.maximum_size=499696 + +generic.menu.FlashSize.1M256=1M (256K SPIFFS) +generic.menu.FlashSize.1M256.build.flash_size=1M +generic.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld +generic.menu.FlashSize.1M256.build.spiffs_start=0xBB000 +generic.menu.FlashSize.1M256.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M256.build.spiffs_blocksize=4096 +generic.menu.FlashSize.1M256.upload.maximum_size=761840 + +generic.menu.FlashSize.1M192=1M (192K SPIFFS) +generic.menu.FlashSize.1M192.build.flash_size=1M +generic.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld +generic.menu.FlashSize.1M192.build.spiffs_start=0xCB000 +generic.menu.FlashSize.1M192.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M192.build.spiffs_blocksize=4096 +generic.menu.FlashSize.1M192.upload.maximum_size=827376 + +generic.menu.FlashSize.1M160=1M (160K SPIFFS) +generic.menu.FlashSize.1M160.build.flash_size=1M +generic.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld +generic.menu.FlashSize.1M160.build.spiffs_start=0xD3000 +generic.menu.FlashSize.1M160.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M160.build.spiffs_blocksize=4096 +generic.menu.FlashSize.1M160.upload.maximum_size=860144 + +generic.menu.FlashSize.1M144=1M (144K SPIFFS) +generic.menu.FlashSize.1M144.build.flash_size=1M +generic.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld +generic.menu.FlashSize.1M144.build.spiffs_start=0xD7000 +generic.menu.FlashSize.1M144.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M144.build.spiffs_blocksize=4096 +generic.menu.FlashSize.1M144.upload.maximum_size=876528 + +generic.menu.FlashSize.1M128=1M (128K SPIFFS) +generic.menu.FlashSize.1M128.build.flash_size=1M +generic.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld +generic.menu.FlashSize.1M128.build.spiffs_start=0xDB000 +generic.menu.FlashSize.1M128.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M128.build.spiffs_blocksize=4096 +generic.menu.FlashSize.1M128.upload.maximum_size=892912 + +generic.menu.FlashSize.1M64=1M (64K SPIFFS) +generic.menu.FlashSize.1M64.build.flash_size=1M +generic.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld +generic.menu.FlashSize.1M64.build.spiffs_start=0xEB000 +generic.menu.FlashSize.1M64.build.spiffs_end=0xFB000 +generic.menu.FlashSize.1M64.build.spiffs_blocksize=4096 +generic.menu.FlashSize.1M64.upload.maximum_size=958448 + +generic.menu.FlashSize.1M0=1M (no SPIFFS) +generic.menu.FlashSize.1M0.build.flash_size=1M +generic.menu.FlashSize.1M0.build.flash_ld=eagle.flash.1m0.ld +generic.menu.FlashSize.1M0.upload.maximum_size=1023984 + +generic.menu.FlashSize.2M=2M (1M SPIFFS) +generic.menu.FlashSize.2M.build.flash_size=2M +generic.menu.FlashSize.2M.build.flash_ld=eagle.flash.2m.ld +generic.menu.FlashSize.2M.build.spiffs_start=0x100000 +generic.menu.FlashSize.2M.build.spiffs_end=0x1FB000 +generic.menu.FlashSize.2M.build.spiffs_blocksize=8192 +generic.menu.FlashSize.2M.upload.maximum_size=1044464 + +generic.menu.FlashSize.4M1M=4M (1M SPIFFS) +generic.menu.FlashSize.4M1M.build.flash_size=4M +generic.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +generic.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +generic.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +generic.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +generic.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +generic.menu.FlashSize.4M1M.upload.maximum_size=1044464 + +generic.menu.FlashSize.4M3M=4M (3M SPIFFS) +generic.menu.FlashSize.4M3M.build.flash_size=4M +generic.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +generic.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +generic.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +generic.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +generic.menu.FlashSize.4M3M.upload.maximum_size=1044464 + +generic.menu.FlashSize.8M=8M (7M SPIFFS) +generic.menu.FlashSize.8M.build.flash_size=8M +generic.menu.FlashSize.8M.build.flash_ld=eagle.flash.8m.ld +generic.menu.FlashSize.8M.build.spiffs_start=0x100000 +generic.menu.FlashSize.8M.build.spiffs_end=0x800000 +generic.menu.FlashSize.8M.build.spiffs_blocksize=8192 + +generic.menu.FlashSize.16M=16M (15M SPIFFS) +generic.menu.FlashSize.16M.build.flash_size=16M +generic.menu.FlashSize.16M.build.flash_ld=eagle.flash.16m.ld +generic.menu.FlashSize.16M.build.spiffs_start=0x100000 +generic.menu.FlashSize.16M.build.spiffs_end=0x1000000 +generic.menu.FlashSize.16M.build.spiffs_blocksize=8192 + +generic.menu.ResetMethod.ck=ck +generic.menu.ResetMethod.ck.upload.resetmethod=ck +generic.menu.ResetMethod.nodemcu=nodemcu +generic.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu + +generic.menu.Debug.Disabled=Disabled +generic.menu.Debug.Disabled.build.debug_port= +generic.menu.Debug.Serial=Serial +generic.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +generic.menu.Debug.Serial1=Serial1 +generic.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 + +generic.menu.DebugLevel.None____=None +generic.menu.DebugLevel.None____.build.debug_level= +generic.menu.DebugLevel.Core____=Core +generic.menu.DebugLevel.Core____.build.debug_level=-DDEBUG_ESP_CORE +generic.menu.DebugLevel.SSL_____=Core + SSL +generic.menu.DebugLevel.SSL_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL +generic.menu.DebugLevel.SSL_MEM_=Core + SSL + TLS Mem +generic.menu.DebugLevel.SSL_MEM_.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_TLS_MEM +generic.menu.DebugLevel.WiFic___=Core + WiFi +generic.menu.DebugLevel.WiFic___.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI +generic.menu.DebugLevel.WiFi____=WiFi +generic.menu.DebugLevel.WiFi____.build.debug_level=-DDEBUG_ESP_WIFI +generic.menu.DebugLevel.HTTPClient=HTTPClient +generic.menu.DebugLevel.HTTPClient.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT +generic.menu.DebugLevel.HTTPClient2=HTTPClient + SSL +generic.menu.DebugLevel.HTTPClient2.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_SSL +generic.menu.DebugLevel.HTTPUpdate=HTTPUpdate +generic.menu.DebugLevel.HTTPUpdate.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE +generic.menu.DebugLevel.HTTPUpdate2=HTTPClient + HTTPUpdate +generic.menu.DebugLevel.HTTPUpdate2.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE +generic.menu.DebugLevel.HTTPUpdate3=HTTPClient + HTTPUpdate + Updater +generic.menu.DebugLevel.HTTPUpdate3.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER +generic.menu.DebugLevel.HTTPServer=HTTPServer +generic.menu.DebugLevel.HTTPServer.build.debug_level=-DDEBUG_ESP_HTTP_SERVER +generic.menu.DebugLevel.UPDATER=Updater +generic.menu.DebugLevel.UPDATER.build.debug_level=-DDEBUG_ESP_UPDATER +generic.menu.DebugLevel.OTA_____=OTA +generic.menu.DebugLevel.OTA_____.build.debug_level=-DDEBUG_ESP_OTA +generic.menu.DebugLevel.OTA2____=OTA + Updater +generic.menu.DebugLevel.OTA2____.build.debug_level=-DDEBUG_ESP_OTA -DDEBUG_ESP_UPDATER +generic.menu.DebugLevel.all_____=All +generic.menu.DebugLevel.all_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM + + +############################################################## +# ESP8285 chip has built-in 1MB flash + +esp8285.name=Generic ESP8285 Module + +esp8285.upload.tool=esptool +esp8285.upload.speed=115200 +esp8285.upload.resetmethod=ck +esp8285.upload.maximum_size=434160 +esp8285.upload.maximum_data_size=81920 +esp8285.upload.wait_for_upload_port=true +esp8285.serial.disableDTR=true +esp8285.serial.disableRTS=true + +esp8285.build.mcu=esp8266 +esp8285.build.f_cpu=80000000L +esp8285.build.board=ESP8266_ESP01 +esp8285.build.core=esp8266 +esp8285.build.variant=generic +esp8285.build.flash_mode=dout +esp8285.build.flash_freq=40 +esp8285.build.spiffs_pagesize=256 +esp8285.build.debug_port= +esp8285.build.debug_level= + +esp8285.menu.UploadTool.esptool=Serial +esp8285.menu.UploadTool.esptool.upload.tool=esptool +esp8285.menu.UploadTool.esptool.upload.verbose=-vv +esp8285.menu.UploadTool.espupload=OTA_upload +esp8285.menu.UploadTool.espupload.upload.tool=espupload + +esp8285.menu.CpuFrequency.80=80 MHz +esp8285.menu.CpuFrequency.80.build.f_cpu=80000000L +esp8285.menu.CpuFrequency.160=160 MHz +esp8285.menu.CpuFrequency.160.build.f_cpu=160000000L + +esp8285.menu.UploadSpeed.115200=115200 +esp8285.menu.UploadSpeed.115200.upload.speed=115200 +esp8285.menu.UploadSpeed.9600=9600 +esp8285.menu.UploadSpeed.9600.upload.speed=9600 +esp8285.menu.UploadSpeed.57600=57600 +esp8285.menu.UploadSpeed.57600.upload.speed=57600 +esp8285.menu.UploadSpeed.256000.windows=256000 +esp8285.menu.UploadSpeed.256000.upload.speed=256000 +esp8285.menu.UploadSpeed.230400.linux=230400 +esp8285.menu.UploadSpeed.230400.macosx=230400 +esp8285.menu.UploadSpeed.230400.upload.speed=230400 +esp8285.menu.UploadSpeed.460800.linux=460800 +esp8285.menu.UploadSpeed.460800.macosx=460800 +esp8285.menu.UploadSpeed.460800.upload.speed=460800 +esp8285.menu.UploadSpeed.512000.windows=512000 +esp8285.menu.UploadSpeed.512000.upload.speed=512000 +esp8285.menu.UploadSpeed.921600=921600 +esp8285.menu.UploadSpeed.921600.upload.speed=921600 + +esp8285.menu.FlashSize.1M512=1M (512K SPIFFS) +esp8285.menu.FlashSize.1M512.build.flash_size=1M +esp8285.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld +esp8285.menu.FlashSize.1M512.build.spiffs_start=0x7B000 +esp8285.menu.FlashSize.1M512.build.spiffs_end=0xFB000 +esp8285.menu.FlashSize.1M512.build.spiffs_blocksize=8192 +esp8285.menu.FlashSize.1M512.upload.maximum_size=499696 + +esp8285.menu.FlashSize.1M256=1M (256K SPIFFS) +esp8285.menu.FlashSize.1M256.build.flash_size=1M +esp8285.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld +esp8285.menu.FlashSize.1M256.build.spiffs_start=0xBB000 +esp8285.menu.FlashSize.1M256.build.spiffs_end=0xFB000 +esp8285.menu.FlashSize.1M256.build.spiffs_blocksize=4096 +esp8285.menu.FlashSize.1M256.upload.maximum_size=761840 + +esp8285.menu.FlashSize.1M192=1M (192K SPIFFS) +esp8285.menu.FlashSize.1M192.build.flash_size=1M +esp8285.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld +esp8285.menu.FlashSize.1M192.build.spiffs_start=0xCB000 +esp8285.menu.FlashSize.1M192.build.spiffs_end=0xFB000 +esp8285.menu.FlashSize.1M192.build.spiffs_blocksize=4096 +esp8285.menu.FlashSize.1M192.upload.maximum_size=827376 + +esp8285.menu.FlashSize.1M160=1M (160K SPIFFS) +esp8285.menu.FlashSize.1M160.build.flash_size=1M +esp8285.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld +esp8285.menu.FlashSize.1M160.build.spiffs_start=0xD3000 +esp8285.menu.FlashSize.1M160.build.spiffs_end=0xFB000 +esp8285.menu.FlashSize.1M160.build.spiffs_blocksize=4096 +esp8285.menu.FlashSize.1M160.upload.maximum_size=860144 + +esp8285.menu.FlashSize.1M144=1M (144K SPIFFS) +esp8285.menu.FlashSize.1M144.build.flash_size=1M +esp8285.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld +esp8285.menu.FlashSize.1M144.build.spiffs_start=0xD7000 +esp8285.menu.FlashSize.1M144.build.spiffs_end=0xFB000 +esp8285.menu.FlashSize.1M144.build.spiffs_blocksize=4096 +esp8285.menu.FlashSize.1M144.upload.maximum_size=876528 + +esp8285.menu.FlashSize.1M128=1M (128K SPIFFS) +esp8285.menu.FlashSize.1M128.build.flash_size=1M +esp8285.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld +esp8285.menu.FlashSize.1M128.build.spiffs_start=0xDB000 +esp8285.menu.FlashSize.1M128.build.spiffs_end=0xFB000 +esp8285.menu.FlashSize.1M128.build.spiffs_blocksize=4096 +esp8285.menu.FlashSize.1M128.upload.maximum_size=892912 + +esp8285.menu.FlashSize.1M64=1M (64K SPIFFS) +esp8285.menu.FlashSize.1M64.build.flash_size=1M +esp8285.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld +esp8285.menu.FlashSize.1M64.build.spiffs_start=0xEB000 +esp8285.menu.FlashSize.1M64.build.spiffs_end=0xFB000 +esp8285.menu.FlashSize.1M64.build.spiffs_blocksize=4096 +esp8285.menu.FlashSize.1M64.upload.maximum_size=958448 + +esp8285.menu.FlashSize.1M0=1M (no SPIFFS) +esp8285.menu.FlashSize.1M0.build.flash_size=1M +esp8285.menu.FlashSize.1M0.build.flash_ld=eagle.flash.1m0.ld +esp8285.menu.FlashSize.1M0.upload.maximum_size=1023984 + +############################################################## + +espduino.name=ESPDuino (ESP-13 Module) + +espduino.upload.tool=esptool +espduino.upload.speed=115200 +espduino.upload.resetmethod=ck +espduino.upload.maximum_size=1044464 +espduino.upload.maximum_data_size=81920 +espduino.upload.wait_for_upload_port=true +espduino.serial.disableDTR=true +espduino.serial.disableRTS=true + +espduino.build.mcu=esp8266 +espduino.build.f_cpu=80000000L +espduino.build.board=ESP8266_ESP13 +espduino.build.core=esp8266 +espduino.build.variant=ESPDuino +espduino.build.flash_mode=dio +espduino.build.flash_size=4M +espduino.build.flash_freq=40 +espduino.build.debug_port= +espduino.build.debug_level= + +espduino.menu.CpuFrequency.80=80 MHz +espduino.menu.CpuFrequency.80.build.f_cpu=80000000L +espduino.menu.CpuFrequency.160=160 MHz +espduino.menu.CpuFrequency.160.build.f_cpu=160000000L + +espduino.menu.UploadSpeed.115200=115200 +espduino.menu.UploadSpeed.115200.upload.speed=115200 +espduino.menu.UploadSpeed.9600=9600 +espduino.menu.UploadSpeed.9600.upload.speed=9600 +espduino.menu.UploadSpeed.57600=57600 +espduino.menu.UploadSpeed.57600.upload.speed=57600 +espduino.menu.UploadSpeed.256000.windows=256000 +espduino.menu.UploadSpeed.256000.upload.speed=256000 +espduino.menu.UploadSpeed.230400.linux=230400 +espduino.menu.UploadSpeed.230400.macosx=230400 +espduino.menu.UploadSpeed.230400.macosx=230400 +espduino.menu.UploadSpeed.230400.upload.speed=230400 +espduino.menu.UploadSpeed.460800.linux=460800 +espduino.menu.UploadSpeed.460800.macosx=460800 +espduino.menu.UploadSpeed.460800.upload.speed=460800 +espduino.menu.UploadSpeed.512000.windows=512000 +espduino.menu.UploadSpeed.512000.upload.speed=512000 +espduino.menu.UploadSpeed.921600=921600 +espduino.menu.UploadSpeed.921600.upload.speed=921600 + +espduino.menu.FlashSize.4M3M=4M (3M SPIFFS) +espduino.menu.FlashSize.4M3M.build.flash_size=4M +espduino.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +espduino.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +espduino.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +espduino.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +espduino.menu.FlashSize.4M3M.build.spiffs_pagesize=256 + +espduino.menu.FlashSize.4M1M=4M (1M SPIFFS) +espduino.menu.FlashSize.4M1M.build.flash_size=4M +espduino.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +espduino.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +espduino.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +espduino.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +espduino.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +############################################################## +huzzah.name=Adafruit HUZZAH ESP8266 + +huzzah.upload.tool=esptool +huzzah.upload.speed=115200 +huzzah.upload.resetmethod=nodemcu +huzzah.upload.maximum_size=1044464 +huzzah.upload.maximum_data_size=81920 +huzzah.upload.wait_for_upload_port=true +huzzah.serial.disableDTR=true +huzzah.serial.disableRTS=true + +huzzah.build.mcu=esp8266 +huzzah.build.f_cpu=80000000L +huzzah.build.board=ESP8266_ESP12 +huzzah.build.core=esp8266 +huzzah.build.variant=adafruit +huzzah.build.flash_mode=qio +huzzah.build.flash_size=4M +huzzah.build.flash_freq=40 +huzzah.build.debug_port= +huzzah.build.debug_level= + +huzzah.menu.CpuFrequency.80=80 MHz +huzzah.menu.CpuFrequency.80.build.f_cpu=80000000L +huzzah.menu.CpuFrequency.160=160 MHz +huzzah.menu.CpuFrequency.160.build.f_cpu=160000000L + +huzzah.menu.UploadSpeed.115200=115200 +huzzah.menu.UploadSpeed.115200.upload.speed=115200 +huzzah.menu.UploadSpeed.9600=9600 +huzzah.menu.UploadSpeed.9600.upload.speed=9600 +huzzah.menu.UploadSpeed.57600=57600 +huzzah.menu.UploadSpeed.57600.upload.speed=57600 +huzzah.menu.UploadSpeed.256000=256000 +huzzah.menu.UploadSpeed.256000.upload.speed=256000 +huzzah.menu.UploadSpeed.921600=921600 +huzzah.menu.UploadSpeed.921600.upload.speed=921600 + +huzzah.menu.FlashSize.4M3M=4M (3M SPIFFS) +huzzah.menu.FlashSize.4M3M.build.flash_size=4M +huzzah.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +huzzah.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +huzzah.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +huzzah.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +huzzah.menu.FlashSize.4M3M.build.spiffs_pagesize=256 + +huzzah.menu.FlashSize.4M1M=4M (1M SPIFFS) +huzzah.menu.FlashSize.4M1M.build.flash_size=4M +huzzah.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +huzzah.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +huzzah.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +huzzah.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +huzzah.menu.FlashSize.4M1M.build.spiffs_pagesize=256 + +############################################################## +espresso_lite_v1.name=ESPresso Lite 1.0 +espresso_lite_v1.upload.tool=esptool +espresso_lite_v1.upload.speed=115200 +espresso_lite_v1.upload.maximum_size=1044464 +espresso_lite_v1.upload.maximum_data_size=81920 +espresso_lite_v1.upload.wait_for_upload_port=true + +espresso_lite_v1.build.mcu=esp8266 +espresso_lite_v1.build.f_cpu=80000000L +espresso_lite_v1.build.board=ESP8266_ESPRESSO_LITE_V1 +espresso_lite_v1.build.core=esp8266 +espresso_lite_v1.build.variant=espresso_lite_v1 +espresso_lite_v1.build.flash_mode=dio +espresso_lite_v1.build.flash_size=4M +espresso_lite_v1.build.flash_freq=40 + +espresso_lite_v1.menu.CpuFrequency.80=80 MHz +espresso_lite_v1.menu.CpuFrequency.80.build.f_cpu=80000000L +espresso_lite_v1.menu.CpuFrequency.160=160 MHz +espresso_lite_v1.menu.CpuFrequency.160.build.f_cpu=160000000L + +espresso_lite_v1.menu.UploadSpeed.115200=115200 +espresso_lite_v1.menu.UploadSpeed.115200.upload.speed=115200 +espresso_lite_v1.menu.UploadSpeed.57600=57600 +espresso_lite_v1.menu.UploadSpeed.57600.upload.speed=57600 +espresso_lite_v1.menu.UploadSpeed.256000.windows=256000 +espresso_lite_v1.menu.UploadSpeed.256000.upload.speed=256000 +espresso_lite_v1.menu.UploadSpeed.230400.linux=230400 +espresso_lite_v1.menu.UploadSpeed.230400.macosx=230400 +espresso_lite_v1.menu.UploadSpeed.230400.macosx=230400 +espresso_lite_v1.menu.UploadSpeed.230400.upload.speed=230400 +espresso_lite_v1.menu.UploadSpeed.460800.linux=460800 +espresso_lite_v1.menu.UploadSpeed.460800.macosx=460800 +espresso_lite_v1.menu.UploadSpeed.460800.upload.speed=460800 +espresso_lite_v1.menu.UploadSpeed.512000.windows=512000 +espresso_lite_v1.menu.UploadSpeed.512000.upload.speed=512000 +espresso_lite_v1.menu.UploadSpeed.921600=921600 +espresso_lite_v1.menu.UploadSpeed.921600.upload.speed=921600 + +espresso_lite_v1.menu.FlashSize.4M3M=4M (3M SPIFFS) +espresso_lite_v1.menu.FlashSize.4M3M.build.flash_size=4M +espresso_lite_v1.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +espresso_lite_v1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +espresso_lite_v1.menu.FlashSize.4M3M.upload.maximum_size=1044464 + +espresso_lite_v1.menu.FlashSize.4M1M=4M (1M SPIFFS) +espresso_lite_v1.menu.FlashSize.4M1M.build.flash_size=4M +espresso_lite_v1.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +espresso_lite_v1.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +espresso_lite_v1.menu.FlashSize.4M1M.upload.maximum_size=1044464 + +espresso_lite_v1.menu.ResetMethod.nodemcu=nodemcu +espresso_lite_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu +espresso_lite_v1.menu.ResetMethod.ck=ck +espresso_lite_v1.menu.ResetMethod.ck.upload.resetmethod=ck + +espresso_lite_v1.menu.Debug.Disabled=Disabled +espresso_lite_v1.menu.Debug.Disabled.build.debug_port= +espresso_lite_v1.menu.Debug.Serial=Serial +espresso_lite_v1.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +espresso_lite_v1.menu.Debug.Serial1=Serial1 +espresso_lite_v1.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 + +espresso_lite_v1.menu.DebugLevel.None____=None +espresso_lite_v1.menu.DebugLevel.None____.build.debug_level= +espresso_lite_v1.menu.DebugLevel.Core____=Core +espresso_lite_v1.menu.DebugLevel.Core____.build.debug_level=-DDEBUG_ESP_CORE +espresso_lite_v1.menu.DebugLevel.SSL_____=Core + SSL +espresso_lite_v1.menu.DebugLevel.SSL_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL +espresso_lite_v1.menu.DebugLevel.SSL_MEM_=Core + SSL + TLS Mem +espresso_lite_v1.menu.DebugLevel.SSL_MEM_.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_TLS_MEM +espresso_lite_v1.menu.DebugLevel.WiFic___=Core + WiFi +espresso_lite_v1.menu.DebugLevel.WiFic___.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI +espresso_lite_v1.menu.DebugLevel.WiFi____=WiFi +espresso_lite_v1.menu.DebugLevel.WiFi____.build.debug_level=-DDEBUG_ESP_WIFI +espresso_lite_v1.menu.DebugLevel.HTTPClient=HTTPClient +espresso_lite_v1.menu.DebugLevel.HTTPClient.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT +espresso_lite_v1.menu.DebugLevel.HTTPClient2=HTTPClient + SSL +espresso_lite_v1.menu.DebugLevel.HTTPClient2.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_SSL +espresso_lite_v1.menu.DebugLevel.HTTPUpdate=HTTPUpdate +espresso_lite_v1.menu.DebugLevel.HTTPUpdate.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE +espresso_lite_v1.menu.DebugLevel.HTTPUpdate2=HTTPClient + HTTPUpdate +espresso_lite_v1.menu.DebugLevel.HTTPUpdate2.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE +espresso_lite_v1.menu.DebugLevel.HTTPUpdate3=HTTPClient + HTTPUpdate + Updater +espresso_lite_v1.menu.DebugLevel.HTTPUpdate3.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER +espresso_lite_v1.menu.DebugLevel.HTTPServer=HTTPServer +espresso_lite_v1.menu.DebugLevel.HTTPServer.build.debug_level=-DDEBUG_ESP_HTTP_SERVER +espresso_lite_v1.menu.DebugLevel.UPDATER=Updater +espresso_lite_v1.menu.DebugLevel.UPDATER.build.debug_level=-DDEBUG_ESP_UPDATER +espresso_lite_v1.menu.DebugLevel.OTA_____=OTA +espresso_lite_v1.menu.DebugLevel.OTA_____.build.debug_level=-DDEBUG_ESP_OTA +espresso_lite_v1.menu.DebugLevel.OTA2____=OTA + Updater +espresso_lite_v1.menu.DebugLevel.OTA2____.build.debug_level=-DDEBUG_ESP_OTA -DDEBUG_ESP_UPDATER +espresso_lite_v1.menu.DebugLevel.all_____=All +espresso_lite_v1.menu.DebugLevel.all_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM + +espresso_lite_v1.build.debug_port= +espresso_lite_v1.build.debug_level= + +############################################################## +espresso_lite_v2.name=ESPresso Lite 2.0 +espresso_lite_v2.upload.tool=esptool +espresso_lite_v2.upload.speed=115200 +espresso_lite_v2.upload.maximum_size=1044464 +espresso_lite_v2.upload.maximum_data_size=81920 +espresso_lite_v2.upload.wait_for_upload_port=true + +espresso_lite_v2.build.mcu=esp8266 +espresso_lite_v2.build.f_cpu=80000000L +espresso_lite_v2.build.board=ESP8266_ESPRESSO_LITE_V2 +espresso_lite_v2.build.core=esp8266 +espresso_lite_v2.build.variant=espresso_lite_v2 +espresso_lite_v2.build.flash_mode=dio +espresso_lite_v2.build.flash_size=4M +espresso_lite_v2.build.flash_freq=40 + +espresso_lite_v2.menu.CpuFrequency.80=80 MHz +espresso_lite_v2.menu.CpuFrequency.80.build.f_cpu=80000000L +espresso_lite_v2.menu.CpuFrequency.160=160 MHz +espresso_lite_v2.menu.CpuFrequency.160.build.f_cpu=160000000L + +espresso_lite_v2.menu.UploadSpeed.115200=115200 +espresso_lite_v2.menu.UploadSpeed.115200.upload.speed=115200 +espresso_lite_v2.menu.UploadSpeed.57600=57600 +espresso_lite_v2.menu.UploadSpeed.57600.upload.speed=57600 +espresso_lite_v2.menu.UploadSpeed.256000.windows=256000 +espresso_lite_v2.menu.UploadSpeed.256000.upload.speed=256000 +espresso_lite_v2.menu.UploadSpeed.230400.linux=230400 +espresso_lite_v2.menu.UploadSpeed.230400.macosx=230400 +espresso_lite_v2.menu.UploadSpeed.230400.macosx=230400 +espresso_lite_v2.menu.UploadSpeed.230400.upload.speed=230400 +espresso_lite_v2.menu.UploadSpeed.460800.linux=460800 +espresso_lite_v2.menu.UploadSpeed.460800.macosx=460800 +espresso_lite_v2.menu.UploadSpeed.460800.upload.speed=460800 +espresso_lite_v2.menu.UploadSpeed.512000.windows=512000 +espresso_lite_v2.menu.UploadSpeed.512000.upload.speed=512000 +espresso_lite_v2.menu.UploadSpeed.921600=921600 +espresso_lite_v2.menu.UploadSpeed.921600.upload.speed=921600 + +espresso_lite_v2.menu.FlashSize.4M3M=4M (3M SPIFFS) +espresso_lite_v2.menu.FlashSize.4M3M.build.flash_size=4M +espresso_lite_v2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +espresso_lite_v2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +espresso_lite_v2.menu.FlashSize.4M3M.upload.maximum_size=1044464 + +espresso_lite_v2.menu.FlashSize.4M1M=4M (1M SPIFFS) +espresso_lite_v2.menu.FlashSize.4M1M.build.flash_size=4M +espresso_lite_v2.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +espresso_lite_v2.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +espresso_lite_v2.menu.FlashSize.4M1M.upload.maximum_size=1044464 + +espresso_lite_v2.menu.ResetMethod.ck=ck +espresso_lite_v2.menu.ResetMethod.ck.upload.resetmethod=ck +espresso_lite_v2.menu.ResetMethod.nodemcu=nodemcu +espresso_lite_v2.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu + +espresso_lite_v2.menu.Debug.Disabled=Disabled +espresso_lite_v2.menu.Debug.Disabled.build.debug_port= +espresso_lite_v2.menu.Debug.Serial=Serial +espresso_lite_v2.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +espresso_lite_v2.menu.Debug.Serial1=Serial1 +espresso_lite_v2.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 + +espresso_lite_v2.menu.DebugLevel.None____=None +espresso_lite_v2.menu.DebugLevel.None____.build.debug_level= +espresso_lite_v2.menu.DebugLevel.Core____=Core +espresso_lite_v2.menu.DebugLevel.Core____.build.debug_level=-DDEBUG_ESP_CORE +espresso_lite_v2.menu.DebugLevel.SSL_____=Core + SSL +espresso_lite_v2.menu.DebugLevel.SSL_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL +espresso_lite_v2.menu.DebugLevel.SSL_MEM_=Core + SSL + TLS Mem +espresso_lite_v2.menu.DebugLevel.SSL_MEM_.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_TLS_MEM +espresso_lite_v2.menu.DebugLevel.WiFic___=Core + WiFi +espresso_lite_v2.menu.DebugLevel.WiFic___.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI +espresso_lite_v2.menu.DebugLevel.WiFi____=WiFi +espresso_lite_v2.menu.DebugLevel.WiFi____.build.debug_level=-DDEBUG_ESP_WIFI +espresso_lite_v2.menu.DebugLevel.HTTPClient=HTTPClient +espresso_lite_v2.menu.DebugLevel.HTTPClient.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT +espresso_lite_v2.menu.DebugLevel.HTTPClient2=HTTPClient + SSL +espresso_lite_v2.menu.DebugLevel.HTTPClient2.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_SSL +espresso_lite_v2.menu.DebugLevel.HTTPUpdate=HTTPUpdate +espresso_lite_v2.menu.DebugLevel.HTTPUpdate.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE +espresso_lite_v2.menu.DebugLevel.HTTPUpdate2=HTTPClient + HTTPUpdate +espresso_lite_v2.menu.DebugLevel.HTTPUpdate2.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE +espresso_lite_v2.menu.DebugLevel.HTTPUpdate3=HTTPClient + HTTPUpdate + Updater +espresso_lite_v2.menu.DebugLevel.HTTPUpdate3.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER +espresso_lite_v2.menu.DebugLevel.HTTPServer=HTTPServer +espresso_lite_v2.menu.DebugLevel.HTTPServer.build.debug_level=-DDEBUG_ESP_HTTP_SERVER +espresso_lite_v2.menu.DebugLevel.UPDATER=Updater +espresso_lite_v2.menu.DebugLevel.UPDATER.build.debug_level=-DDEBUG_ESP_UPDATER +espresso_lite_v2.menu.DebugLevel.OTA_____=OTA +espresso_lite_v2.menu.DebugLevel.OTA_____.build.debug_level=-DDEBUG_ESP_OTA +espresso_lite_v2.menu.DebugLevel.OTA2____=OTA + Updater +espresso_lite_v2.menu.DebugLevel.OTA2____.build.debug_level=-DDEBUG_ESP_OTA -DDEBUG_ESP_UPDATER +espresso_lite_v2.menu.DebugLevel.all_____=All +espresso_lite_v2.menu.DebugLevel.all_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM + +espresso_lite_v2.build.debug_port= +espresso_lite_v2.build.debug_level= + +############################################################## +phoenix_v1.name=Phoenix 1.0 +phoenix_v1.upload.tool=esptool +phoenix_v1.upload.speed=115200 +phoenix_v1.upload.maximum_size=1044464 +phoenix_v1.upload.maximum_data_size=81920 +phoenix_v1.upload.wait_for_upload_port=true + +phoenix_v1.build.mcu=esp8266 +phoenix_v1.build.f_cpu=80000000L +phoenix_v1.build.board=ESP8266_PHOENIX_V1 +phoenix_v1.build.core=esp8266 +phoenix_v1.build.variant=phoenix_v1 +phoenix_v1.build.flash_mode=dio +phoenix_v1.build.flash_size=4M +phoenix_v1.build.flash_freq=40 + +phoenix_v1.menu.CpuFrequency.80=80 MHz +phoenix_v1.menu.CpuFrequency.80.build.f_cpu=80000000L +phoenix_v1.menu.CpuFrequency.160=160 MHz +phoenix_v1.menu.CpuFrequency.160.build.f_cpu=160000000L + +phoenix_v1.menu.UploadSpeed.115200=115200 +phoenix_v1.menu.UploadSpeed.115200.upload.speed=115200 +phoenix_v1.menu.UploadSpeed.57600=57600 +phoenix_v1.menu.UploadSpeed.57600.upload.speed=57600 +phoenix_v1.menu.UploadSpeed.256000.windows=256000 +phoenix_v1.menu.UploadSpeed.256000.upload.speed=256000 +phoenix_v1.menu.UploadSpeed.230400.linux=230400 +phoenix_v1.menu.UploadSpeed.230400.macosx=230400 +phoenix_v1.menu.UploadSpeed.230400.macosx=230400 +phoenix_v1.menu.UploadSpeed.230400.upload.speed=230400 +phoenix_v1.menu.UploadSpeed.460800.linux=460800 +phoenix_v1.menu.UploadSpeed.460800.macosx=460800 +phoenix_v1.menu.UploadSpeed.460800.upload.speed=460800 +phoenix_v1.menu.UploadSpeed.512000.windows=512000 +phoenix_v1.menu.UploadSpeed.512000.upload.speed=512000 +phoenix_v1.menu.UploadSpeed.921600=921600 +phoenix_v1.menu.UploadSpeed.921600.upload.speed=921600 + +phoenix_v1.menu.FlashSize.4M3M=4M (3M SPIFFS) +phoenix_v1.menu.FlashSize.4M3M.build.flash_size=4M +phoenix_v1.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +phoenix_v1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +phoenix_v1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +phoenix_v1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +phoenix_v1.menu.FlashSize.4M3M.upload.maximum_size=1044464 + +phoenix_v1.menu.FlashSize.4M1M=4M (1M SPIFFS) +phoenix_v1.menu.FlashSize.4M1M.build.flash_size=4M +phoenix_v1.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +phoenix_v1.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +phoenix_v1.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +phoenix_v1.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +phoenix_v1.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +phoenix_v1.menu.FlashSize.4M1M.upload.maximum_size=1044464 + +phoenix_v1.menu.ResetMethod.nodemcu=nodemcu +phoenix_v1.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu +phoenix_v1.menu.ResetMethod.ck=ck +phoenix_v1.menu.ResetMethod.ck.upload.resetmethod=ck + +phoenix_v1.menu.Debug.Disabled=Disabled +phoenix_v1.menu.Debug.Disabled.build.debug_port= +phoenix_v1.menu.Debug.Serial=Serial +phoenix_v1.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +phoenix_v1.menu.Debug.Serial1=Serial1 +phoenix_v1.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 + +phoenix_v1.menu.DebugLevel.None____=None +phoenix_v1.menu.DebugLevel.None____.build.debug_level= +phoenix_v1.menu.DebugLevel.Core____=Core +phoenix_v1.menu.DebugLevel.Core____.build.debug_level=-DDEBUG_ESP_CORE +phoenix_v1.menu.DebugLevel.SSL_____=Core + SSL +phoenix_v1.menu.DebugLevel.SSL_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL +phoenix_v1.menu.DebugLevel.SSL_MEM_=Core + SSL + TLS Mem +phoenix_v1.menu.DebugLevel.SSL_MEM_.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_TLS_MEM +phoenix_v1.menu.DebugLevel.WiFic___=Core + WiFi +phoenix_v1.menu.DebugLevel.WiFic___.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI +phoenix_v1.menu.DebugLevel.WiFi____=WiFi +phoenix_v1.menu.DebugLevel.WiFi____.build.debug_level=-DDEBUG_ESP_WIFI +phoenix_v1.menu.DebugLevel.HTTPClient=HTTPClient +phoenix_v1.menu.DebugLevel.HTTPClient.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT +phoenix_v1.menu.DebugLevel.HTTPClient2=HTTPClient + SSL +phoenix_v1.menu.DebugLevel.HTTPClient2.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_SSL +phoenix_v1.menu.DebugLevel.HTTPUpdate=HTTPUpdate +phoenix_v1.menu.DebugLevel.HTTPUpdate.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE +phoenix_v1.menu.DebugLevel.HTTPUpdate2=HTTPClient + HTTPUpdate +phoenix_v1.menu.DebugLevel.HTTPUpdate2.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE +phoenix_v1.menu.DebugLevel.HTTPUpdate3=HTTPClient + HTTPUpdate + Updater +phoenix_v1.menu.DebugLevel.HTTPUpdate3.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER +phoenix_v1.menu.DebugLevel.HTTPServer=HTTPServer +phoenix_v1.menu.DebugLevel.HTTPServer.build.debug_level=-DDEBUG_ESP_HTTP_SERVER +phoenix_v1.menu.DebugLevel.UPDATER=Updater +phoenix_v1.menu.DebugLevel.UPDATER.build.debug_level=-DDEBUG_ESP_UPDATER +phoenix_v1.menu.DebugLevel.OTA_____=OTA +phoenix_v1.menu.DebugLevel.OTA_____.build.debug_level=-DDEBUG_ESP_OTA +phoenix_v1.menu.DebugLevel.OTA2____=OTA + Updater +phoenix_v1.menu.DebugLevel.OTA2____.build.debug_level=-DDEBUG_ESP_OTA -DDEBUG_ESP_UPDATER +phoenix_v1.menu.DebugLevel.all_____=All +phoenix_v1.menu.DebugLevel.all_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM + +phoenix_v1.build.debug_port= +phoenix_v1.build.debug_level= + +############################################################## +phoenix_v2.name=Phoenix 2.0 +phoenix_v2.upload.tool=esptool +phoenix_v2.upload.speed=115200 +phoenix_v2.upload.maximum_size=1044464 +phoenix_v2.upload.maximum_data_size=81920 +phoenix_v2.upload.wait_for_upload_port=true + +phoenix_v2.build.mcu=esp8266 +phoenix_v2.build.f_cpu=80000000L +phoenix_v2.build.board=ESP8266_PHOENIX_V2 +phoenix_v2.build.core=esp8266 +phoenix_v2.build.variant=phoenix_v2 +phoenix_v2.build.flash_mode=dio +phoenix_v2.build.flash_size=4M +phoenix_v2.build.flash_freq=40 + +phoenix_v2.menu.CpuFrequency.80=80 MHz +phoenix_v2.menu.CpuFrequency.80.build.f_cpu=80000000L +phoenix_v2.menu.CpuFrequency.160=160 MHz +phoenix_v2.menu.CpuFrequency.160.build.f_cpu=160000000L + +phoenix_v2.menu.UploadSpeed.115200=115200 +phoenix_v2.menu.UploadSpeed.115200.upload.speed=115200 +phoenix_v2.menu.UploadSpeed.57600=57600 +phoenix_v2.menu.UploadSpeed.57600.upload.speed=57600 +phoenix_v2.menu.UploadSpeed.256000.windows=256000 +phoenix_v2.menu.UploadSpeed.256000.upload.speed=256000 +phoenix_v2.menu.UploadSpeed.230400.linux=230400 +phoenix_v2.menu.UploadSpeed.230400.macosx=230400 +phoenix_v2.menu.UploadSpeed.230400.macosx=230400 +phoenix_v2.menu.UploadSpeed.230400.upload.speed=230400 +phoenix_v2.menu.UploadSpeed.460800.linux=460800 +phoenix_v2.menu.UploadSpeed.460800.macosx=460800 +phoenix_v2.menu.UploadSpeed.460800.upload.speed=460800 +phoenix_v2.menu.UploadSpeed.512000.windows=512000 +phoenix_v2.menu.UploadSpeed.512000.upload.speed=512000 +phoenix_v2.menu.UploadSpeed.921600=921600 +phoenix_v2.menu.UploadSpeed.921600.upload.speed=921600 + +phoenix_v2.menu.FlashSize.4M3M=4M (3M SPIFFS) +phoenix_v2.menu.FlashSize.4M3M.build.flash_size=4M +phoenix_v2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +phoenix_v2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +phoenix_v2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +phoenix_v2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +phoenix_v2.menu.FlashSize.4M3M.upload.maximum_size=1044464 + +phoenix_v2.menu.FlashSize.4M1M=4M (1M SPIFFS) +phoenix_v2.menu.FlashSize.4M1M.build.flash_size=4M +phoenix_v2.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +phoenix_v2.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +phoenix_v2.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +phoenix_v2.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +phoenix_v2.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +phoenix_v2.menu.FlashSize.4M1M.upload.maximum_size=1044464 + +phoenix_v2.menu.ResetMethod.ck=ck +phoenix_v2.menu.ResetMethod.ck.upload.resetmethod=ck +phoenix_v2.menu.ResetMethod.nodemcu=nodemcu +phoenix_v2.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu + +phoenix_v2.menu.Debug.Disabled=Disabled +phoenix_v2.menu.Debug.Disabled.build.debug_port= +phoenix_v2.menu.Debug.Serial=Serial +phoenix_v2.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +phoenix_v2.menu.Debug.Serial1=Serial1 +phoenix_v2.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 + +phoenix_v2.menu.DebugLevel.None____=None +phoenix_v2.menu.DebugLevel.None____.build.debug_level= +phoenix_v2.menu.DebugLevel.Core____=Core +phoenix_v2.menu.DebugLevel.Core____.build.debug_level=-DDEBUG_ESP_CORE +phoenix_v2.menu.DebugLevel.SSL_____=Core + SSL +phoenix_v2.menu.DebugLevel.SSL_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL +phoenix_v2.menu.DebugLevel.SSL_MEM_=Core + SSL + TLS Mem +phoenix_v2.menu.DebugLevel.SSL_MEM_.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_TLS_MEM +phoenix_v2.menu.DebugLevel.WiFic___=Core + WiFi +phoenix_v2.menu.DebugLevel.WiFic___.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI +phoenix_v2.menu.DebugLevel.WiFi____=WiFi +phoenix_v2.menu.DebugLevel.WiFi____.build.debug_level=-DDEBUG_ESP_WIFI +phoenix_v2.menu.DebugLevel.HTTPClient=HTTPClient +phoenix_v2.menu.DebugLevel.HTTPClient.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT +phoenix_v2.menu.DebugLevel.HTTPClient2=HTTPClient + SSL +phoenix_v2.menu.DebugLevel.HTTPClient2.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_SSL +phoenix_v2.menu.DebugLevel.HTTPUpdate=HTTPUpdate +phoenix_v2.menu.DebugLevel.HTTPUpdate.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE +phoenix_v2.menu.DebugLevel.HTTPUpdate2=HTTPClient + HTTPUpdate +phoenix_v2.menu.DebugLevel.HTTPUpdate2.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE +phoenix_v2.menu.DebugLevel.HTTPUpdate3=HTTPClient + HTTPUpdate + Updater +phoenix_v2.menu.DebugLevel.HTTPUpdate3.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER +phoenix_v2.menu.DebugLevel.HTTPServer=HTTPServer +phoenix_v2.menu.DebugLevel.HTTPServer.build.debug_level=-DDEBUG_ESP_HTTP_SERVER +phoenix_v2.menu.DebugLevel.UPDATER=Updater +phoenix_v2.menu.DebugLevel.UPDATER.build.debug_level=-DDEBUG_ESP_UPDATER +phoenix_v2.menu.DebugLevel.OTA_____=OTA +phoenix_v2.menu.DebugLevel.OTA_____.build.debug_level=-DDEBUG_ESP_OTA +phoenix_v2.menu.DebugLevel.OTA2____=OTA + Updater +phoenix_v2.menu.DebugLevel.OTA2____.build.debug_level=-DDEBUG_ESP_OTA -DDEBUG_ESP_UPDATER +phoenix_v2.menu.DebugLevel.all_____=All +phoenix_v2.menu.DebugLevel.all_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM + +phoenix_v2.build.debug_port= +phoenix_v2.build.debug_level= + +############################################################## +nodemcu.name=NodeMCU 0.9 (ESP-12 Module) + +nodemcu.upload.tool=esptool +nodemcu.upload.speed=115200 +nodemcu.upload.resetmethod=nodemcu +nodemcu.upload.maximum_size=1044464 +nodemcu.upload.maximum_data_size=81920 +nodemcu.upload.wait_for_upload_port=true +nodemcu.serial.disableDTR=true +nodemcu.serial.disableRTS=true + +nodemcu.build.mcu=esp8266 +nodemcu.build.f_cpu=80000000L +nodemcu.build.board=ESP8266_NODEMCU +nodemcu.build.core=esp8266 +nodemcu.build.variant=nodemcu +nodemcu.build.flash_mode=qio +nodemcu.build.flash_size=4M +nodemcu.build.flash_freq=40 +nodemcu.build.debug_port= +nodemcu.build.debug_level= + +nodemcu.menu.CpuFrequency.80=80 MHz +nodemcu.menu.CpuFrequency.80.build.f_cpu=80000000L +nodemcu.menu.CpuFrequency.160=160 MHz +nodemcu.menu.CpuFrequency.160.build.f_cpu=160000000L + +nodemcu.menu.UploadSpeed.115200=115200 +nodemcu.menu.UploadSpeed.115200.upload.speed=115200 +nodemcu.menu.UploadSpeed.9600=9600 +nodemcu.menu.UploadSpeed.9600.upload.speed=9600 +nodemcu.menu.UploadSpeed.57600=57600 +nodemcu.menu.UploadSpeed.57600.upload.speed=57600 +nodemcu.menu.UploadSpeed.256000.windows=256000 +nodemcu.menu.UploadSpeed.256000.upload.speed=256000 +nodemcu.menu.UploadSpeed.230400.linux=230400 +nodemcu.menu.UploadSpeed.230400.macosx=230400 +nodemcu.menu.UploadSpeed.230400.macosx=230400 +nodemcu.menu.UploadSpeed.230400.upload.speed=230400 +nodemcu.menu.UploadSpeed.460800.linux=460800 +nodemcu.menu.UploadSpeed.460800.macosx=460800 +nodemcu.menu.UploadSpeed.460800.upload.speed=460800 +nodemcu.menu.UploadSpeed.512000.windows=512000 +nodemcu.menu.UploadSpeed.512000.upload.speed=512000 +nodemcu.menu.UploadSpeed.921600=921600 +nodemcu.menu.UploadSpeed.921600.upload.speed=921600 + +nodemcu.menu.FlashSize.4M3M=4M (3M SPIFFS) +nodemcu.menu.FlashSize.4M3M.build.flash_size=4M +nodemcu.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +nodemcu.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +nodemcu.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +nodemcu.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +nodemcu.menu.FlashSize.4M3M.build.spiffs_pagesize=256 + +nodemcu.menu.FlashSize.4M1M=4M (1M SPIFFS) +nodemcu.menu.FlashSize.4M1M.build.flash_size=4M +nodemcu.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +nodemcu.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +nodemcu.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +nodemcu.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +nodemcu.menu.FlashSize.4M1M.build.spiffs_pagesize=256 + +############################################################## +nodemcuv2.name=NodeMCU 1.0 (ESP-12E Module) + +nodemcuv2.upload.tool=esptool +nodemcuv2.upload.speed=115200 +nodemcuv2.upload.resetmethod=nodemcu +nodemcuv2.upload.maximum_size=1044464 +nodemcuv2.upload.maximum_data_size=81920 +nodemcuv2.upload.wait_for_upload_port=true +nodemcuv2.serial.disableDTR=true +nodemcuv2.serial.disableRTS=true + +nodemcuv2.build.mcu=esp8266 +nodemcuv2.build.f_cpu=80000000L +nodemcuv2.build.board=ESP8266_NODEMCU +nodemcuv2.build.core=esp8266 +nodemcuv2.build.variant=nodemcu +nodemcuv2.build.flash_mode=dio +nodemcuv2.build.flash_size=4M +nodemcuv2.build.flash_freq=40 +nodemcuv2.build.debug_port= +nodemcuv2.build.debug_level= + +nodemcuv2.menu.CpuFrequency.80=80 MHz +nodemcuv2.menu.CpuFrequency.80.build.f_cpu=80000000L +nodemcuv2.menu.CpuFrequency.160=160 MHz +nodemcuv2.menu.CpuFrequency.160.build.f_cpu=160000000L + +nodemcuv2.menu.UploadSpeed.115200=115200 +nodemcuv2.menu.UploadSpeed.115200.upload.speed=115200 +nodemcuv2.menu.UploadSpeed.9600=9600 +nodemcuv2.menu.UploadSpeed.9600.upload.speed=9600 +nodemcuv2.menu.UploadSpeed.57600=57600 +nodemcuv2.menu.UploadSpeed.57600.upload.speed=57600 +nodemcuv2.menu.UploadSpeed.256000.windows=256000 +nodemcuv2.menu.UploadSpeed.256000.upload.speed=256000 +nodemcuv2.menu.UploadSpeed.230400.linux=230400 +nodemcuv2.menu.UploadSpeed.230400.macosx=230400 +nodemcuv2.menu.UploadSpeed.230400.macosx=230400 +nodemcuv2.menu.UploadSpeed.230400.upload.speed=230400 +nodemcuv2.menu.UploadSpeed.460800.linux=460800 +nodemcuv2.menu.UploadSpeed.460800.macosx=460800 +nodemcuv2.menu.UploadSpeed.460800.upload.speed=460800 +nodemcuv2.menu.UploadSpeed.512000.windows=512000 +nodemcuv2.menu.UploadSpeed.512000.upload.speed=512000 +nodemcuv2.menu.UploadSpeed.921600=921600 +nodemcuv2.menu.UploadSpeed.921600.upload.speed=921600 + +nodemcuv2.menu.FlashSize.4M3M=4M (3M SPIFFS) +nodemcuv2.menu.FlashSize.4M3M.build.flash_size=4M +nodemcuv2.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +nodemcuv2.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +nodemcuv2.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +nodemcuv2.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +nodemcuv2.menu.FlashSize.4M3M.build.spiffs_pagesize=256 + +nodemcuv2.menu.FlashSize.4M1M=4M (1M SPIFFS) +nodemcuv2.menu.FlashSize.4M1M.build.flash_size=4M +nodemcuv2.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +nodemcuv2.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +nodemcuv2.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +nodemcuv2.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +nodemcuv2.menu.FlashSize.4M1M.build.spiffs_pagesize=256 + + +############################################################## +modwifi.name=Olimex MOD-WIFI-ESP8266(-DEV) + +modwifi.upload.tool=esptool +modwifi.upload.speed=115200 +modwifi.upload.resetmethod=ck +modwifi.upload.maximum_size=1044464 +modwifi.upload.maximum_data_size=81920 +modwifi.upload.wait_for_upload_port=true +modwifi.serial.disableDTR=true +modwifi.serial.disableRTS=true + +modwifi.build.mcu=esp8266 +modwifi.build.f_cpu=80000000L +modwifi.build.board=MOD_WIFI_ESP8266 +modwifi.build.core=esp8266 +modwifi.build.variant=generic +# Winbond W25Q16 flash +modwifi.build.flash_mode=qio +modwifi.build.flash_size=2M +modwifi.build.flash_freq=40 +modwifi.build.flash_ld=eagle.flash.2m.ld +modwifi.build.spiffs_start=0x100000 +modwifi.build.spiffs_end=0x1FB000 +modwifi.build.spiffs_pagesize=256 +modwifi.build.spiffs_blocksize=8192 +modwifi.build.debug_port= +modwifi.build.debug_level= + +modwifi.menu.CpuFrequency.80=80 MHz +modwifi.menu.CpuFrequency.80.build.f_cpu=80000000L +modwifi.menu.CpuFrequency.160=160 MHz +modwifi.menu.CpuFrequency.160.build.f_cpu=160000000L + +modwifi.menu.UploadSpeed.115200=115200 +modwifi.menu.UploadSpeed.115200.upload.speed=115200 +modwifi.menu.UploadSpeed.9600=9600 +modwifi.menu.UploadSpeed.9600.upload.speed=9600 +modwifi.menu.UploadSpeed.57600=57600 +modwifi.menu.UploadSpeed.57600.upload.speed=57600 +modwifi.menu.UploadSpeed.256000.windows=256000 +modwifi.menu.UploadSpeed.256000.upload.speed=256000 +modwifi.menu.UploadSpeed.230400.linux=230400 +modwifi.menu.UploadSpeed.230400.macosx=230400 +modwifi.menu.UploadSpeed.230400.macosx=230400 +modwifi.menu.UploadSpeed.230400.upload.speed=230400 +modwifi.menu.UploadSpeed.460800.linux=460800 +modwifi.menu.UploadSpeed.460800.macosx=460800 +modwifi.menu.UploadSpeed.460800.upload.speed=460800 +modwifi.menu.UploadSpeed.512000.windows=512000 +modwifi.menu.UploadSpeed.512000.upload.speed=512000 +modwifi.menu.UploadSpeed.921600=921600 +modwifi.menu.UploadSpeed.921600.upload.speed=921600 + +############################################################## +thing.name=SparkFun ESP8266 Thing + +thing.upload.tool=esptool +thing.upload.speed=921600 +thing.upload.resetmethod=ck +thing.upload.maximum_size=434160 +thing.upload.maximum_data_size=81920 +thing.upload.wait_for_upload_port=true +thing.serial.disableDTR=true +thing.serial.disableRTS=true + +thing.build.mcu=esp8266 +thing.build.f_cpu=80000000L +thing.build.board=ESP8266_THING +thing.build.core=esp8266 +thing.build.variant=thing +thing.build.flash_mode=qio +# flash chip: AT25SF041 (512 kbyte, 4Mbit) +thing.build.flash_size=512K +thing.build.flash_ld=eagle.flash.512k64.ld +thing.build.flash_freq=40 +thing.build.spiffs_start=0x6B000 +thing.build.spiffs_end=0x7B000 +thing.build.spiffs_blocksize=4096 +thing.build.spiffs_pagesize=256 +thing.build.debug_port= +thing.build.debug_level= + +thing.menu.CpuFrequency.80=80 MHz +thing.menu.CpuFrequency.80.build.f_cpu=80000000L +thing.menu.CpuFrequency.160=160 MHz +thing.menu.CpuFrequency.160.build.f_cpu=160000000L + +thing.menu.UploadSpeed.115200=115200 +thing.menu.UploadSpeed.115200.upload.speed=115200 +thing.menu.UploadSpeed.9600=9600 +thing.menu.UploadSpeed.9600.upload.speed=9600 +thing.menu.UploadSpeed.57600=57600 +thing.menu.UploadSpeed.57600.upload.speed=57600 +thing.menu.UploadSpeed.256000.windows=256000 +thing.menu.UploadSpeed.256000.upload.speed=256000 +thing.menu.UploadSpeed.230400.linux=230400 +thing.menu.UploadSpeed.230400.macosx=230400 +thing.menu.UploadSpeed.230400.upload.speed=230400 +thing.menu.UploadSpeed.460800.linux=460800 +thing.menu.UploadSpeed.460800.macosx=460800 +thing.menu.UploadSpeed.460800.upload.speed=460800 +thing.menu.UploadSpeed.512000.windows=512000 +thing.menu.UploadSpeed.512000.upload.speed=512000 +thing.menu.UploadSpeed.921600=921600 +thing.menu.UploadSpeed.921600.upload.speed=921600 + +############################################################## +thingdev.name=SparkFun ESP8266 Thing Dev + +thingdev.upload.tool=esptool +thingdev.upload.speed=921600 +thingdev.upload.resetmethod=nodemcu +thingdev.upload.maximum_size=434160 +thingdev.upload.maximum_data_size=81920 +thingdev.upload.wait_for_upload_port=true +thingdev.serial.disableDTR=true +thingdev.serial.disableRTS=true + +thingdev.build.mcu=esp8266 +thingdev.build.f_cpu=80000000L +thingdev.build.board=ESP8266_THING_DEV +thingdev.build.core=esp8266 +thingdev.build.variant=thing +thingdev.build.flash_mode=dio +# flash chip: AT25SF041 (512 kbyte, 4Mbit) +thingdev.build.flash_size=512K +thingdev.build.flash_ld=eagle.flash.512k64.ld +thingdev.build.flash_freq=40 +thingdev.build.debug_port= +thingdev.build.debug_level= + +thingdev.menu.CpuFrequency.80=80 MHz +thingdev.menu.CpuFrequency.80.build.f_cpu=80000000L +thingdev.menu.CpuFrequency.160=160 MHz +thingdev.menu.CpuFrequency.160.build.f_cpu=160000000L + +thingdev.menu.UploadSpeed.115200=115200 +thingdev.menu.UploadSpeed.115200.upload.speed=115200 +thingdev.menu.UploadSpeed.9600=9600 +thingdev.menu.UploadSpeed.9600.upload.speed=9600 +thingdev.menu.UploadSpeed.57600=57600 +thingdev.menu.UploadSpeed.57600.upload.speed=57600 +thingdev.menu.UploadSpeed.256000.windows=256000 +thingdev.menu.UploadSpeed.256000.upload.speed=256000 +thingdev.menu.UploadSpeed.230400.linux=230400 +thingdev.menu.UploadSpeed.230400.macosx=230400 +thingdev.menu.UploadSpeed.230400.upload.speed=230400 +thingdev.menu.UploadSpeed.460800.linux=460800 +thingdev.menu.UploadSpeed.460800.macosx=460800 +thingdev.menu.UploadSpeed.460800.upload.speed=460800 +thingdev.menu.UploadSpeed.512000.windows=512000 +thingdev.menu.UploadSpeed.512000.upload.speed=512000 +thingdev.menu.UploadSpeed.921600=921600 +thingdev.menu.UploadSpeed.921600.upload.speed=921600 + +############################################################## +esp210.name=SweetPea ESP-210 + +esp210.upload.tool=esptool +esp210.upload.speed=115200 +esp210.upload.resetmethod=ck +esp210.upload.maximum_size=1044464 +esp210.upload.maximum_data_size=81920 +esp210.upload.wait_for_upload_port=true +esp210.serial.disableDTR=true +esp210.serial.disableRTS=true + +esp210.build.mcu=esp8266 +esp210.build.f_cpu=80000000L +esp210.build.board=ESP8266_ESP210 +esp210.build.core=esp8266 +esp210.build.variant=generic +esp210.build.flash_mode=qio +esp210.build.flash_size=4M +esp210.build.flash_freq=40 +esp210.build.debug_port= +esp210.build.debug_level= + +esp210.menu.CpuFrequency.80=80 MHz +esp210.menu.CpuFrequency.80.build.f_cpu=80000000L +esp210.menu.CpuFrequency.160=160 MHz +esp210.menu.CpuFrequency.160.build.f_cpu=160000000L + +esp210.menu.UploadSpeed.57600=57600 +esp210.menu.UploadSpeed.57600.upload.speed=57600 +esp210.menu.UploadSpeed.115200=115200 +esp210.menu.UploadSpeed.115200.upload.speed=115200 +esp210.menu.UploadSpeed.256000.windows=256000 +esp210.menu.UploadSpeed.256000.upload.speed=256000 +esp210.menu.UploadSpeed.230400.linux=230400 +esp210.menu.UploadSpeed.230400.macosx=230400 +esp210.menu.UploadSpeed.230400.macosx=230400 +esp210.menu.UploadSpeed.230400.upload.speed=230400 +esp210.menu.UploadSpeed.460800.linux=460800 +esp210.menu.UploadSpeed.460800.macosx=460800 +esp210.menu.UploadSpeed.460800.upload.speed=460800 +esp210.menu.UploadSpeed.512000.windows=512000 +esp210.menu.UploadSpeed.512000.upload.speed=512000 +esp210.menu.UploadSpeed.921600=921600 +esp210.menu.UploadSpeed.921600.upload.speed=921600 + +esp210.menu.FlashSize.4M3M=4M (3M SPIFFS) +esp210.menu.FlashSize.4M3M.build.flash_size=4M +esp210.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +esp210.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +esp210.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +esp210.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +esp210.menu.FlashSize.4M3M.build.spiffs_pagesize=256 + +esp210.menu.FlashSize.4M1M=4M (1M SPIFFS) +esp210.menu.FlashSize.4M1M.build.flash_size=4M +esp210.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +esp210.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +esp210.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +esp210.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +esp210.menu.FlashSize.4M1M.build.spiffs_pagesize=256 + +############################################################## +# wifio.name=Wifio +# +# wifio.upload.tool=esptool +# wifio.upload.speed=115200 +# wifio.upload.resetmethod=wifio +# wifio.upload.maximum_size=524288 +# wifio.upload.wait_for_upload_port=true +# +# wifio.build.mcu=esp8266 +# wifio.build.f_cpu=80000000L +# wifio.build.board=ESP8266_WIFIO +# wifio.build.core=esp8266 +# wifio.build.variant=wifio +# wifio.build.flash_mode=qio +# wifio.build.flash_size=512K +# wifio.build.flash_freq=40 +# wifio.build.flash_ld=eagle.flash.512k64.ld +# wifio.build.spiffs_start=0x6B000 +# wifio.build.spiffs_end=0x7B000 +# +# wifio.menu.CpuFrequency.80=80MHz +# wifio.menu.CpuFrequency.80.build.f_cpu=80000000L +# wifio.menu.CpuFrequency.160=160MHz +# wifio.menu.CpuFrequency.160.build.f_cpu=160000000L +# +# wifio.upload.tool=esptool +# + +############################################################## +d1_mini.name=WeMos D1 R2 & mini + +d1_mini.upload.tool=esptool +d1_mini.upload.speed=460800 +d1_mini.upload.resetmethod=nodemcu +d1_mini.upload.maximum_size=1044464 +d1_mini.upload.maximum_data_size=81920 +d1_mini.upload.wait_for_upload_port=true +d1_mini.serial.disableDTR=true +d1_mini.serial.disableRTS=true + +d1_mini.build.mcu=esp8266 +d1_mini.build.f_cpu=80000000L +d1_mini.build.board=ESP8266_WEMOS_D1MINI +d1_mini.build.core=esp8266 +d1_mini.build.variant=d1_mini +d1_mini.build.flash_mode=dio +d1_mini.build.flash_size=4M +d1_mini.build.flash_freq=40 +d1_mini.build.debug_port= +d1_mini.build.debug_level= + +d1_mini.menu.CpuFrequency.80=80 MHz +d1_mini.menu.CpuFrequency.80.build.f_cpu=80000000L +d1_mini.menu.CpuFrequency.160=160 MHz +d1_mini.menu.CpuFrequency.160.build.f_cpu=160000000L + +d1_mini.menu.UploadSpeed.921600=921600 +d1_mini.menu.UploadSpeed.921600.upload.speed=921600 +d1_mini.menu.UploadSpeed.115200=115200 +d1_mini.menu.UploadSpeed.115200.upload.speed=115200 +d1_mini.menu.UploadSpeed.9600=9600 +d1_mini.menu.UploadSpeed.9600.upload.speed=9600 +d1_mini.menu.UploadSpeed.57600=57600 +d1_mini.menu.UploadSpeed.57600.upload.speed=57600 +d1_mini.menu.UploadSpeed.256000.windows=256000 +d1_mini.menu.UploadSpeed.256000.upload.speed=256000 +d1_mini.menu.UploadSpeed.230400.linux=230400 +d1_mini.menu.UploadSpeed.230400.macosx=230400 +d1_mini.menu.UploadSpeed.230400.macosx=230400 +d1_mini.menu.UploadSpeed.230400.upload.speed=230400 +d1_mini.menu.UploadSpeed.460800.linux=460800 +d1_mini.menu.UploadSpeed.460800.macosx=460800 +d1_mini.menu.UploadSpeed.460800.upload.speed=460800 +d1_mini.menu.UploadSpeed.512000.windows=512000 +d1_mini.menu.UploadSpeed.512000.upload.speed=512000 + + +d1_mini.menu.FlashSize.4M3M=4M (3M SPIFFS) +d1_mini.menu.FlashSize.4M3M.build.flash_size=4M +d1_mini.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +d1_mini.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +d1_mini.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +d1_mini.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +d1_mini.menu.FlashSize.4M3M.build.spiffs_pagesize=256 + +d1_mini.menu.FlashSize.4M1M=4M (1M SPIFFS) +d1_mini.menu.FlashSize.4M1M.build.flash_size=4M +d1_mini.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +d1_mini.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +d1_mini.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +d1_mini.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +d1_mini.menu.FlashSize.4M1M.build.spiffs_pagesize=256 + +############################################################## +d1.name=WeMos D1(Retired) + +d1.upload.tool=esptool +d1.upload.speed=460800 +d1.upload.resetmethod=nodemcu +d1.upload.maximum_size=1044464 +d1.upload.maximum_data_size=81920 +d1.upload.wait_for_upload_port=true +d1.serial.disableDTR=true +d1.serial.disableRTS=true + +d1.build.mcu=esp8266 +d1.build.f_cpu=80000000L +d1.build.board=ESP8266_WEMOS_D1MINI +d1.build.core=esp8266 +d1.build.variant=d1 +d1.build.flash_mode=dio +d1.build.flash_size=4M +d1.build.flash_freq=40 +d1.build.debug_port= +d1.build.debug_level= + +d1.menu.CpuFrequency.80=80 MHz +d1.menu.CpuFrequency.80.build.f_cpu=80000000L +d1.menu.CpuFrequency.160=160 MHz +d1.menu.CpuFrequency.160.build.f_cpu=160000000L + +d1.menu.UploadSpeed.921600=921600 +d1.menu.UploadSpeed.921600.upload.speed=921600 +d1.menu.UploadSpeed.115200=115200 +d1.menu.UploadSpeed.115200.upload.speed=115200 +d1.menu.UploadSpeed.9600=9600 +d1.menu.UploadSpeed.9600.upload.speed=9600 +d1.menu.UploadSpeed.57600=57600 +d1.menu.UploadSpeed.57600.upload.speed=57600 +d1.menu.UploadSpeed.256000.windows=256000 +d1.menu.UploadSpeed.256000.upload.speed=256000 +d1.menu.UploadSpeed.230400.linux=230400 +d1.menu.UploadSpeed.230400.macosx=230400 +d1.menu.UploadSpeed.230400.macosx=230400 +d1.menu.UploadSpeed.230400.upload.speed=230400 +d1.menu.UploadSpeed.460800.linux=460800 +d1.menu.UploadSpeed.460800.macosx=460800 +d1.menu.UploadSpeed.460800.upload.speed=460800 +d1.menu.UploadSpeed.512000.windows=512000 +d1.menu.UploadSpeed.512000.upload.speed=512000 + + +d1.menu.FlashSize.4M3M=4M (3M SPIFFS) +d1.menu.FlashSize.4M3M.build.flash_size=4M +d1.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +d1.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +d1.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +d1.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +d1.menu.FlashSize.4M3M.build.spiffs_pagesize=256 + +d1.menu.FlashSize.4M1M=4M (1M SPIFFS) +d1.menu.FlashSize.4M1M.build.flash_size=4M +d1.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +d1.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +d1.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +d1.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +d1.menu.FlashSize.4M1M.build.spiffs_pagesize=256 + + +############################################################## + +espino.name=ESPino (ESP-12 Module) + +espino.upload.tool=esptool +espino.upload.speed=115200 +espino.upload.resetmethod=ck +espino.upload.maximum_size=1044464 +espino.upload.maximum_data_size=81920 +espino.upload.wait_for_upload_port=true +espino.serial.disableDTR=true +espino.serial.disableRTS=true + +espino.build.mcu=esp8266 +espino.build.f_cpu=80000000L +espino.build.board=ESP8266_ESP12 +espino.build.core=esp8266 +espino.build.variant=espino +espino.build.flash_mode=qio +espino.build.flash_size=4M +espino.build.flash_freq=40 +espino.build.spiffs_pagesize=256 +espino.build.debug_port= +espino.build.debug_level= + +espino.menu.CpuFrequency.80=80 MHz +espino.menu.CpuFrequency.80.build.f_cpu=80000000L +espino.menu.CpuFrequency.160=160 MHz +espino.menu.CpuFrequency.160.build.f_cpu=160000000L + +espino.menu.FlashMode.dio=DIO +espino.menu.FlashMode.dio.build.flash_mode=dio +espino.menu.FlashMode.qio=QIO +espino.menu.FlashMode.qio.build.flash_mode=qio + +espino.menu.UploadSpeed.115200=115200 +espino.menu.UploadSpeed.115200.upload.speed=115200 +espino.menu.UploadSpeed.9600=9600 +espino.menu.UploadSpeed.9600.upload.speed=9600 +espino.menu.UploadSpeed.57600=57600 +espino.menu.UploadSpeed.57600.upload.speed=57600 +espino.menu.UploadSpeed.256000.windows=256000 +espino.menu.UploadSpeed.256000.upload.speed=256000 +espino.menu.UploadSpeed.230400.linux=230400 +espino.menu.UploadSpeed.230400.macosx=230400 +espino.menu.UploadSpeed.230400.upload.speed=230400 +espino.menu.UploadSpeed.460800.linux=460800 +espino.menu.UploadSpeed.460800.macosx=460800 +espino.menu.UploadSpeed.460800.upload.speed=460800 +espino.menu.UploadSpeed.512000.windows=512000 +espino.menu.UploadSpeed.512000.upload.speed=512000 +espino.menu.UploadSpeed.921600=921600 +espino.menu.UploadSpeed.921600.upload.speed=921600 + +espino.menu.FlashSize.4M1M=4M (1M SPIFFS) +espino.menu.FlashSize.4M1M.build.flash_size=4M +espino.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +espino.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +espino.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +espino.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +espino.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +espino.menu.FlashSize.4M1M.upload.maximum_size=1044464 + +espino.menu.FlashSize.4M3M=4M (3M SPIFFS) +espino.menu.FlashSize.4M3M.build.flash_size=4M +espino.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +espino.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +espino.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +espino.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +espino.menu.FlashSize.4M3M.upload.maximum_size=1044464 + +espino.menu.ResetMethod.ck=ck +espino.menu.ResetMethod.ck.upload.resetmethod=ck +espino.menu.ResetMethod.nodemcu=nodemcu +espino.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu + +############################################################## +espinotee.name=ThaiEasyElec's ESPino + +espinotee.upload.tool=esptool +espinotee.upload.speed=115200 +espinotee.upload.resetmethod=nodemcu +espinotee.upload.maximum_size=1044464 +espinotee.upload.maximum_data_size=81920 +espinotee.upload.wait_for_upload_port=true +espinotee.serial.disableDTR=true +espinotee.serial.disableRTS=true + +espinotee.build.mcu=esp8266 +espinotee.build.f_cpu=80000000L +espinotee.build.board=ESP8266_ESP13 +espinotee.build.core=esp8266 +espinotee.build.variant=espinotee +espinotee.build.flash_mode=qio +espinotee.build.flash_size=4M +espinotee.build.flash_freq=40 +espinotee.build.debug_port= +espinotee.build.debug_level= + +espinotee.menu.CpuFrequency.80=80 MHz +espinotee.menu.CpuFrequency.80.build.f_cpu=80000000L +espinotee.menu.CpuFrequency.160=160 MHz +espinotee.menu.CpuFrequency.160.build.f_cpu=160000000L + +espinotee.menu.UploadSpeed.115200=115200 +espinotee.menu.UploadSpeed.115200.upload.speed=115200 +espinotee.menu.UploadSpeed.9600=9600 +espinotee.menu.UploadSpeed.9600.upload.speed=9600 +espinotee.menu.UploadSpeed.57600=57600 +espinotee.menu.UploadSpeed.57600.upload.speed=57600 +espinotee.menu.UploadSpeed.256000.windows=256000 +espinotee.menu.UploadSpeed.256000.upload.speed=256000 +espinotee.menu.UploadSpeed.230400.linux=230400 +espinotee.menu.UploadSpeed.230400.macosx=230400 +espinotee.menu.UploadSpeed.230400.macosx=230400 +espinotee.menu.UploadSpeed.230400.upload.speed=230400 +espinotee.menu.UploadSpeed.460800.linux=460800 +espinotee.menu.UploadSpeed.460800.macosx=460800 +espinotee.menu.UploadSpeed.460800.upload.speed=460800 +espinotee.menu.UploadSpeed.512000.windows=512000 +espinotee.menu.UploadSpeed.512000.upload.speed=512000 +espinotee.menu.UploadSpeed.921600=921600 +espinotee.menu.UploadSpeed.921600.upload.speed=921600 + +espinotee.menu.FlashSize.4M3M=4M (3M SPIFFS) +espinotee.menu.FlashSize.4M3M.build.flash_size=4M +espinotee.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +espinotee.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +espinotee.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +espinotee.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +espinotee.menu.FlashSize.4M3M.build.spiffs_pagesize=256 + +espinotee.menu.FlashSize.4M1M=4M (1M SPIFFS) +espinotee.menu.FlashSize.4M1M.build.flash_size=4M +espinotee.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +espinotee.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +espinotee.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +espinotee.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +espinotee.menu.FlashSize.4M1M.build.spiffs_pagesize=256 + +############################################################## +wifinfo.name=WifInfo + +wifinfo.upload.tool=esptool +wifinfo.upload.speed=115200 +wifinfo.upload.resetmethod=nodemcu +wifinfo.upload.maximum_size=434160 +wifinfo.upload.maximum_data_size=81920 +wifinfo.upload.wait_for_upload_port=true +wifinfo.serial.disableDTR=true +wifinfo.serial.disableRTS=true + +wifinfo.build.mcu=esp8266 +wifinfo.build.core=esp8266 +wifinfo.build.variant=wifinfo +wifinfo.build.board=WIFINFO +wifinfo.build.spiffs_pagesize=256 +wifinfo.build.debug_port=Serial1 +wifinfo.build.debug_level=Wifinfo + +wifinfo.menu.Debug.Disabled=Disabled +wifinfo.menu.Debug.Disabled.build.debug_port= +wifinfo.menu.Debug.Serial=Serial +wifinfo.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +wifinfo.menu.Debug.Serial1=Serial1 +wifinfo.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 + +wifinfo.menu.DebugLevel.None=None +wifinfo.menu.DebugLevel.None.build.debug_level= +wifinfo.menu.DebugLevel.Wifinfo=Wifinfo +wifinfo.menu.DebugLevel.Wifinfo.build.debug_level=-DDEBUG_ESP_WIFINFO + +#wifinfo.menu.ESPModule.ESP07512=ESP07 (1M/512K SPIFFS) +#wifinfo.menu.ESPModule.ESP07512.build.board=ESP8266_ESP07 +#wifinfo.menu.ESPModule.ESP07512.build.flash_size=1M +#wifinfo.menu.ESPModule.ESP07512.build.flash_ld=eagle.flash.1m512.ld +#wifinfo.menu.ESPModule.ESP07512.build.spiffs_start=0x7B000 +#wifinfo.menu.ESPModule.ESP07512.build.spiffs_end=0xFB000 +#wifinfo.menu.ESPModule.ESP07512.build.spiffs_blocksize=8192 +#wifinfo.menu.ESPModule.ESP07512.upload.maximum_size=499696 + +#wifinfo.menu.ESPModule.ESP07256=ESP07 (1M/256K SPIFFS) +#wifinfo.menu.ESPModule.ESP07256.build.board=ESP8266_ESP07 +#wifinfo.menu.ESPModule.ESP07256.build.flash_size=1M +#wifinfo.menu.ESPModule.ESP07256.build.flash_ld=eagle.flash.1m256.ld +#wifinfo.menu.ESPModule.ESP07256.build.spiffs_start=0xBB000 +#wifinfo.menu.ESPModule.ESP07256.build.spiffs_end=0xFB000 +##wifinfo.menu.ESPModule.ESP07256.build.spiffs_blocksize=4096 +#wifinfo.menu.ESPModule.ESP07256.upload.maximum_size=761840 + +wifinfo.menu.ESPModule.ESP07192=ESP07 (1M/192K SPIFFS) +wifinfo.menu.ESPModule.ESP07192.build.board=ESP8266_ESP07 +wifinfo.menu.ESPModule.ESP07192.build.flash_size=1M +wifinfo.menu.ESPModule.ESP07192.build.flash_ld=eagle.flash.1m192.ld +wifinfo.menu.ESPModule.ESP07192.build.spiffs_start=0xCB000 +wifinfo.menu.ESPModule.ESP07192.build.spiffs_end=0xFB000 +wifinfo.menu.ESPModule.ESP07192.build.spiffs_blocksize=4096 +wifinfo.menu.ESPModule.ESP07192.upload.maximum_size=827376 + +#wifinfo.menu.ESPModule.ESP07160=ESP07 (1M/160K SPIFFS) +#wifinfo.menu.ESPModule.ESP07160.build.board=ESP8266_ESP07 +#wifinfo.menu.ESPModule.ESP07160.build.flash_size=1M +#wifinfo.menu.ESPModule.ESP07160.build.flash_ld=eagle.flash.1m160.ld +#wifinfo.menu.ESPModule.ESP07160.build.spiffs_start=0xD3000 +#wifinfo.menu.ESPModule.ESP07160.build.spiffs_end=0xFB000 +#wifinfo.menu.ESPModule.ESP07160.build.spiffs_blocksize=4096 +#wifinfo.menu.ESPModule.ESP07160.upload.maximum_size=860144 +# +#wifinfo.menu.ESPModule.ESP07144=ESP07 (1M/144K SPIFFS) +#wifinfo.menu.ESPModule.ESP07144.build.board=ESP8266_ESP07 +#wifinfo.menu.ESPModule.ESP07144.build.flash_size=1M +#wifinfo.menu.ESPModule.ESP07144.build.flash_ld=eagle.flash.1m144.ld +#wifinfo.menu.ESPModule.ESP07144.build.spiffs_start=0xD7000 +#wifinfo.menu.ESPModule.ESP07144.build.spiffs_end=0xFB000 +#wifinfo.menu.ESPModule.ESP07144.build.spiffs_blocksize=4096 +#wifinfo.menu.ESPModule.ESP07144.upload.maximum_size=876528 +# +#wifinfo.menu.ESPModule.ESP07=ESP07 (1M/64K SPIFFS) +#wifinfo.menu.ESPModule.ESP07.build.board=ESP8266_ESP07 +#wifinfo.menu.ESPModule.ESP07.build.flash_size=1M +#wifinfo.menu.ESPModule.ESP07.build.flash_ld=eagle.flash.1m64.ld +#wifinfo.menu.ESPModule.ESP07.build.spiffs_start=0xEB000 +#wifinfo.menu.ESPModule.ESP07.build.spiffs_end=0xFB000 +#wifinfo.menu.ESPModule.ESP07.build.spiffs_blocksize=4096 +#wifinfo.menu.ESPModule.ESP07.upload.maximum_size=958448 + +wifinfo.menu.ESPModule.ESP12=ESP12 (4M/1M SPIFFS) +wifinfo.menu.ESPModule.ESP12.build.board=ESP8266_ESP12 +wifinfo.menu.ESPModule.ESP12.build.flash_size=4M +wifinfo.menu.ESPModule.ESP12.build.flash_ld=eagle.flash.4m1m.ld +wifinfo.menu.ESPModule.ESP12.build.spiffs_start=0x300000 +wifinfo.menu.ESPModule.ESP12.build.spiffs_end=0x3FB000 +wifinfo.menu.ESPModule.ESP12.build.spiffs_blocksize=8192 +wifinfo.menu.ESPModule.ESP12.build.spiffs_pagesize=256 +wifinfo.menu.ESPModule.ESP12.upload.maximum_size=1044464 + +wifinfo.menu.CpuFrequency.160=160 MHz +wifinfo.menu.CpuFrequency.160.build.f_cpu=160000000L +wifinfo.menu.CpuFrequency.80=80 MHz +wifinfo.menu.CpuFrequency.80.build.f_cpu=80000000L + +wifinfo.menu.FlashFreq.40=40MHz +wifinfo.menu.FlashFreq.40.build.flash_freq=40 +wifinfo.menu.FlashFreq.80=80MHz +wifinfo.menu.FlashFreq.80.build.flash_freq=80 + +wifinfo.menu.FlashMode.qio=QIO +wifinfo.menu.FlashMode.qio.build.flash_mode=qio +wifinfo.menu.FlashMode.dio=DIO +wifinfo.menu.FlashMode.dio.build.flash_mode=dio + +wifinfo.menu.UploadSpeed.115200=115200 +wifinfo.menu.UploadSpeed.115200.upload.speed=115200 +wifinfo.menu.UploadSpeed.9600=9600 +wifinfo.menu.UploadSpeed.9600.upload.speed=9600 +wifinfo.menu.UploadSpeed.57600=57600 +wifinfo.menu.UploadSpeed.57600.upload.speed=57600 +wifinfo.menu.UploadSpeed.256000.windows=256000 +wifinfo.menu.UploadSpeed.256000.upload.speed=256000 +wifinfo.menu.UploadSpeed.230400.linux=230400 +wifinfo.menu.UploadSpeed.230400.macosx=230400 +wifinfo.menu.UploadSpeed.230400.upload.speed=230400 +wifinfo.menu.UploadSpeed.460800.linux=460800 +wifinfo.menu.UploadSpeed.460800.macosx=460800 +wifinfo.menu.UploadSpeed.460800.upload.speed=460800 +wifinfo.menu.UploadSpeed.512000.windows=512000 +wifinfo.menu.UploadSpeed.512000.upload.speed=512000 +wifinfo.menu.UploadSpeed.921600=921600 +wifinfo.menu.UploadSpeed.921600.upload.speed=921600 + + +############################################################## +coredev.name=Core Development Module + +coredev.upload.tool=esptool +coredev.upload.speed=115200 +coredev.upload.resetmethod=ck +coredev.upload.maximum_size=434160 +coredev.upload.maximum_data_size=81920 +coredev.upload.wait_for_upload_port=true +coredev.serial.disableDTR=true +coredev.serial.disableRTS=true + +coredev.build.mcu=esp8266 +coredev.build.f_cpu=80000000L +coredev.build.board=ESP8266_ESP01 +coredev.build.core=esp8266 +coredev.build.variant=generic +coredev.build.flash_mode=qio +coredev.build.spiffs_pagesize=256 +coredev.build.debug_port= +coredev.build.debug_level= +coredev.build.lwip_lib=-llwip +coredev.build.lwip_flags= + + +coredev.menu.LwIPVariant.Espressif=Espressif (xcc) +coredev.menu.LwIPVariant.Espressif.build.lwip_lib=-llwip +coredev.menu.LwIPVariant.Espressif.build.lwip_flags=-DLWIP_MAYBE_XCC +coredev.menu.LwIPVariant.Prebuilt=Prebuilt Source (gcc) +coredev.menu.LwIPVariant.Prebuilt.build.lwip_lib=-llwip_gcc +coredev.menu.LwIPVariant.Prebuilt.build.lwip_flags=-DLWIP_OPEN_SRC +coredev.menu.LwIPVariant.OpenSource=Open Source (gcc) +coredev.menu.LwIPVariant.OpenSource.build.lwip_lib=-llwip_src +coredev.menu.LwIPVariant.OpenSource.build.lwip_flags=-DLWIP_OPEN_SRC +coredev.menu.LwIPVariant.OpenSource.recipe.hooks.sketch.prebuild.1.pattern=make -C "{runtime.platform.path}/tools/sdk/lwip/src" install TOOLS_PATH="{runtime.tools.xtensa-lx106-elf-gcc.path}/bin/xtensa-lx106-elf-" + +coredev.menu.CpuFrequency.80=80 MHz +coredev.menu.CpuFrequency.80.build.f_cpu=80000000L +coredev.menu.CpuFrequency.160=160 MHz +coredev.menu.CpuFrequency.160.build.f_cpu=160000000L + +coredev.menu.FlashFreq.40=40MHz +coredev.menu.FlashFreq.40.build.flash_freq=40 +coredev.menu.FlashFreq.80=80MHz +coredev.menu.FlashFreq.80.build.flash_freq=80 + +coredev.menu.FlashMode.dio=DIO +coredev.menu.FlashMode.dio.build.flash_mode=dio +coredev.menu.FlashMode.qio=QIO +coredev.menu.FlashMode.qio.build.flash_mode=qio +coredev.menu.FlashMode.dout=DOUT +coredev.menu.FlashMode.dout.build.flash_mode=dout +coredev.menu.FlashMode.qout=QOUT +coredev.menu.FlashMode.qout.build.flash_mode=qout + +coredev.menu.UploadSpeed.115200=115200 +coredev.menu.UploadSpeed.115200.upload.speed=115200 +coredev.menu.UploadSpeed.9600=9600 +coredev.menu.UploadSpeed.9600.upload.speed=9600 +coredev.menu.UploadSpeed.57600=57600 +coredev.menu.UploadSpeed.57600.upload.speed=57600 +coredev.menu.UploadSpeed.256000.windows=256000 +coredev.menu.UploadSpeed.256000.upload.speed=256000 +coredev.menu.UploadSpeed.230400.linux=230400 +coredev.menu.UploadSpeed.230400.macosx=230400 +coredev.menu.UploadSpeed.230400.upload.speed=230400 +coredev.menu.UploadSpeed.460800.linux=460800 +coredev.menu.UploadSpeed.460800.macosx=460800 +coredev.menu.UploadSpeed.460800.upload.speed=460800 +coredev.menu.UploadSpeed.512000.windows=512000 +coredev.menu.UploadSpeed.512000.upload.speed=512000 +coredev.menu.UploadSpeed.921600=921600 +coredev.menu.UploadSpeed.921600.upload.speed=921600 + +coredev.menu.FlashSize.512K64=512K (64K SPIFFS) +coredev.menu.FlashSize.512K64.build.flash_size=512K +coredev.menu.FlashSize.512K64.build.flash_ld=eagle.flash.512k64.ld +coredev.menu.FlashSize.512K64.build.spiffs_start=0x6B000 +coredev.menu.FlashSize.512K64.build.spiffs_end=0x7B000 +coredev.menu.FlashSize.512K64.build.spiffs_blocksize=4096 +coredev.menu.FlashSize.512K64.upload.maximum_size=434160 + +coredev.menu.FlashSize.512K128=512K (128K SPIFFS) +coredev.menu.FlashSize.512K128.build.flash_size=512K +coredev.menu.FlashSize.512K128.build.flash_ld=eagle.flash.512k128.ld +coredev.menu.FlashSize.512K128.build.spiffs_start=0x5B000 +coredev.menu.FlashSize.512K128.build.spiffs_end=0x7B000 +coredev.menu.FlashSize.512K128.build.spiffs_blocksize=4096 +coredev.menu.FlashSize.512K128.upload.maximum_size=368624 + +coredev.menu.FlashSize.512K0=512K (no SPIFFS) +coredev.menu.FlashSize.512K0.build.flash_size=512K +coredev.menu.FlashSize.512K0.build.flash_ld=eagle.flash.512k0.ld +coredev.menu.FlashSize.512K0.upload.maximum_size=499696 + +coredev.menu.FlashSize.1M512=1M (512K SPIFFS) +coredev.menu.FlashSize.1M512.build.flash_size=1M +coredev.menu.FlashSize.1M512.build.flash_ld=eagle.flash.1m512.ld +coredev.menu.FlashSize.1M512.build.spiffs_start=0x7B000 +coredev.menu.FlashSize.1M512.build.spiffs_end=0xFB000 +coredev.menu.FlashSize.1M512.build.spiffs_blocksize=8192 +coredev.menu.FlashSize.1M512.upload.maximum_size=499696 + +coredev.menu.FlashSize.1M256=1M (256K SPIFFS) +coredev.menu.FlashSize.1M256.build.flash_size=1M +coredev.menu.FlashSize.1M256.build.flash_ld=eagle.flash.1m256.ld +coredev.menu.FlashSize.1M256.build.spiffs_start=0xBB000 +coredev.menu.FlashSize.1M256.build.spiffs_end=0xFB000 +coredev.menu.FlashSize.1M256.build.spiffs_blocksize=4096 +coredev.menu.FlashSize.1M256.upload.maximum_size=761840 + +coredev.menu.FlashSize.1M192=1M (192K SPIFFS) +coredev.menu.FlashSize.1M192.build.flash_size=1M +coredev.menu.FlashSize.1M192.build.flash_ld=eagle.flash.1m192.ld +coredev.menu.FlashSize.1M192.build.spiffs_start=0xCB000 +coredev.menu.FlashSize.1M192.build.spiffs_end=0xFB000 +coredev.menu.FlashSize.1M192.build.spiffs_blocksize=4096 +coredev.menu.FlashSize.1M192.upload.maximum_size=827376 + +coredev.menu.FlashSize.1M160=1M (160K SPIFFS) +coredev.menu.FlashSize.1M160.build.flash_size=1M +coredev.menu.FlashSize.1M160.build.flash_ld=eagle.flash.1m160.ld +coredev.menu.FlashSize.1M160.build.spiffs_start=0xD3000 +coredev.menu.FlashSize.1M160.build.spiffs_end=0xFB000 +coredev.menu.FlashSize.1M160.build.spiffs_blocksize=4096 +coredev.menu.FlashSize.1M160.upload.maximum_size=860144 + +coredev.menu.FlashSize.1M144=1M (144K SPIFFS) +coredev.menu.FlashSize.1M144.build.flash_size=1M +coredev.menu.FlashSize.1M144.build.flash_ld=eagle.flash.1m144.ld +coredev.menu.FlashSize.1M144.build.spiffs_start=0xD7000 +coredev.menu.FlashSize.1M144.build.spiffs_end=0xFB000 +coredev.menu.FlashSize.1M144.build.spiffs_blocksize=4096 +coredev.menu.FlashSize.1M144.upload.maximum_size=876528 + +coredev.menu.FlashSize.1M128=1M (128K SPIFFS) +coredev.menu.FlashSize.1M128.build.flash_size=1M +coredev.menu.FlashSize.1M128.build.flash_ld=eagle.flash.1m128.ld +coredev.menu.FlashSize.1M128.build.spiffs_start=0xDB000 +coredev.menu.FlashSize.1M128.build.spiffs_end=0xFB000 +coredev.menu.FlashSize.1M128.build.spiffs_blocksize=4096 +coredev.menu.FlashSize.1M128.upload.maximum_size=892912 + +coredev.menu.FlashSize.1M64=1M (64K SPIFFS) +coredev.menu.FlashSize.1M64.build.flash_size=1M +coredev.menu.FlashSize.1M64.build.flash_ld=eagle.flash.1m64.ld +coredev.menu.FlashSize.1M64.build.spiffs_start=0xEB000 +coredev.menu.FlashSize.1M64.build.spiffs_end=0xFB000 +coredev.menu.FlashSize.1M64.build.spiffs_blocksize=4096 +coredev.menu.FlashSize.1M64.upload.maximum_size=958448 + +coredev.menu.FlashSize.2M=2M (1M SPIFFS) +coredev.menu.FlashSize.2M.build.flash_size=2M +coredev.menu.FlashSize.2M.build.flash_ld=eagle.flash.2m.ld +coredev.menu.FlashSize.2M.build.spiffs_start=0x100000 +coredev.menu.FlashSize.2M.build.spiffs_end=0x1FB000 +coredev.menu.FlashSize.2M.build.spiffs_blocksize=8192 +coredev.menu.FlashSize.2M.upload.maximum_size=1044464 + +coredev.menu.FlashSize.4M1M=4M (1M SPIFFS) +coredev.menu.FlashSize.4M1M.build.flash_size=4M +coredev.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +coredev.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +coredev.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +coredev.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +coredev.menu.FlashSize.4M1M.build.spiffs_pagesize=256 +coredev.menu.FlashSize.4M1M.upload.maximum_size=1044464 + +coredev.menu.FlashSize.4M3M=4M (3M SPIFFS) +coredev.menu.FlashSize.4M3M.build.flash_size=4M +coredev.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +coredev.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +coredev.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +coredev.menu.FlashSize.4M3M.build.spiffs_pagesize=256 +coredev.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +coredev.menu.FlashSize.4M3M.upload.maximum_size=1044464 + +coredev.menu.FlashSize.8M7M=8M (7M SPIFFS) +coredev.menu.FlashSize.8M7M.build.flash_size=8M +coredev.menu.FlashSize.8M7M.build.flash_ld=eagle.flash.8m.ld +coredev.menu.FlashSize.8M7M.build.spiffs_start=0x100000 +coredev.menu.FlashSize.8M7M.build.spiffs_end=0x7FB000 +coredev.menu.FlashSize.8M7M.build.spiffs_pagesize=256 +coredev.menu.FlashSize.8M7M.build.spiffs_blocksize=8192 +coredev.menu.FlashSize.8M7M.upload.maximum_size=1044464 + +coredev.menu.FlashSize.16M15M=16M (15M SPIFFS) +coredev.menu.FlashSize.16M15M.build.flash_size=16M +coredev.menu.FlashSize.16M15M.build.flash_ld=eagle.flash.16m.ld +coredev.menu.FlashSize.16M15M.build.spiffs_start=0x100000 +coredev.menu.FlashSize.16M15M.build.spiffs_end=0x17FB000 +coredev.menu.FlashSize.16M15M.build.spiffs_pagesize=256 +coredev.menu.FlashSize.16M15M.build.spiffs_blocksize=8192 +coredev.menu.FlashSize.16M15M.upload.maximum_size=1044464 + +coredev.menu.ResetMethod.ck=ck +coredev.menu.ResetMethod.ck.upload.resetmethod=ck +coredev.menu.ResetMethod.nodemcu=nodemcu +coredev.menu.ResetMethod.nodemcu.upload.resetmethod=nodemcu + +coredev.menu.Debug.Disabled=Disabled +coredev.menu.Debug.Disabled.build.debug_port= +coredev.menu.Debug.Serial=Serial +coredev.menu.Debug.Serial.build.debug_port=-DDEBUG_ESP_PORT=Serial +coredev.menu.Debug.Serial1=Serial1 +coredev.menu.Debug.Serial1.build.debug_port=-DDEBUG_ESP_PORT=Serial1 + +coredev.menu.DebugLevel.None____=None +coredev.menu.DebugLevel.None____.build.debug_level= +coredev.menu.DebugLevel.Core____=Core +coredev.menu.DebugLevel.Core____.build.debug_level=-DDEBUG_ESP_CORE +coredev.menu.DebugLevel.SSL_____=Core + SSL +coredev.menu.DebugLevel.SSL_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL +coredev.menu.DebugLevel.SSL_MEM_=Core + SSL + TLS Mem +coredev.menu.DebugLevel.SSL_MEM_.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_TLS_MEM +coredev.menu.DebugLevel.WiFic___=Core + WiFi +coredev.menu.DebugLevel.WiFic___.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_WIFI +coredev.menu.DebugLevel.WiFi____=WiFi +coredev.menu.DebugLevel.WiFi____.build.debug_level=-DDEBUG_ESP_WIFI +coredev.menu.DebugLevel.HTTPClient=HTTPClient +coredev.menu.DebugLevel.HTTPClient.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT +coredev.menu.DebugLevel.HTTPClient2=HTTPClient + SSL +coredev.menu.DebugLevel.HTTPClient2.build.debug_level=-DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_SSL +coredev.menu.DebugLevel.HTTPUpdate=HTTPUpdate +coredev.menu.DebugLevel.HTTPUpdate.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE +coredev.menu.DebugLevel.HTTPUpdate2=HTTPClient + HTTPUpdate +coredev.menu.DebugLevel.HTTPUpdate2.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE +coredev.menu.DebugLevel.HTTPUpdate3=HTTPClient + HTTPUpdate + Updater +coredev.menu.DebugLevel.HTTPUpdate3.build.debug_level=-DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_UPDATER +coredev.menu.DebugLevel.HTTPServer=HTTPServer +coredev.menu.DebugLevel.HTTPServer.build.debug_level=-DDEBUG_ESP_HTTP_SERVER +coredev.menu.DebugLevel.UPDATER=Updater +coredev.menu.DebugLevel.UPDATER.build.debug_level=-DDEBUG_ESP_UPDATER +coredev.menu.DebugLevel.OTA_____=OTA +coredev.menu.DebugLevel.OTA_____.build.debug_level=-DDEBUG_ESP_OTA +coredev.menu.DebugLevel.OTA2____=OTA + Updater +coredev.menu.DebugLevel.OTA2____.build.debug_level=-DDEBUG_ESP_OTA -DDEBUG_ESP_UPDATER +coredev.menu.DebugLevel.all_____=All +coredev.menu.DebugLevel.all_____.build.debug_level=-DDEBUG_ESP_CORE -DDEBUG_ESP_SSL -DDEBUG_ESP_WIFI -DDEBUG_ESP_HTTP_CLIENT -DDEBUG_ESP_HTTP_UPDATE -DDEBUG_ESP_HTTP_SERVER -DDEBUG_ESP_UPDATER -DDEBUG_ESP_OTA -DDEBUG_TLS_MEM + +############ Arduino boards with Esp8266 ############ + +arduino-esp8266.name=Arduino + +arduino-esp8266.upload.tool=esptool +arduino-esp8266.upload.speed=9600 +arduino-esp8266.upload.resetmethod=ck +arduino-esp8266.upload.maximum_size=1044464 +arduino-esp8266.upload.maximum_data_size=81920 +arduino-esp8266.upload.wait_for_upload_port=true +arduino-esp8266.serial.disableDTR=true +arduino-esp8266.serial.disableRTS=true + +arduino-esp8266.build.mcu=esp8266 +arduino-esp8266.build.f_cpu=80000000L +#arduino-esp8266.build.f_crystal=40000000 +arduino-esp8266.build.core=esp8266 +arduino-esp8266.build.flash_mode=qio +arduino-esp8266.build.flash_size=4M +arduino-esp8266.build.flash_freq=40 +arduino-esp8266.build.debug_port= +arduino-esp8266.build.debug_level= +arduino-esp8266.build.board=ESP8266_ARDUINO + +arduino-esp8266.menu.BoardModel.starottodeved=Star OTTO +arduino-esp8266.menu.BoardModel.starottodeved.build.board=ESP8266_ARDUINO_STAR_OTTO +arduino-esp8266.menu.BoardModel.starottodeved.build.variant=arduino_uart +arduino-esp8266.menu.BoardModel.starottodeved.build.extra_flags=-DF_CRYSTAL=40000000 + +arduino-esp8266.menu.BoardModel.primo=Primo +arduino-esp8266.menu.BoardModel.primo.build.board=ESP8266_ARDUINO_PRIMO +arduino-esp8266.menu.BoardModel.primo.build.variant=arduino_spi +arduino-esp8266.menu.BoardModel.primo.build.extra_flags=-DF_CRYSTAL=40000000 + +arduino-esp8266.menu.BoardModel.unowifideved=Uno WiFi +arduino-esp8266.menu.BoardModel.unowifideved.build.board=ESP8266_ARDUINO_UNOWIFI +arduino-esp8266.menu.BoardModel.unowifideved.build.variant=arduino_uart +arduino-esp8266.menu.BoardModel.unowifideved.build.extra_flags=-DF_CRYSTAL=40000000 + +arduino-esp8266.menu.UploadSpeed.9600=9600 +arduino-esp8266.menu.UploadSpeed.9600.upload.speed=9600 +arduino-esp8266.menu.UploadSpeed.19200=19200 +arduino-esp8266.menu.UploadSpeed.19200.upload.speed=19200 +arduino-esp8266.menu.UploadSpeed.57600=57600 +arduino-esp8266.menu.UploadSpeed.57600.upload.speed=57600 +arduino-esp8266.menu.UploadSpeed.115200=115200 +arduino-esp8266.menu.UploadSpeed.115200.upload.speed=115200 +arduino-esp8266.menu.UploadSpeed.230400=230400 +arduino-esp8266.menu.UploadSpeed.230400.upload.speed=230400 +arduino-esp8266.menu.UploadSpeed.460800=460800 +arduino-esp8266.menu.UploadSpeed.460800.upload.speed=460800 + +arduino-esp8266.menu.FlashSize.4M1M=4M (1M SPIFFS) +arduino-esp8266.menu.FlashSize.4M1M.build.flash_size=4M +arduino-esp8266.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +arduino-esp8266.menu.FlashSize.4M1M.build.spiffs_pagesize=256 + +arduino-esp8266.menu.FlashSize.4M3M=4M (3M SPIFFS) +arduino-esp8266.menu.FlashSize.4M3M.build.flash_size=4M +arduino-esp8266.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +arduino-esp8266.menu.FlashSize.4M3M.build.spiffs_pagesize=256 + +############################################################## + +gen4iod.name=4D Systems gen4 IoD Range + +gen4iod.upload.tool=esptool +gen4iod.upload.speed=921600 +gen4iod.upload.resetmethod=nodemcu +gen4iod.upload.maximum_size=434160 +gen4iod.upload.maximum_data_size=81920 +gen4iod.upload.wait_for_upload_port=true +gen4iod.serial.disableDTR=true +gen4iod.serial.disableRTS=true + +gen4iod.build.mcu=esp8266 +gen4iod.build.f_cpu=160000000L +gen4iod.build.board=GEN4_IOD +gen4iod.build.core=esp8266 +gen4iod.build.variant=generic +gen4iod.build.flash_mode=qio +# flash chip: AT25SF041 (512 kbyte, 4Mbit) +gen4iod.build.flash_size=512K +gen4iod.build.flash_ld=eagle.flash.512k0.ld +gen4iod.build.flash_freq=80 +gen4iod.build.debug_port= +gen4iod.build.debug_level= + +gen4iod.menu.CpuFrequency.160=160 MHz +gen4iod.menu.CpuFrequency.160.build.f_cpu=160000000L +gen4iod.menu.CpuFrequency.80=80 MHz +gen4iod.menu.CpuFrequency.80.build.f_cpu=80000000L + +gen4iod.menu.UploadSpeed.115200=115200 +gen4iod.menu.UploadSpeed.115200.upload.speed=115200 +gen4iod.menu.UploadSpeed.9600=9600 +gen4iod.menu.UploadSpeed.9600.upload.speed=9600 +gen4iod.menu.UploadSpeed.57600=57600 +gen4iod.menu.UploadSpeed.57600.upload.speed=57600 +gen4iod.menu.UploadSpeed.256000.windows=256000 +gen4iod.menu.UploadSpeed.256000.upload.speed=256000 +gen4iod.menu.UploadSpeed.230400.linux=230400 +gen4iod.menu.UploadSpeed.230400.macosx=230400 +gen4iod.menu.UploadSpeed.230400.upload.speed=230400 +gen4iod.menu.UploadSpeed.460800.linux=460800 +gen4iod.menu.UploadSpeed.460800.macosx=460800 +gen4iod.menu.UploadSpeed.460800.upload.speed=460800 +gen4iod.menu.UploadSpeed.512000.windows=512000 +gen4iod.menu.UploadSpeed.512000.upload.speed=512000 +gen4iod.menu.UploadSpeed.921600=921600 +gen4iod.menu.UploadSpeed.921600.upload.speed=921600 + +############################################################## +oak.name=DigiStump Oak + +oak.upload.tool=esptool +oak.upload.speed=115200 +oak.upload.resetmethod=ck +oak.upload.maximum_size=1040368 +oak.upload.maximum_data_size=81920 +oak.upload.wait_for_upload_port=true +oak.serial.disableDTR=true +oak.serial.disableRTS=true + +oak.build.mcu=esp8266 +oak.build.f_cpu=80000000L +oak.build.board=ESP8266_OAK +oak.build.core=esp8266 +oak.build.variant=oak +oak.build.flash_mode=dio +oak.build.flash_size=4M +oak.build.flash_freq=40 +oak.build.debug_port= +oak.build.debug_level= + +oak.menu.CpuFrequency.80=80 MHz +oak.menu.CpuFrequency.80.build.f_cpu=80000000L +oak.menu.CpuFrequency.160=160 MHz +oak.menu.CpuFrequency.160.build.f_cpu=160000000L + +oak.menu.UploadSpeed.921600=921600 +oak.menu.UploadSpeed.921600.upload.speed=921600 +oak.menu.UploadSpeed.115200=115200 +oak.menu.UploadSpeed.115200.upload.speed=115200 +oak.menu.UploadSpeed.9600=9600 +oak.menu.UploadSpeed.9600.upload.speed=9600 +oak.menu.UploadSpeed.57600=57600 +oak.menu.UploadSpeed.57600.upload.speed=57600 +oak.menu.UploadSpeed.256000.windows=256000 +oak.menu.UploadSpeed.256000.upload.speed=256000 +oak.menu.UploadSpeed.230400.linux=230400 +oak.menu.UploadSpeed.230400.macosx=230400 +oak.menu.UploadSpeed.230400.macosx=230400 +oak.menu.UploadSpeed.230400.upload.speed=230400 +oak.menu.UploadSpeed.460800.linux=460800 +oak.menu.UploadSpeed.460800.macosx=460800 +oak.menu.UploadSpeed.460800.upload.speed=460800 +oak.menu.UploadSpeed.512000.windows=512000 +oak.menu.UploadSpeed.512000.upload.speed=512000 + + +oak.menu.FlashSize.4M3M=4M (3M SPIFFS) +oak.menu.FlashSize.4M3M.build.flash_size=4M +oak.menu.FlashSize.4M3M.build.flash_ld=eagle.flash.4m.ld +oak.menu.FlashSize.4M3M.build.spiffs_start=0x100000 +oak.menu.FlashSize.4M3M.build.spiffs_end=0x3FB000 +oak.menu.FlashSize.4M3M.build.spiffs_blocksize=8192 +oak.menu.FlashSize.4M3M.build.spiffs_pagesize=256 + +oak.menu.FlashSize.4M1M=4M (1M SPIFFS) +oak.menu.FlashSize.4M1M.build.flash_size=4M +oak.menu.FlashSize.4M1M.build.flash_ld=eagle.flash.4m1m.ld +oak.menu.FlashSize.4M1M.build.spiffs_start=0x300000 +oak.menu.FlashSize.4M1M.build.spiffs_end=0x3FB000 +oak.menu.FlashSize.4M1M.build.spiffs_blocksize=8192 +oak.menu.FlashSize.4M1M.build.spiffs_pagesize=256 diff --git a/arduino/version 2.4.0/platform.txt b/arduino/version 2.4.0/platform.txt new file mode 100644 index 000000000..faa549ac5 --- /dev/null +++ b/arduino/version 2.4.0/platform.txt @@ -0,0 +1,131 @@ + +# ESP8266 platform +# ------------------------------ + +# For more info: +# https://github.com/arduino/Arduino/wiki/Arduino-IDE-1.5---3rd-party-Hardware-specification + +name=ESP8266 Modules +version=2.4.0 + + + + +compiler.warning_flags=-w +compiler.warning_flags.none=-w +compiler.warning_flags.default= +compiler.warning_flags.more=-Wall +compiler.warning_flags.all=-Wall -Wextra + +build.lwip_lib=-llwip_gcc +build.lwip_flags=-DLWIP_OPEN_SRC + +compiler.path={runtime.tools.xtensa-lx106-elf-gcc.path}/bin/ +compiler.sdk.path={runtime.platform.path}/tools/sdk +compiler.libc.path={runtime.platform.path}/tools/sdk/libc/xtensa-lx106-elf +compiler.cpreprocessor.flags=-D__ets__ -DICACHE_FLASH -U__STRICT_ANSI__ "-I{compiler.sdk.path}/include" "-I{compiler.sdk.path}/lwip/include" "-I{compiler.libc.path}/include" "-I{build.path}/core" + +compiler.c.cmd=xtensa-lx106-elf-gcc +compiler.c.flags=-c {compiler.warning_flags} -Os -g -Wpointer-arith -Wno-implicit-function-declaration -Wl,-EL -fno-inline-functions -nostdlib -mlongcalls -mtext-section-literals -falign-functions=4 -MMD -std=gnu99 -ffunction-sections -fdata-sections + +compiler.S.cmd=xtensa-lx106-elf-gcc +compiler.S.flags=-c -g -x assembler-with-cpp -MMD -mlongcalls + +compiler.c.elf.flags=-g {compiler.warning_flags} -Os -nostdlib -Wl,--no-check-sections -u call_user_start -u _printf_float -u _scanf_float -Wl,-static "-L{compiler.sdk.path}/lib" "-L{compiler.sdk.path}/ld" "-L{compiler.libc.path}/lib" "-T{build.flash_ld}" -Wl,--gc-sections -Wl,-wrap,system_restart_local -Wl,-wrap,spi_flash_read + +compiler.c.elf.cmd=xtensa-lx106-elf-gcc +compiler.c.elf.libs=-lhal -lphy -lpp -lnet80211 {build.lwip_lib} -lwpa -lcrypto -lmain -lwps -laxtls -lespnow -lsmartconfig -lairkiss -lmesh -lwpa2 -lstdc++ -lm -lc -lgcc + +compiler.cpp.cmd=xtensa-lx106-elf-g++ +compiler.cpp.flags=-c {compiler.warning_flags} -Os -g -mlongcalls -mtext-section-literals -fno-exceptions -fno-rtti -falign-functions=4 -std=c++11 -MMD -ffunction-sections -fdata-sections + +compiler.as.cmd=xtensa-lx106-elf-as + +compiler.ar.cmd=xtensa-lx106-elf-ar +compiler.ar.flags=cru + +compiler.elf2hex.cmd=esptool +compiler.elf2hex.flags= + +compiler.size.cmd=xtensa-lx106-elf-size + +compiler.esptool.cmd=esptool +compiler.esptool.cmd.windows=esptool.exe + +# This can be overriden in boards.txt +build.extra_flags=-DESP8266 + +# These can be overridden in platform.local.txt +compiler.c.extra_flags= +compiler.c.elf.extra_flags= +compiler.S.extra_flags= +compiler.cpp.extra_flags= +compiler.ar.extra_flags= +compiler.objcopy.eep.extra_flags= +compiler.elf2hex.extra_flags= + +## generate file with git version number +## needs bash, git, and echo + +## windows-compatible version may be added later + + +## Compile c files +recipe.c.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.c.flags} -DF_CPU={build.f_cpu} {build.lwip_flags} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Compile c++ files +recipe.cpp.o.pattern="{compiler.path}{compiler.cpp.cmd}" {compiler.cpreprocessor.flags} {compiler.cpp.flags} -DF_CPU={build.f_cpu} {build.lwip_flags} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" {compiler.cpp.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Compile S files +recipe.S.o.pattern="{compiler.path}{compiler.c.cmd}" {compiler.cpreprocessor.flags} {compiler.S.flags} -DF_CPU={build.f_cpu} {build.lwip_flags} {build.debug_port} {build.debug_level} -DARDUINO={runtime.ide.version} -DARDUINO_{build.board} -DARDUINO_ARCH_{build.arch} -DARDUINO_BOARD="{build.board}" {compiler.c.extra_flags} {build.extra_flags} {includes} "{source_file}" -o "{object_file}" + +## Create archives +recipe.ar.pattern="{compiler.path}{compiler.ar.cmd}" {compiler.ar.flags} {compiler.ar.extra_flags} "{build.path}/arduino.ar" "{object_file}" + +## Combine gc-sections, archives, and objects +recipe.c.combine.pattern="{compiler.path}{compiler.c.elf.cmd}" {compiler.c.elf.flags} {compiler.c.elf.extra_flags} -o "{build.path}/{build.project_name}.elf" -Wl,--start-group {object_files} "{build.path}/arduino.ar" {compiler.c.elf.libs} -Wl,--end-group "-L{build.path}" + +## Create eeprom +recipe.objcopy.eep.pattern= + +## Create hex +#recipe.objcopy.hex.pattern="{compiler.path}{compiler.elf2hex.cmd}" {compiler.elf2hex.flags} {compiler.elf2hex.extra_flags} "{build.path}/{build.project_name}.elf" "{build.path}/{build.project_name}.hex" + +recipe.objcopy.hex.pattern="{runtime.tools.esptool.path}/{compiler.esptool.cmd}" -eo "{runtime.platform.path}/bootloaders/eboot/eboot.elf" -bo "{build.path}/{build.project_name}.bin" -bm {build.flash_mode} -bf {build.flash_freq} -bz {build.flash_size} -bs .text -bp 4096 -ec -eo "{build.path}/{build.project_name}.elf" -bs .irom0.text -bs .text -bs .data -bs .rodata -bc -ec + +## Save hex +recipe.output.tmp_file={build.project_name}.bin +recipe.output.save_file={build.project_name}.{build.variant}.bin + +## Compute size +recipe.size.pattern="{compiler.path}{compiler.size.cmd}" -A "{build.path}/{build.project_name}.elf" +recipe.size.regex=^(?:\.irom0\.text|\.text|\.data|\.rodata|)\s+([0-9]+).* +recipe.size.regex.data=^(?:\.data|\.rodata|\.bss)\s+([0-9]+).* +#recipe.size.regex.eeprom=^(?:\.eeprom)\s+([0-9]+).* + +# ------------------------------ + +tools.esptool.cmd=esptool +tools.esptool.cmd.windows=esptool.exe +tools.esptool.path={runtime.tools.esptool.path} +tools.esptool.network_cmd=python +tools.esptool.network_cmd.windows=python.exe + +tools.esptool.upload.protocol=esp +tools.esptool.upload.params.verbose=-vv +tools.esptool.upload.params.quiet= +tools.esptool.upload.pattern="{path}/{cmd}" {upload.verbose} -cd {upload.resetmethod} -cb {upload.speed} -cp "{serial.port}" -ca 0x00000 -cf "{build.path}/{build.project_name}.bin" +tools.esptool.upload.network_pattern="{network_cmd}" "{runtime.platform.path}/tools/espota.py" -i "{serial.port}" -p "{network.port}" "--auth={network.password}" -f "{build.path}/{build.project_name}.bin" + +tools.mkspiffs.cmd=mkspiffs +tools.mkspiffs.cmd.windows=mkspiffs.exe +tools.mkspiffs.path={runtime.tools.mkspiffs.path} + +tools.espupload.cmd=python +tools.espupload.cmd.windows=python.exe +tools.espupload.path={runtime.platform.path}/tools + +tools.espupload.upload.protocol=espupload +tools.espupload.upload.params.verbose= +tools.espupload.upload.params.quiet= +tools.espupload.upload.pattern="{cmd}" "{path}/espupload.py" -f "{build.path}/{build.project_name}.bin" From c1083c6e1c4f8bafc926adbf088ecfd3f00328d5 Mon Sep 17 00:00:00 2001 From: arendst Date: Sun, 7 Jan 2018 14:56:23 +0100 Subject: [PATCH 03/11] v5.11.0a Align with master --- README.md | 2 +- sonoff/_releasenotes.ino | 82 +++++++++++++--------------------------- sonoff/settings.ino | 11 ++++++ sonoff/sonoff.ino | 4 +- sonoff/sonoff_template.h | 15 ++++++++ sonoff/webserver.ino | 8 ++-- 6 files changed, 60 insertions(+), 62 deletions(-) diff --git a/README.md b/README.md index edff41892..bd7844b9e 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ## Sonoff-Tasmota Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE. -Current version is **5.10.0j** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. +Current version is **5.11.0a** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. ### ATTENTION All versions diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index 6bdada0bb..aa3373ee6 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -1,66 +1,38 @@ -/* 5.10.0j - * Allow conditional code based on core version - * Removed all MQTT, JSON and Command language defines from locale files (#1473) +/* 5.11.0a * - * 5.10.0i - * Add device function pointers - * Moved Command and JSON English language defines to one file (i18n.h) - * Update it-IT.h language file (#1449) - * Fix Wemo and Hue emulation by adding M-Search response delay (#1486) - * - * 5.10.0h - * Fix Wemo Emulation for Gen 2 devices (#1486) - * - * 5.10.0g - * Add 2nd Gen Alexa support to Wemo emulation discovery (#1357, #1450) - * - * 5.10.0f - * Differentiate between JSON text defines and other text defines to allow for English JSON while using different locale (#1449) - * Fix display of build date and time in non-english locale (#1465) - * Add define for additional number of WS2812 schemes (#1463) - * - * 5.10.0e - * Add Italian language file (#1449) - * Fix Wemo Emulation once again closest to issue (#1357) - * Add support for sensor SHT3x (#1314) - * - * 5.10.0d - * Renamed commands Color2,3,4 to Color3,4,5 - * Add command Color2 to set color while keeping same dimmer value - * Add led signal to Carbon Dioxide (CO2) sensors (see user_config.h) - * Fix Wemo Emulation again (#1357) + * 5.11.0 20180107 + * Minor webpage HTML optimizations (#1358) * Updated German translation (#1438) - * - * 5.10.0c - * Consolidate device serial (MH-Z19, SenseAir and Pzem004T) into TasmotaSerial library - * Consolidate PWM device recognition - * Fix Wemo Emulation (#1357) - * Add support for Arilux LC06 (#1414) - * - * 5.10.0b - * Add support for PZEM004T energy sensor to be enabled with define USE_PZEM004T in user_config.h * Change Sonoff Pow Energy MQTT data message and consolidate Status 8 into Status 10 + * Change ADS1115 default voltage range from +/-2V to +/-6V (#1289) + * Change text to Active for 3 minutes (#1364) * Change Wemo SetBinaryState to distinguish from GetBinaryState (#1357) * Change output of HTTP command to valid JSON and Array only (#1363) - * Add support for MH-Z19(B) CO2 sensor to be enabled with define USE_MHZ19 in user_config.h (#561, #1248) - * Add support for SenseAir S8 CO2 sensor to be enabled with define USE_SENSEAIR in user_config.h - * Add support for Domoticz Air Quality sensor to be used by MH-Z19(B) and SenseAir sensors - * - * 5.10.0a - * Add (experimental) support for sensor SHT3x - * Add support for iTead SI7021 temperature and humidity sensor by consolidating DHT22 into AM2301 and using former DHT22 as SI7021 (#735) + * Removed all MQTT, JSON and Command language defines from locale files and set fixed to English (#1473) + * Renamed commands Color2,3,4 to Color3,4,5 * Fix BME280 calculation (#1051) - * Add support for BME680 using adafruit libraries (#1212) - * Change ADS1115 default voltage range from +/-2V to +/-6V (#1289) - * Add multipress support and more user configurable options to Sonoff Dual R2 (#1291) * Fix Sonoff Bridge missed learned key if learned data contains 0x55 (End of Transmission) flag (#1095, #1294) - * Add support for TSL2561 using adafruit library (#661, #1311) - * Add alternative support for SHT3x enabled with define USE_SHT3X_V2 in user_config.h (#1314) - * Add alternative support for SHT3x enabled with define USE_SHT3X_V3 in user_config.h (#1314) * Fix PWM initialization in Dimmer/Color mode (#1321) - * Fix BME680 pressure data (#1356) - * Minor webpage HTML optimizations (#1358) - * Change text to Active for 3 minutes (#1364) + * Fix Wemo Emulation (#1357) + * Fix display of build date and time in non-english locale (#1465) + * Fix Wemo and Hue emulation by adding M-Search response delay (#1486) + * Add libraries Adafruit_BME680-1.0.5, Adafruit_Sensor-1.0.2.02, TasmotaSerial-1.0.0 and TSL2561-Arduino-Library + * Add command Color2 to set color while keeping same dimmer value + * Add device function pointers + * Add support for SenseAir S8 CO2 sensor + * Add color led signal to Carbon Dioxide (CO2) sensors using defines CO2_LOW and CO2_HIGH in user_config.h + * Add support for Domoticz Air Quality sensor to be used by MH-Z19(B) and SenseAir sensors + * Add support for PZEM004T energy sensor + * Add support for iTead SI7021 temperature and humidity sensor by consolidating DHT22 into AM2301 and using former DHT22 as SI7021 (#735) + * Add support for BME680 using adafruit libraries (#1212) + * Add support for MH-Z19(B) CO2 sensor (#561, #1248) + * Add multipress support and more user configurable GPIO to Sonoff Dual R2 (#1291) + * Add support for TSL2561 using adafruit library (#661, #1311) + * Add support for SHT3x (#1314) + * Add support for Arilux LC06 (#1414) + * Add Italian language file (#1449) + * Add 2nd Gen Alexa support to Wemo emulation discovery (#1357, #1450) + * Add define for additional number of WS2812 schemes (#1463) * * 5.10.0 20171201 * Upgrade library ArduinoJson to 5.11.2 diff --git a/sonoff/settings.ino b/sonoff/settings.ino index 90b3e025d..81afd3461 100644 --- a/sonoff/settings.ino +++ b/sonoff/settings.ino @@ -25,6 +25,17 @@ #define EMULATION EMUL_NONE // [Emulation] Select Belkin WeMo (single relay/light) or Hue Bridge emulation (multi relay/light) (EMUL_NONE, EMUL_WEMO or EMUL_HUE) #endif +#ifndef USE_DISPLAY // Add Display Support for up to eigth Matrices +#define MTX_ADDRESS1 0 +#define MTX_ADDRESS2 0 +#define MTX_ADDRESS3 0 +#define MTX_ADDRESS4 0 +#define MTX_ADDRESS5 0 +#define MTX_ADDRESS6 0 +#define MTX_ADDRESS7 0 +#define MTX_ADDRESS8 0 +#endif + /*********************************************************************************************\ * RTC memory \*********************************************************************************************/ diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 88c2f7be9..27b008ab1 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -25,8 +25,8 @@ - Select IDE Tools - Flash Size: "1M (no SPIFFS)" ====================================================*/ -#define VERSION 0x050A000A -#define VERSION_STRING "5.10.0j" // Would be great to have a macro that fills this from VERSION ... +#define VERSION 0x050B0001 +#define VERSION_STRING "5.11.0a" // Would be great to have a macro that fills this from VERSION ... // Location specific includes #include "sonoff.h" // Enumaration used in user_config.h diff --git a/sonoff/sonoff_template.h b/sonoff/sonoff_template.h index f0c1c5608..518538290 100644 --- a/sonoff/sonoff_template.h +++ b/sonoff/sonoff_template.h @@ -844,6 +844,21 @@ const mytmplt kModules[MAXMODULE] PROGMEM = { GPIO_LED1, // GPIO15 Led (1 = On, 0 = Off) 0, 0 } + + { "Zengge WF017", // Zenggee ZJ-WF017-A (ESP12S)) - https://www.ebay.com/p/Smartphone-Android-IOS-WiFi-Music-Controller-for-RGB-5050-3528-LED-Strip-Light/534446632?_trksid=p2047675.l2644 + GPIO_KEY1, // GPIO00 Optional Button + 0, + GPIO_USER, // GPIO02 Empty pad + 0, + GPIO_USER, // GPIO04 W2 - PWM5 + 0, + 0, 0, 0, 0, 0, 0, // Flash connection + GPIO_PWM2, // GPIO12 RGB LED Green + GPIO_PWM1, // GPIO13 RGB LED Red + GPIO_PWM3, // GPIO14 RGB LED Blue + 0, 0, 0 + } + */ #endif // _SONOFF_TEMPLATE_H_ \ No newline at end of file diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index 1b13e8690..bc37f1bb2 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -222,7 +222,7 @@ const char HTTP_FORM_LOG1[] PROGMEM = "
 " D_LOGGING_PARAMETERS " 
" ""; const char HTTP_FORM_LOG2[] PROGMEM = - "
{b0" D_LOG_LEVEL " ({b1)
" "0 " D_NONE "" "1 " D_ERROR "" "2 " D_INFO "" @@ -837,7 +837,7 @@ void HandleLoggingConfiguration() page += FPSTR(HTTP_FORM_LOG2); switch (idx) { case 0: - page.replace(F("{b0"), F(D_SERIAL " ")); + page.replace(F("{b0"), F(D_SERIAL_LOG_LEVEL)); page.replace(F("{b1"), STR(SERIAL_LOG_LEVEL)); page.replace(F("{b2"), F("ls")); for (byte i = LOG_LEVEL_NONE; i < LOG_LEVEL_ALL; i++) { @@ -845,7 +845,7 @@ void HandleLoggingConfiguration() } break; case 1: - page.replace(F("{b0"), F(D_WEB " ")); + page.replace(F("{b0"), F(D_WEB_LOG_LEVEL)); page.replace(F("{b1"), STR(WEB_LOG_LEVEL)); page.replace(F("{b2"), F("lw")); for (byte i = LOG_LEVEL_NONE; i < LOG_LEVEL_ALL; i++) { @@ -853,7 +853,7 @@ void HandleLoggingConfiguration() } break; case 2: - page.replace(F("{b0"), F(D_SYS)); + page.replace(F("{b0"), F(D_SYS_LOG_LEVEL)); page.replace(F("{b1"), STR(SYS_LOG_LEVEL)); page.replace(F("{b2"), F("ll")); for (byte i = LOG_LEVEL_NONE; i < LOG_LEVEL_ALL; i++) { From 4fb2da71c798c4df1ae428a607765bb529722eee Mon Sep 17 00:00:00 2001 From: arendst Date: Sun, 7 Jan 2018 15:08:11 +0100 Subject: [PATCH 04/11] v5.11.0a Align with master --- sonoff/language/de-DE.h | 7 +++---- sonoff/language/en-GB.h | 7 +++---- sonoff/language/it-IT.h | 7 +++---- sonoff/language/nl-NL.h | 7 +++---- sonoff/language/pl-PL.h | 7 +++---- 5 files changed, 15 insertions(+), 20 deletions(-) diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 3af1998f8..0f5ef8142 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -124,7 +124,6 @@ #define D_RETAINED "beibehalten" #define D_SAVE "Speichern" #define D_SENSOR "Sensor" -#define D_SERIAL "Seriell" #define D_SSID "SSID" #define D_START "Start" #define D_STD_TIME "STD" @@ -132,7 +131,6 @@ #define D_SUBNET_MASK "Subnetzmaske" #define D_SUBSCRIBE_TO "subscribe to" #define D_SUCCESSFUL "erfolgreich" -#define D_SYS "Sys " // Sys log #define D_TEMPERATURE "Temperatur" #define D_TO "zu" #define D_TOGGLE "An/Aus" @@ -148,7 +146,6 @@ #define D_VERSION "Version" #define D_VOLTAGE "Spannung" #define D_WARMLIGHT "warm" -#define D_WEB "Web" // Web log #define D_WEB_SERVER "Web-Server" // sonoff.ino @@ -255,7 +252,9 @@ #define D_FULL_TOPIC "full topic" #define D_LOGGING_PARAMETERS "Logging Einstellungen" -#define D_LOG_LEVEL "Log level" +#define D_SERIAL_LOG_LEVEL "Seriell Log level" +#define D_WEB_LOG_LEVEL "Web Log level" +#define D_SYS_LOG_LEVEL "Sys Log level" #define D_MORE_DEBUG "More debug" #define D_SYSLOG_HOST "Sys Log Host" #define D_SYSLOG_PORT "Sys Log Port" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index b043618f0..9d34546d7 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -124,7 +124,6 @@ #define D_RETAINED "retained" #define D_SAVE "Save" #define D_SENSOR "Sensor" -#define D_SERIAL "Serial" #define D_SSID "SSId" #define D_START "Start" #define D_STD_TIME "STD" @@ -132,7 +131,6 @@ #define D_SUBNET_MASK "Subnet Mask" #define D_SUBSCRIBE_TO "Subscribe to" #define D_SUCCESSFUL "Successful" -#define D_SYS "Sys" // Sys log #define D_TEMPERATURE "Temperature" #define D_TO "to" #define D_TOGGLE "Toggle" @@ -148,7 +146,6 @@ #define D_VERSION "Version" #define D_VOLTAGE "Voltage" #define D_WARMLIGHT "Warm" -#define D_WEB "Web" // Web log #define D_WEB_SERVER "Web Server" // sonoff.ino @@ -255,7 +252,9 @@ #define D_FULL_TOPIC "Full Topic" #define D_LOGGING_PARAMETERS "Logging parameters" -#define D_LOG_LEVEL "log level" +#define D_SERIAL_LOG_LEVEL "Serial log level" +#define D_WEB_LOG_LEVEL "Web log level" +#define D_SYS_LOG_LEVEL "Syslog level" #define D_MORE_DEBUG "More debug" #define D_SYSLOG_HOST "Syslog host" #define D_SYSLOG_PORT "Syslog port" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 24e76af5a..015443f37 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -124,7 +124,6 @@ #define D_RETAINED "salvato" #define D_SAVE "Salva" #define D_SENSOR "Sensore" -#define D_SERIAL "Seriale" #define D_SSID "SSId" #define D_START "Start" #define D_STD_TIME "STD" @@ -132,7 +131,6 @@ #define D_SUBNET_MASK "Maschera sottorete" #define D_SUBSCRIBE_TO "Sottoscrivi a" #define D_SUCCESSFUL "Successful" -#define D_SYS "Sys" // Sys log #define D_TEMPERATURE "Temperature" #define D_TO "a" #define D_TOGGLE "Toggle" @@ -148,7 +146,6 @@ #define D_VERSION "Version" #define D_VOLTAGE "Tensione" #define D_WARMLIGHT "Calda" -#define D_WEB "Web" // Web log #define D_WEB_SERVER "Web Server" // sonoff.ino @@ -255,7 +252,9 @@ #define D_FULL_TOPIC "Full Topic" #define D_LOGGING_PARAMETERS "Parametri Logging" -#define D_LOG_LEVEL "livello di log" +#define D_SERIAL_LOG_LEVEL "Seriale livello di log" +#define D_WEB_LOG_LEVEL "Web livello di log" +#define D_SYS_LOG_LEVEL "Sys livello di log" #define D_MORE_DEBUG "Debug aggiuntivo" #define D_SYSLOG_HOST "Syslog host" #define D_SYSLOG_PORT "Syslog porta" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 822120162..3de82d460 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -124,7 +124,6 @@ #define D_RETAINED "retained" #define D_SAVE "Opslaan" #define D_SENSOR "Sensor" -#define D_SERIAL "Serieel" #define D_SSID "SSId" #define D_START "Start" #define D_STD_TIME "WT" @@ -132,7 +131,6 @@ #define D_SUBNET_MASK "Subnet Masker" #define D_SUBSCRIBE_TO "Abonneer op" #define D_SUCCESSFUL "Gelukt" -#define D_SYS "Sys" // Sys log #define D_TEMPERATURE "Temperatuur" #define D_TO "naar" #define D_TOGGLE "Toggle" // Wissel, Tuimel @@ -148,7 +146,6 @@ #define D_VERSION "Versie" #define D_VOLTAGE "Spanning" #define D_WARMLIGHT "Warm" -#define D_WEB "Web" // Web log #define D_WEB_SERVER "Webserver" // sonoff.ino @@ -255,7 +252,9 @@ #define D_FULL_TOPIC "Volledig Topic" #define D_LOGGING_PARAMETERS "Logging parameters" -#define D_LOG_LEVEL "log niveau" +#define D_SERIAL_LOG_LEVEL "Serieel log niveau" +#define D_WEB_LOG_LEVEL "Web log niveau" +#define D_SYS_LOG_LEVEL "Syslog niveau" #define D_MORE_DEBUG "Meer debug" #define D_SYSLOG_HOST "Syslog host" #define D_SYSLOG_PORT "Syslog poort" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index d349ae06a..b77d381bc 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -124,7 +124,6 @@ #define D_RETAINED "Zachowane" #define D_SAVE "Zapisz" #define D_SENSOR "Czujnik" -#define D_SERIAL "Serial" #define D_SSID "SSID" #define D_START "Start" #define D_STD_TIME "STD" @@ -132,7 +131,6 @@ #define D_SUBNET_MASK "Maska podsieci" #define D_SUBSCRIBE_TO "Subskrybuj do" #define D_SUCCESSFUL "Powodzenie" -#define D_SYS "System " // Sys log #define D_TEMPERATURE "Temperatura" #define D_TO "do" #define D_TOGGLE "Przelacz" @@ -148,7 +146,6 @@ #define D_VERSION "Wersja" #define D_VOLTAGE "Napiecie" #define D_WARMLIGHT "Nagrzanie" -#define D_WEB "Web" // Web log #define D_WEB_SERVER "Web Server" // sonoff.ino @@ -255,7 +252,9 @@ #define D_FULL_TOPIC "Pelen temat" #define D_LOGGING_PARAMETERS "Opcje dziennika" -#define D_LOG_LEVEL "poziom dziennika" +#define D_SERIAL_LOG_LEVEL "Serial poziom dziennika" +#define D_WEB_LOG_LEVEL "Web poziom dziennika" +#define D_SYS_LOG_LEVEL "System poziom dziennika" #define D_MORE_DEBUG "Wiecej informacji debugujacych" #define D_SYSLOG_HOST "Syslog host" #define D_SYSLOG_PORT "Syslog port" From 13c45d2b9aebd08fd1b58f46a3fbb55ac958639e Mon Sep 17 00:00:00 2001 From: arendst Date: Sun, 7 Jan 2018 15:15:01 +0100 Subject: [PATCH 05/11] v5.11.0a Align with master --- sonoff/settings.ino | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/sonoff/settings.ino b/sonoff/settings.ino index 81afd3461..2b1a6acc8 100644 --- a/sonoff/settings.ino +++ b/sonoff/settings.ino @@ -25,14 +25,28 @@ #define EMULATION EMUL_NONE // [Emulation] Select Belkin WeMo (single relay/light) or Hue Bridge emulation (multi relay/light) (EMUL_NONE, EMUL_WEMO or EMUL_HUE) #endif -#ifndef USE_DISPLAY // Add Display Support for up to eigth Matrices +#ifndef MTX_ADDRESS1 // Add Display Support for up to eigth Matrices #define MTX_ADDRESS1 0 +#endif +#ifndef MTX_ADDRESS2 #define MTX_ADDRESS2 0 +#endif +#ifndef MTX_ADDRESS3 #define MTX_ADDRESS3 0 +#endif +#ifndef MTX_ADDRESS4 #define MTX_ADDRESS4 0 +#endif +#ifndef MTX_ADDRESS5 #define MTX_ADDRESS5 0 +#endif +#ifndef MTX_ADDRESS6 #define MTX_ADDRESS6 0 +#endif +#ifndef MTX_ADDRESS7 #define MTX_ADDRESS7 0 +#endif +#ifndef MTX_ADDRESS8 #define MTX_ADDRESS8 0 #endif From f4f40395991b7e4c76ebedcfa36af4c08d5f1cb7 Mon Sep 17 00:00:00 2001 From: arendst Date: Mon, 8 Jan 2018 11:44:18 +0100 Subject: [PATCH 06/11] v5.11.1a Align with master --- README.md | 2 +- sonoff/_releasenotes.ino | 5 ++++- sonoff/i18n.h | 2 +- sonoff/language/de-DE.h | 3 ++- sonoff/language/en-GB.h | 3 ++- sonoff/language/it-IT.h | 3 ++- sonoff/language/nl-NL.h | 3 ++- sonoff/language/pl-PL.h | 3 ++- sonoff/sonoff.ino | 4 ++-- sonoff/{xsns_03_energy.ino => xdrv_03_energy.ino} | 2 +- 10 files changed, 19 insertions(+), 11 deletions(-) rename sonoff/{xsns_03_energy.ino => xdrv_03_energy.ino} (99%) diff --git a/README.md b/README.md index bd7844b9e..77598acc2 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ## Sonoff-Tasmota Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE. -Current version is **5.11.0a** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. +Current version is **5.11.1a** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. ### ATTENTION All versions diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index aa3373ee6..b3d95b182 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -1,4 +1,7 @@ -/* 5.11.0a +/* 5.11.1a + * + * 5.11.1 20180107 + * Fix Sonoff Pow command handling (#1542) * * 5.11.0 20180107 * Minor webpage HTML optimizations (#1358) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index c0f3b0c91..4508c3764 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -256,7 +256,7 @@ #define D_CMND_IRSEND "IRSend" #define D_CMND_IRHVAC "IRHVAC" -// Commands xsns_03_energy.ino +// Commands xdrv_03_energy.ino #define D_CMND_POWERLOW "PowerLow" #define D_CMND_POWERHIGH "PowerHigh" #define D_CMND_VOLTAGELOW "VoltageLow" diff --git a/sonoff/language/de-DE.h b/sonoff/language/de-DE.h index 0f5ef8142..9165dd8d7 100644 --- a/sonoff/language/de-DE.h +++ b/sonoff/language/de-DE.h @@ -364,7 +364,7 @@ #define D_DOMOTICZ_AIRQUALITY "AirQuality" #define D_DOMOTICZ_UPDATE_TIMER "Update timer" -// xsns_03_energy.ino +// xdrv_03_energy.ino #define D_ENERGY_TODAY "Energie heute" #define D_ENERGY_YESTERDAY "Energie gestern" #define D_ENERGY_TOTAL "Energie insgesamt" @@ -412,6 +412,7 @@ #define D_SENSOR_SPI_CS "SPI CS" #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" +#define D_SENSOR_PMS5003 "PMS5003" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/en-GB.h b/sonoff/language/en-GB.h index 9d34546d7..feb3b5bdf 100644 --- a/sonoff/language/en-GB.h +++ b/sonoff/language/en-GB.h @@ -364,7 +364,7 @@ #define D_DOMOTICZ_AIRQUALITY "AirQuality" #define D_DOMOTICZ_UPDATE_TIMER "Update timer" -// xsns_03_energy.ino +// xdrv_03_energy.ino #define D_ENERGY_TODAY "Energy Today" #define D_ENERGY_YESTERDAY "Energy Yesterday" #define D_ENERGY_TOTAL "Energy Total" @@ -412,6 +412,7 @@ #define D_SENSOR_SPI_CS "SPI CS" #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" +#define D_SENSOR_PMS5003 "PMS5003" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/it-IT.h b/sonoff/language/it-IT.h index 015443f37..942ba81ff 100644 --- a/sonoff/language/it-IT.h +++ b/sonoff/language/it-IT.h @@ -364,7 +364,7 @@ #define D_DOMOTICZ_AIRQUALITY "AirQuality" #define D_DOMOTICZ_UPDATE_TIMER "Intervallo di aggiornamento" -// xsns_03_energy.ino +// xdrv_03_energy.ino #define D_ENERGY_TODAY "Energia Oggi" #define D_ENERGY_YESTERDAY "Energia Ieri" #define D_ENERGY_TOTAL "Energia Totale" @@ -412,6 +412,7 @@ #define D_SENSOR_SPI_CS "SPI CS" #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" +#define D_SENSOR_PMS5003 "PMS5003" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/nl-NL.h b/sonoff/language/nl-NL.h index 3de82d460..ad2feece8 100644 --- a/sonoff/language/nl-NL.h +++ b/sonoff/language/nl-NL.h @@ -364,7 +364,7 @@ #define D_DOMOTICZ_AIRQUALITY "AirQuality" #define D_DOMOTICZ_UPDATE_TIMER "Bijwerk timer" -// xsns_03_energy.ino +// xdrv_03_energy.ino #define D_ENERGY_TODAY "Verbruik vandaag" #define D_ENERGY_YESTERDAY "Verbruik gisteren" #define D_ENERGY_TOTAL "Verbruik totaal" @@ -412,6 +412,7 @@ #define D_SENSOR_SPI_CS "SPI CS" #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" +#define D_SENSOR_PMS5003 "PMS5003" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/language/pl-PL.h b/sonoff/language/pl-PL.h index b77d381bc..f3a743cb1 100644 --- a/sonoff/language/pl-PL.h +++ b/sonoff/language/pl-PL.h @@ -364,7 +364,7 @@ #define D_DOMOTICZ_AIRQUALITY "AirQuality" #define D_DOMOTICZ_UPDATE_TIMER "Zaktualizuj czasomierz" -// xsns_03_energy.ino +// xdrv_03_energy.ino #define D_ENERGY_TODAY "Energia Dzisiaj" #define D_ENERGY_YESTERDAY "Energia Wczoraj" #define D_ENERGY_TOTAL "Energia suma" @@ -412,6 +412,7 @@ #define D_SENSOR_SPI_CS "SPI CS" #define D_SENSOR_SPI_DC "SPI DC" #define D_SENSOR_BACKLIGHT "BkLight" +#define D_SENSOR_PMS5003 "PMS5003" // Units #define D_UNIT_AMPERE "A" diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index 27b008ab1..dd1b3b0b2 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -25,8 +25,8 @@ - Select IDE Tools - Flash Size: "1M (no SPIFFS)" ====================================================*/ -#define VERSION 0x050B0001 -#define VERSION_STRING "5.11.0a" // Would be great to have a macro that fills this from VERSION ... +#define VERSION 0x050B0101 +#define VERSION_STRING "5.11.1a" // Would be great to have a macro that fills this from VERSION ... // Location specific includes #include "sonoff.h" // Enumaration used in user_config.h diff --git a/sonoff/xsns_03_energy.ino b/sonoff/xdrv_03_energy.ino similarity index 99% rename from sonoff/xsns_03_energy.ino rename to sonoff/xdrv_03_energy.ino index e0e7db308..3c06db271 100644 --- a/sonoff/xsns_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -1,5 +1,5 @@ /* - xsns_03_energy.ino - HLW8012 (Sonoff Pow) and PZEM004T energy sensor support for Sonoff-Tasmota + xdrv_03_energy.ino - HLW8012 (Sonoff Pow) and PZEM004T energy sensor support for Sonoff-Tasmota Copyright (C) 2018 Theo Arends From 1ce4e75dd86125b773b6c1191a2d4b2b853b9c7b Mon Sep 17 00:00:00 2001 From: arendst Date: Wed, 10 Jan 2018 10:31:36 +0100 Subject: [PATCH 07/11] ignore user_config_override.h (#1554) ignore user_config_override.h (#1554) --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 5dac9f52f..49359a587 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,5 @@ .piolibdeps .clang_complete .gcc-flags.json +.vscode +sonoff/user_config_override.h From 594f465f71986024eb4ef83a9542cbb611fdc781 Mon Sep 17 00:00:00 2001 From: arendst Date: Wed, 10 Jan 2018 12:14:37 +0100 Subject: [PATCH 08/11] Add file rename to ease OTA upload Add file rename to ease OTA upload --- pio/espupload.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/pio/espupload.py b/pio/espupload.py index df3be81c3..d7f7e9512 100644 --- a/pio/espupload.py +++ b/pio/espupload.py @@ -18,13 +18,19 @@ import pycurl HOST_URL = "domus1:80/api/upload-arduino.php" def upload(hostUrl, filename): + tname = os.path.normpath(os.path.dirname(filename)) + new_filename = tname + os.sep + os.path.basename(tname) + '.bin' + if os.path.exists(new_filename): + os.remove(new_filename) + os.rename(filename, new_filename) + url = 'http://%s' % (hostUrl) c = pycurl.Curl() c.setopt(c.URL, url) # The "Expect:" is there to suppress "Expect: 100-continue" behaviour that is # the default in libcurl when posting large bodies (and fails on lighttpd). c.setopt(c.HTTPHEADER, ["Expect:"]) - c.setopt(c.HTTPPOST, [('file', (c.FORM_FILE, filename, )), ]) + c.setopt(c.HTTPPOST, [('file', (c.FORM_FILE, new_filename, )), ]) c.perform() c.close() From aed070cc906bbde9a4ae06656f45fe0a0c9a6764 Mon Sep 17 00:00:00 2001 From: arendst Date: Wed, 10 Jan 2018 14:10:25 +0100 Subject: [PATCH 09/11] Add automagic two step OTA and Chinese locale 5.11.1a * Add automagic two step Web server OTA upgrade using filename-minimal image if OTA free space is too small * Add chinese language file (#1551) --- sonoff/_releasenotes.ino | 2 + sonoff/i18n.h | 5 +- sonoff/language/de-DE.h | 11 +- sonoff/language/en-GB.h | 11 +- sonoff/language/it-IT.h | 11 +- sonoff/language/nl-NL.h | 11 +- sonoff/language/pl-PL.h | 11 +- sonoff/language/zh-CN.h | 469 ++++++++++++++++++++++++++++++++++++ sonoff/settings.h | 2 +- sonoff/sonoff.h | 2 +- sonoff/sonoff.ino | 65 ++++- sonoff/sonoff_template.h | 6 +- sonoff/support.ino | 6 + sonoff/user_config.h | 1 + sonoff/webserver.ino | 8 +- sonoff/xdrv_03_energy.ino | 1 + sonoff/xsns_15_mhz19.ino | 1 + sonoff/xsns_17_senseair.ino | 1 + 18 files changed, 596 insertions(+), 28 deletions(-) create mode 100644 sonoff/language/zh-CN.h diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index b3d95b182..c4ed9770b 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -1,4 +1,6 @@ /* 5.11.1a + * Add automagic two step Web server OTA upgrade using filename-minimal image if OTA free space is too small + * Add chinese language file (#1551) * * 5.11.1 20180107 * Fix Sonoff Pow command handling (#1542) diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 4508c3764..89e6951e1 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -75,6 +75,7 @@ #define D_JSON_LOW "Low" #define D_JSON_MAC "Mac" #define D_JSON_MASK "Mask" +#define D_JSON_MINIMAL "minimal" #define D_JSON_NO "No" #define D_JSON_NOISE "Noise" #define D_JSON_NONE "None" @@ -359,7 +360,7 @@ const char kUnitNames[] PROGMEM = D_UNIT_MILLIAMPERE "|" D_UNIT_MILLISECOND "|" D_UNIT_MINUTE "|" - D_UNIT_PPM "|" + D_UNIT_PARTS_PER_MILLION "|" D_UNIT_PRESSURE "|" D_UNIT_SECOND "|" D_UNIT_SECTORS "|" @@ -428,7 +429,7 @@ const char HTTP_SNS_SEAPRESSURE[] PROGMEM = "%s{s}%s " D_PRESSUREATSEALEVEL "{m} const char HTTP_SNS_ANALOG[] PROGMEM = "%s{s}%s " D_ANALOG_INPUT "%d{m}%d{e}"; // {s} =
, {m} = , {e} =
, {m} = , {e} =
, {m} = , {e} =
String func = FPSTR(HTTP_SCRIPT_INFO_BEGIN); func += F(" -const char HTTP_SNS_HUM[] PROGMEM = "%s{s}%s " D_HUMIDITY "{m}%s%{e}"; // {s} = +const char HTTP_SNS_HUM[] PROGMEM = "%s{s}%s " D_HUMIDITY "{m}%s%%{e}"; // {s} = const char HTTP_SNS_PRESSURE[] PROGMEM = "%s{s}%s " D_PRESSURE "{m}%s " D_UNIT_PRESSURE "{e}"; // {s} = const char HTTP_SNS_SEAPRESSURE[] PROGMEM = "%s{s}%s " D_PRESSUREATSEALEVEL "{m}%s " D_UNIT_PRESSURE "{e}"; // {s} = const char HTTP_SNS_ANALOG[] PROGMEM = "%s{s}%s " D_ANALOG_INPUT "%d{m}%d{e}"; // {s} = diff --git a/sonoff/language/fr-FR.h b/sonoff/language/fr-FR.h new file mode 100644 index 000000000..25b41c67b --- /dev/null +++ b/sonoff/language/fr-FR.h @@ -0,0 +1,469 @@ +/* + fr-FR.h - localization for French - France for Sonoff-Tasmota + + Copyright (C) 2018 Olivier Francais + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef _LANGUAGE_FR_FR_H_ +#define _LANGUAGE_FR_FR_H_ + +/*************************** ATTENTION *******************************\ + * + * Due to memory constraints only UTF-8 is supported. + * To save code space keep text as short as possible. + * Time and Date provided by SDK can not be localized (yet). + * Use online command StateText to translate ON, OFF, HOLD and TOGGLE. + * Use online command Prefix to translate cmnd, stat and tele. + * +\*********************************************************************/ + +// "2017-03-07T11:08:02" - ISO8601:2004 +#define D_YEAR_MONTH_SEPARATOR "-" +#define D_MONTH_DAY_SEPARATOR "-" +#define D_DATE_TIME_SEPARATOR "T" +#define D_HOUR_MINUTE_SEPARATOR ":" +#define D_MINUTE_SECOND_SEPARATOR ":" + +#define D_DAY3LIST "DimLunMarMerJeuVenSam" +#define D_MONTH3LIST "JanFevMarAvrMaiJunJulAutSepOctNovDec" + +// Non JSON decimal separator +#define D_DECIMAL_SEPARATOR "," + +// Common +#define D_ADMIN "Admin" +#define D_AIR_QUALITY "Qualité de l'Air" +#define D_AP "AP" // Access Point +#define D_AS "comme" +#define D_AUTO "AUTO" +#define D_BLINK "Blink" +#define D_BLINKOFF "BlinkOff" +#define D_BOOT_COUNT "Nombre de boot" +#define D_BRIGHTLIGHT "Luminosité" +#define D_BUTTON "Boutton" +#define D_BY "par" // Written by me +#define D_BYTES "Bytes" +#define D_CELSIUS "Celsius" +#define D_CO2 "Dioxyde arbone" +#define D_CODE "code" // Button code +#define D_COLDLIGHT "Froid" +#define D_COMMAND "Commande" +#define D_CONNECTED "Connecté" +#define D_COUNT "Compte" +#define D_COUNTER "Compteur" +#define D_CURRENT "Courrant" // As in Voltage and Current +#define D_DATA "Data" +#define D_DARKLIGHT "Sombre" +#define D_DEBUG "Debug" +#define D_DISABLED "Désactivé" +#define D_DNS_SERVER "Serveur DNS" +#define D_DONE "Fait" +#define D_DST_TIME "DST" +#define D_EMULATION "Emulation" +#define D_ENABLED "Activé" +#define D_ERASE "Effacer" +#define D_ERROR "Erreur" +#define D_FAHRENHEIT "Fahrenheit" +#define D_FAILED "Echoué" +#define D_FALLBACK "Fallback" +#define D_FALLBACK_TOPIC "Fallback Topic" +#define D_FALSE "Faux" +#define D_FILE "Fichier" +#define D_FREE_MEMORY "Memoire libre" +#define D_GAS "Gaz" +#define D_GATEWAY "Passerelle" +#define D_GROUP "Groupe" +#define D_HOST "Host" +#define D_HOSTNAME "Hostname" +#define D_HUMIDITY "Humidité" +#define D_ILLUMINANCE "Éclairement" +#define D_IMMEDIATE "immediat" // Button immediate +#define D_INDEX "Index" +#define D_INFO "Info" +#define D_INITIALIZED "Initialisé" +#define D_IP_ADDRESS "Adresse IP" +#define D_LIGHT "Lumière" +#define D_LWT "LWT" +#define D_MODULE "Module" +#define D_MQTT "MQTT" +#define D_MULTI_PRESS "multi-pression" +#define D_NOISE "Bruit" +#define D_NONE "None" +#define D_OFF "Off" +#define D_OFFLINE "Déconnecté" +#define D_OK "Ok" +#define D_ON "On" +#define D_ONLINE "Connecté" +#define D_PASSWORD "Mot de passe" +#define D_PORT "Port" +#define D_POWER_FACTOR "Facteur de puissance" +#define D_POWERUSAGE "Puissance" +#define D_PRESSURE "Pression" +#define D_PRESSUREATSEALEVEL "PressionMer" +#define D_PROGRAM_FLASH_SIZE "Taille Flash Programme" +#define D_PROGRAM_SIZE "Taille programme" +#define D_PROJECT "Projet" +#define D_RECEIVED "Reçu" +#define D_RESTART "Redémarrage" +#define D_RESTARTING "Redémarrage" +#define D_RESTART_REASON "Raison redémarrage" +#define D_RESTORE "restorer" +#define D_RETAINED "retenu" +#define D_SAVE "Enregister" +#define D_SENSOR "Capteur" +#define D_SSID "SSID" +#define D_START "Start" +#define D_STD_TIME "STD" +#define D_STOP "Stop" +#define D_SUBNET_MASK "Masque sous réseau" +#define D_SUBSCRIBE_TO "Souscrire à" +#define D_SUCCESSFUL "Réussi" +#define D_TEMPERATURE "Temperature" +#define D_TO "à" +#define D_TOGGLE "Bascule" +#define D_TOPIC "Topic" +#define D_TRANSMIT "Transmettre" +#define D_TRUE "Vrai" +#define D_UPGRADE "upgrade" +#define D_UPLOAD "Upload" +#define D_UPTIME "Uptime" +#define D_USER "Utilisateur" +#define D_UTC_TIME "UTC" +#define D_UV_LEVEL "Niveau UV" +#define D_VERSION "Version" +#define D_VOLTAGE "Voltage" +#define D_WARMLIGHT "Chaud" +#define D_WEB_SERVER "Serveur web" + +// sonoff.ino +#define D_WARNING_MINIMAL_VERSION "WARNING This version does not support persistent settings" +#define D_LEVEL_10 "level 1-0" +#define D_LEVEL_01 "level 0-1" +#define D_SERIAL_LOGGING_DISABLED "Journalisation série désactivé" +#define D_SYSLOG_LOGGING_REENABLED "Jounalisation syslog réactivé" + +#define D_SET_BAUDRATE_TO "Definir baudrate à" +#define D_RECEIVED_TOPIC "Topic reçu" +#define D_DATA_SIZE "Taille données" +#define D_ANALOG_INPUT "Analogique" + +#define D_FINGERPRINT "Verification empreinte TLS ..." +#define D_TLS_CONNECT_FAILED_TO "Echec de connexion TLS à" +#define D_RETRY_IN "Nouvelle tentative dans" +#define D_VERIFIED "Verifié" +#define D_INSECURE "Connexion non sécurisée car empreinte non vérifée" +#define D_CONNECT_FAILED_TO "Echec de connexion à" + +// support.ino +#define D_OSWATCH "osWatch" +#define D_BLOCKED_LOOP "Boucle bloquée" +#define D_WPS_FAILED_WITH_STATUS "WPSconfig ECHOUÉ avec status" +#define D_ACTIVE_FOR_3_MINUTES "actif pour 3 minutes" +#define D_FAILED_TO_START "Echec de démarrage" +#define D_PATCH_ISSUE_2186 "Patch issue 2186" +#define D_CONNECTING_TO_AP "Connexion à l'AP" +#define D_IN_MODE "en mode" +#define D_CONNECT_FAILED_NO_IP_ADDRESS "Echec de connexion car aucune adresse IP n'a été reçue" +#define D_CONNECT_FAILED_AP_NOT_REACHED "Echec de connexion car l'AP ne peut-être contacté" +#define D_CONNECT_FAILED_WRONG_PASSWORD "Echec de connexion car le mot de passe de l'AP est incorrect" +#define D_CONNECT_FAILED_AP_TIMEOUT "Echec de connexion avec l'AP, expiré" +#define D_ATTEMPTING_CONNECTION "Tentative de connexion..." +#define D_CHECKING_CONNECTION "Verification connexion..." +#define D_QUERY_DONE "Requête terminé. Services MQTT trouvés" +#define D_MQTT_SERVICE_FOUND "Service MQTT trouvé sur" +#define D_FOUND_AT "trouvé à" +#define D_SYSLOG_HOST_NOT_FOUND "Host syslog introuvable" + +// settings.ino +#define D_SAVED_TO_FLASH_AT "Enregistré dans la flash à" +#define D_LOADED_FROM_FLASH_AT "Chargé de la flash à" +#define D_USE_DEFAULTS "Utiliser par défaut" +#define D_ERASED_SECTOR "Secteur effacé" + +// webserver.ino +#define D_MINIMAL_FIRMWARE_PLEASE_UPGRADE "Firmware MINIMAL - merci de mettre à jour" +#define D_WEBSERVER_ACTIVE_ON "Serveur web actif sur" +#define D_WITH_IP_ADDRESS "avec l'adresse IP" +#define D_WEBSERVER_STOPPED "Serveur web éteint" +#define D_FILE_NOT_FOUND "Fichier introuvable" +#define D_REDIRECTED "Redirection sur le portail captif" +#define D_WIFIMANAGER_SET_ACCESSPOINT_AND_STATION "Wifimanager defini AccessPoint et garde station" +#define D_WIFIMANAGER_SET_ACCESSPOINT "Wifimanager defini AccessPoint" +#define D_TRYING_TO_CONNECT "Tentative de connexion du module au réseau" + +#define D_RESTART_IN "Redémarrage dans" +#define D_SECONDS "secondes" +#define D_DEVICE_WILL_RESTART "Le module va redémarrer dans quelques secondes" +#define D_BUTTON_TOGGLE "on/off" +#define D_CONFIGURATION "Configuration" +#define D_INFORMATION "Information" +#define D_FIRMWARE_UPGRADE "Mise à jour Firmware" +#define D_CONSOLE "Console" +#define D_CONFIRM_RESTART "Confirmer redémarrage" + +#define D_CONFIGURE_MODULE "Configuration Module" +#define D_CONFIGURE_WIFI "Configuration WiFi" +#define D_CONFIGURE_MQTT "Configuration MQTT" +#define D_CONFIGURE_DOMOTICZ "Configuration Domoticz" +#define D_CONFIGURE_LOGGING "Configuration Logging" +#define D_CONFIGURE_OTHER "Autre configuration" +#define D_CONFIRM_RESET_CONFIGURATION "Confirmer réinitialisation configuration" +#define D_RESET_CONFIGURATION "Réinitialisation Configuration" +#define D_BACKUP_CONFIGURATION "Sauvegarde Configuration" +#define D_RESTORE_CONFIGURATION "Restauration Configuration" +#define D_MAIN_MENU "Menu principal" + +#define D_MODULE_PARAMETERS "Paramètres module" +#define D_MODULE_TYPE "Type module" +#define D_GPIO "GPIO" +#define D_SERIAL_IN "Serial In" +#define D_SERIAL_OUT "Serial Out" + +#define D_WIFI_PARAMETERS "Paramètres Wifi" +#define D_SCAN_FOR_WIFI_NETWORKS "Scan des réseaux wifi" +#define D_SCAN_DONE "Scan terminé" +#define D_NO_NETWORKS_FOUND "Aucun réseau trouvé" +#define D_REFRESH_TO_SCAN_AGAIN "Rafraichir pour scanner à nouveau" +#define D_DUPLICATE_ACCESSPOINT "AccessPoint dupliqué" +#define D_SKIPPING_LOW_QUALITY "Passe car mauvaise qualité" +#define D_RSSI "RSSI" +#define D_WEP "WEP" +#define D_WPA_PSK "WPA PSK" +#define D_WPA2_PSK "WPA2 PSK" +#define D_AP1_SSID "AP1 SSID" +#define D_AP1_PASSWORD "Mot de passe AP1" +#define D_AP2_SSID "AP2 SSId" +#define D_AP2_PASSWORD "Mot de passe AP2" + +#define D_MQTT_PARAMETERS "Paramètres MQTT" +#define D_CLIENT "Client" +#define D_FULL_TOPIC "topic complet" + +#define D_LOGGING_PARAMETERS "Paramètres journalisation" +#define D_SERIAL_LOG_LEVEL "Niveau de journalisation série" +#define D_WEB_LOG_LEVEL "Niveau de journalisation web" +#define D_SYS_LOG_LEVEL "Niveau syslog" +#define D_MORE_DEBUG "Plus de debug" +#define D_SYSLOG_HOST "Host syslog" +#define D_SYSLOG_PORT "Host syslog" +#define D_TELEMETRY_PERIOD "Période télémetrie" + +#define D_OTHER_PARAMETERS "Autres paramètres" +#define D_WEB_ADMIN_PASSWORD "Mot de passe Web Admin" +#define D_MQTT_ENABLE "MQTT activé" +#define D_FRIENDLY_NAME "Nom d'usage" +#define D_BELKIN_WEMO "Belkin WeMo" +#define D_HUE_BRIDGE "Hue Bridge" +#define D_SINGLE_DEVICE "module unique" +#define D_MULTI_DEVICE "multi module" + +#define D_SAVE_CONFIGURATION "Enregistrer configuration" +#define D_CONFIGURATION_SAVED "Configuration enregistré" +#define D_CONFIGURATION_RESET "Configuration réinitialisé" + +#define D_PROGRAM_VERSION "Version Programme" +#define D_BUILD_DATE_AND_TIME "Date & Heure de build" +#define D_CORE_AND_SDK_VERSION "Version Core/SDK" +#define D_FLASH_WRITE_COUNT "Compteur écriture flash" +#define D_MAC_ADDRESS "Adresse MAC" +#define D_MQTT_HOST "Hôte MQTT" +#define D_MQTT_PORT "Port MQTT" +#define D_MQTT_CLIENT "Client MQTT" +#define D_MQTT_USER "Utilisateur MQTT" +#define D_MQTT_TOPIC "Topic MQTT" +#define D_MQTT_GROUP_TOPIC "Groupe topic MQTT" +#define D_MQTT_FULL_TOPIC "Topic complet MQTT" +#define D_MDNS_DISCOVERY "Découverte mDNS" +#define D_MDNS_ADVERTISE "Annonce mDNS" +#define D_ESP_CHIP_ID "ESP Chip Id" +#define D_FLASH_CHIP_ID "Flash Chip Id" +#define D_FLASH_CHIP_SIZE "Taille flash" +#define D_FREE_PROGRAM_SPACE "Espace programme libre" + +#define D_UPGRADE_BY_WEBSERVER "Mise à jour par serveur web" +#define D_OTA_URL "URL OTA" +#define D_START_UPGRADE "Lancer la mise à jour" +#define D_UPGRADE_BY_FILE_UPLOAD "Mise à jour par téléchargement fichier" +#define D_UPLOAD_STARTED "Téléchargement lancé" +#define D_UPGRADE_STARTED "Mise à jour lancé" +#define D_UPLOAD_DONE "Téléchargement terminé" +#define D_UPLOAD_ERR_1 "Aucun fichier sélectionné" +#define D_UPLOAD_ERR_2 "Espace insuffisant" +#define D_UPLOAD_ERR_3 "Magic byte n'est pas 0xE9" +#define D_UPLOAD_ERR_4 "La taille de la flash programme est plus grande que la taille réelle de la flash" +#define D_UPLOAD_ERR_5 "Erreur comparaison buffer de téléchargement" +#define D_UPLOAD_ERR_6 "Téléchargement échoué. Activation logging 3" +#define D_UPLOAD_ERR_7 "Téléchargement annulé" +#define D_UPLOAD_ERR_8 "Fichier invalide" +#define D_UPLOAD_ERR_9 "Fichier trop grand" +#define D_UPLOAD_ERROR_CODE "Code d'erreur téléchargement" + +#define D_ENTER_COMMAND "Saisir commande" +#define D_ENABLE_WEBLOG_FOR_RESPONSE "Activer weblog 2 si response attendue" +#define D_NEED_USER_AND_PASSWORD "Nécessite utilisateur=&password=" + +// xdrv_wemohue.ino +#define D_MULTICAST_DISABLED "Multicast désactivé" +#define D_MULTICAST_REJOINED "Multicast (re)joint" +#define D_MULTICAST_JOIN_FAILED "Multicast echec abonnement" +#define D_FAILED_TO_SEND_RESPONSE "Echec d'envoi réponse" + +#define D_WEMO "WeMo" +#define D_WEMO_BASIC_EVENT "WeMo basic event" +#define D_WEMO_EVENT_SERVICE "WeMo event service" +#define D_WEMO_META_SERVICE "WeMo meta service" +#define D_WEMO_SETUP "Réglage WeMo" +#define D_RESPONSE_SENT "Response envoyé" + +#define D_HUE "Hue" +#define D_HUE_BRIDGE_SETUP "Réglage Hue" +#define D_HUE_API_NOT_IMPLEMENTED "API Hue non implémentée" +#define D_HUE_API "Hue API" +#define D_HUE_POST_ARGS "Hue POST args" +#define D_3_RESPONSE_PACKETS_SENT "3 paquets response envoyés" + +// xdrv_02_irremote.ino +#define D_JSON_INVALID_JSON "JSON Invalide" +#define D_JSON_PROTOCOL_NOT_SUPPORTED "Protocole non supporté" +#define D_JSON_IR_PROTOCOL "PROTOCOL" +#define D_JSON_IR_BITS "BITS" +#define D_JSON_IR_DATA "DATA" +#define D_JSON_IRHVAC_VENDOR "VENDOR" +#define D_JSON_IRHVAC_POWER "POWER" +#define D_JSON_IRHVAC_MODE "MODE" +#define D_JSON_IRHVAC_FANSPEED "FANSPEED" +#define D_JSON_IRHVAC_TEMP "TEMP" +#define D_JSON_IRRECEIVED "IrReceived" + +// xdrv_05_domoticz.ino +#define D_DOMOTICZ_PARAMETERS "Paramètres Domoticz" +#define D_DOMOTICZ_IDX "Idx" +#define D_DOMOTICZ_KEY_IDX "Key idx" +#define D_DOMOTICZ_SWITCH_IDX "Switch idx" +#define D_DOMOTICZ_SENSOR_IDX "Sensor idx" + #define D_DOMOTICZ_TEMP "Temp" + #define D_DOMOTICZ_TEMP_HUM "Temp,Hum" + #define D_DOMOTICZ_TEMP_HUM_BARO "Temp,Hum,Baro" + #define D_DOMOTICZ_POWER_ENERGY "Power,Energy" + #define D_DOMOTICZ_ILLUMINANCE "Illuminance" + #define D_DOMOTICZ_COUNT "Count" + #define D_DOMOTICZ_VOLTAGE "Voltage" + #define D_DOMOTICZ_CURRENT "Current" + #define D_DOMOTICZ_AIRQUALITY "AirQuality" +#define D_DOMOTICZ_UPDATE_TIMER "Update timer" + +// xsns_03_energy.ino +#define D_ENERGY_TODAY "Energie aujourd'hui" +#define D_ENERGY_YESTERDAY "Energie hier" +#define D_ENERGY_TOTAL "Energie totale" + +// xsns_05_ds18b20.ino +#define D_SENSOR_BUSY "Capteur occupé" +#define D_SENSOR_CRC_ERROR "Erreur CRC capteur" +#define D_SENSORS_FOUND "Capteur trouvé" + +// xsns_06_dht.ino +#define D_TIMEOUT_WAITING_FOR "Expiré attend pour" +#define D_START_SIGNAL_LOW "Signal démarrage bas" +#define D_START_SIGNAL_HIGH "Signal démarrage haut" +#define D_PULSE "pulse" +#define D_CHECKSUM_FAILURE "Echec checksum" + +// xsns_07_sht1x.ino +#define D_SENSOR_DID_NOT_ACK_COMMAND "Sensor did not ACK command" +#define D_SHT1X_FOUND "SHT1X found" + +// xsns_18_pms5003.ino +#define D_STANDARD_CONCENTRATION "Standard Concentration" +#define D_ENVIRONMENTAL_CONCENTRATION "Environmental Concentration" +#define D_PARTICALS_BEYOND "Particals beyond" + +// sonoff_template.h +// Max string length is 8 characters including suffixes +#define D_SENSOR_NONE "None" +#define D_SENSOR_DHT11 "DHT11" +#define D_SENSOR_AM2301 "AM2301" +#define D_SENSOR_SI7021 "SI7021" +#define D_SENSOR_DS18X20 "DS18x20" +#define D_SENSOR_I2C_SCL "I2C SCL" +#define D_SENSOR_I2C_SDA "I2C SDA" +#define D_SENSOR_WS2812 "WS2812" +#define D_SENSOR_IRSEND "IRsend" +#define D_SENSOR_SWITCH "Switch" // Suffix "1" +#define D_SENSOR_BUTTON "Button" // Suffix "1" +#define D_SENSOR_RELAY "Relay" // Suffix "1i" +#define D_SENSOR_LED "LED" // Suffix "1i" +#define D_SENSOR_PWM "PWM" // Suffix "1" +#define D_SENSOR_COUNTER "Counter" // Suffix "1" +#define D_SENSOR_IRRECV "IRrecv" +#define D_SENSOR_MHZ_RX "MHZ Rx" +#define D_SENSOR_MHZ_TX "MHZ Tx" +#define D_SENSOR_PZEM_RX "PZEM Rx" +#define D_SENSOR_PZEM_TX "PZEM Tx" +#define D_SENSOR_SAIR_RX "SAir Rx" +#define D_SENSOR_SAIR_TX "SAir Tx" +#define D_SENSOR_SPI_CS "SPI CS" +#define D_SENSOR_SPI_DC "SPI DC" +#define D_SENSOR_BACKLIGHT "BkLight" +#define D_SENSOR_PMS5003 "PMS5003" + +// Units +#define D_UNIT_AMPERE "A" +#define D_UNIT_HOUR "h" +#define D_UNIT_KILOOHM "kOhm" +#define D_UNIT_KILOWATTHOUR "kWh" +#define D_UNIT_LUX "lx" +#define D_UNIT_MICROGRAM_PER_CUBIC_METER "ug/m3" +#define D_UNIT_MICROMETER "um" +#define D_UNIT_MICROSECOND "us" +#define D_UNIT_MILLIAMPERE "mA" +#define D_UNIT_MILLISECOND "ms" +#define D_UNIT_MINUTE "Min" +#define D_UNIT_PARTS_PER_DECILITER "ppd" +#define D_UNIT_PARTS_PER_MILLION "ppm" +#define D_UNIT_PRESSURE "hPa" +#define D_UNIT_SECOND "sec" +#define D_UNIT_SECTORS "secteurs" +#define D_UNIT_VOLT "V" +#define D_UNIT_WATT "W" +#define D_UNIT_WATTHOUR "Wh" + +// Log message prefix +#define D_LOG_APPLICATION "APP: " // Application +#define D_LOG_BRIDGE "BRG: " // Bridge +#define D_LOG_CONFIG "CFG: " // Settings +#define D_LOG_COMMAND "CMD: " // Command +#define D_LOG_DEBUG "DBG: " // Debug +#define D_LOG_DHT "DHT: " // DHT sensor +#define D_LOG_DOMOTICZ "DOM: " // Domoticz +#define D_LOG_DSB "DSB: " // DS18xB20 sensor +#define D_LOG_HTTP "HTP: " // HTTP webserver +#define D_LOG_I2C "I2C: " // I2C +#define D_LOG_IRR "IRR: " // Infra Red Received +#define D_LOG_LOG "LOG: " // Logging +#define D_LOG_MODULE "MOD: " // Module +#define D_LOG_MDNS "DNS: " // mDNS +#define D_LOG_MQTT "MQT: " // MQTT +#define D_LOG_OTHER "OTH: " // Other +#define D_LOG_RESULT "RSL: " // Result +#define D_LOG_RFR "RFR: " // RF Received +#define D_LOG_SERIAL "SER: " // Serial +#define D_LOG_SHT1 "SHT: " // SHT1x sensor +#define D_LOG_UPLOAD "UPL: " // Upload +#define D_LOG_UPNP "UPP: " // UPnP +#define D_LOG_WIFI "WIF: " // Wifi + +#endif // _LANGUAGE_FR_FR_H_ diff --git a/sonoff/settings.h b/sonoff/settings.h index de6688563..381e7ee9f 100644 --- a/sonoff/settings.h +++ b/sonoff/settings.h @@ -44,7 +44,7 @@ typedef union { // Restricted by MISRA-C Rule 18.4 bu uint32_t ws_clock_reverse : 1; // bit 16 (v5.8.1) uint32_t decimal_text : 1; // bit 17 (v5.8.1) uint32_t light_signal : 1; // bit 18 (v5.10.0c) - uint32_t spare19 : 1; + uint32_t hass_discovery : 1; // bit 19 (v5.11.1a) uint32_t voltage_resolution : 1; // Replaced by below uint32_t spare21 : 1; uint32_t spare22 : 1; diff --git a/sonoff/sonoff.h b/sonoff/sonoff.h index f6f580548..d6a7389dc 100644 --- a/sonoff/sonoff.h +++ b/sonoff/sonoff.h @@ -137,7 +137,7 @@ enum LichtSubtypes {LST_NONE, LST_SINGLE, LST_COLDWARM, LST_RGB, LST_RGBW, LST_R enum LichtSchemes {LS_POWER, LS_WAKEUP, LS_CYCLEUP, LS_CYCLEDN, LS_RANDOM, LS_MAX}; enum XsnsFunctions {FUNC_INIT, FUNC_EVERY_50_MSECOND, FUNC_EVERY_SECOND, FUNC_PREP_BEFORE_TELEPERIOD, FUNC_JSON_APPEND, FUNC_WEB_APPEND, FUNC_SAVE_BEFORE_RESTART, - FUNC_COMMAND, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_SHOW_SENSOR}; + FUNC_COMMAND, FUNC_MQTT_SUBSCRIBE, FUNC_MQTT_CONNECTED, FUNC_MQTT_DATA, FUNC_SET_POWER, FUNC_SHOW_SENSOR}; const uint8_t kDefaultRfCode[9] PROGMEM = { 0x21, 0x16, 0x01, 0x0E, 0x03, 0x48, 0x2E, 0x1A, 0x00 }; diff --git a/sonoff/sonoff.ino b/sonoff/sonoff.ino index e848dda88..6be6edc11 100644 --- a/sonoff/sonoff.ino +++ b/sonoff/sonoff.ino @@ -25,7 +25,7 @@ - Select IDE Tools - Flash Size: "1M (no SPIFFS)" ====================================================*/ -#define VERSION 0x050B0101 // 5.11.1a +#define VERSION 0x050B0102 // 5.11.1b // Location specific includes #include "sonoff.h" // Enumaration used in user_config.h @@ -395,7 +395,7 @@ void MqttPublishPrefixTopic_P(uint8_t prefix, const char* subtopic, boolean reta * prefix 5 = stat using subtopic or RESULT * prefix 6 = tele using subtopic or RESULT */ - char romram[16]; + char romram[33]; char stopic[TOPSZ]; snprintf_P(romram, sizeof(romram), ((prefix > 3) && !Settings.flag.mqtt_response) ? S_RSLT_RESULT : subtopic); @@ -415,7 +415,7 @@ void MqttPublishPrefixTopic_P(uint8_t prefix, const char* subtopic) void MqttPublishPowerState(byte device) { char stopic[TOPSZ]; - char scommand[16]; + char scommand[33]; if ((device < 1) || (device > devices_present)) { device = 1; @@ -432,7 +432,7 @@ void MqttPublishPowerState(byte device) void MqttPublishPowerBlinkState(byte device) { - char scommand[16]; + char scommand[33]; if ((device < 1) || (device > devices_present)) { device = 1; @@ -920,12 +920,13 @@ void MqttDataCallback(char* topic, byte* data, unsigned int data_len) } else if ((CMND_POWERONSTATE == command_code) && (Settings.module != MOTOR)) { /* 0 = Keep relays off after power on - * 1 = Turn relays on after power on + * 1 = Turn relays on after power on, if PulseTime set wait for PulseTime seconds, and turn relays off * 2 = Toggle relays after power on * 3 = Set relays to last saved state after power on * 4 = Turn relays on and disable any relay control (used for Sonoff Pow to always measure power) + * 5 = Keep relays off after power on, if PulseTime set wait for PulseTime seconds, and turn relays on */ - if ((payload >= 0) && (payload <= 4)) { + if ((payload >= 0) && (payload <= 5)) { Settings.poweronstate = payload; if (4 == Settings.poweronstate) { for (byte i = 1; i <= devices_present; i++) { @@ -971,7 +972,7 @@ void MqttDataCallback(char* topic, byte* data, unsigned int data_len) } snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_COMMAND_SVALUE, command, (Settings.save_data > 1) ? stemp1 : GetStateText(Settings.save_data)); } - else if ((CMND_SETOPTION == command_code) && ((index >= 0) && (index <= 18)) || ((index > 31) && (index <= P_MAX_PARAM8 +31))) { + else if ((CMND_SETOPTION == command_code) && ((index >= 0) && (index <= 19)) || ((index > 31) && (index <= P_MAX_PARAM8 +31))) { if (index <= 31) { ptype = 0; // SetOption0 .. 31 } else { @@ -984,6 +985,7 @@ void MqttDataCallback(char* topic, byte* data, unsigned int data_len) switch (index) { case 3: // mqtt case 15: // pwm_control + case 19: // hass_discovery restart_flag = 2; case 0: // save_state case 1: // button_restrict @@ -1608,7 +1610,8 @@ void ExecuteCommandPower(byte device, byte state) DomoticzUpdatePowerState(device); #endif // USE_DOMOTICZ if (device <= MAX_PULSETIMERS) { - pulse_timer[(device -1)] = (power & mask) ? Settings.pulse_timer[(device -1)] : 0; +// pulse_timer[(device -1)] = (power & mask) ? Settings.pulse_timer[(device -1)] : 0; + pulse_timer[(device -1)] = (((5 == Settings.poweronstate) ? ~power : power) & mask) ? Settings.pulse_timer[(device -1)] : 0; } } else if (3 == state) { // Blink @@ -1766,7 +1769,7 @@ void PublishStatus(uint8_t payload) void MqttShowState() { - char stemp1[16]; + char stemp1[33]; snprintf_P(mqtt_data, sizeof(mqtt_data), PSTR("%s{\"" D_JSON_TIME "\":\"%s\",\"" D_JSON_UPTIME "\":%d"), mqtt_data, GetDateAndTime().c_str(), uptime); #ifdef USE_ADC_VCC @@ -2137,7 +2140,8 @@ void StateLoop() if ((pulse_timer[i] > 0) && (pulse_timer[i] < 112)) { pulse_timer[i]--; if (!pulse_timer[i]) { - ExecuteCommandPower(i +1, 0); +// ExecuteCommandPower(i +1, 0); + ExecuteCommandPower(i +1, (5 == Settings.poweronstate) ? 1: 0); } } } @@ -2684,6 +2688,7 @@ void setup() if ((resetInfo.reason == REASON_DEFAULT_RST) || (resetInfo.reason == REASON_EXT_SYS_RST)) { switch (Settings.poweronstate) { case 0: // All off + case 5: // All off but on after PulseTime power = 0; SetDevicePower(power); break; @@ -2717,7 +2722,8 @@ void setup() if ((i < MAX_RELAYS) && (pin[GPIO_REL1 +i] < 99)) { bitWrite(power, i, digitalRead(pin[GPIO_REL1 +i]) ^ bitRead(rel_inverted, i)); } - if ((i < MAX_PULSETIMERS) && bitRead(power, i)) { +// if ((i < MAX_PULSETIMERS) && bitRead(power, i)) { + if ((i < MAX_PULSETIMERS) && (bitRead(power, i) || (5 == Settings.poweronstate))) { pulse_timer[i] = Settings.pulse_timer[i]; } } diff --git a/sonoff/support.ino b/sonoff/support.ino index 166e1ad81..08476b2c9 100644 --- a/sonoff/support.ino +++ b/sonoff/support.ino @@ -26,7 +26,7 @@ unsigned long syslog_host_refresh = 0; Ticker tickerOSWatch; -#define OSWATCH_RESET_TIME 30 +#define OSWATCH_RESET_TIME 120 static unsigned long oswatch_last_loop_time; byte oswatch_blocked_loop = 0; diff --git a/sonoff/user_config.h b/sonoff/user_config.h index f3f76b822..d35e643d6 100644 --- a/sonoff/user_config.h +++ b/sonoff/user_config.h @@ -29,11 +29,12 @@ \*********************************************************************************************/ // -- Localization -------------------------------- -//#define MY_LANGUAGE en-GB // English in Great Britain. Enabled by Default -//#define MY_LANGUAGE nl-NL // Dutch in the Netherlands //#define MY_LANGUAGE de-DE // German in Germany -//#define MY_LANGUAGE pl-PL // Polish in Poland +//#define MY_LANGUAGE en-GB // English in Great Britain. Enabled by Default +//#define MY_LANGUAGE fr-FR // French in France //#define MY_LANGUAGE it-IT // Italian in Italy +//#define MY_LANGUAGE nl-NL // Dutch in the Netherlands +//#define MY_LANGUAGE pl-PL // Polish in Poland //#define MY_LANGUAGE zh-CN // Chinese (Simplified) in China // -- Project ------------------------------------- diff --git a/sonoff/webserver.ino b/sonoff/webserver.ino index 2b095c31d..4537978e9 100644 --- a/sonoff/webserver.ino +++ b/sonoff/webserver.ino @@ -407,6 +407,9 @@ void SetHeader() WebServer->sendHeader(F("Cache-Control"), F("no-cache, no-store, must-revalidate")); WebServer->sendHeader(F("Pragma"), F("no-cache")); WebServer->sendHeader(F("Expires"), F("-1")); +#ifndef ARDUINO_ESP8266_RELEASE_2_3_0 + WebServer->sendHeader(F("Access-Control-Allow-Origin"), F("*")); +#endif } void ShowPage(String &page) @@ -885,10 +888,14 @@ void HandleOtherConfiguration() page += FPSTR(HTTP_FORM_OTHER); page.replace(F("{p1"), Settings.web_password); page.replace(F("{r1"), (Settings.flag.mqtt_enabled) ? F(" checked") : F("")); - page += FPSTR(HTTP_FORM_OTHER2); - page.replace(F("{1"), F("1")); - page.replace(F("{2"), FRIENDLY_NAME); - page.replace(F("{3"), Settings.friendlyname[0]); + uint8_t maxfn = (devices_present > MAX_FRIENDLYNAMES) ? MAX_FRIENDLYNAMES : devices_present; + for (byte i = 0; i < maxfn; i++) { + page += FPSTR(HTTP_FORM_OTHER2); + page.replace(F("{1"), String(i +1)); + snprintf_P(stemp, sizeof(stemp), PSTR(FRIENDLY_NAME"%d"), i +1); + page.replace(F("{2"), (i) ? stemp : FRIENDLY_NAME); + page.replace(F("{3"), Settings.friendlyname[i]); + } #ifdef USE_EMULATION page += FPSTR(HTTP_FORM_OTHER3a); for (byte i = 0; i < EMUL_MAX; i++) { @@ -898,15 +905,7 @@ void HandleOtherConfiguration() page.replace(F("{3"), (i == EMUL_NONE) ? F(D_NONE) : (i == EMUL_WEMO) ? F(D_BELKIN_WEMO) : F(D_HUE_BRIDGE)); page.replace(F("{4"), (i == EMUL_NONE) ? F("") : (i == EMUL_WEMO) ? F(" " D_SINGLE_DEVICE) : F(" " D_MULTI_DEVICE)); } - page += F("
"); - uint8_t maxfn = (devices_present > MAX_FRIENDLYNAMES) ? MAX_FRIENDLYNAMES : devices_present; - for (byte i = 1; i < maxfn; i++) { - page += FPSTR(HTTP_FORM_OTHER2); - page.replace(F("{1"), String(i +1)); - snprintf_P(stemp, sizeof(stemp), PSTR(FRIENDLY_NAME"%d"), i +1); - page.replace(F("{2"), stemp); - page.replace(F("{3"), Settings.friendlyname[i]); - } +// page += F("
"); page += F("
"); #endif // USE_EMULATION page += FPSTR(HTTP_FORM_END); @@ -1079,7 +1078,7 @@ void HandleResetConfiguration() return; } - char svalue[16]; + char svalue[33]; AddLog_P(LOG_LEVEL_DEBUG, S_LOG_HTTP, S_RESET_CONFIGURATION); @@ -1375,6 +1374,7 @@ void HandleHttpCommand() } else { message += F(D_NEED_USER_AND_PASSWORD "\"}"); } + SetHeader(); WebServer->send(200, FPSTR(HDR_CTYPE_JSON), message); } diff --git a/sonoff/xdrv_01_light.ino b/sonoff/xdrv_01_light.ino index 44801bfc1..4ae7c1d09 100644 --- a/sonoff/xdrv_01_light.ino +++ b/sonoff/xdrv_01_light.ino @@ -188,7 +188,7 @@ void AriluxRfHandler() AddLog(LOG_LEVEL_DEBUG); if (hostcode == stored_hostcode) { - char command[16]; + char command[33]; char value = '-'; command[0] = '\0'; uint8_t keycode = arilux_rf_received_value & 0xFF; @@ -533,7 +533,7 @@ void LightPowerOn() void LightPreparePower() { char scolor[25]; - char scommand[16]; + char scommand[33]; if (Settings.light_dimmer && !(light_power)) { ExecuteCommandPower(devices_present, 7); // No publishPowerState diff --git a/sonoff/xdrv_05_domoticz.ino b/sonoff/xdrv_05_domoticz.ino index 745c42c7a..e989f9aff 100644 --- a/sonoff/xdrv_05_domoticz.ino +++ b/sonoff/xdrv_05_domoticz.ino @@ -224,7 +224,7 @@ boolean DomoticzCommand() if (XdrvMailbox.payload >= 0) { Settings.domoticz_switch_idx[XdrvMailbox.index -1] = XdrvMailbox.payload; } - snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DOMOTICZ_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.domoticz_key_idx[XdrvMailbox.index -1]); + snprintf_P(mqtt_data, sizeof(mqtt_data), S_JSON_DOMOTICZ_COMMAND_INDEX_NVALUE, command, XdrvMailbox.index, Settings.domoticz_switch_idx[XdrvMailbox.index -1]); } else if ((CMND_SENSORIDX == command_code) && (XdrvMailbox.index > 0) && (XdrvMailbox.index <= DZ_MAX_SENSORS)) { if (XdrvMailbox.payload >= 0) { @@ -398,6 +398,7 @@ void DomoticzSaveSettings() ssensor_indices, Settings.domoticz_update_timer); AddLog(LOG_LEVEL_INFO); } +#endif // USE_WEBSERVER /*********************************************************************************************\ * Interface @@ -431,5 +432,4 @@ boolean Xdrv05(byte function) return result; } -#endif // USE_WEBSERVER #endif // USE_DOMOTICZ diff --git a/sonoff/xsns_04_snfsc.ino b/sonoff/xsns_04_snfsc.ino index 67ee2d5ba..f8c9eeef0 100644 --- a/sonoff/xsns_04_snfsc.ino +++ b/sonoff/xsns_04_snfsc.ino @@ -105,7 +105,7 @@ void SonoffScSerialInput(char *rcvstat) #ifdef USE_WEBSERVER const char HTTP_SNS_SCPLUS[] PROGMEM = - "%s{s}" D_LIGHT "{m}%d%{e}{s}" D_NOISE "{m}%d%{e}{s}" D_AIR_QUALITY "{m}%d%{e}"; // {s} =
+ "%s{s}" D_LIGHT "{m}%d%%{e}{s}" D_NOISE "{m}%d%%{e}{s}" D_AIR_QUALITY "{m}%d%%{e}"; // {s} = #endif // USE_WEBSERVER void SonoffScShow(boolean json)
"); - func += F(D_PROGRAM_VERSION "}2" VERSION_STRING); + func += F(D_PROGRAM_VERSION "}2"); func += my_version; func += F("}1" D_BUILD_DATE_AND_TIME "}2"); func += GetBuildDateAndTime(); func += F("}1" D_CORE_AND_SDK_VERSION "}2" ARDUINO_ESP8266_RELEASE "/"); func += String(ESP.getSdkVersion()); func += F("}1" D_UPTIME "}2"); func += String(uptime); func += F(" Hours"); diff --git a/sonoff/xdrv_03_energy.ino b/sonoff/xdrv_03_energy.ino index 3c06db271..2118c9ad7 100644 --- a/sonoff/xdrv_03_energy.ino +++ b/sonoff/xdrv_03_energy.ino @@ -304,6 +304,7 @@ void PzemSend(uint8_t cmd) uint8_t *bytes = (uint8_t*)&pzem; pzem.crc = PzemCrc(bytes); + PzemSerial->flush(); PzemSerial->write(bytes, sizeof(pzem)); } diff --git a/sonoff/xsns_15_mhz19.ino b/sonoff/xsns_15_mhz19.ino index 32bf247dd..26bea4fc3 100644 --- a/sonoff/xsns_15_mhz19.ino +++ b/sonoff/xsns_15_mhz19.ino @@ -134,6 +134,7 @@ void Mhz50ms() if (6 == mhz_timer) { // MH-Z19 measuring cycle takes 1005 +5% ms mhz_timer = 0; + MhzSerial->flush(); MhzSerial->write(mhz_cmnd_read_ppm, 9); } diff --git a/sonoff/xsns_17_senseair.ino b/sonoff/xsns_17_senseair.ino index fb90e1e1f..86026a1bd 100644 --- a/sonoff/xsns_17_senseair.ino +++ b/sonoff/xsns_17_senseair.ino @@ -74,6 +74,7 @@ void ModbusSend(uint8_t function_code, uint16_t start_address, uint16_t register frame[7] = (uint8_t)((crc >> 8) & 0xFF); frame[6] = (uint8_t)(crc & 0xFF); + SensairSerial->flush(); SensairSerial->write(frame, sizeof(frame)); } From 050191671331bd9408489087d0fdcba586dcda7f Mon Sep 17 00:00:00 2001 From: arendst Date: Wed, 10 Jan 2018 15:24:12 +0100 Subject: [PATCH 10/11] Update TasmotaSerial to 1.0.1 Update TasmotaSerial to 1.0.1 --- .../README.md | 0 .../examples/swsertest/swsertest.ino | 0 .../keywords.txt | 0 .../library.json | 0 .../library.properties | 0 .../src/TasmotaSerial.cpp | 53 +++++++++++++------ .../src/TasmotaSerial.h | 21 ++++++-- 7 files changed, 54 insertions(+), 20 deletions(-) rename lib/{TasmotaSerial-1.0.0 => TasmotaSerial-1.0.1}/README.md (100%) rename lib/{TasmotaSerial-1.0.0 => TasmotaSerial-1.0.1}/examples/swsertest/swsertest.ino (100%) rename lib/{TasmotaSerial-1.0.0 => TasmotaSerial-1.0.1}/keywords.txt (100%) rename lib/{TasmotaSerial-1.0.0 => TasmotaSerial-1.0.1}/library.json (100%) rename lib/{TasmotaSerial-1.0.0 => TasmotaSerial-1.0.1}/library.properties (100%) rename lib/{TasmotaSerial-1.0.0 => TasmotaSerial-1.0.1}/src/TasmotaSerial.cpp (84%) rename lib/{TasmotaSerial-1.0.0 => TasmotaSerial-1.0.1}/src/TasmotaSerial.h (82%) diff --git a/lib/TasmotaSerial-1.0.0/README.md b/lib/TasmotaSerial-1.0.1/README.md similarity index 100% rename from lib/TasmotaSerial-1.0.0/README.md rename to lib/TasmotaSerial-1.0.1/README.md diff --git a/lib/TasmotaSerial-1.0.0/examples/swsertest/swsertest.ino b/lib/TasmotaSerial-1.0.1/examples/swsertest/swsertest.ino similarity index 100% rename from lib/TasmotaSerial-1.0.0/examples/swsertest/swsertest.ino rename to lib/TasmotaSerial-1.0.1/examples/swsertest/swsertest.ino diff --git a/lib/TasmotaSerial-1.0.0/keywords.txt b/lib/TasmotaSerial-1.0.1/keywords.txt similarity index 100% rename from lib/TasmotaSerial-1.0.0/keywords.txt rename to lib/TasmotaSerial-1.0.1/keywords.txt diff --git a/lib/TasmotaSerial-1.0.0/library.json b/lib/TasmotaSerial-1.0.1/library.json similarity index 100% rename from lib/TasmotaSerial-1.0.0/library.json rename to lib/TasmotaSerial-1.0.1/library.json diff --git a/lib/TasmotaSerial-1.0.0/library.properties b/lib/TasmotaSerial-1.0.1/library.properties similarity index 100% rename from lib/TasmotaSerial-1.0.0/library.properties rename to lib/TasmotaSerial-1.0.1/library.properties diff --git a/lib/TasmotaSerial-1.0.0/src/TasmotaSerial.cpp b/lib/TasmotaSerial-1.0.1/src/TasmotaSerial.cpp similarity index 84% rename from lib/TasmotaSerial-1.0.0/src/TasmotaSerial.cpp rename to lib/TasmotaSerial-1.0.1/src/TasmotaSerial.cpp index 1b55818e0..5508a478a 100644 --- a/lib/TasmotaSerial-1.0.0/src/TasmotaSerial.cpp +++ b/lib/TasmotaSerial-1.0.1/src/TasmotaSerial.cpp @@ -82,35 +82,50 @@ TasmotaSerial::TasmotaSerial(int receive_pin, int transmit_pin) if (!((isValidGPIOpin(receive_pin)) && (isValidGPIOpin(transmit_pin) || transmit_pin == 16))) { return; } - m_buffer = (uint8_t*)malloc(TM_SERIAL_BUFFER_SIZE); - if (m_buffer == NULL) { - return; - } - m_valid = true; m_rx_pin = receive_pin; m_tx_pin = transmit_pin; m_in_pos = m_out_pos = 0; - // Use getCycleCount() loop to get as exact timing as possible - m_bit_time = ESP.getCpuFreqMHz() *1000000 /TM_SERIAL_BAUDRATE; - pinMode(m_rx_pin, INPUT); - ObjList[m_rx_pin] = this; - attachInterrupt(m_rx_pin, ISRList[m_rx_pin], FALLING); - pinMode(m_tx_pin, OUTPUT); - digitalWrite(m_tx_pin, HIGH); + if (m_rx_pin > -1) { + m_buffer = (uint8_t*)malloc(TM_SERIAL_BUFFER_SIZE); + if (m_buffer == NULL) { + return; + } + // Use getCycleCount() loop to get as exact timing as possible + m_bit_time = ESP.getCpuFreqMHz() *1000000 /TM_SERIAL_BAUDRATE; + pinMode(m_rx_pin, INPUT); + ObjList[m_rx_pin] = this; + attachInterrupt(m_rx_pin, ISRList[m_rx_pin], FALLING); + } + if (m_tx_pin > -1) { + pinMode(m_tx_pin, OUTPUT); + digitalWrite(m_tx_pin, HIGH); + } + m_valid = true; } bool TasmotaSerial::isValidGPIOpin(int pin) { - return (pin >= 0 && pin <= 5) || (pin >= 12 && pin <= 15); + return (pin >= -1 && pin <= 5) || (pin >= 12 && pin <= 15); } bool TasmotaSerial::begin() { return m_valid; } +void TasmotaSerial::flush() { + m_in_pos = m_out_pos = 0; +} + +int TasmotaSerial::peek() { + if ((-1 == m_rx_pin) || (m_in_pos == m_out_pos)) { + return -1; + } + return m_buffer[m_out_pos]; +} + int TasmotaSerial::read() { - if (m_in_pos == m_out_pos) { + if ((-1 == m_rx_pin) || (m_in_pos == m_out_pos)) { return -1; } uint8_t ch = m_buffer[m_out_pos]; @@ -130,8 +145,11 @@ int TasmotaSerial::available() //#define TM_SERIAL_WAIT { while (ESP.getCycleCount()-start < wait) optimistic_yield(1); wait += m_bit_time; } // Watchdog timeouts #define TM_SERIAL_WAIT { while (ESP.getCycleCount()-start < wait); wait += m_bit_time; } -size_t TasmotaSerial::txWrite(uint8_t b) +size_t TasmotaSerial::write(uint8_t b) { + if (-1 == m_tx_pin) { + return 0; + } unsigned long wait = m_bit_time; digitalWrite(m_tx_pin, HIGH); unsigned long start = ESP.getCycleCount(); @@ -149,8 +167,12 @@ size_t TasmotaSerial::txWrite(uint8_t b) return 1; } +/* size_t TasmotaSerial::write(const uint8_t *buffer, size_t size) { + if (-1 == m_tx_pin) { + return 0; + } size_t n = 0; // Flush input buffer on every write m_in_pos = m_out_pos = 0; @@ -159,6 +181,7 @@ size_t TasmotaSerial::write(const uint8_t *buffer, size_t size) } return n; } +*/ #ifdef TM_SERIAL_USE_IRAM void ICACHE_RAM_ATTR TasmotaSerial::rxRead() diff --git a/lib/TasmotaSerial-1.0.0/src/TasmotaSerial.h b/lib/TasmotaSerial-1.0.1/src/TasmotaSerial.h similarity index 82% rename from lib/TasmotaSerial-1.0.0/src/TasmotaSerial.h rename to lib/TasmotaSerial-1.0.1/src/TasmotaSerial.h index beada7792..a56dcbe2e 100644 --- a/lib/TasmotaSerial-1.0.0/src/TasmotaSerial.h +++ b/lib/TasmotaSerial-1.0.1/src/TasmotaSerial.h @@ -26,19 +26,30 @@ \*********************************************************************************************/ #define TM_SERIAL_BAUDRATE 9600 -#define TM_SERIAL_BUFFER_SIZE 20 +#define TM_SERIAL_BUFFER_SIZE 64 //#define TM_SERIAL_USE_IRAM // Enable to use iram (+368 bytes) -class TasmotaSerial { +#include + +class TasmotaSerial : public Stream { public: TasmotaSerial(int receive_pin, int transmit_pin); bool begin(); - size_t write(const uint8_t *buffer, size_t size = 1); - int read(); - int available(); + int peek(); + + virtual size_t write(uint8_t byte); + virtual int read(); + virtual int available(); + virtual void flush(); + +// size_t write(const uint8_t *buffer, size_t size = 1); +// int read(); +// int available(); void rxRead(); + using Print::write; + private: bool isValidGPIOpin(int pin); size_t txWrite(uint8_t byte); From 4fba6f2758265e39d6cea0de8d00efc2812f8060 Mon Sep 17 00:00:00 2001 From: arendst Date: Sat, 13 Jan 2018 15:53:02 +0100 Subject: [PATCH 11/11] v5.11.1b - Several fixes and French languga 5.11.1b * Add command PowerOnState option 5 which inverts PulseTime and allows for delayed always on after power on * Changed OSWATCH_RESET_TIME (Blocked loop) from 30 to 120 seconds to allow slow networks (#1556) * Add French language file (#1561) * Fix truncated command names and wrong response for DomoticzSwitchIdx (#1571) * Add HTTP Allow Cross Origin removed from ESP8266/Arduino 2.4.0 (#1572) * Fix %-sign issue as printf escape character in Humidity and Sonoff SC (#1579) --- README.md | 2 +- sonoff/_releasenotes.ino | 12 +- sonoff/i18n.h | 2 +- sonoff/language/fr-FR.h | 469 ++++++++++++++++++++++++++++++++++++ sonoff/settings.h | 2 +- sonoff/sonoff.h | 2 +- sonoff/sonoff.ino | 28 ++- sonoff/support.ino | 2 +- sonoff/user_config.h | 7 +- sonoff/webserver.ino | 28 +-- sonoff/xdrv_01_light.ino | 4 +- sonoff/xdrv_05_domoticz.ino | 4 +- sonoff/xsns_04_snfsc.ino | 2 +- 13 files changed, 524 insertions(+), 40 deletions(-) create mode 100644 sonoff/language/fr-FR.h diff --git a/README.md b/README.md index 77598acc2..a48256766 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ ## Sonoff-Tasmota Provide ESP8266 based Sonoff by [iTead Studio](https://www.itead.cc/) and ElectroDragon IoT Relay with Serial, Web and MQTT control allowing 'Over the Air' or OTA firmware updates using Arduino IDE. -Current version is **5.11.1a** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. +Current version is **5.11.1b** - See [sonoff/_releasenotes.ino](https://github.com/arendst/Sonoff-Tasmota/blob/development/sonoff/_releasenotes.ino) for change information. ### ATTENTION All versions diff --git a/sonoff/_releasenotes.ino b/sonoff/_releasenotes.ino index c4ed9770b..86ec89408 100644 --- a/sonoff/_releasenotes.ino +++ b/sonoff/_releasenotes.ino @@ -1,5 +1,13 @@ -/* 5.11.1a - * Add automagic two step Web server OTA upgrade using filename-minimal image if OTA free space is too small +/* 5.11.1b + * Add command PowerOnState option 5 which inverts PulseTime and allows for delayed always on after power on + * Changed OSWATCH_RESET_TIME (Blocked loop) from 30 to 120 seconds to allow slow networks (#1556) + * Add French language file (#1561) + * Fix truncated command names and wrong response for DomoticzSwitchIdx (#1571) + * Add HTTP Allow Cross Origin removed from ESP8266/Arduino 2.4.0 (#1572) + * Fix %-sign issue as printf escape character in Humidity and Sonoff SC (#1579) + * + * 5.11.1a + * Add OtaMagic two step Web server OTA upgrade using filename-minimal image if OTA free space is too small * Add chinese language file (#1551) * * 5.11.1 20180107 diff --git a/sonoff/i18n.h b/sonoff/i18n.h index 89e6951e1..bcdf337ac 100644 --- a/sonoff/i18n.h +++ b/sonoff/i18n.h @@ -423,7 +423,7 @@ static const char kMonthNames[] = D_MONTH3LIST; // webserver.ino #ifdef USE_WEBSERVER const char HTTP_SNS_TEMP[] PROGMEM = "%s{s}%s " D_TEMPERATURE "{m}%s°%c{e}"; // {s} =
, {m} = , {e} =
, {m} = , {e} =
, {m} = , {e} =
, {m} = , {e} =
, {m} = , {e} =
, {m} = , {e} =
, {m} = , {e} =
, {m} = , {e} =