Updated dependecies and docs
This commit is contained in:
parent
433502e7a0
commit
336830e5be
@ -281,14 +281,14 @@
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="influxdb2-bucket" class="col-sm-2 col-form-label">InfluxDB v2 Bucket</label>
|
||||
<label for="influxdb2-bucket" class="col-sm-2 col-form-label">InfluxDB v2 Bucket ID</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" maxlength="50" class="form-control" name="influxdb2-bucket" id="influxdb2-bucket" data-bs-toggle="tooltip" title="Identifier for the data bucket to use">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row mb-3">
|
||||
<label for="influxdb2-auth" class="col-sm-2 col-form-label">InfluxDB v2 Auth</label>
|
||||
<label for="influxdb2-auth" class="col-sm-2 col-form-label">InfluxDB v2 Auth Token</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="text" maxlength="100" class="form-control" name="influxdb2-auth" id="influxdb2-auth" data-bs-toggle="tooltip" title="Authentication token for accessing data bucket">
|
||||
</div>
|
||||
|
File diff suppressed because one or more lines are too long
@ -102,55 +102,55 @@
|
||||
|
||||
#elif ( ESP_DRD_USE_LITTLEFS || ESP_DRD_USE_SPIFFS )
|
||||
|
||||
#include <FS.h>
|
||||
#include <FS.h>
|
||||
|
||||
#ifdef ESP32
|
||||
#ifdef ESP32
|
||||
|
||||
#if ESP_DRD_USE_LITTLEFS
|
||||
// Check cores/esp32/esp_arduino_version.h and cores/esp32/core_version.h
|
||||
//#if ( ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(2, 0, 0) ) //(ESP_ARDUINO_VERSION_MAJOR >= 2)
|
||||
#if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 2) )
|
||||
#if (DOUBLERESETDETECTOR_DEBUG)
|
||||
#warning Using ESP32 Core 1.0.6 or 2.0.0+
|
||||
#if ESP_DRD_USE_LITTLEFS
|
||||
// Check cores/esp32/esp_arduino_version.h and cores/esp32/core_version.h
|
||||
//#if ( ESP_ARDUINO_VERSION >= ESP_ARDUINO_VERSION_VAL(2, 0, 0) ) //(ESP_ARDUINO_VERSION_MAJOR >= 2)
|
||||
#if ( defined(ESP_ARDUINO_VERSION_MAJOR) && (ESP_ARDUINO_VERSION_MAJOR >= 2) )
|
||||
#if (DOUBLERESETDETECTOR_DEBUG)
|
||||
#warning Using ESP32 Core 1.0.6 or 2.0.0+
|
||||
#endif
|
||||
|
||||
// The library has been merged into esp32 core from release 1.0.6
|
||||
#include <LittleFS.h>
|
||||
|
||||
#define FileFS LittleFS
|
||||
#define FS_Name "LittleFS"
|
||||
#else
|
||||
#if (DOUBLERESETDETECTOR_DEBUG)
|
||||
#warning Using ESP32 Core 1.0.5-. You must install LITTLEFS library
|
||||
#endif
|
||||
|
||||
// The library has been merged into esp32 core from release 1.0.6
|
||||
#include <LITTLEFS.h> // https://github.com/lorol/LITTLEFS
|
||||
|
||||
#define FileFS LITTLEFS
|
||||
#define FS_Name "LittleFS"
|
||||
#endif
|
||||
|
||||
// The library has been merged into esp32 core from release 1.0.6
|
||||
#include <LittleFS.h>
|
||||
|
||||
#define FileFS LittleFS
|
||||
#define FS_Name "LittleFS"
|
||||
#else
|
||||
#if (DOUBLERESETDETECTOR_DEBUG)
|
||||
#warning Using ESP32 Core 1.0.5-. You must install LITTLEFS library
|
||||
#endif
|
||||
|
||||
// The library has been merged into esp32 core from release 1.0.6
|
||||
#include <LITTLEFS.h> // https://github.com/lorol/LITTLEFS
|
||||
|
||||
#define FileFS LITTLEFS
|
||||
#define FS_Name "LittleFS"
|
||||
#include "SPIFFS.h"
|
||||
// ESP32 core 1.0.4 still uses SPIFFS
|
||||
#define FileFS SPIFFS
|
||||
#endif
|
||||
|
||||
#else
|
||||
#include "SPIFFS.h"
|
||||
// ESP32 core 1.0.4 still uses SPIFFS
|
||||
#define FileFS SPIFFS
|
||||
#endif
|
||||
// From ESP8266 core 2.7.1
|
||||
#include <LittleFS.h>
|
||||
|
||||
#else
|
||||
// From ESP8266 core 2.7.1
|
||||
#include <LittleFS.h>
|
||||
#if ESP_DRD_USE_LITTLEFS
|
||||
#define FileFS LittleFS
|
||||
#else
|
||||
#define FileFS SPIFFS
|
||||
#endif
|
||||
|
||||
#if ESP_DRD_USE_LITTLEFS
|
||||
#define FileFS LittleFS
|
||||
#else
|
||||
#define FileFS SPIFFS
|
||||
#endif
|
||||
|
||||
#endif // #if ESP_DRD_USE_EEPROM
|
||||
#endif // #if ESP_DRD_USE_EEPROM
|
||||
|
||||
|
||||
|
||||
#define DRD_FILENAME "/drd.dat"
|
||||
#define DRD_FILENAME "/drd.dat"
|
||||
|
||||
#endif //#if ESP_DRD_USE_EEPROM
|
||||
|
||||
@ -171,6 +171,7 @@ class DoubleResetDetector
|
||||
|
||||
EEPROM.begin(EEPROM_SIZE);
|
||||
#elif ( ESP_DRD_USE_LITTLEFS || ESP_DRD_USE_SPIFFS )
|
||||
|
||||
// LittleFS / SPIFFS code
|
||||
if (!FileFS.begin())
|
||||
{
|
||||
@ -184,6 +185,7 @@ class DoubleResetDetector
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
#else
|
||||
#ifdef ESP8266
|
||||
//RTC only for ESP8266
|
||||
@ -264,6 +266,7 @@ class DoubleResetDetector
|
||||
Serial.printf("EEPROM Flag read = 0x%X\n", DOUBLERESETDETECTOR_FLAG);
|
||||
#endif
|
||||
#elif ( ESP_DRD_USE_LITTLEFS || ESP_DRD_USE_SPIFFS )
|
||||
|
||||
// LittleFS / SPIFFS code
|
||||
if (FileFS.exists(DRD_FILENAME))
|
||||
{
|
||||
@ -292,6 +295,7 @@ class DoubleResetDetector
|
||||
|
||||
file.close();
|
||||
}
|
||||
|
||||
#else
|
||||
#ifdef ESP8266
|
||||
//RTC only for ESP8266
|
||||
@ -340,6 +344,7 @@ class DoubleResetDetector
|
||||
Serial.println("Saving config file failed");
|
||||
#endif
|
||||
}
|
||||
|
||||
#else
|
||||
#ifdef ESP8266
|
||||
//RTC only for ESP8266
|
||||
|
@ -16,7 +16,7 @@
|
||||
Built by Khoi Hoang https://github.com/khoih-prog/ESP_WiFiManager
|
||||
Licensed under MIT license
|
||||
|
||||
Version: 1.11.0
|
||||
Version: 1.12.1
|
||||
|
||||
Version Modified By Date Comments
|
||||
------- ----------- ---------- -----------
|
||||
@ -28,6 +28,8 @@
|
||||
1.10.1 K Hoang 11/02/2022 Add LittleFS support to ESP32-C3. Use core LittleFS instead of Lorol's LITTLEFS for v2.0.0+
|
||||
1.10.2 K Hoang 13/03/2022 Send CORS header in handleWifiSave() function
|
||||
1.11.0 K Hoang 09/09/2022 Fix ESP32 chipID and add ESP_getChipOUI()
|
||||
1.12.0 K Hoang 07/10/2022 Optional display Credentials (SSIDs, PWDs) in Config Portal
|
||||
1.12.1 K Hoang 25/10/2022 Using random channel for softAP without password. Add astyle using allman style
|
||||
*****************************************************************************************************************************/
|
||||
|
||||
#pragma once
|
||||
@ -35,7 +37,6 @@
|
||||
#ifndef ESP_WiFiManager_Impl_h
|
||||
#define ESP_WiFiManager_Impl_h
|
||||
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
ESP_WMParameter::ESP_WMParameter(const char *custom)
|
||||
@ -51,21 +52,24 @@ ESP_WMParameter::ESP_WMParameter(const char *custom)
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
ESP_WMParameter::ESP_WMParameter(const char *id, const char *placeholder, const char *defaultValue, const int& length, const char *custom, const int& labelPlacement)
|
||||
ESP_WMParameter::ESP_WMParameter(const char *id, const char *placeholder, const char *defaultValue, const int& length,
|
||||
const char *custom, const int& labelPlacement)
|
||||
{
|
||||
init(id, placeholder, defaultValue, length, custom, labelPlacement);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
// New in v1.4.0
|
||||
|
||||
ESP_WMParameter::ESP_WMParameter(const WMParam_Data& WMParam_data)
|
||||
{
|
||||
init(WMParam_data._id, WMParam_data._placeholder, WMParam_data._value, WMParam_data._length, "", WMParam_data._labelPlacement);
|
||||
init(WMParam_data._id, WMParam_data._placeholder, WMParam_data._value, WMParam_data._length, "",
|
||||
WMParam_data._labelPlacement);
|
||||
}
|
||||
//////
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
void ESP_WMParameter::init(const char *id, const char *placeholder, const char *defaultValue, const int& length, const char *custom, const int& labelPlacement)
|
||||
void ESP_WMParameter::init(const char *id, const char *placeholder, const char *defaultValue, const int& length,
|
||||
const char *custom, const int& labelPlacement)
|
||||
{
|
||||
_WMParam_data._id = id;
|
||||
_WMParam_data._placeholder = placeholder;
|
||||
@ -98,7 +102,7 @@ ESP_WMParameter::~ESP_WMParameter()
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
// New in v1.4.0
|
||||
|
||||
// Using Struct to get/set whole data at once
|
||||
void ESP_WMParameter::setWMParam_Data(const WMParam_Data& WMParam_data)
|
||||
{
|
||||
@ -115,7 +119,6 @@ void ESP_WMParameter::getWMParam_Data(WMParam_Data &WMParam_data)
|
||||
|
||||
memcpy(&WMParam_data, &_WMParam_data, sizeof(WMParam_data));
|
||||
}
|
||||
//////
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
@ -159,6 +162,7 @@ const char* ESP_WMParameter::getCustomHTML()
|
||||
return _customHTML;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
//////////////////////////////////////////
|
||||
|
||||
/**
|
||||
@ -170,6 +174,8 @@ ESP_WMParameter** ESP_WiFiManager::getParameters()
|
||||
return _params;
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
/**
|
||||
[getParametersCount description]
|
||||
@access public
|
||||
@ -215,14 +221,13 @@ ESP_WiFiManager::ESP_WiFiManager(const char *iHostname)
|
||||
#endif
|
||||
|
||||
//WiFi not yet started here, must call WiFi.mode(WIFI_STA) and modify function WiFiGenericClass::mode(wifi_mode_t m) !!!
|
||||
|
||||
WiFi.mode(WIFI_STA);
|
||||
|
||||
if (iHostname[0] == 0)
|
||||
{
|
||||
#ifdef ESP8266
|
||||
String _hostname = "ESP8266-" + String(ESP.getChipId(), HEX);
|
||||
#else //ESP32
|
||||
#else //ESP32
|
||||
String _hostname = "ESP32-" + String(ESP_getChipId(), HEX);
|
||||
|
||||
#endif
|
||||
@ -249,12 +254,14 @@ ESP_WiFiManager::ESP_WiFiManager(const char *iHostname)
|
||||
ESP_WiFiManager::~ESP_WiFiManager()
|
||||
{
|
||||
#if USE_DYNAMIC_PARAMS
|
||||
|
||||
if (_params != NULL)
|
||||
{
|
||||
LOGINFO(F("freeing allocated params!"));
|
||||
|
||||
free(_params);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
if (networkIndices)
|
||||
@ -266,9 +273,9 @@ ESP_WiFiManager::~ESP_WiFiManager()
|
||||
//////////////////////////////////////////
|
||||
|
||||
#if USE_DYNAMIC_PARAMS
|
||||
bool ESP_WiFiManager::addParameter(ESP_WMParameter *p)
|
||||
bool ESP_WiFiManager::addParameter(ESP_WMParameter *p)
|
||||
#else
|
||||
void ESP_WiFiManager::addParameter(ESP_WMParameter *p)
|
||||
void ESP_WiFiManager::addParameter(ESP_WMParameter *p)
|
||||
#endif
|
||||
{
|
||||
#if USE_DYNAMIC_PARAMS
|
||||
@ -335,7 +342,7 @@ void ESP_WiFiManager::setupConfigPortal()
|
||||
|
||||
#ifdef ESP8266
|
||||
server.reset(new ESP8266WebServer(HTTP_PORT_TO_USE));
|
||||
#else //ESP32
|
||||
#else //ESP32
|
||||
server.reset(new WebServer(HTTP_PORT_TO_USE));
|
||||
#endif
|
||||
|
||||
@ -344,7 +351,8 @@ void ESP_WiFiManager::setupConfigPortal()
|
||||
// Check (https://github.com/khoih-prog/ESP_WiFiManager/issues/58)
|
||||
if (_WiFi_AP_IPconfig._ap_static_ip)
|
||||
{
|
||||
LOGWARN3(F("Custom AP IP/GW/Subnet = "), _WiFi_AP_IPconfig._ap_static_ip, _WiFi_AP_IPconfig._ap_static_gw, _WiFi_AP_IPconfig._ap_static_sn);
|
||||
LOGWARN3(F("Custom AP IP/GW/Subnet = "), _WiFi_AP_IPconfig._ap_static_ip, _WiFi_AP_IPconfig._ap_static_gw,
|
||||
_WiFi_AP_IPconfig._ap_static_sn);
|
||||
|
||||
WiFi.softAPConfig(_WiFi_AP_IPconfig._ap_static_ip, _WiFi_AP_IPconfig._ap_static_gw, _WiFi_AP_IPconfig._ap_static_sn);
|
||||
}
|
||||
@ -380,11 +388,11 @@ void ESP_WiFiManager::setupConfigPortal()
|
||||
|
||||
_apPassword = NULL;
|
||||
}
|
||||
|
||||
LOGWARN1(F("AP PWD ="), _apPassword);
|
||||
}
|
||||
|
||||
|
||||
// KH, new from v1.0.10 to enable dynamic/random channel
|
||||
// KH, To enable dynamic/random channel
|
||||
static int channel;
|
||||
|
||||
// Use random channel if _WiFiAPChannel == 0
|
||||
@ -393,19 +401,9 @@ void ESP_WiFiManager::setupConfigPortal()
|
||||
else
|
||||
channel = _WiFiAPChannel;
|
||||
|
||||
if (_apPassword != NULL)
|
||||
{
|
||||
LOGWARN1(F("AP Channel ="), channel);
|
||||
LOGWARN1(F("AP Channel ="), channel);
|
||||
|
||||
//WiFi.softAP(_apName, _apPassword);//password option
|
||||
WiFi.softAP(_apName, _apPassword, channel);
|
||||
}
|
||||
else
|
||||
{
|
||||
// Can't use channel here
|
||||
WiFi.softAP(_apName);
|
||||
}
|
||||
//////
|
||||
WiFi.softAP(_apName, _apPassword, channel);
|
||||
|
||||
delay(500); // Without delay I've seen the IP address blank
|
||||
|
||||
@ -420,6 +418,8 @@ void ESP_WiFiManager::setupConfigPortal()
|
||||
server->on("/r", std::bind(&ESP_WiFiManager::handleReset, this));
|
||||
server->on("/state", std::bind(&ESP_WiFiManager::handleState, this));
|
||||
server->on("/scan", std::bind(&ESP_WiFiManager::handleScan, this));
|
||||
//Microsoft captive portal. Maybe not needed. Might be handled by notFound handler.
|
||||
server->on("/fwlink", std::bind(&ESP_WiFiManager::handleRoot, this));
|
||||
server->onNotFound(std::bind(&ESP_WiFiManager::handleNotFound, this));
|
||||
server->begin(); // Web server start
|
||||
|
||||
@ -432,7 +432,7 @@ bool ESP_WiFiManager::autoConnect()
|
||||
{
|
||||
#ifdef ESP8266
|
||||
String ssid = "ESP_" + String(ESP.getChipId());
|
||||
#else //ESP32
|
||||
#else //ESP32
|
||||
String ssid = "ESP_" + String(ESP_getChipId());
|
||||
|
||||
#endif
|
||||
@ -440,6 +440,8 @@ bool ESP_WiFiManager::autoConnect()
|
||||
return autoConnect(ssid.c_str(), NULL);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
/* This is not very useful as there has been an assumption that device has to be
|
||||
told to connect but Wifi already does it's best to connect in background. Calling this
|
||||
method will block until WiFi connects. Sketch can avoid
|
||||
@ -447,7 +449,6 @@ bool ESP_WiFiManager::autoConnect()
|
||||
See some discussion at https://github.com/tzapu/WiFiManager/issues/68
|
||||
*/
|
||||
|
||||
// New in v1.0.11
|
||||
// To permit autoConnect() to use STA static IP or DHCP IP.
|
||||
#ifndef AUTOCONNECT_NO_INVALIDATE
|
||||
#define AUTOCONNECT_NO_INVALIDATE true
|
||||
@ -471,7 +472,6 @@ bool ESP_WiFiManager::autoConnect(char const *apName, char const *apPassword)
|
||||
|
||||
while (millis() - startedAt < 10000)
|
||||
{
|
||||
//delay(100);
|
||||
delay(200);
|
||||
|
||||
if (WiFi.status() == WL_CONNECTED)
|
||||
@ -494,7 +494,7 @@ bool ESP_WiFiManager::startConfigPortal()
|
||||
{
|
||||
#ifdef ESP8266
|
||||
String ssid = "ESP_" + String(ESP.getChipId());
|
||||
#else //ESP32
|
||||
#else //ESP32
|
||||
String ssid = "ESP_" + String(ESP_getChipId());
|
||||
#endif
|
||||
ssid.toUpperCase();
|
||||
@ -521,10 +521,12 @@ bool ESP_WiFiManager::startConfigPortal(char const *apName, char const *apPassw
|
||||
{
|
||||
LOGINFO("SET AP");
|
||||
|
||||
WiFi.mode(WIFI_AP); // Dual mode becomes flaky if not connected to a WiFi network.
|
||||
// Dual mode becomes flaky if not connected to a WiFi network.
|
||||
// When ESP8266 station is trying to find a target AP, it will scan on every channel,
|
||||
// that means ESP8266 station is changing its channel to scan. This makes the channel of ESP8266 softAP keep changing too..
|
||||
// So the connection may break. From http://bbs.espressif.com/viewtopic.php?t=671#p2531
|
||||
|
||||
WiFi.mode(WIFI_AP);
|
||||
}
|
||||
|
||||
_apName = apName;
|
||||
@ -580,6 +582,7 @@ bool ESP_WiFiManager::startConfigPortal(char const *apName, char const *apPassw
|
||||
//todo: check if any custom parameters actually exist, and check if they really changed maybe
|
||||
_savecallback();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
@ -599,7 +602,9 @@ bool ESP_WiFiManager::startConfigPortal(char const *apName, char const *apPassw
|
||||
|
||||
if (stopConfigPortal)
|
||||
{
|
||||
LOGERROR("Stop ConfigPortal"); //KH
|
||||
//TimedOut = false;
|
||||
|
||||
LOGERROR("Stop ConfigPortal"); //KH
|
||||
|
||||
stopConfigPortal = false;
|
||||
break;
|
||||
@ -614,7 +619,7 @@ bool ESP_WiFiManager::startConfigPortal(char const *apName, char const *apPassw
|
||||
{
|
||||
setHostname();
|
||||
|
||||
// New v1.0.8 to fix static IP when CP not entered or timed-out
|
||||
// To fix static IP when CP not entered or timed-out
|
||||
setWifiStaticIP();
|
||||
|
||||
WiFi.begin();
|
||||
@ -636,6 +641,7 @@ bool ESP_WiFiManager::startConfigPortal(char const *apName, char const *apPassw
|
||||
void ESP_WiFiManager::setWifiStaticIP()
|
||||
{
|
||||
#if USE_CONFIGURABLE_DNS
|
||||
|
||||
if (_WiFi_STA_IPconfig._sta_static_ip)
|
||||
{
|
||||
LOGWARN(F("Custom STA IP/GW/Subnet"));
|
||||
@ -645,13 +651,15 @@ void ESP_WiFiManager::setWifiStaticIP()
|
||||
{
|
||||
LOGWARN(F("DNS1 and DNS2 set"));
|
||||
|
||||
WiFi.config(_WiFi_STA_IPconfig._sta_static_ip, _WiFi_STA_IPconfig._sta_static_gw, _WiFi_STA_IPconfig._sta_static_sn, _WiFi_STA_IPconfig._sta_static_dns1, _WiFi_STA_IPconfig._sta_static_dns2);
|
||||
WiFi.config(_WiFi_STA_IPconfig._sta_static_ip, _WiFi_STA_IPconfig._sta_static_gw, _WiFi_STA_IPconfig._sta_static_sn,
|
||||
_WiFi_STA_IPconfig._sta_static_dns1, _WiFi_STA_IPconfig._sta_static_dns2);
|
||||
}
|
||||
else if (_WiFi_STA_IPconfig._sta_static_dns1)
|
||||
{
|
||||
LOGWARN(F("Only DNS1 set"));
|
||||
|
||||
WiFi.config(_WiFi_STA_IPconfig._sta_static_ip, _WiFi_STA_IPconfig._sta_static_gw, _WiFi_STA_IPconfig._sta_static_sn, _WiFi_STA_IPconfig._sta_static_dns1);
|
||||
WiFi.config(_WiFi_STA_IPconfig._sta_static_ip, _WiFi_STA_IPconfig._sta_static_gw, _WiFi_STA_IPconfig._sta_static_sn,
|
||||
_WiFi_STA_IPconfig._sta_static_dns1);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -659,6 +667,7 @@ void ESP_WiFiManager::setWifiStaticIP()
|
||||
|
||||
WiFi.config(_WiFi_STA_IPconfig._sta_static_ip, _WiFi_STA_IPconfig._sta_static_gw, _WiFi_STA_IPconfig._sta_static_sn);
|
||||
}
|
||||
|
||||
//***** End added section for DNS config option *****
|
||||
|
||||
LOGINFO1(F("setWifiStaticIP IP ="), WiFi.localIP());
|
||||
@ -667,7 +676,9 @@ void ESP_WiFiManager::setWifiStaticIP()
|
||||
{
|
||||
LOGWARN(F("Can't use Custom STA IP/GW/Subnet"));
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
// check if we've got static_ip settings, if we do, use those.
|
||||
if (_WiFi_STA_IPconfig._sta_static_ip)
|
||||
{
|
||||
@ -675,17 +686,17 @@ void ESP_WiFiManager::setWifiStaticIP()
|
||||
|
||||
LOGWARN1(F("Custom STA IP/GW/Subnet : "), WiFi.localIP());
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
// New from v1.1.0
|
||||
int ESP_WiFiManager::reconnectWifi()
|
||||
{
|
||||
int connectResult;
|
||||
|
||||
// using user-provided _ssid, _pass in place of system-stored ssid and pass
|
||||
// using user-provided _ssid, _pass instead of system-stored
|
||||
if ( ( connectResult = connectWifi(_ssid, _pass) ) != WL_CONNECTED)
|
||||
{
|
||||
LOGERROR1(F("Failed to connect to"), _ssid);
|
||||
@ -699,7 +710,7 @@ int ESP_WiFiManager::reconnectWifi()
|
||||
LOGERROR1(F("Connected to"), _ssid1);
|
||||
}
|
||||
else
|
||||
LOGERROR1(F("Connected to"), _ssid);
|
||||
LOGERROR1(F("Connected to"), _ssid);
|
||||
|
||||
return connectResult;
|
||||
}
|
||||
@ -708,12 +719,11 @@ int ESP_WiFiManager::reconnectWifi()
|
||||
|
||||
int ESP_WiFiManager::connectWifi(const String& ssid, const String& pass)
|
||||
{
|
||||
//KH, from v1.0.10.
|
||||
// Add option if didn't input/update SSID/PW => Use the previous saved Credentials.
|
||||
// But update the Static/DHCP options if changed.
|
||||
if ( (ssid != "") || ( (ssid == "") && (WiFi_SSID() != "") ) )
|
||||
{
|
||||
//fix for auto connect racing issue. Move up from v1.1.0 to avoid resetSettings()
|
||||
//fix for auto connect racing issue, to avoid resetSettings()
|
||||
if (WiFi.status() == WL_CONNECTED)
|
||||
{
|
||||
LOGWARN(F("Already connected. Bailing out."));
|
||||
@ -731,7 +741,7 @@ int ESP_WiFiManager::connectWifi(const String& ssid, const String& pass)
|
||||
|
||||
setHostname();
|
||||
|
||||
// KH, Fix ESP32 staticIP after exiting CP, from v1.0.9
|
||||
// KH, Fix ESP32 staticIP after exiting CP
|
||||
#ifdef ESP32
|
||||
setWifiStaticIP();
|
||||
#endif
|
||||
@ -757,6 +767,7 @@ int ESP_WiFiManager::connectWifi(const String& ssid, const String& pass)
|
||||
}
|
||||
|
||||
int connRes = waitForConnectResult();
|
||||
|
||||
LOGWARN1("Connection result: ", getStatus(connRes));
|
||||
|
||||
//not connected, WPS enabled, no pass - first attempt
|
||||
@ -789,13 +800,14 @@ uint8_t ESP_WiFiManager::waitForConnectResult()
|
||||
LOGWARN1(F("Connected after waiting (s) :"), waited / 1000);
|
||||
LOGWARN1(F("Local ip ="), WiFi.localIP());
|
||||
|
||||
// Fix bug from v1.1.0+, connRes is sometimes not correct.
|
||||
// Fix bug, connRes is sometimes not correct.
|
||||
//return connRes;
|
||||
return WiFi.status();
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGERROR(F("Waiting WiFi connection with time out"));
|
||||
|
||||
unsigned long start = millis();
|
||||
bool keepConnecting = true;
|
||||
uint8_t status;
|
||||
@ -803,6 +815,7 @@ uint8_t ESP_WiFiManager::waitForConnectResult()
|
||||
while (keepConnecting)
|
||||
{
|
||||
status = WiFi.status();
|
||||
|
||||
if (millis() > start + _connectTimeout)
|
||||
{
|
||||
keepConnecting = false;
|
||||
@ -813,8 +826,10 @@ uint8_t ESP_WiFiManager::waitForConnectResult()
|
||||
{
|
||||
keepConnecting = false;
|
||||
}
|
||||
|
||||
delay(100);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
}
|
||||
@ -827,7 +842,7 @@ void ESP_WiFiManager::startWPS()
|
||||
LOGINFO("START WPS");
|
||||
WiFi.beginWPSConfig();
|
||||
LOGINFO("END WPS");
|
||||
#else //ESP32
|
||||
#else //ESP32
|
||||
// TODO
|
||||
LOGINFO("ESP32 WPS TODO");
|
||||
#endif
|
||||
@ -843,14 +858,19 @@ const char* ESP_WiFiManager::getStatus(const int& status)
|
||||
{
|
||||
case WL_IDLE_STATUS:
|
||||
return "WL_IDLE_STATUS";
|
||||
|
||||
case WL_NO_SSID_AVAIL:
|
||||
return "WL_NO_SSID_AVAIL";
|
||||
|
||||
case WL_CONNECTED:
|
||||
return "WL_CONNECTED";
|
||||
|
||||
case WL_CONNECT_FAILED:
|
||||
return "WL_CONNECT_FAILED";
|
||||
|
||||
case WL_DISCONNECTED:
|
||||
return "WL_DISCONNECTED";
|
||||
|
||||
default:
|
||||
return "UNKNOWN";
|
||||
}
|
||||
@ -880,14 +900,15 @@ void ESP_WiFiManager::resetSettings()
|
||||
WiFi.disconnect(true);
|
||||
#else
|
||||
WiFi.disconnect(true, true);
|
||||
// New in v1.0.11
|
||||
|
||||
// Temporary fix for issue of not clearing WiFi SSID/PW from flash of ESP32
|
||||
// See https://github.com/khoih-prog/ESP_WiFiManager/issues/25 and https://github.com/espressif/arduino-esp32/issues/400
|
||||
WiFi.begin("0","0");
|
||||
WiFi.begin("0", "0");
|
||||
//////
|
||||
#endif
|
||||
|
||||
delay(200);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
@ -921,7 +942,7 @@ void ESP_WiFiManager::setDebugOutput(bool debug)
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
// KH, new from v1.0.10 to enable dynamic/random channel
|
||||
// KH, To enable dynamic/random channel
|
||||
int ESP_WiFiManager::setConfigPortalChannel(const int& channel)
|
||||
{
|
||||
// If channel < MIN_WIFI_CHANNEL - 1 or channel > MAX_WIFI_CHANNEL => channel = 1
|
||||
@ -947,7 +968,6 @@ void ESP_WiFiManager::setAPStaticIPConfig(const IPAddress& ip, const IPAddress&
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
// New in v1.4.0
|
||||
void ESP_WiFiManager::setAPStaticIPConfig(const WiFi_AP_IPConfig& WM_AP_IPconfig)
|
||||
{
|
||||
LOGINFO(F("setAPStaticIPConfig"));
|
||||
@ -963,7 +983,7 @@ void ESP_WiFiManager::getAPStaticIPConfig(WiFi_AP_IPConfig &WM_AP_IPconfig)
|
||||
|
||||
memcpy((void*) &WM_AP_IPconfig, &_WiFi_AP_IPconfig, sizeof(WM_AP_IPconfig));
|
||||
}
|
||||
//////
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
void ESP_WiFiManager::setSTAStaticIPConfig(const IPAddress& ip, const IPAddress& gw, const IPAddress& sn)
|
||||
@ -975,7 +995,6 @@ void ESP_WiFiManager::setSTAStaticIPConfig(const IPAddress& ip, const IPAddress&
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
// New in v1.4.0
|
||||
|
||||
void ESP_WiFiManager::setSTAStaticIPConfig(const WiFi_STA_IPConfig& WM_STA_IPconfig)
|
||||
{
|
||||
@ -992,7 +1011,7 @@ void ESP_WiFiManager::getSTAStaticIPConfig(WiFi_STA_IPConfig &WM_STA_IPconfig)
|
||||
|
||||
memcpy((void*) &WM_STA_IPconfig, &_WiFi_STA_IPconfig, sizeof(WM_STA_IPconfig));
|
||||
}
|
||||
//////
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
#if USE_CONFIGURABLE_DNS
|
||||
@ -1060,7 +1079,7 @@ void ESP_WiFiManager::handleRoot()
|
||||
LOGDEBUG(F("Handle root"));
|
||||
|
||||
// Disable _configPortalTimeout when someone accessing Portal to give some time to config
|
||||
_configPortalTimeout = 0; //KH
|
||||
_configPortalTimeout = 0; //KH
|
||||
|
||||
if (captivePortal())
|
||||
{
|
||||
@ -1071,7 +1090,7 @@ void ESP_WiFiManager::handleRoot()
|
||||
server->sendHeader(FPSTR(WM_HTTP_CACHE_CONTROL), FPSTR(WM_HTTP_NO_STORE));
|
||||
|
||||
#if USING_CORS_FEATURE
|
||||
// New from v1.1.1, for configure CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
// For configure CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
server->sendHeader(FPSTR(WM_HTTP_CORS), _CORS_Header);
|
||||
#endif
|
||||
|
||||
@ -1123,12 +1142,12 @@ void ESP_WiFiManager::handleWifi()
|
||||
LOGDEBUG(F("Handle WiFi"));
|
||||
|
||||
// Disable _configPortalTimeout when someone accessing Portal to give some time to config
|
||||
_configPortalTimeout = 0; //KH
|
||||
_configPortalTimeout = 0; //KH
|
||||
|
||||
server->sendHeader(FPSTR(WM_HTTP_CACHE_CONTROL), FPSTR(WM_HTTP_NO_STORE));
|
||||
|
||||
#if USING_CORS_FEATURE
|
||||
// New from v1.1.1, for configure CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
// For configure CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
server->sendHeader(FPSTR(WM_HTTP_CORS), _CORS_Header);
|
||||
#endif
|
||||
|
||||
@ -1145,7 +1164,7 @@ void ESP_WiFiManager::handleWifi()
|
||||
page += FPSTR(WM_HTTP_HEAD_END);
|
||||
page += F("<h2>Configuration</h2>");
|
||||
|
||||
// KH, New, v1.0.6+
|
||||
// KH, New
|
||||
numberOfNetworks = scanWifiNetworks(&networkIndices);
|
||||
|
||||
//Print list of WiFi networks that were found in earlier scan
|
||||
@ -1155,9 +1174,7 @@ void ESP_WiFiManager::handleWifi()
|
||||
}
|
||||
else
|
||||
{
|
||||
// From v1.0.10
|
||||
page += FPSTR(WM_FLDSET_START);
|
||||
//////
|
||||
|
||||
//display networks in page
|
||||
for (int i = 0; i < numberOfNetworks; i++)
|
||||
@ -1178,8 +1195,9 @@ void ESP_WiFiManager::handleWifi()
|
||||
item.replace("{r}", rssiQ);
|
||||
|
||||
#ifdef ESP8266
|
||||
|
||||
if (WiFi.encryptionType(networkIndices[i]) != ENC_TYPE_NONE)
|
||||
#else //ESP32
|
||||
#else //ESP32
|
||||
if (WiFi.encryptionType(networkIndices[i]) != WIFI_AUTH_OPEN)
|
||||
#endif
|
||||
{
|
||||
@ -1191,18 +1209,28 @@ void ESP_WiFiManager::handleWifi()
|
||||
}
|
||||
|
||||
//LOGDEBUG(item);
|
||||
|
||||
page += item;
|
||||
delay(0);
|
||||
}
|
||||
|
||||
// From v1.0.10
|
||||
page += FPSTR(WM_FLDSET_END);
|
||||
//////
|
||||
|
||||
page += "<br/>";
|
||||
}
|
||||
|
||||
page += "<small>*Hint: To reuse the saved WiFi credentials, leave SSID and PWD fields empty</small>";
|
||||
|
||||
page += FPSTR(WM_HTTP_FORM_START);
|
||||
|
||||
#if DISPLAY_STORED_CREDENTIALS_IN_CP
|
||||
// Populate SSIDs and PWDs if valid
|
||||
page.replace("[[ssid]]", _ssid );
|
||||
page.replace("[[pwd]]", _pass );
|
||||
page.replace("[[ssid1]]", _ssid1 );
|
||||
page.replace("[[pwd1]]", _pass1 );
|
||||
#endif
|
||||
|
||||
char parLength[2];
|
||||
|
||||
page += FPSTR(WM_FLDSET_START);
|
||||
@ -1216,14 +1244,17 @@ void ESP_WiFiManager::handleWifi()
|
||||
}
|
||||
|
||||
String pitem;
|
||||
|
||||
switch (_params[i]->getLabelPlacement())
|
||||
{
|
||||
case WFM_LABEL_BEFORE:
|
||||
pitem = FPSTR(WM_HTTP_FORM_LABEL_BEFORE);
|
||||
break;
|
||||
|
||||
case WFM_LABEL_AFTER:
|
||||
pitem = FPSTR(WM_HTTP_FORM_LABEL_AFTER);
|
||||
break;
|
||||
|
||||
default:
|
||||
// WFM_NO_LABEL
|
||||
pitem = FPSTR(WM_HTTP_FORM_PARAM);
|
||||
@ -1248,12 +1279,10 @@ void ESP_WiFiManager::handleWifi()
|
||||
page += pitem;
|
||||
}
|
||||
|
||||
// From v1.0.10
|
||||
if (_paramsCount > 0)
|
||||
{
|
||||
page += FPSTR(WM_FLDSET_END);
|
||||
}
|
||||
//////
|
||||
|
||||
if (_params[0] != NULL)
|
||||
{
|
||||
@ -1262,20 +1291,19 @@ void ESP_WiFiManager::handleWifi()
|
||||
|
||||
LOGDEBUG1(F("Static IP ="), _WiFi_STA_IPconfig._sta_static_ip.toString());
|
||||
|
||||
// KH, Comment out in v1.0.9 to permit changing from DHCP to static IP, or vice versa
|
||||
// KH, Comment out to permit changing from DHCP to static IP, or vice versa
|
||||
// and add staticIP label in CP
|
||||
|
||||
// From v1.0.10 to permit disable/enable StaticIP configuration in Config Portal from sketch. Valid only if DHCP is used.
|
||||
// To permit disable/enable StaticIP configuration in Config Portal from sketch. Valid only if DHCP is used.
|
||||
// You'll loose the feature of dynamically changing from DHCP to static IP, or vice versa
|
||||
// You have to explicitly specify false to disable the feature.
|
||||
|
||||
#if !USE_STATIC_IP_CONFIG_IN_CP
|
||||
|
||||
if (_WiFi_STA_IPconfig._sta_static_ip)
|
||||
#endif
|
||||
{
|
||||
// From v1.0.10
|
||||
page += FPSTR(WM_FLDSET_START);
|
||||
//////
|
||||
|
||||
String item = FPSTR(WM_HTTP_FORM_LABEL);
|
||||
item += FPSTR(WM_HTTP_FORM_PARAM);
|
||||
@ -1305,7 +1333,7 @@ void ESP_WiFiManager::handleWifi()
|
||||
item.replace("{l}", "15");
|
||||
item.replace("{v}", _WiFi_STA_IPconfig._sta_static_sn.toString());
|
||||
|
||||
#if USE_CONFIGURABLE_DNS
|
||||
#if USE_CONFIGURABLE_DNS
|
||||
//***** Added for DNS address options *****
|
||||
page += item;
|
||||
|
||||
@ -1327,13 +1355,11 @@ void ESP_WiFiManager::handleWifi()
|
||||
item.replace("{l}", "15");
|
||||
item.replace("{v}", _WiFi_STA_IPconfig._sta_static_dns2.toString());
|
||||
//***** End added for DNS address options *****
|
||||
#endif
|
||||
#endif
|
||||
|
||||
page += item;
|
||||
|
||||
// From v1.0.10
|
||||
page += FPSTR(WM_FLDSET_END);
|
||||
//////
|
||||
|
||||
page += "<br/>";
|
||||
}
|
||||
@ -1360,14 +1386,13 @@ void ESP_WiFiManager::handleWifiSave()
|
||||
_ssid = server->arg("s").c_str();
|
||||
_pass = server->arg("p").c_str();
|
||||
|
||||
// New from v1.1.0
|
||||
_ssid1 = server->arg("s1").c_str();
|
||||
_pass1 = server->arg("p1").c_str();
|
||||
|
||||
///////////////////////
|
||||
|
||||
#if USING_CORS_FEATURE
|
||||
// New from v1.10.2, for configure CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
// For configuring CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
server->sendHeader(FPSTR(WM_HTTP_CORS), _CORS_Header);
|
||||
#endif
|
||||
|
||||
@ -1398,9 +1423,7 @@ void ESP_WiFiManager::handleWifiSave()
|
||||
String value = server->arg(_params[i]->getID()).c_str();
|
||||
|
||||
//store it in array
|
||||
// New in v1.4.0
|
||||
value.toCharArray(_params[i]->_WMParam_data._value, _params[i]->_WMParam_data._length);
|
||||
//////
|
||||
|
||||
LOGDEBUG2(F("Parameter and value :"), _params[i]->getID(), value);
|
||||
}
|
||||
@ -1430,6 +1453,7 @@ void ESP_WiFiManager::handleWifiSave()
|
||||
}
|
||||
|
||||
#if USE_CONFIGURABLE_DNS
|
||||
|
||||
//***** Added for DNS Options *****
|
||||
if (server->arg("dns1") != "")
|
||||
{
|
||||
@ -1446,6 +1470,7 @@ void ESP_WiFiManager::handleWifiSave()
|
||||
|
||||
LOGDEBUG1(F("New Static DNS2 ="), _WiFi_STA_IPconfig._sta_static_dns2.toString());
|
||||
}
|
||||
|
||||
//***** End added for DNS Options *****
|
||||
#endif
|
||||
|
||||
@ -1459,10 +1484,7 @@ void ESP_WiFiManager::handleWifiSave()
|
||||
page += FPSTR(WM_HTTP_SAVED);
|
||||
page.replace("{v}", _apName);
|
||||
page.replace("{x}", _ssid);
|
||||
|
||||
// KH, update from v1.1.0
|
||||
page.replace("{x1}", _ssid1);
|
||||
//////
|
||||
|
||||
page += FPSTR(WM_HTTP_END);
|
||||
|
||||
@ -1486,7 +1508,7 @@ void ESP_WiFiManager::handleServerClose()
|
||||
server->sendHeader(FPSTR(WM_HTTP_CACHE_CONTROL), FPSTR(WM_HTTP_NO_STORE));
|
||||
|
||||
#if USING_CORS_FEATURE
|
||||
// New from v1.1.1, for configure CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
// For configuring CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
server->sendHeader(FPSTR(WM_HTTP_CORS), _CORS_Header);
|
||||
#endif
|
||||
|
||||
@ -1531,12 +1553,12 @@ void ESP_WiFiManager::handleInfo()
|
||||
LOGDEBUG(F("Info"));
|
||||
|
||||
// Disable _configPortalTimeout when someone accessing Portal to give some time to config
|
||||
_configPortalTimeout = 0; //KH
|
||||
_configPortalTimeout = 0; //KH
|
||||
|
||||
server->sendHeader(FPSTR(WM_HTTP_CACHE_CONTROL), FPSTR(WM_HTTP_NO_STORE));
|
||||
|
||||
#if USING_CORS_FEATURE
|
||||
// New from v1.1.1, for configure CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
// For configuring CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
server->sendHeader(FPSTR(WM_HTTP_CORS), _CORS_Header);
|
||||
#endif
|
||||
|
||||
@ -1564,15 +1586,15 @@ void ESP_WiFiManager::handleInfo()
|
||||
|
||||
page += F("0x");
|
||||
#ifdef ESP8266
|
||||
page += String(ESP.getChipId(), HEX); //ESP.getChipId();
|
||||
#else //ESP32
|
||||
page += String(ESP.getChipId(), HEX); //ESP.getChipId();
|
||||
#else //ESP32
|
||||
|
||||
page += String(ESP_getChipId(), HEX); //ESP.getChipId();
|
||||
page += String(ESP_getChipId(), HEX); //ESP.getChipId();
|
||||
|
||||
page += F("</td></tr>");
|
||||
page += F("<tr><td>Chip OUI</td><td>");
|
||||
page += F("0x");
|
||||
page += String(getChipOUI(), HEX); //ESP.getChipId();
|
||||
page += String(getChipOUI(), HEX); //ESP.getChipId();
|
||||
|
||||
page += F("</td></tr>");
|
||||
page += F("<tr><td>Chip Model</td><td>");
|
||||
@ -1585,8 +1607,8 @@ void ESP_WiFiManager::handleInfo()
|
||||
page += F("<tr><td>Flash Chip ID</td><td>");
|
||||
|
||||
#ifdef ESP8266
|
||||
page += String(ESP.getFlashChipId(), HEX); //ESP.getFlashChipId();
|
||||
#else //ESP32
|
||||
page += String(ESP.getFlashChipId(), HEX); //ESP.getFlashChipId();
|
||||
#else //ESP32
|
||||
// TODO
|
||||
page += F("TODO");
|
||||
#endif
|
||||
@ -1599,7 +1621,7 @@ void ESP_WiFiManager::handleInfo()
|
||||
|
||||
#ifdef ESP8266
|
||||
page += ESP.getFlashChipRealSize();
|
||||
#else //ESP32
|
||||
#else //ESP32
|
||||
// TODO
|
||||
page += F("TODO");
|
||||
#endif
|
||||
@ -1654,7 +1676,7 @@ void ESP_WiFiManager::handleState()
|
||||
server->sendHeader(FPSTR(WM_HTTP_CACHE_CONTROL), FPSTR(WM_HTTP_NO_STORE));
|
||||
|
||||
#if USING_CORS_FEATURE
|
||||
// New from v1.1.1, for configure CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
// For configuring CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
server->sendHeader(FPSTR(WM_HTTP_CORS), _CORS_Header);
|
||||
#endif
|
||||
|
||||
@ -1698,14 +1720,14 @@ void ESP_WiFiManager::handleScan()
|
||||
LOGDEBUG(F("Scan"));
|
||||
|
||||
// Disable _configPortalTimeout when someone accessing Portal to give some time to config
|
||||
_configPortalTimeout = 0; //KH
|
||||
_configPortalTimeout = 0; //KH
|
||||
|
||||
LOGDEBUG(F("State-Json"));
|
||||
|
||||
server->sendHeader(FPSTR(WM_HTTP_CACHE_CONTROL), FPSTR(WM_HTTP_NO_STORE));
|
||||
|
||||
#if USING_CORS_FEATURE
|
||||
// New from v1.1.1, for configure CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
// For configuring CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
server->sendHeader(FPSTR(WM_HTTP_CORS), _CORS_Header);
|
||||
#endif
|
||||
|
||||
@ -1719,7 +1741,9 @@ void ESP_WiFiManager::handleScan()
|
||||
//and should be freed when indices no longer required.
|
||||
|
||||
n = scanWifiNetworks(&indices);
|
||||
|
||||
LOGDEBUG(F("In handleScan, scanWifiNetworks done"));
|
||||
|
||||
String page = F("{\"Access_Points\":[");
|
||||
|
||||
//display networks in page
|
||||
@ -1744,8 +1768,9 @@ void ESP_WiFiManager::handleScan()
|
||||
item.replace("{r}", rssiQ);
|
||||
|
||||
#ifdef ESP8266
|
||||
|
||||
if (WiFi.encryptionType(indices[i]) != ENC_TYPE_NONE)
|
||||
#else //ESP32
|
||||
#else //ESP32
|
||||
if (WiFi.encryptionType(indices[i]) != WIFI_AUTH_OPEN)
|
||||
#endif
|
||||
{
|
||||
@ -1755,7 +1780,9 @@ void ESP_WiFiManager::handleScan()
|
||||
{
|
||||
item.replace("{i}", "false");
|
||||
}
|
||||
|
||||
//LOGDEBUG(item);
|
||||
|
||||
page += item;
|
||||
delay(0);
|
||||
}
|
||||
@ -1798,16 +1825,16 @@ void ESP_WiFiManager::handleReset()
|
||||
LOGDEBUG(F("Sent reset page"));
|
||||
delay(5000);
|
||||
|
||||
// New in v1.0.11
|
||||
// Temporary fix for issue of not clearing WiFi SSID/PW from flash of ESP32
|
||||
// See https://github.com/khoih-prog/ESP_WiFiManager/issues/25 and https://github.com/espressif/arduino-esp32/issues/400
|
||||
resetSettings();
|
||||
|
||||
//WiFi.disconnect(true); // Wipe out WiFi credentials.
|
||||
//////
|
||||
|
||||
#ifdef ESP8266
|
||||
ESP.reset();
|
||||
#else //ESP32
|
||||
#else //ESP32
|
||||
ESP.restart();
|
||||
#endif
|
||||
|
||||
@ -1862,11 +1889,15 @@ bool ESP_WiFiManager::captivePortal()
|
||||
LOGINFO1(F("Request redirected to captive portal : "), server->client().localIP());
|
||||
|
||||
server->sendHeader(F("Location"), (String)F("http://") + toStringIp(server->client().localIP()), true);
|
||||
server->send(302, FPSTR(WM_HTTP_HEAD_CT2), ""); // Empty content inhibits Content-length header so we have to close the socket ourselves.
|
||||
|
||||
// Empty content inhibits Content-length header so we have to close the socket ourselves.
|
||||
server->send(302, FPSTR(WM_HTTP_HEAD_CT2), "");
|
||||
|
||||
server->client().stop(); // Stop is needed because we sent no content length
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -1889,7 +1920,8 @@ void ESP_WiFiManager::setSaveConfigCallback(void(*func)())
|
||||
//////////////////////////////////////////
|
||||
|
||||
//sets a custom element to add to head, like a new style tag
|
||||
void ESP_WiFiManager::setCustomHeadElement(const char* element) {
|
||||
void ESP_WiFiManager::setCustomHeadElement(const char* element)
|
||||
{
|
||||
_customHeadElement = element;
|
||||
}
|
||||
|
||||
@ -1919,6 +1951,7 @@ int ESP_WiFiManager::scanWifiNetworks(int **indicesptr)
|
||||
if (n <= 0)
|
||||
{
|
||||
LOGDEBUG(F("No network found"));
|
||||
|
||||
return (0);
|
||||
}
|
||||
else
|
||||
@ -1931,6 +1964,7 @@ int ESP_WiFiManager::scanWifiNetworks(int **indicesptr)
|
||||
{
|
||||
LOGDEBUG(F("ERROR: Out of memory"));
|
||||
*indicesptr = NULL;
|
||||
|
||||
return (0);
|
||||
}
|
||||
|
||||
@ -1963,12 +1997,14 @@ int ESP_WiFiManager::scanWifiNetworks(int **indicesptr)
|
||||
if (_removeDuplicateAPs)
|
||||
{
|
||||
String cssid;
|
||||
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
if (indices[i] == -1)
|
||||
continue;
|
||||
|
||||
cssid = WiFi.SSID(indices[i]);
|
||||
|
||||
for (int j = i + 1; j < n; j++)
|
||||
{
|
||||
if (cssid == WiFi.SSID(indices[j]))
|
||||
@ -1995,6 +2031,7 @@ int ESP_WiFiManager::scanWifiNetworks(int **indicesptr)
|
||||
}
|
||||
|
||||
#if (DEBUG_WIFIMGR > 2)
|
||||
|
||||
for (int i = 0; i < n; i++)
|
||||
{
|
||||
if (indices[i] == -1)
|
||||
@ -2002,6 +2039,7 @@ int ESP_WiFiManager::scanWifiNetworks(int **indicesptr)
|
||||
else
|
||||
Serial.println(WiFi.SSID(indices[i]));
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
return (n);
|
||||
@ -2044,6 +2082,7 @@ bool ESP_WiFiManager::isIp(const String& str)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@ -2053,6 +2092,7 @@ bool ESP_WiFiManager::isIp(const String& str)
|
||||
String ESP_WiFiManager::toStringIp(const IPAddress& ip)
|
||||
{
|
||||
String res = "";
|
||||
|
||||
for (int i = 0; i < 3; i++)
|
||||
{
|
||||
res += String((ip >> (8 * i)) & 0xFF) + ".";
|
||||
@ -2086,7 +2126,9 @@ String ESP_WiFiManager::getStoredWiFiSSID()
|
||||
else
|
||||
{
|
||||
wifi_config_t conf;
|
||||
|
||||
esp_wifi_get_config(WIFI_IF_STA, &conf);
|
||||
|
||||
return String(reinterpret_cast<char*>(conf.sta.ssid));
|
||||
}
|
||||
|
||||
@ -2103,11 +2145,14 @@ String ESP_WiFiManager::getStoredWiFiPass()
|
||||
}
|
||||
|
||||
wifi_config_t conf;
|
||||
|
||||
esp_wifi_get_config(WIFI_IF_STA, &conf);
|
||||
|
||||
return String(reinterpret_cast<char*>(conf.sta.password));
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
uint32_t getChipID()
|
||||
{
|
||||
uint64_t chipId64 = 0;
|
||||
@ -2120,6 +2165,8 @@ uint32_t getChipID()
|
||||
return (uint32_t) (chipId64 & 0xFFFFFF);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
uint32_t getChipOUI()
|
||||
{
|
||||
uint64_t chipId64 = 0;
|
||||
@ -2132,7 +2179,10 @@ uint32_t getChipOUI()
|
||||
return (uint32_t) (chipId64 >> 24);
|
||||
}
|
||||
|
||||
#endif
|
||||
//////////////////////////////////////////
|
||||
|
||||
#endif // #ifdef ESP32
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
#endif //ESP_WiFiManager_Impl_h
|
||||
|
@ -16,7 +16,7 @@
|
||||
Built by Khoi Hoang https://github.com/khoih-prog/ESP_WiFiManager
|
||||
Licensed under MIT license
|
||||
|
||||
Version: 1.11.0
|
||||
Version: 1.12.1
|
||||
|
||||
Version Modified By Date Comments
|
||||
------- ----------- ---------- -----------
|
||||
@ -28,6 +28,8 @@
|
||||
1.10.1 K Hoang 11/02/2022 Add LittleFS support to ESP32-C3. Use core LittleFS instead of Lorol's LITTLEFS for v2.0.0+
|
||||
1.10.2 K Hoang 13/03/2022 Send CORS header in handleWifiSave() function
|
||||
1.11.0 K Hoang 09/09/2022 Fix ESP32 chipID and add ESP_getChipOUI()
|
||||
1.12.0 K Hoang 07/10/2022 Optional display Credentials (SSIDs, PWDs) in Config Portal
|
||||
1.12.1 K Hoang 25/10/2022 Using random channel for softAP without password. Add astyle using allman style
|
||||
*****************************************************************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
@ -16,7 +16,7 @@
|
||||
Built by Khoi Hoang https://github.com/khoih-prog/ESP_WiFiManager
|
||||
Licensed under MIT license
|
||||
|
||||
Version: 1.11.0
|
||||
Version: 1.12.1
|
||||
|
||||
Version Modified By Date Comments
|
||||
------- ----------- ---------- -----------
|
||||
@ -28,6 +28,8 @@
|
||||
1.10.1 K Hoang 11/02/2022 Add LittleFS support to ESP32-C3. Use core LittleFS instead of Lorol's LITTLEFS for v2.0.0+
|
||||
1.10.2 K Hoang 13/03/2022 Send CORS header in handleWifiSave() function
|
||||
1.11.0 K Hoang 09/09/2022 Fix ESP32 chipID and add ESP_getChipOUI()
|
||||
1.12.0 K Hoang 07/10/2022 Optional display Credentials (SSIDs, PWDs) in Config Portal
|
||||
1.12.1 K Hoang 25/10/2022 Using random channel for softAP without password. Add astyle using allman style
|
||||
*****************************************************************************************************************************/
|
||||
|
||||
#pragma once
|
||||
@ -35,6 +37,8 @@
|
||||
#ifndef ESP_WiFiManager_hpp
|
||||
#define ESP_WiFiManager_hpp
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
#if !( defined(ESP8266) || defined(ESP32) )
|
||||
#error This code is intended to run on the ESP8266 or ESP32 platform! Please check your Tools->Board setting.
|
||||
#elif ( ARDUINO_ESP32S2_DEV || ARDUINO_FEATHERS2 || ARDUINO_ESP32S2_THING_PLUS || ARDUINO_MICROS2 || \
|
||||
@ -52,9 +56,10 @@
|
||||
#else
|
||||
#warning Using ESP32_C3 using core v1.0.6-. To follow library instructions to install esp32-c3 core. Only SPIFFS and EEPROM OK.
|
||||
#endif
|
||||
|
||||
#warning You have to select Flash size 2MB and Minimal APP (1.3MB + 700KB) for some boards
|
||||
#endif
|
||||
|
||||
// #warning You have to select Flash size 2MB and Minimal APP (1.3MB + 700KB) for some boards
|
||||
#define USING_ESP32_C3 true
|
||||
#elif ( defined(ARDUINO_ESP32S3_DEV) || defined(ARDUINO_ESP32_S3_BOX) || defined(ARDUINO_TINYS3) || \
|
||||
defined(ARDUINO_PROS3) || defined(ARDUINO_FEATHERS3) )
|
||||
@ -64,16 +69,22 @@
|
||||
#define USING_ESP32_S3 true
|
||||
#endif
|
||||
|
||||
#define ESP_WIFIMANAGER_VERSION "ESP_WiFiManager v1.11.0"
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
#define ESP_WIFIMANAGER_VERSION "ESP_WiFiManager v1.12.1"
|
||||
|
||||
#define ESP_WIFIMANAGER_VERSION_MAJOR 1
|
||||
#define ESP_WIFIMANAGER_VERSION_MINOR 11
|
||||
#define ESP_WIFIMANAGER_VERSION_PATCH 0
|
||||
#define ESP_WIFIMANAGER_VERSION_MINOR 12
|
||||
#define ESP_WIFIMANAGER_VERSION_PATCH 1
|
||||
|
||||
#define ESP_WIFIMANAGER_VERSION_INT 1011000
|
||||
#define ESP_WIFIMANAGER_VERSION_INT 1012001
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
#include "ESP_WiFiManager_Debug.h"
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
#if ( defined(HTTP_PORT) && (HTTP_PORT < 65536) && (HTTP_PORT > 0) )
|
||||
#if (_WIFIMGR_LOGLEVEL_ > 3)
|
||||
#warning Using custom HTTP_PORT
|
||||
@ -88,6 +99,8 @@
|
||||
#define HTTP_PORT_TO_USE 80
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
//KH, for ESP32
|
||||
#ifdef ESP8266
|
||||
#include <ESP8266WiFi.h>
|
||||
@ -103,6 +116,8 @@
|
||||
#undef max
|
||||
#include <algorithm>
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
//KH, for ESP32
|
||||
#ifdef ESP8266
|
||||
extern "C"
|
||||
@ -127,7 +142,8 @@
|
||||
#define ESP_getChipOUI() getChipOUI() // ((uint32_t)ESP.getEfuseMac())
|
||||
#endif
|
||||
|
||||
// New in v1.4.0
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
typedef struct
|
||||
{
|
||||
IPAddress _ap_static_ip;
|
||||
@ -136,6 +152,8 @@ typedef struct
|
||||
|
||||
} WiFi_AP_IPConfig;
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
// Thanks to @Amorphous for the feature and code
|
||||
// (https://community.blynk.cc/t/esp-wifimanager-for-esp32-and-esp8266/42257/13)
|
||||
// To enable to configure from sketch
|
||||
@ -143,6 +161,8 @@ typedef struct
|
||||
#define USE_CONFIGURABLE_DNS false
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
typedef struct
|
||||
{
|
||||
IPAddress _sta_static_ip;
|
||||
@ -151,11 +171,14 @@ typedef struct
|
||||
IPAddress _sta_static_dns1;
|
||||
IPAddress _sta_static_dns2;
|
||||
} WiFi_STA_IPConfig;
|
||||
//////
|
||||
|
||||
#define WFM_LABEL_BEFORE 1
|
||||
#define WFM_LABEL_AFTER 2
|
||||
#define WFM_NO_LABEL 0
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
#define WFM_LABEL_BEFORE 1
|
||||
#define WFM_LABEL_AFTER 2
|
||||
#define WFM_NO_LABEL 0
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
/** Handle CORS in pages */
|
||||
// Default false for using only whenever necessary to avoid security issue when using CORS (Cross-Origin Resource Sharing)
|
||||
@ -165,25 +188,32 @@ typedef struct
|
||||
#define USING_CORS_FEATURE false
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
//KH
|
||||
//Mofidy HTTP_HEAD to WM_HTTP_HEAD_START to avoid conflict in Arduino esp8266 core 2.6.0+
|
||||
const char WM_HTTP_200[] PROGMEM = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n";
|
||||
const char WM_HTTP_HEAD_START[] PROGMEM = "<!DOCTYPE html><html lang='en'><head><meta name='viewport' content='width=device-width, initial-scale=1, user-scalable=no'/><title>{v}</title>";
|
||||
|
||||
// KH, update from v1.0.10
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
const char WM_HTTP_STYLE[] PROGMEM = "<style>div{padding:2px;font-size:1em;}body,textarea,input,select{background: 0;border-radius: 0;font: 16px sans-serif;margin: 0}textarea,input,select{outline: 0;font-size: 14px;border: 1px solid #ccc;padding: 8px;width: 90%}.btn a{text-decoration: none}.container{margin: auto;width: 90%}@media(min-width:1200px){.container{margin: auto;width: 30%}}@media(min-width:768px) and (max-width:1200px){.container{margin: auto;width: 50%}}.btn,h2{font-size: 2em}h1{font-size: 3em}.btn{background: #0ae;border-radius: 4px;border: 0;color: #fff;cursor: pointer;display: inline-block;margin: 2px 0;padding: 10px 14px 11px;width: 100%}.btn:hover{background: #09d}.btn:active,.btn:focus{background: #08b}label>*{display: inline}form>*{display: block;margin-bottom: 10px}textarea:focus,input:focus,select:focus{border-color: #5ab}.msg{background: #def;border-left: 5px solid #59d;padding: 1.5em}.q{float: right;width: 64px;text-align: right}.l{background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAMAAABEpIrGAAAALVBMVEX///8EBwfBwsLw8PAzNjaCg4NTVVUjJiZDRUUUFxdiZGSho6OSk5Pg4eFydHTCjaf3AAAAZElEQVQ4je2NSw7AIAhEBamKn97/uMXEGBvozkWb9C2Zx4xzWykBhFAeYp9gkLyZE0zIMno9n4g19hmdY39scwqVkOXaxph0ZCXQcqxSpgQpONa59wkRDOL93eAXvimwlbPbwwVAegLS1HGfZAAAAABJRU5ErkJggg==') no-repeat left center;background-size: 1em}input[type='checkbox']{float: left;width: 20px}.table td{padding:.5em;text-align:left}.table tbody>:nth-child(2n-1){background:#ddd}fieldset{border-radius:0.5rem;margin:0px;}</style>";
|
||||
//////
|
||||
|
||||
// KH, update from v1.1.0
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
const char WM_HTTP_SCRIPT[] PROGMEM = "<script>function c(l){document.getElementById('s').value=l.innerText||l.textContent;document.getElementById('p').focus();document.getElementById('s1').value=l.innerText||l.textContent;document.getElementById('p1').focus();document.getElementById('timezone').value=timezone.name();}</script>";
|
||||
//////
|
||||
|
||||
// From v1.0.9 to permit disable or configure NTP from sketch
|
||||
////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
// To permit disable or configure NTP from sketch
|
||||
#ifndef USE_ESP_WIFIMANAGER_NTP
|
||||
// From v1.0.6 to enable NTP config
|
||||
// To enable NTP config
|
||||
#define USE_ESP_WIFIMANAGER_NTP true
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
#if USE_ESP_WIFIMANAGER_NTP
|
||||
|
||||
#include "utils/TZ.h"
|
||||
@ -219,38 +249,62 @@ const char WM_HTTP_SCRIPT_NTP[] PROGMEM = "<script>(function(e){var t=function()
|
||||
const char WM_HTTP_SCRIPT_NTP[] PROGMEM = "";
|
||||
#endif
|
||||
|
||||
// KH, update from v1.0.10
|
||||
////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
const char WM_HTTP_HEAD_END[] PROGMEM = "</head><body><div class='container'><div style='text-align:left;display:inline-block;min-width:260px;'>";
|
||||
|
||||
const char WM_FLDSET_START[] PROGMEM = "<fieldset>";
|
||||
const char WM_FLDSET_END[] PROGMEM = "</fieldset>";
|
||||
//////
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
const char WM_HTTP_PORTAL_OPTIONS[] PROGMEM = "<form action='/wifi' method='get'><button class='btn'>Configuration</button></form><br/><form action='/i' method='get'><button class='btn'>Information</button></form><br/><form action='/close' method='get'><button class='btn'>Exit Portal</button></form><br/>";
|
||||
const char WM_HTTP_ITEM[] PROGMEM = "<div><a href='#p' onclick='c(this)'>{v}</a> <span class='q {i}'>{r}%</span></div>";
|
||||
const char JSON_ITEM[] PROGMEM = "{\"SSID\":\"{v}\", \"Encryption\":{i}, \"Quality\":\"{r}\"}";
|
||||
|
||||
// KH, update from v1.1.0
|
||||
const char WM_HTTP_FORM_START[] PROGMEM = "<form method='get' action='wifisave'><fieldset><div><label>SSID</label><input id='s' name='s' length=32 placeholder='SSID'><div></div></div><div><label>Password</label><input id='p' name='p' length=64 placeholder='password'><div></div></div><div><label>SSID1</label><input id='s1' name='s1' length=32 placeholder='SSID1'><div></div></div><div><label>Password</label><input id='p1' name='p1' length=64 placeholder='password1'><div></div></div></fieldset>";
|
||||
//////
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
// KH, update from v1.12.0
|
||||
// To permit display stored Credentials on CP
|
||||
#ifndef DISPLAY_STORED_CREDENTIALS_IN_CP
|
||||
#define DISPLAY_STORED_CREDENTIALS_IN_CP true
|
||||
#endif
|
||||
|
||||
#if ( (_WIFIMGR_LOGLEVEL_ > 3) && DISPLAY_STORED_CREDENTIALS_IN_CP )
|
||||
#warning Enable DISPLAY_STORED_CREDENTIALS_IN_CP
|
||||
#endif
|
||||
|
||||
#if DISPLAY_STORED_CREDENTIALS_IN_CP
|
||||
const char WM_HTTP_FORM_START[] PROGMEM = "<form method='get' action='wifisave'><fieldset><div><label>SSID</label><input value='[[ssid]]' id='s' name='s' length=32 placeholder='SSID'><div></div></div><div><label>Password</label><input value='[[pwd]]' id='p' name='p' length=64 placeholder='password'><div></div></div><div><label>SSID1</label><input value='[[ssid1]]' id='s1' name='s1' length=32 placeholder='SSID1'><div></div></div><div><label>Password</label><input value='[[pwd1]]' id='p1' name='p1' length=64 placeholder='password1'><div></div></div></fieldset>";
|
||||
#else
|
||||
const char WM_HTTP_FORM_START[] PROGMEM = "<form method='get' action='wifisave'><fieldset><div><label>SSID</label><input id='s' name='s' length=32 placeholder='SSID'><div></div></div><div><label>Password</label><input id='p' name='p' length=64 placeholder='password'><div></div></div><div><label>SSID1</label><input id='s1' name='s1' length=32 placeholder='SSID1'><div></div></div><div><label>Password</label><input id='p1' name='p1' length=64 placeholder='password1'><div></div></div></fieldset>";
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
// KH, add from v1.0.10
|
||||
const char WM_HTTP_FORM_LABEL_BEFORE[] PROGMEM = "<div><label for='{i}'>{p}</label><input id='{i}' name='{n}' length={l} placeholder='{p}' value='{v}' {c}><div></div></div>";
|
||||
const char WM_HTTP_FORM_LABEL_AFTER[] PROGMEM = "<div><input id='{i}' name='{n}' length={l} placeholder='{p}' value='{v}' {c}><label for='{i}'>{p}</label><div></div></div>";
|
||||
//////
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
const char WM_HTTP_FORM_LABEL[] PROGMEM = "<label for='{i}'>{p}</label>";
|
||||
const char WM_HTTP_FORM_PARAM[] PROGMEM = "<input id='{i}' name='{n}' length={l} placeholder='{p}' value='{v}' {c}>";
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
const char WM_HTTP_FORM_END[] PROGMEM = "<button class='btn' type='submit'>Save</button></form>";
|
||||
|
||||
// KH, update from v1.1.0
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
const char WM_HTTP_SAVED[] PROGMEM = "<div class='msg'><b>Credentials Saved</b><br>Try connecting ESP to the {x}/{x1} network. Wait around 10 seconds then check <a href='/'>if it's OK.</a> <p/>The {v} AP will run on the same WiFi channel of the {x}/{x1} AP. You may have to manually reconnect to the {v} AP.</div>";
|
||||
//////
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
const char WM_HTTP_END[] PROGMEM = "</div></body></html>";
|
||||
|
||||
//KH, from v1.1.0
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
const char WM_HTTP_HEAD_CL[] PROGMEM = "Content-Length";
|
||||
const char WM_HTTP_HEAD_CT[] PROGMEM = "text/html";
|
||||
const char WM_HTTP_HEAD_CT2[] PROGMEM = "text/plain";
|
||||
@ -264,6 +318,8 @@ const char WM_HTTP_EXPIRES[] PROGMEM = "Expires";
|
||||
const char WM_HTTP_CORS[] PROGMEM = "Access-Control-Allow-Origin";
|
||||
const char WM_HTTP_CORS_ALLOW_ALL[] PROGMEM = "*";
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
#if USE_AVAILABLE_PAGES
|
||||
const char WM_HTTP_AVAILABLE_PAGES[] PROGMEM = "<h3>Available Pages</h3><table class='table'><thead><tr><th>Page</th><th>Function</th></tr></thead><tbody><tr><td><a href='/'>/</a></td><td>Menu page.</td></tr><tr><td><a href='/wifi'>/wifi</a></td><td>Show WiFi scan results and enter WiFi configuration.</td></tr><tr><td><a href='/wifisave'>/wifisave</a></td><td>Save WiFi configuration information and configure device. Needs variables supplied.</td></tr><tr><td><a href='/close'>/close</a></td><td>Close the configuration server and configuration WiFi network.</td></tr><tr><td><a href='/i'>/i</a></td><td>This page.</td></tr><tr><td><a href='/r'>/r</a></td><td>Delete WiFi configuration and reboot. ESP device will not reconnect to a network until new WiFi configuration data is entered.</td></tr><tr><td><a href='/state'>/state</a></td><td>Current device state in JSON format. Interface for programmatic WiFi configuration.</td></tr><tr><td><a href='/scan'>/scan</a></td><td>Run a WiFi scan and return results in JSON format. Interface for programmatic WiFi configuration.</td></tr></table>";
|
||||
#else
|
||||
@ -273,8 +329,8 @@ const char WM_HTTP_AVAILABLE_PAGES[] PROGMEM = "";
|
||||
//KH
|
||||
#define WIFI_MANAGER_MAX_PARAMS 20
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// New in v1.4.0
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
typedef struct
|
||||
{
|
||||
const char *_id;
|
||||
@ -284,7 +340,9 @@ typedef struct
|
||||
int _labelPlacement;
|
||||
|
||||
} WMParam_Data;
|
||||
//////
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
class ESP_WMParameter
|
||||
{
|
||||
@ -293,16 +351,12 @@ class ESP_WMParameter
|
||||
ESP_WMParameter(const char *id, const char *placeholder, const char *defaultValue, const int& length,
|
||||
const char *custom = "", const int& labelPlacement = WFM_LABEL_BEFORE);
|
||||
|
||||
// New in v1.4.0
|
||||
ESP_WMParameter(const WMParam_Data& WMParam_data);
|
||||
//////
|
||||
|
||||
~ESP_WMParameter();
|
||||
|
||||
// New in v1.4.0
|
||||
void setWMParam_Data(const WMParam_Data& WMParam_data);
|
||||
void getWMParam_Data(WMParam_Data& WMParam_data);
|
||||
//////
|
||||
|
||||
const char *getID();
|
||||
const char *getValue();
|
||||
@ -323,6 +377,8 @@ class ESP_WMParameter
|
||||
friend class ESP_WiFiManager;
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
#define USE_DYNAMIC_PARAMS true
|
||||
#define DEFAULT_PORTAL_TIMEOUT 60000L
|
||||
|
||||
@ -332,6 +388,9 @@ class ESP_WMParameter
|
||||
#define USE_STATIC_IP_CONFIG_IN_CP true
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
class ESP_WiFiManager
|
||||
{
|
||||
public:
|
||||
@ -340,10 +399,9 @@ class ESP_WiFiManager
|
||||
|
||||
~ESP_WiFiManager();
|
||||
|
||||
// Update feature from v1.0.11. Can use with STA staticIP now
|
||||
// Can use with STA staticIP now
|
||||
bool autoConnect();
|
||||
bool autoConnect(char const *apName, char const *apPassword = NULL);
|
||||
//////
|
||||
|
||||
//if you want to start the config portal
|
||||
bool startConfigPortal();
|
||||
@ -351,6 +409,7 @@ class ESP_WiFiManager
|
||||
|
||||
// get the AP name of the config portal, so it can be used in the callback
|
||||
String getConfigPortalSSID();
|
||||
|
||||
// get the AP password of the config portal, so it can be used in the callback
|
||||
String getConfigPortalPW();
|
||||
|
||||
@ -365,30 +424,25 @@ class ESP_WiFiManager
|
||||
//sets timeout for which to attempt connecting, usefull if you get a lot of failed connects
|
||||
void setConnectTimeout(const unsigned long& seconds);
|
||||
|
||||
|
||||
void setDebugOutput(bool debug);
|
||||
//defaults to not showing anything under 8% signal quality if called
|
||||
void setMinimumSignalQuality(const int& quality = 8);
|
||||
|
||||
// KH, new from v1.0.10 to enable dynamic/random channel
|
||||
// KH, To enable dynamic/random channel
|
||||
int setConfigPortalChannel(const int& channel = 1);
|
||||
//////
|
||||
|
||||
//sets a custom ip /gateway /subnet configuration
|
||||
void setAPStaticIPConfig(const IPAddress& ip, const IPAddress& gw, const IPAddress& sn);
|
||||
|
||||
// New in v1.4.0
|
||||
void setAPStaticIPConfig(const WiFi_AP_IPConfig& WM_AP_IPconfig);
|
||||
void getAPStaticIPConfig(WiFi_AP_IPConfig& WM_AP_IPconfig);
|
||||
//////
|
||||
|
||||
//sets config for a static IP
|
||||
void setSTAStaticIPConfig(const IPAddress& ip, const IPAddress& gw, const IPAddress& sn);
|
||||
|
||||
// New in v1.4.0
|
||||
void setSTAStaticIPConfig(const WiFi_STA_IPConfig& WM_STA_IPconfig);
|
||||
void getSTAStaticIPConfig(WiFi_STA_IPConfig& WM_STA_IPconfig);
|
||||
//////
|
||||
|
||||
#if USE_CONFIGURABLE_DNS
|
||||
void setSTAStaticIPConfig(const IPAddress& ip, const IPAddress& gw, const IPAddress& sn,
|
||||
@ -397,50 +451,75 @@ class ESP_WiFiManager
|
||||
|
||||
//called when AP mode and config portal is started
|
||||
void setAPCallback(void(*func)(ESP_WiFiManager*));
|
||||
|
||||
//called when settings have been changed and connection was successful
|
||||
void setSaveConfigCallback(void(*func)());
|
||||
|
||||
#if USE_DYNAMIC_PARAMS
|
||||
//adds a custom parameter
|
||||
bool addParameter(ESP_WMParameter *p);
|
||||
bool addParameter(ESP_WMParameter *p);
|
||||
#else
|
||||
//adds a custom parameter
|
||||
void addParameter(ESP_WMParameter *p);
|
||||
void addParameter(ESP_WMParameter *p);
|
||||
#endif
|
||||
|
||||
//if this is set, it will exit after config, even if connection is unsucessful.
|
||||
void setBreakAfterConfig(bool shouldBreak);
|
||||
|
||||
//if this is set, try WPS setup when starting (this will delay config portal for up to 2 mins)
|
||||
//TODO
|
||||
//if this is set, customise style
|
||||
void setCustomHeadElement(const char* element);
|
||||
|
||||
//if this is true, remove duplicated Access Points - defaut true
|
||||
void setRemoveDuplicateAPs(bool removeDuplicates);
|
||||
|
||||
//Scan for WiFiNetworks in range and sort by signal strength
|
||||
//space for indices array allocated on the heap and should be freed when no longer required
|
||||
int scanWifiNetworks(int **indicesptr);
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
// KH add to display SSIDs and PWDs in CP
|
||||
void setCredentials(const char* ssid, const char* pwd, const char* ssid1, const char* pwd1)
|
||||
{
|
||||
_ssid = String(ssid);
|
||||
_pass = String(pwd);
|
||||
_ssid1 = String(ssid1);
|
||||
_pass1 = String(pwd1);
|
||||
}
|
||||
|
||||
inline void setCredentials(String & ssid, String & pwd, String & ssid1, String & pwd1)
|
||||
{
|
||||
_ssid = ssid;
|
||||
_pass = pwd;
|
||||
_ssid1 = ssid1;
|
||||
_pass1 = pwd1;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
// return SSID of router in STA mode got from config portal. NULL if no user's input //KH
|
||||
String getSSID()
|
||||
inline String getSSID()
|
||||
{
|
||||
return _ssid;
|
||||
}
|
||||
|
||||
// return password of router in STA mode got from config portal. NULL if no user's input //KH
|
||||
String getPW()
|
||||
inline String getPW()
|
||||
{
|
||||
return _pass;
|
||||
}
|
||||
|
||||
// New from v1.1.0
|
||||
// return SSID of router in STA mode got from config portal. NULL if no user's input //KH
|
||||
String getSSID1()
|
||||
inline String getSSID1()
|
||||
{
|
||||
return _ssid1;
|
||||
}
|
||||
|
||||
// return password of router in STA mode got from config portal. NULL if no user's input //KH
|
||||
String getPW1()
|
||||
inline String getPW1()
|
||||
{
|
||||
return _pass1;
|
||||
}
|
||||
@ -466,9 +545,10 @@ class ESP_WiFiManager
|
||||
else
|
||||
return String("");
|
||||
}
|
||||
//////
|
||||
|
||||
// New from v1.1.1, for configure CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
// New For configuring CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
#if USING_CORS_FEATURE
|
||||
void setCORSHeader(const char* CORSHeaders)
|
||||
{
|
||||
@ -477,12 +557,14 @@ class ESP_WiFiManager
|
||||
LOGWARN1(F("Set CORS Header to : "), _CORS_Header);
|
||||
}
|
||||
|
||||
const char* getCORSHeader()
|
||||
inline const char* getCORSHeader()
|
||||
{
|
||||
return _CORS_Header;
|
||||
}
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
//returns the list of Parameters
|
||||
ESP_WMParameter** getParameters();
|
||||
// returns the Parameters Count
|
||||
@ -495,7 +577,7 @@ class ESP_WiFiManager
|
||||
String getStoredWiFiPass();
|
||||
#endif
|
||||
|
||||
String WiFi_SSID()
|
||||
inline String WiFi_SSID()
|
||||
{
|
||||
#ifdef ESP8266
|
||||
return WiFi.SSID();
|
||||
@ -504,7 +586,7 @@ class ESP_WiFiManager
|
||||
#endif
|
||||
}
|
||||
|
||||
String WiFi_Pass()
|
||||
inline String WiFi_Pass()
|
||||
{
|
||||
#ifdef ESP8266
|
||||
return WiFi.psk();
|
||||
@ -538,18 +620,19 @@ class ESP_WiFiManager
|
||||
}
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
#if USE_ESP_WIFIMANAGER_NTP
|
||||
|
||||
String getTimezoneName()
|
||||
inline String getTimezoneName()
|
||||
{
|
||||
return _timezoneName;
|
||||
}
|
||||
|
||||
void setTimezoneName(const String& inTimezoneName)
|
||||
inline void setTimezoneName(const String& inTimezoneName)
|
||||
{
|
||||
_timezoneName = inTimezoneName;
|
||||
}
|
||||
//////
|
||||
|
||||
//See: https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html
|
||||
// EST5EDT,M3.2.0,M11.1.0 (for America/New_York)
|
||||
@ -584,10 +667,10 @@ class ESP_WiFiManager
|
||||
{
|
||||
return getTZ(timezoneName.c_str());
|
||||
}
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
private:
|
||||
std::unique_ptr<DNSServer> dnsServer;
|
||||
|
||||
@ -613,16 +696,18 @@ class ESP_WiFiManager
|
||||
String _ssid = "";
|
||||
String _pass = "";
|
||||
|
||||
// New from v1.1.0
|
||||
String _ssid1 = "";
|
||||
String _pass1 = "";
|
||||
//////
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
#if USE_ESP_WIFIMANAGER_NTP
|
||||
// Timezone info
|
||||
String _timezoneName = "";
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
unsigned long _configPortalTimeout = 0;
|
||||
|
||||
unsigned long _connectTimeout = 0;
|
||||
@ -631,20 +716,19 @@ class ESP_WiFiManager
|
||||
int numberOfNetworks;
|
||||
int *networkIndices;
|
||||
|
||||
// KH, new from v1.0.10 to enable dynamic/random channel
|
||||
// KH, To enable dynamic/random channel
|
||||
// default to channel 1
|
||||
#define MIN_WIFI_CHANNEL 1
|
||||
#define MAX_WIFI_CHANNEL 11 // Channel 12,13 is flaky, because of bad number 13 ;-)
|
||||
|
||||
int _WiFiAPChannel = 1;
|
||||
//////
|
||||
|
||||
// New in v1.4.0
|
||||
WiFi_AP_IPConfig _WiFi_AP_IPconfig;
|
||||
|
||||
WiFi_STA_IPConfig _WiFi_STA_IPconfig = { IPAddress(0, 0, 0, 0), IPAddress(192, 168, 2, 1), IPAddress(255, 255, 255, 0),
|
||||
IPAddress(192, 168, 2, 1), IPAddress(8, 8, 8, 8) };
|
||||
//////
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
int _paramsCount = 0;
|
||||
int _minimumQuality = -1;
|
||||
@ -656,22 +740,14 @@ class ESP_WiFiManager
|
||||
|
||||
int status = WL_IDLE_STATUS;
|
||||
|
||||
// New from v1.1.0, for configure CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
// For configuring CORS Header, default to WM_HTTP_CORS_ALLOW_ALL = "*"
|
||||
#if USING_CORS_FEATURE
|
||||
const char* _CORS_Header = WM_HTTP_CORS_ALLOW_ALL; //"*";
|
||||
#endif
|
||||
//////
|
||||
|
||||
// New v1.0.8
|
||||
void setWifiStaticIP();
|
||||
|
||||
// New v1.1.0
|
||||
int reconnectWifi();
|
||||
//////
|
||||
|
||||
// New v1.0.11
|
||||
int connectWifi(const String& ssid = "", const String& pass = "");
|
||||
//////
|
||||
|
||||
uint8_t waitForConnectResult();
|
||||
|
||||
@ -702,7 +778,9 @@ class ESP_WiFiManager
|
||||
bool _debug = false; //true;
|
||||
|
||||
void(*_apcallback) (ESP_WiFiManager*) = NULL;
|
||||
void(*_savecallback)() = NULL;
|
||||
void(*_savecallback)() = NULL;
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
#if USE_DYNAMIC_PARAMS
|
||||
int _max_params;
|
||||
@ -711,6 +789,8 @@ class ESP_WiFiManager
|
||||
ESP_WMParameter* _params[WIFI_MANAGER_MAX_PARAMS];
|
||||
#endif
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
template <typename Generic>
|
||||
void DEBUG_WM(Generic text);
|
||||
|
||||
@ -723,9 +803,12 @@ class ESP_WiFiManager
|
||||
auto optionalIPFromString(...) -> bool
|
||||
{
|
||||
LOGINFO("NO fromString METHOD ON IPAddress, you need ESP8266 core 2.1.0 or newer for Custom IP configuration to work.");
|
||||
|
||||
return false;
|
||||
}
|
||||
};
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
#endif // ESP_WiFiManager_h
|
||||
|
||||
|
@ -16,7 +16,7 @@
|
||||
Built by Khoi Hoang https://github.com/khoih-prog/ESP_WiFiManager
|
||||
Licensed under MIT license
|
||||
|
||||
Version: 1.11.0
|
||||
Version: 1.12.1
|
||||
|
||||
Version Modified By Date Comments
|
||||
------- ----------- ---------- -----------
|
||||
@ -28,6 +28,8 @@
|
||||
1.10.1 K Hoang 11/02/2022 Add LittleFS support to ESP32-C3. Use core LittleFS instead of Lorol's LITTLEFS for v2.0.0+
|
||||
1.10.2 K Hoang 13/03/2022 Send CORS header in handleWifiSave() function
|
||||
1.11.0 K Hoang 09/09/2022 Fix ESP32 chipID and add ESP_getChipOUI()
|
||||
1.12.0 K Hoang 07/10/2022 Optional display Credentials (SSIDs, PWDs) in Config Portal
|
||||
1.12.1 K Hoang 25/10/2022 Using random channel for softAP without password. Add astyle using allman style
|
||||
*****************************************************************************************************************************/
|
||||
|
||||
#pragma once
|
||||
@ -35,12 +37,16 @@
|
||||
#ifndef ESP_WiFiManager_Debug_H
|
||||
#define ESP_WiFiManager_Debug_H
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
#ifdef WIFIMGR_DEBUG_PORT
|
||||
#define WM_DBG_PORT WIFIMGR_DEBUG_PORT
|
||||
#else
|
||||
#define WM_DBG_PORT Serial
|
||||
#endif
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
// Change _WIFIMGR_LOGLEVEL_ to set tracing and logging verbosity
|
||||
// 0: DISABLED: no logging
|
||||
// 1: ERROR: errors
|
||||
@ -52,6 +58,8 @@
|
||||
#define _WIFIMGR_LOGLEVEL_ 0
|
||||
#endif
|
||||
|
||||
//////////////////////////////////////////
|
||||
|
||||
const char WM_MARK[] = "[WM] ";
|
||||
const char WM_SP[] = " ";
|
||||
|
||||
|
@ -71,466 +71,466 @@
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
||||
#define TZ_Africa_Abidjan ("GMT0")
|
||||
#define TZ_Africa_Accra ("GMT0")
|
||||
#define TZ_Africa_Addis_Ababa ("EAT-3")
|
||||
#define TZ_Africa_Algiers ("CET-1")
|
||||
#define TZ_Africa_Asmara ("EAT-3")
|
||||
#define TZ_Africa_Bamako ("GMT0")
|
||||
#define TZ_Africa_Bangui ("WAT-1")
|
||||
#define TZ_Africa_Banjul ("GMT0")
|
||||
#define TZ_Africa_Bissau ("GMT0")
|
||||
#define TZ_Africa_Blantyre ("CAT-2")
|
||||
#define TZ_Africa_Brazzaville ("WAT-1")
|
||||
#define TZ_Africa_Bujumbura ("CAT-2")
|
||||
#define TZ_Africa_Cairo ("EET-2")
|
||||
#define TZ_Africa_Casablanca ("<+01>-1")
|
||||
#define TZ_Africa_Ceuta ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Africa_Conakry ("GMT0")
|
||||
#define TZ_Africa_Dakar ("GMT0")
|
||||
#define TZ_Africa_Dar_es_Salaam ("EAT-3")
|
||||
#define TZ_Africa_Djibouti ("EAT-3")
|
||||
#define TZ_Africa_Douala ("WAT-1")
|
||||
#define TZ_Africa_El_Aaiun ("<+01>-1")
|
||||
#define TZ_Africa_Freetown ("GMT0")
|
||||
#define TZ_Africa_Gaborone ("CAT-2")
|
||||
#define TZ_Africa_Harare ("CAT-2")
|
||||
#define TZ_Africa_Johannesburg ("SAST-2")
|
||||
#define TZ_Africa_Juba ("EAT-3")
|
||||
#define TZ_Africa_Kampala ("EAT-3")
|
||||
#define TZ_Africa_Khartoum ("CAT-2")
|
||||
#define TZ_Africa_Kigali ("CAT-2")
|
||||
#define TZ_Africa_Kinshasa ("WAT-1")
|
||||
#define TZ_Africa_Lagos ("WAT-1")
|
||||
#define TZ_Africa_Libreville ("WAT-1")
|
||||
#define TZ_Africa_Lome ("GMT0")
|
||||
#define TZ_Africa_Luanda ("WAT-1")
|
||||
#define TZ_Africa_Lubumbashi ("CAT-2")
|
||||
#define TZ_Africa_Lusaka ("CAT-2")
|
||||
#define TZ_Africa_Malabo ("WAT-1")
|
||||
#define TZ_Africa_Maputo ("CAT-2")
|
||||
#define TZ_Africa_Maseru ("SAST-2")
|
||||
#define TZ_Africa_Mbabane ("SAST-2")
|
||||
#define TZ_Africa_Mogadishu ("EAT-3")
|
||||
#define TZ_Africa_Monrovia ("GMT0")
|
||||
#define TZ_Africa_Nairobi ("EAT-3")
|
||||
#define TZ_Africa_Ndjamena ("WAT-1")
|
||||
#define TZ_Africa_Niamey ("WAT-1")
|
||||
#define TZ_Africa_Nouakchott ("GMT0")
|
||||
#define TZ_Africa_Ouagadougou ("GMT0")
|
||||
#define TZ_Africa_PortomNovo ("WAT-1")
|
||||
#define TZ_Africa_Sao_Tome ("GMT0")
|
||||
#define TZ_Africa_Tripoli ("EET-2")
|
||||
#define TZ_Africa_Tunis ("CET-1")
|
||||
#define TZ_Africa_Windhoek ("CAT-2")
|
||||
#define TZ_America_Adak ("HST10HDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Anchorage ("AKST9AKDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Anguilla ("AST4")
|
||||
#define TZ_America_Antigua ("AST4")
|
||||
#define TZ_America_Araguaina ("<-03>3")
|
||||
#define TZ_America_Argentina_Buenos_Aires ("<-03>3")
|
||||
#define TZ_America_Argentina_Catamarca ("<-03>3")
|
||||
#define TZ_America_Argentina_Cordoba ("<-03>3")
|
||||
#define TZ_America_Argentina_Jujuy ("<-03>3")
|
||||
#define TZ_America_Argentina_La_Rioja ("<-03>3")
|
||||
#define TZ_America_Argentina_Mendoza ("<-03>3")
|
||||
#define TZ_America_Argentina_Rio_Gallegos ("<-03>3")
|
||||
#define TZ_America_Argentina_Salta ("<-03>3")
|
||||
#define TZ_America_Argentina_San_Juan ("<-03>3")
|
||||
#define TZ_America_Argentina_San_Luis ("<-03>3")
|
||||
#define TZ_America_Argentina_Tucuman ("<-03>3")
|
||||
#define TZ_America_Argentina_Ushuaia ("<-03>3")
|
||||
#define TZ_America_Aruba ("AST4")
|
||||
#define TZ_America_Asuncion ("<-04>4<-03>,M10.1.0/0,M3.4.0/0")
|
||||
#define TZ_America_Atikokan ("EST5")
|
||||
#define TZ_America_Bahia ("<-03>3")
|
||||
#define TZ_America_Bahia_Banderas ("CST6CDT,M4.1.0,M10.5.0")
|
||||
#define TZ_America_Barbados ("AST4")
|
||||
#define TZ_America_Belem ("<-03>3")
|
||||
#define TZ_America_Belize ("CST6")
|
||||
#define TZ_America_BlancmSablon ("AST4")
|
||||
#define TZ_America_Boa_Vista ("<-04>4")
|
||||
#define TZ_America_Bogota ("<-05>5")
|
||||
#define TZ_America_Boise ("MST7MDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Cambridge_Bay ("MST7MDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Campo_Grande ("<-04>4")
|
||||
#define TZ_America_Cancun ("EST5")
|
||||
#define TZ_America_Caracas ("<-04>4")
|
||||
#define TZ_America_Cayenne ("<-03>3")
|
||||
#define TZ_America_Cayman ("EST5")
|
||||
#define TZ_America_Chicago ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Chihuahua ("MST7MDT,M4.1.0,M10.5.0")
|
||||
#define TZ_America_Costa_Rica ("CST6")
|
||||
#define TZ_America_Creston ("MST7")
|
||||
#define TZ_America_Cuiaba ("<-04>4")
|
||||
#define TZ_America_Curacao ("AST4")
|
||||
#define TZ_America_Danmarkshavn ("GMT0")
|
||||
#define TZ_America_Dawson ("MST7")
|
||||
#define TZ_America_Dawson_Creek ("MST7")
|
||||
#define TZ_America_Denver ("MST7MDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Detroit ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Dominica ("AST4")
|
||||
#define TZ_America_Edmonton ("MST7MDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Eirunepe ("<-05>5")
|
||||
#define TZ_America_El_Salvador ("CST6")
|
||||
#define TZ_America_Fortaleza ("<-03>3")
|
||||
#define TZ_America_Fort_Nelson ("MST7")
|
||||
#define TZ_America_Glace_Bay ("AST4ADT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Godthab ("<-03>3<-02>,M3.5.0/-2,M10.5.0/-1")
|
||||
#define TZ_America_Goose_Bay ("AST4ADT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Grand_Turk ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Grenada ("AST4")
|
||||
#define TZ_America_Guadeloupe ("AST4")
|
||||
#define TZ_America_Guatemala ("CST6")
|
||||
#define TZ_America_Guayaquil ("<-05>5")
|
||||
#define TZ_America_Guyana ("<-04>4")
|
||||
#define TZ_America_Halifax ("AST4ADT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Havana ("CST5CDT,M3.2.0/0,M11.1.0/1")
|
||||
#define TZ_America_Hermosillo ("MST7")
|
||||
#define TZ_America_Indiana_Indianapolis ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Indiana_Knox ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Indiana_Marengo ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Indiana_Petersburg ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Indiana_Tell_City ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Indiana_Vevay ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Indiana_Vincennes ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Indiana_Winamac ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Inuvik ("MST7MDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Iqaluit ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Jamaica ("EST5")
|
||||
#define TZ_America_Juneau ("AKST9AKDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Kentucky_Louisville ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Kentucky_Monticello ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Kralendijk ("AST4")
|
||||
#define TZ_America_La_Paz ("<-04>4")
|
||||
#define TZ_America_Lima ("<-05>5")
|
||||
#define TZ_America_Los_Angeles ("PST8PDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Lower_Princes ("AST4")
|
||||
#define TZ_America_Maceio ("<-03>3")
|
||||
#define TZ_America_Managua ("CST6")
|
||||
#define TZ_America_Manaus ("<-04>4")
|
||||
#define TZ_America_Marigot ("AST4")
|
||||
#define TZ_America_Martinique ("AST4")
|
||||
#define TZ_America_Matamoros ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Mazatlan ("MST7MDT,M4.1.0,M10.5.0")
|
||||
#define TZ_America_Menominee ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Merida ("CST6CDT,M4.1.0,M10.5.0")
|
||||
#define TZ_America_Metlakatla ("AKST9AKDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Mexico_City ("CST6CDT,M4.1.0,M10.5.0")
|
||||
#define TZ_America_Miquelon ("<-03>3<-02>,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Moncton ("AST4ADT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Monterrey ("CST6CDT,M4.1.0,M10.5.0")
|
||||
#define TZ_America_Montevideo ("<-03>3")
|
||||
#define TZ_America_Montreal ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Montserrat ("AST4")
|
||||
#define TZ_America_Nassau ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_New_York ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Nipigon ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Nome ("AKST9AKDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Noronha ("<-02>2")
|
||||
#define TZ_America_North_Dakota_Beulah ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_North_Dakota_Center ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_North_Dakota_New_Salem ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Ojinaga ("MST7MDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Panama ("EST5")
|
||||
#define TZ_America_Pangnirtung ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Paramaribo ("<-03>3")
|
||||
#define TZ_America_Phoenix ("MST7")
|
||||
#define TZ_America_PortmaumPrince ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Port_of_Spain ("AST4")
|
||||
#define TZ_America_Porto_Velho ("<-04>4")
|
||||
#define TZ_America_Puerto_Rico ("AST4")
|
||||
#define TZ_America_Punta_Arenas ("<-03>3")
|
||||
#define TZ_America_Rainy_River ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Rankin_Inlet ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Recife ("<-03>3")
|
||||
#define TZ_America_Regina ("CST6")
|
||||
#define TZ_America_Resolute ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Rio_Branco ("<-05>5")
|
||||
#define TZ_America_Santarem ("<-03>3")
|
||||
#define TZ_America_Santiago ("<-04>4<-03>,M9.1.6/24,M4.1.6/24")
|
||||
#define TZ_America_Santo_Domingo ("AST4")
|
||||
#define TZ_America_Sao_Paulo ("<-03>3")
|
||||
#define TZ_America_Scoresbysund ("<-01>1<+00>,M3.5.0/0,M10.5.0/1")
|
||||
#define TZ_America_Sitka ("AKST9AKDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_St_Barthelemy ("AST4")
|
||||
#define TZ_America_St_Johns ("NST3:30NDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_St_Kitts ("AST4")
|
||||
#define TZ_America_St_Lucia ("AST4")
|
||||
#define TZ_America_St_Thomas ("AST4")
|
||||
#define TZ_America_St_Vincent ("AST4")
|
||||
#define TZ_America_Swift_Current ("CST6")
|
||||
#define TZ_America_Tegucigalpa ("CST6")
|
||||
#define TZ_America_Thule ("AST4ADT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Thunder_Bay ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Tijuana ("PST8PDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Toronto ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Tortola ("AST4")
|
||||
#define TZ_America_Vancouver ("PST8PDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Whitehorse ("MST7")
|
||||
#define TZ_America_Winnipeg ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Yakutat ("AKST9AKDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Yellowknife ("MST7MDT,M3.2.0,M11.1.0")
|
||||
#define TZ_Antarctica_Casey ("<+11>-11")
|
||||
#define TZ_Antarctica_Davis ("<+07>-7")
|
||||
#define TZ_Antarctica_DumontDUrville ("<+10>-10")
|
||||
#define TZ_Antarctica_Macquarie ("AEST-10AEDT,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Antarctica_Mawson ("<+05>-5")
|
||||
#define TZ_Antarctica_McMurdo ("NZST-12NZDT,M9.5.0,M4.1.0/3")
|
||||
#define TZ_Antarctica_Palmer ("<-03>3")
|
||||
#define TZ_Antarctica_Rothera ("<-03>3")
|
||||
#define TZ_Antarctica_Syowa ("<+03>-3")
|
||||
#define TZ_Antarctica_Troll ("<+00>0<+02>-2,M3.5.0/1,M10.5.0/3")
|
||||
#define TZ_Antarctica_Vostok ("<+06>-6")
|
||||
#define TZ_Arctic_Longyearbyen ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Asia_Aden ("<+03>-3")
|
||||
#define TZ_Asia_Almaty ("<+06>-6")
|
||||
#define TZ_Asia_Amman ("EET-2EEST,M3.5.4/24,M10.5.5/1")
|
||||
#define TZ_Asia_Anadyr ("<+12>-12")
|
||||
#define TZ_Asia_Aqtau ("<+05>-5")
|
||||
#define TZ_Asia_Aqtobe ("<+05>-5")
|
||||
#define TZ_Asia_Ashgabat ("<+05>-5")
|
||||
#define TZ_Asia_Atyrau ("<+05>-5")
|
||||
#define TZ_Asia_Baghdad ("<+03>-3")
|
||||
#define TZ_Asia_Bahrain ("<+03>-3")
|
||||
#define TZ_Asia_Baku ("<+04>-4")
|
||||
#define TZ_Asia_Bangkok ("<+07>-7")
|
||||
#define TZ_Asia_Barnaul ("<+07>-7")
|
||||
#define TZ_Asia_Beirut ("EET-2EEST,M3.5.0/0,M10.5.0/0")
|
||||
#define TZ_Asia_Bishkek ("<+06>-6")
|
||||
#define TZ_Asia_Brunei ("<+08>-8")
|
||||
#define TZ_Asia_Chita ("<+09>-9")
|
||||
#define TZ_Asia_Choibalsan ("<+08>-8")
|
||||
#define TZ_Asia_Colombo ("<+0530>-5:30")
|
||||
#define TZ_Asia_Damascus ("EET-2EEST,M3.5.5/0,M10.5.5/0")
|
||||
#define TZ_Asia_Dhaka ("<+06>-6")
|
||||
#define TZ_Asia_Dili ("<+09>-9")
|
||||
#define TZ_Asia_Dubai ("<+04>-4")
|
||||
#define TZ_Asia_Dushanbe ("<+05>-5")
|
||||
#define TZ_Asia_Famagusta ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Asia_Gaza ("EET-2EEST,M3.4.4/48,M10.4.4/49")
|
||||
#define TZ_Asia_Hebron ("EET-2EEST,M3.4.4/48,M10.4.4/49")
|
||||
#define TZ_Asia_Ho_Chi_Minh ("<+07>-7")
|
||||
#define TZ_Asia_Hong_Kong ("HKT-8")
|
||||
#define TZ_Asia_Hovd ("<+07>-7")
|
||||
#define TZ_Asia_Irkutsk ("<+08>-8")
|
||||
#define TZ_Asia_Jakarta ("WIB-7")
|
||||
#define TZ_Asia_Jayapura ("WIT-9")
|
||||
#define TZ_Asia_Jerusalem ("IST-2IDT,M3.4.4/26,M10.5.0")
|
||||
#define TZ_Asia_Kabul ("<+0430>-4:30")
|
||||
#define TZ_Asia_Kamchatka ("<+12>-12")
|
||||
#define TZ_Asia_Karachi ("PKT-5")
|
||||
#define TZ_Asia_Kathmandu ("<+0545>-5:45")
|
||||
#define TZ_Asia_Khandyga ("<+09>-9")
|
||||
#define TZ_Asia_Kolkata ("IST-5:30")
|
||||
#define TZ_Asia_Krasnoyarsk ("<+07>-7")
|
||||
#define TZ_Asia_Kuala_Lumpur ("<+08>-8")
|
||||
#define TZ_Asia_Kuching ("<+08>-8")
|
||||
#define TZ_Asia_Kuwait ("<+03>-3")
|
||||
#define TZ_Asia_Macau ("CST-8")
|
||||
#define TZ_Asia_Magadan ("<+11>-11")
|
||||
#define TZ_Asia_Makassar ("WITA-8")
|
||||
#define TZ_Asia_Manila ("PST-8")
|
||||
#define TZ_Asia_Muscat ("<+04>-4")
|
||||
#define TZ_Asia_Nicosia ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Asia_Novokuznetsk ("<+07>-7")
|
||||
#define TZ_Asia_Novosibirsk ("<+07>-7")
|
||||
#define TZ_Asia_Omsk ("<+06>-6")
|
||||
#define TZ_Asia_Oral ("<+05>-5")
|
||||
#define TZ_Asia_Phnom_Penh ("<+07>-7")
|
||||
#define TZ_Asia_Pontianak ("WIB-7")
|
||||
#define TZ_Asia_Pyongyang ("KST-9")
|
||||
#define TZ_Asia_Qatar ("<+03>-3")
|
||||
#define TZ_Asia_Qyzylorda ("<+05>-5")
|
||||
#define TZ_Asia_Riyadh ("<+03>-3")
|
||||
#define TZ_Asia_Sakhalin ("<+11>-11")
|
||||
#define TZ_Asia_Samarkand ("<+05>-5")
|
||||
#define TZ_Asia_Seoul ("KST-9")
|
||||
#define TZ_Asia_Shanghai ("CST-8")
|
||||
#define TZ_Asia_Singapore ("<+08>-8")
|
||||
#define TZ_Asia_Srednekolymsk ("<+11>-11")
|
||||
#define TZ_Asia_Taipei ("CST-8")
|
||||
#define TZ_Asia_Tashkent ("<+05>-5")
|
||||
#define TZ_Asia_Tbilisi ("<+04>-4")
|
||||
#define TZ_Asia_Tehran ("<+0330>-3:30<+0430>,J79/24,J263/24")
|
||||
#define TZ_Asia_Thimphu ("<+06>-6")
|
||||
#define TZ_Asia_Tokyo ("JST-9")
|
||||
#define TZ_Asia_Tomsk ("<+07>-7")
|
||||
#define TZ_Asia_Ulaanbaatar ("<+08>-8")
|
||||
#define TZ_Asia_Urumqi ("<+06>-6")
|
||||
#define TZ_Asia_UstmNera ("<+10>-10")
|
||||
#define TZ_Asia_Vientiane ("<+07>-7")
|
||||
#define TZ_Asia_Vladivostok ("<+10>-10")
|
||||
#define TZ_Asia_Yakutsk ("<+09>-9")
|
||||
#define TZ_Asia_Yangon ("<+0630>-6:30")
|
||||
#define TZ_Asia_Yekaterinburg ("<+05>-5")
|
||||
#define TZ_Asia_Yerevan ("<+04>-4")
|
||||
#define TZ_Atlantic_Azores ("<-01>1<+00>,M3.5.0/0,M10.5.0/1")
|
||||
#define TZ_Atlantic_Bermuda ("AST4ADT,M3.2.0,M11.1.0")
|
||||
#define TZ_Atlantic_Canary ("WET0WEST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Atlantic_Cape_Verde ("<-01>1")
|
||||
#define TZ_Atlantic_Faroe ("WET0WEST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Atlantic_Madeira ("WET0WEST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Atlantic_Reykjavik ("GMT0")
|
||||
#define TZ_Atlantic_South_Georgia ("<-02>2")
|
||||
#define TZ_Atlantic_Stanley ("<-03>3")
|
||||
#define TZ_Atlantic_St_Helena ("GMT0")
|
||||
#define TZ_Australia_Adelaide ("ACST-9:30ACDT,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Australia_Brisbane ("AEST-10")
|
||||
#define TZ_Australia_Broken_Hill ("ACST-9:30ACDT,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Australia_Currie ("AEST-10AEDT,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Australia_Darwin ("ACST-9:30")
|
||||
#define TZ_Australia_Eucla ("<+0845>-8:45")
|
||||
#define TZ_Australia_Hobart ("AEST-10AEDT,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Australia_Lindeman ("AEST-10")
|
||||
#define TZ_Australia_Lord_Howe ("<+1030>-10:30<+11>-11,M10.1.0,M4.1.0")
|
||||
#define TZ_Australia_Melbourne ("AEST-10AEDT,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Australia_Perth ("AWST-8")
|
||||
#define TZ_Australia_Sydney ("AEST-10AEDT,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Europe_Amsterdam ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Andorra ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Astrakhan ("<+04>-4")
|
||||
#define TZ_Europe_Athens ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Belgrade ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Berlin ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Bratislava ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Brussels ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Bucharest ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Budapest ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Busingen ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Chisinau ("EET-2EEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Copenhagen ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Dublin ("IST-1GMT0,M10.5.0,M3.5.0/1")
|
||||
#define TZ_Europe_Gibraltar ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Guernsey ("GMT0BST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Europe_Helsinki ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Isle_of_Man ("GMT0BST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Europe_Istanbul ("<+03>-3")
|
||||
#define TZ_Europe_Jersey ("GMT0BST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Europe_Kaliningrad ("EET-2")
|
||||
#define TZ_Europe_Kiev ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Kirov ("<+03>-3")
|
||||
#define TZ_Europe_Lisbon ("WET0WEST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Europe_Ljubljana ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_London ("GMT0BST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Europe_Luxembourg ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Madrid ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Malta ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Mariehamn ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Minsk ("<+03>-3")
|
||||
#define TZ_Europe_Monaco ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Moscow ("MSK-3")
|
||||
#define TZ_Europe_Oslo ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Paris ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Podgorica ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Prague ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Riga ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Rome ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Samara ("<+04>-4")
|
||||
#define TZ_Europe_San_Marino ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Sarajevo ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Saratov ("<+04>-4")
|
||||
#define TZ_Europe_Simferopol ("MSK-3")
|
||||
#define TZ_Europe_Skopje ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Sofia ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Stockholm ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Tallinn ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Tirane ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Ulyanovsk ("<+04>-4")
|
||||
#define TZ_Europe_Uzhgorod ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Vaduz ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Vatican ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Vienna ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Vilnius ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Volgograd ("<+04>-4")
|
||||
#define TZ_Europe_Warsaw ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Zagreb ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Zaporozhye ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Zurich ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Indian_Antananarivo ("EAT-3")
|
||||
#define TZ_Indian_Chagos ("<+06>-6")
|
||||
#define TZ_Indian_Christmas ("<+07>-7")
|
||||
#define TZ_Indian_Cocos ("<+0630>-6:30")
|
||||
#define TZ_Indian_Comoro ("EAT-3")
|
||||
#define TZ_Indian_Kerguelen ("<+05>-5")
|
||||
#define TZ_Indian_Mahe ("<+04>-4")
|
||||
#define TZ_Indian_Maldives ("<+05>-5")
|
||||
#define TZ_Indian_Mauritius ("<+04>-4")
|
||||
#define TZ_Indian_Mayotte ("EAT-3")
|
||||
#define TZ_Indian_Reunion ("<+04>-4")
|
||||
#define TZ_Pacific_Apia ("<+13>-13<+14>,M9.5.0/3,M4.1.0/4")
|
||||
#define TZ_Pacific_Auckland ("NZST-12NZDT,M9.5.0,M4.1.0/3")
|
||||
#define TZ_Pacific_Bougainville ("<+11>-11")
|
||||
#define TZ_Pacific_Chatham ("<+1245>-12:45<+1345>,M9.5.0/2:45,M4.1.0/3:45")
|
||||
#define TZ_Pacific_Chuuk ("<+10>-10")
|
||||
#define TZ_Pacific_Easter ("<-06>6<-05>,M9.1.6/22,M4.1.6/22")
|
||||
#define TZ_Pacific_Efate ("<+11>-11")
|
||||
#define TZ_Pacific_Enderbury ("<+13>-13")
|
||||
#define TZ_Pacific_Fakaofo ("<+13>-13")
|
||||
#define TZ_Pacific_Fiji ("<+12>-12<+13>,M11.2.0,M1.2.3/99")
|
||||
#define TZ_Pacific_Funafuti ("<+12>-12")
|
||||
#define TZ_Pacific_Galapagos ("<-06>6")
|
||||
#define TZ_Pacific_Gambier ("<-09>9")
|
||||
#define TZ_Pacific_Guadalcanal ("<+11>-11")
|
||||
#define TZ_Pacific_Guam ("ChST-10")
|
||||
#define TZ_Pacific_Honolulu ("HST10")
|
||||
#define TZ_Pacific_Kiritimati ("<+14>-14")
|
||||
#define TZ_Pacific_Kosrae ("<+11>-11")
|
||||
#define TZ_Pacific_Kwajalein ("<+12>-12")
|
||||
#define TZ_Pacific_Majuro ("<+12>-12")
|
||||
#define TZ_Pacific_Marquesas ("<-0930>9:30")
|
||||
#define TZ_Pacific_Midway ("SST11")
|
||||
#define TZ_Pacific_Nauru ("<+12>-12")
|
||||
#define TZ_Pacific_Niue ("<-11>11")
|
||||
#define TZ_Pacific_Norfolk ("<+11>-11<+12>,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Pacific_Noumea ("<+11>-11")
|
||||
#define TZ_Pacific_Pago_Pago ("SST11")
|
||||
#define TZ_Pacific_Palau ("<+09>-9")
|
||||
#define TZ_Pacific_Pitcairn ("<-08>8")
|
||||
#define TZ_Pacific_Pohnpei ("<+11>-11")
|
||||
#define TZ_Pacific_Port_Moresby ("<+10>-10")
|
||||
#define TZ_Pacific_Rarotonga ("<-10>10")
|
||||
#define TZ_Pacific_Saipan ("ChST-10")
|
||||
#define TZ_Pacific_Tahiti ("<-10>10")
|
||||
#define TZ_Pacific_Tarawa ("<+12>-12")
|
||||
#define TZ_Pacific_Tongatapu ("<+13>-13")
|
||||
#define TZ_Pacific_Wake ("<+12>-12")
|
||||
#define TZ_Pacific_Wallis ("<+12>-12")
|
||||
#define TZ_Etc_GMT ("GMT0")
|
||||
#define TZ_Etc_GMTm0 ("GMT0")
|
||||
#define TZ_Etc_GMTm1 ("<+01>-1")
|
||||
#define TZ_Etc_GMTm2 ("<+02>-2")
|
||||
#define TZ_Etc_GMTm3 ("<+03>-3")
|
||||
#define TZ_Etc_GMTm4 ("<+04>-4")
|
||||
#define TZ_Etc_GMTm5 ("<+05>-5")
|
||||
#define TZ_Etc_GMTm6 ("<+06>-6")
|
||||
#define TZ_Etc_GMTm7 ("<+07>-7")
|
||||
#define TZ_Etc_GMTm8 ("<+08>-8")
|
||||
#define TZ_Etc_GMTm9 ("<+09>-9")
|
||||
#define TZ_Etc_GMTm10 ("<+10>-10")
|
||||
#define TZ_Etc_GMTm11 ("<+11>-11")
|
||||
#define TZ_Etc_GMTm12 ("<+12>-12")
|
||||
#define TZ_Etc_GMTm13 ("<+13>-13")
|
||||
#define TZ_Etc_GMTm14 ("<+14>-14")
|
||||
#define TZ_Etc_GMT0 ("GMT0")
|
||||
#define TZ_Etc_GMTp0 ("GMT0")
|
||||
#define TZ_Etc_GMTp1 ("<-01>1")
|
||||
#define TZ_Etc_GMTp2 ("<-02>2")
|
||||
#define TZ_Etc_GMTp3 ("<-03>3")
|
||||
#define TZ_Etc_GMTp4 ("<-04>4")
|
||||
#define TZ_Etc_GMTp5 ("<-05>5")
|
||||
#define TZ_Etc_GMTp6 ("<-06>6")
|
||||
#define TZ_Etc_GMTp7 ("<-07>7")
|
||||
#define TZ_Etc_GMTp8 ("<-08>8")
|
||||
#define TZ_Etc_GMTp9 ("<-09>9")
|
||||
#define TZ_Etc_GMTp10 ("<-10>10")
|
||||
#define TZ_Etc_GMTp11 ("<-11>11")
|
||||
#define TZ_Etc_GMTp12 ("<-12>12")
|
||||
#define TZ_Etc_UCT ("UTC0")
|
||||
#define TZ_Etc_UTC ("UTC0")
|
||||
#define TZ_Etc_Greenwich ("GMT0")
|
||||
#define TZ_Etc_Universal ("UTC0")
|
||||
#define TZ_Etc_Zulu ("UTC0")
|
||||
#define TZ_Africa_Abidjan ("GMT0")
|
||||
#define TZ_Africa_Accra ("GMT0")
|
||||
#define TZ_Africa_Addis_Ababa ("EAT-3")
|
||||
#define TZ_Africa_Algiers ("CET-1")
|
||||
#define TZ_Africa_Asmara ("EAT-3")
|
||||
#define TZ_Africa_Bamako ("GMT0")
|
||||
#define TZ_Africa_Bangui ("WAT-1")
|
||||
#define TZ_Africa_Banjul ("GMT0")
|
||||
#define TZ_Africa_Bissau ("GMT0")
|
||||
#define TZ_Africa_Blantyre ("CAT-2")
|
||||
#define TZ_Africa_Brazzaville ("WAT-1")
|
||||
#define TZ_Africa_Bujumbura ("CAT-2")
|
||||
#define TZ_Africa_Cairo ("EET-2")
|
||||
#define TZ_Africa_Casablanca ("<+01>-1")
|
||||
#define TZ_Africa_Ceuta ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Africa_Conakry ("GMT0")
|
||||
#define TZ_Africa_Dakar ("GMT0")
|
||||
#define TZ_Africa_Dar_es_Salaam ("EAT-3")
|
||||
#define TZ_Africa_Djibouti ("EAT-3")
|
||||
#define TZ_Africa_Douala ("WAT-1")
|
||||
#define TZ_Africa_El_Aaiun ("<+01>-1")
|
||||
#define TZ_Africa_Freetown ("GMT0")
|
||||
#define TZ_Africa_Gaborone ("CAT-2")
|
||||
#define TZ_Africa_Harare ("CAT-2")
|
||||
#define TZ_Africa_Johannesburg ("SAST-2")
|
||||
#define TZ_Africa_Juba ("EAT-3")
|
||||
#define TZ_Africa_Kampala ("EAT-3")
|
||||
#define TZ_Africa_Khartoum ("CAT-2")
|
||||
#define TZ_Africa_Kigali ("CAT-2")
|
||||
#define TZ_Africa_Kinshasa ("WAT-1")
|
||||
#define TZ_Africa_Lagos ("WAT-1")
|
||||
#define TZ_Africa_Libreville ("WAT-1")
|
||||
#define TZ_Africa_Lome ("GMT0")
|
||||
#define TZ_Africa_Luanda ("WAT-1")
|
||||
#define TZ_Africa_Lubumbashi ("CAT-2")
|
||||
#define TZ_Africa_Lusaka ("CAT-2")
|
||||
#define TZ_Africa_Malabo ("WAT-1")
|
||||
#define TZ_Africa_Maputo ("CAT-2")
|
||||
#define TZ_Africa_Maseru ("SAST-2")
|
||||
#define TZ_Africa_Mbabane ("SAST-2")
|
||||
#define TZ_Africa_Mogadishu ("EAT-3")
|
||||
#define TZ_Africa_Monrovia ("GMT0")
|
||||
#define TZ_Africa_Nairobi ("EAT-3")
|
||||
#define TZ_Africa_Ndjamena ("WAT-1")
|
||||
#define TZ_Africa_Niamey ("WAT-1")
|
||||
#define TZ_Africa_Nouakchott ("GMT0")
|
||||
#define TZ_Africa_Ouagadougou ("GMT0")
|
||||
#define TZ_Africa_PortomNovo ("WAT-1")
|
||||
#define TZ_Africa_Sao_Tome ("GMT0")
|
||||
#define TZ_Africa_Tripoli ("EET-2")
|
||||
#define TZ_Africa_Tunis ("CET-1")
|
||||
#define TZ_Africa_Windhoek ("CAT-2")
|
||||
#define TZ_America_Adak ("HST10HDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Anchorage ("AKST9AKDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Anguilla ("AST4")
|
||||
#define TZ_America_Antigua ("AST4")
|
||||
#define TZ_America_Araguaina ("<-03>3")
|
||||
#define TZ_America_Argentina_Buenos_Aires ("<-03>3")
|
||||
#define TZ_America_Argentina_Catamarca ("<-03>3")
|
||||
#define TZ_America_Argentina_Cordoba ("<-03>3")
|
||||
#define TZ_America_Argentina_Jujuy ("<-03>3")
|
||||
#define TZ_America_Argentina_La_Rioja ("<-03>3")
|
||||
#define TZ_America_Argentina_Mendoza ("<-03>3")
|
||||
#define TZ_America_Argentina_Rio_Gallegos ("<-03>3")
|
||||
#define TZ_America_Argentina_Salta ("<-03>3")
|
||||
#define TZ_America_Argentina_San_Juan ("<-03>3")
|
||||
#define TZ_America_Argentina_San_Luis ("<-03>3")
|
||||
#define TZ_America_Argentina_Tucuman ("<-03>3")
|
||||
#define TZ_America_Argentina_Ushuaia ("<-03>3")
|
||||
#define TZ_America_Aruba ("AST4")
|
||||
#define TZ_America_Asuncion ("<-04>4<-03>,M10.1.0/0,M3.4.0/0")
|
||||
#define TZ_America_Atikokan ("EST5")
|
||||
#define TZ_America_Bahia ("<-03>3")
|
||||
#define TZ_America_Bahia_Banderas ("CST6CDT,M4.1.0,M10.5.0")
|
||||
#define TZ_America_Barbados ("AST4")
|
||||
#define TZ_America_Belem ("<-03>3")
|
||||
#define TZ_America_Belize ("CST6")
|
||||
#define TZ_America_BlancmSablon ("AST4")
|
||||
#define TZ_America_Boa_Vista ("<-04>4")
|
||||
#define TZ_America_Bogota ("<-05>5")
|
||||
#define TZ_America_Boise ("MST7MDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Cambridge_Bay ("MST7MDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Campo_Grande ("<-04>4")
|
||||
#define TZ_America_Cancun ("EST5")
|
||||
#define TZ_America_Caracas ("<-04>4")
|
||||
#define TZ_America_Cayenne ("<-03>3")
|
||||
#define TZ_America_Cayman ("EST5")
|
||||
#define TZ_America_Chicago ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Chihuahua ("MST7MDT,M4.1.0,M10.5.0")
|
||||
#define TZ_America_Costa_Rica ("CST6")
|
||||
#define TZ_America_Creston ("MST7")
|
||||
#define TZ_America_Cuiaba ("<-04>4")
|
||||
#define TZ_America_Curacao ("AST4")
|
||||
#define TZ_America_Danmarkshavn ("GMT0")
|
||||
#define TZ_America_Dawson ("MST7")
|
||||
#define TZ_America_Dawson_Creek ("MST7")
|
||||
#define TZ_America_Denver ("MST7MDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Detroit ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Dominica ("AST4")
|
||||
#define TZ_America_Edmonton ("MST7MDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Eirunepe ("<-05>5")
|
||||
#define TZ_America_El_Salvador ("CST6")
|
||||
#define TZ_America_Fortaleza ("<-03>3")
|
||||
#define TZ_America_Fort_Nelson ("MST7")
|
||||
#define TZ_America_Glace_Bay ("AST4ADT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Godthab ("<-03>3<-02>,M3.5.0/-2,M10.5.0/-1")
|
||||
#define TZ_America_Goose_Bay ("AST4ADT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Grand_Turk ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Grenada ("AST4")
|
||||
#define TZ_America_Guadeloupe ("AST4")
|
||||
#define TZ_America_Guatemala ("CST6")
|
||||
#define TZ_America_Guayaquil ("<-05>5")
|
||||
#define TZ_America_Guyana ("<-04>4")
|
||||
#define TZ_America_Halifax ("AST4ADT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Havana ("CST5CDT,M3.2.0/0,M11.1.0/1")
|
||||
#define TZ_America_Hermosillo ("MST7")
|
||||
#define TZ_America_Indiana_Indianapolis ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Indiana_Knox ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Indiana_Marengo ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Indiana_Petersburg ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Indiana_Tell_City ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Indiana_Vevay ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Indiana_Vincennes ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Indiana_Winamac ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Inuvik ("MST7MDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Iqaluit ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Jamaica ("EST5")
|
||||
#define TZ_America_Juneau ("AKST9AKDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Kentucky_Louisville ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Kentucky_Monticello ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Kralendijk ("AST4")
|
||||
#define TZ_America_La_Paz ("<-04>4")
|
||||
#define TZ_America_Lima ("<-05>5")
|
||||
#define TZ_America_Los_Angeles ("PST8PDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Lower_Princes ("AST4")
|
||||
#define TZ_America_Maceio ("<-03>3")
|
||||
#define TZ_America_Managua ("CST6")
|
||||
#define TZ_America_Manaus ("<-04>4")
|
||||
#define TZ_America_Marigot ("AST4")
|
||||
#define TZ_America_Martinique ("AST4")
|
||||
#define TZ_America_Matamoros ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Mazatlan ("MST7MDT,M4.1.0,M10.5.0")
|
||||
#define TZ_America_Menominee ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Merida ("CST6CDT,M4.1.0,M10.5.0")
|
||||
#define TZ_America_Metlakatla ("AKST9AKDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Mexico_City ("CST6CDT,M4.1.0,M10.5.0")
|
||||
#define TZ_America_Miquelon ("<-03>3<-02>,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Moncton ("AST4ADT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Monterrey ("CST6CDT,M4.1.0,M10.5.0")
|
||||
#define TZ_America_Montevideo ("<-03>3")
|
||||
#define TZ_America_Montreal ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Montserrat ("AST4")
|
||||
#define TZ_America_Nassau ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_New_York ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Nipigon ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Nome ("AKST9AKDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Noronha ("<-02>2")
|
||||
#define TZ_America_North_Dakota_Beulah ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_North_Dakota_Center ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_North_Dakota_New_Salem ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Ojinaga ("MST7MDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Panama ("EST5")
|
||||
#define TZ_America_Pangnirtung ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Paramaribo ("<-03>3")
|
||||
#define TZ_America_Phoenix ("MST7")
|
||||
#define TZ_America_PortmaumPrince ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Port_of_Spain ("AST4")
|
||||
#define TZ_America_Porto_Velho ("<-04>4")
|
||||
#define TZ_America_Puerto_Rico ("AST4")
|
||||
#define TZ_America_Punta_Arenas ("<-03>3")
|
||||
#define TZ_America_Rainy_River ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Rankin_Inlet ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Recife ("<-03>3")
|
||||
#define TZ_America_Regina ("CST6")
|
||||
#define TZ_America_Resolute ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Rio_Branco ("<-05>5")
|
||||
#define TZ_America_Santarem ("<-03>3")
|
||||
#define TZ_America_Santiago ("<-04>4<-03>,M9.1.6/24,M4.1.6/24")
|
||||
#define TZ_America_Santo_Domingo ("AST4")
|
||||
#define TZ_America_Sao_Paulo ("<-03>3")
|
||||
#define TZ_America_Scoresbysund ("<-01>1<+00>,M3.5.0/0,M10.5.0/1")
|
||||
#define TZ_America_Sitka ("AKST9AKDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_St_Barthelemy ("AST4")
|
||||
#define TZ_America_St_Johns ("NST3:30NDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_St_Kitts ("AST4")
|
||||
#define TZ_America_St_Lucia ("AST4")
|
||||
#define TZ_America_St_Thomas ("AST4")
|
||||
#define TZ_America_St_Vincent ("AST4")
|
||||
#define TZ_America_Swift_Current ("CST6")
|
||||
#define TZ_America_Tegucigalpa ("CST6")
|
||||
#define TZ_America_Thule ("AST4ADT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Thunder_Bay ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Tijuana ("PST8PDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Toronto ("EST5EDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Tortola ("AST4")
|
||||
#define TZ_America_Vancouver ("PST8PDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Whitehorse ("MST7")
|
||||
#define TZ_America_Winnipeg ("CST6CDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Yakutat ("AKST9AKDT,M3.2.0,M11.1.0")
|
||||
#define TZ_America_Yellowknife ("MST7MDT,M3.2.0,M11.1.0")
|
||||
#define TZ_Antarctica_Casey ("<+11>-11")
|
||||
#define TZ_Antarctica_Davis ("<+07>-7")
|
||||
#define TZ_Antarctica_DumontDUrville ("<+10>-10")
|
||||
#define TZ_Antarctica_Macquarie ("AEST-10AEDT,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Antarctica_Mawson ("<+05>-5")
|
||||
#define TZ_Antarctica_McMurdo ("NZST-12NZDT,M9.5.0,M4.1.0/3")
|
||||
#define TZ_Antarctica_Palmer ("<-03>3")
|
||||
#define TZ_Antarctica_Rothera ("<-03>3")
|
||||
#define TZ_Antarctica_Syowa ("<+03>-3")
|
||||
#define TZ_Antarctica_Troll ("<+00>0<+02>-2,M3.5.0/1,M10.5.0/3")
|
||||
#define TZ_Antarctica_Vostok ("<+06>-6")
|
||||
#define TZ_Arctic_Longyearbyen ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Asia_Aden ("<+03>-3")
|
||||
#define TZ_Asia_Almaty ("<+06>-6")
|
||||
#define TZ_Asia_Amman ("EET-2EEST,M3.5.4/24,M10.5.5/1")
|
||||
#define TZ_Asia_Anadyr ("<+12>-12")
|
||||
#define TZ_Asia_Aqtau ("<+05>-5")
|
||||
#define TZ_Asia_Aqtobe ("<+05>-5")
|
||||
#define TZ_Asia_Ashgabat ("<+05>-5")
|
||||
#define TZ_Asia_Atyrau ("<+05>-5")
|
||||
#define TZ_Asia_Baghdad ("<+03>-3")
|
||||
#define TZ_Asia_Bahrain ("<+03>-3")
|
||||
#define TZ_Asia_Baku ("<+04>-4")
|
||||
#define TZ_Asia_Bangkok ("<+07>-7")
|
||||
#define TZ_Asia_Barnaul ("<+07>-7")
|
||||
#define TZ_Asia_Beirut ("EET-2EEST,M3.5.0/0,M10.5.0/0")
|
||||
#define TZ_Asia_Bishkek ("<+06>-6")
|
||||
#define TZ_Asia_Brunei ("<+08>-8")
|
||||
#define TZ_Asia_Chita ("<+09>-9")
|
||||
#define TZ_Asia_Choibalsan ("<+08>-8")
|
||||
#define TZ_Asia_Colombo ("<+0530>-5:30")
|
||||
#define TZ_Asia_Damascus ("EET-2EEST,M3.5.5/0,M10.5.5/0")
|
||||
#define TZ_Asia_Dhaka ("<+06>-6")
|
||||
#define TZ_Asia_Dili ("<+09>-9")
|
||||
#define TZ_Asia_Dubai ("<+04>-4")
|
||||
#define TZ_Asia_Dushanbe ("<+05>-5")
|
||||
#define TZ_Asia_Famagusta ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Asia_Gaza ("EET-2EEST,M3.4.4/48,M10.4.4/49")
|
||||
#define TZ_Asia_Hebron ("EET-2EEST,M3.4.4/48,M10.4.4/49")
|
||||
#define TZ_Asia_Ho_Chi_Minh ("<+07>-7")
|
||||
#define TZ_Asia_Hong_Kong ("HKT-8")
|
||||
#define TZ_Asia_Hovd ("<+07>-7")
|
||||
#define TZ_Asia_Irkutsk ("<+08>-8")
|
||||
#define TZ_Asia_Jakarta ("WIB-7")
|
||||
#define TZ_Asia_Jayapura ("WIT-9")
|
||||
#define TZ_Asia_Jerusalem ("IST-2IDT,M3.4.4/26,M10.5.0")
|
||||
#define TZ_Asia_Kabul ("<+0430>-4:30")
|
||||
#define TZ_Asia_Kamchatka ("<+12>-12")
|
||||
#define TZ_Asia_Karachi ("PKT-5")
|
||||
#define TZ_Asia_Kathmandu ("<+0545>-5:45")
|
||||
#define TZ_Asia_Khandyga ("<+09>-9")
|
||||
#define TZ_Asia_Kolkata ("IST-5:30")
|
||||
#define TZ_Asia_Krasnoyarsk ("<+07>-7")
|
||||
#define TZ_Asia_Kuala_Lumpur ("<+08>-8")
|
||||
#define TZ_Asia_Kuching ("<+08>-8")
|
||||
#define TZ_Asia_Kuwait ("<+03>-3")
|
||||
#define TZ_Asia_Macau ("CST-8")
|
||||
#define TZ_Asia_Magadan ("<+11>-11")
|
||||
#define TZ_Asia_Makassar ("WITA-8")
|
||||
#define TZ_Asia_Manila ("PST-8")
|
||||
#define TZ_Asia_Muscat ("<+04>-4")
|
||||
#define TZ_Asia_Nicosia ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Asia_Novokuznetsk ("<+07>-7")
|
||||
#define TZ_Asia_Novosibirsk ("<+07>-7")
|
||||
#define TZ_Asia_Omsk ("<+06>-6")
|
||||
#define TZ_Asia_Oral ("<+05>-5")
|
||||
#define TZ_Asia_Phnom_Penh ("<+07>-7")
|
||||
#define TZ_Asia_Pontianak ("WIB-7")
|
||||
#define TZ_Asia_Pyongyang ("KST-9")
|
||||
#define TZ_Asia_Qatar ("<+03>-3")
|
||||
#define TZ_Asia_Qyzylorda ("<+05>-5")
|
||||
#define TZ_Asia_Riyadh ("<+03>-3")
|
||||
#define TZ_Asia_Sakhalin ("<+11>-11")
|
||||
#define TZ_Asia_Samarkand ("<+05>-5")
|
||||
#define TZ_Asia_Seoul ("KST-9")
|
||||
#define TZ_Asia_Shanghai ("CST-8")
|
||||
#define TZ_Asia_Singapore ("<+08>-8")
|
||||
#define TZ_Asia_Srednekolymsk ("<+11>-11")
|
||||
#define TZ_Asia_Taipei ("CST-8")
|
||||
#define TZ_Asia_Tashkent ("<+05>-5")
|
||||
#define TZ_Asia_Tbilisi ("<+04>-4")
|
||||
#define TZ_Asia_Tehran ("<+0330>-3:30<+0430>,J79/24,J263/24")
|
||||
#define TZ_Asia_Thimphu ("<+06>-6")
|
||||
#define TZ_Asia_Tokyo ("JST-9")
|
||||
#define TZ_Asia_Tomsk ("<+07>-7")
|
||||
#define TZ_Asia_Ulaanbaatar ("<+08>-8")
|
||||
#define TZ_Asia_Urumqi ("<+06>-6")
|
||||
#define TZ_Asia_UstmNera ("<+10>-10")
|
||||
#define TZ_Asia_Vientiane ("<+07>-7")
|
||||
#define TZ_Asia_Vladivostok ("<+10>-10")
|
||||
#define TZ_Asia_Yakutsk ("<+09>-9")
|
||||
#define TZ_Asia_Yangon ("<+0630>-6:30")
|
||||
#define TZ_Asia_Yekaterinburg ("<+05>-5")
|
||||
#define TZ_Asia_Yerevan ("<+04>-4")
|
||||
#define TZ_Atlantic_Azores ("<-01>1<+00>,M3.5.0/0,M10.5.0/1")
|
||||
#define TZ_Atlantic_Bermuda ("AST4ADT,M3.2.0,M11.1.0")
|
||||
#define TZ_Atlantic_Canary ("WET0WEST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Atlantic_Cape_Verde ("<-01>1")
|
||||
#define TZ_Atlantic_Faroe ("WET0WEST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Atlantic_Madeira ("WET0WEST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Atlantic_Reykjavik ("GMT0")
|
||||
#define TZ_Atlantic_South_Georgia ("<-02>2")
|
||||
#define TZ_Atlantic_Stanley ("<-03>3")
|
||||
#define TZ_Atlantic_St_Helena ("GMT0")
|
||||
#define TZ_Australia_Adelaide ("ACST-9:30ACDT,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Australia_Brisbane ("AEST-10")
|
||||
#define TZ_Australia_Broken_Hill ("ACST-9:30ACDT,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Australia_Currie ("AEST-10AEDT,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Australia_Darwin ("ACST-9:30")
|
||||
#define TZ_Australia_Eucla ("<+0845>-8:45")
|
||||
#define TZ_Australia_Hobart ("AEST-10AEDT,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Australia_Lindeman ("AEST-10")
|
||||
#define TZ_Australia_Lord_Howe ("<+1030>-10:30<+11>-11,M10.1.0,M4.1.0")
|
||||
#define TZ_Australia_Melbourne ("AEST-10AEDT,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Australia_Perth ("AWST-8")
|
||||
#define TZ_Australia_Sydney ("AEST-10AEDT,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Europe_Amsterdam ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Andorra ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Astrakhan ("<+04>-4")
|
||||
#define TZ_Europe_Athens ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Belgrade ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Berlin ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Bratislava ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Brussels ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Bucharest ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Budapest ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Busingen ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Chisinau ("EET-2EEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Copenhagen ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Dublin ("IST-1GMT0,M10.5.0,M3.5.0/1")
|
||||
#define TZ_Europe_Gibraltar ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Guernsey ("GMT0BST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Europe_Helsinki ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Isle_of_Man ("GMT0BST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Europe_Istanbul ("<+03>-3")
|
||||
#define TZ_Europe_Jersey ("GMT0BST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Europe_Kaliningrad ("EET-2")
|
||||
#define TZ_Europe_Kiev ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Kirov ("<+03>-3")
|
||||
#define TZ_Europe_Lisbon ("WET0WEST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Europe_Ljubljana ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_London ("GMT0BST,M3.5.0/1,M10.5.0")
|
||||
#define TZ_Europe_Luxembourg ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Madrid ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Malta ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Mariehamn ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Minsk ("<+03>-3")
|
||||
#define TZ_Europe_Monaco ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Moscow ("MSK-3")
|
||||
#define TZ_Europe_Oslo ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Paris ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Podgorica ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Prague ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Riga ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Rome ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Samara ("<+04>-4")
|
||||
#define TZ_Europe_San_Marino ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Sarajevo ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Saratov ("<+04>-4")
|
||||
#define TZ_Europe_Simferopol ("MSK-3")
|
||||
#define TZ_Europe_Skopje ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Sofia ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Stockholm ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Tallinn ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Tirane ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Ulyanovsk ("<+04>-4")
|
||||
#define TZ_Europe_Uzhgorod ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Vaduz ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Vatican ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Vienna ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Vilnius ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Volgograd ("<+04>-4")
|
||||
#define TZ_Europe_Warsaw ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Zagreb ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Europe_Zaporozhye ("EET-2EEST,M3.5.0/3,M10.5.0/4")
|
||||
#define TZ_Europe_Zurich ("CET-1CEST,M3.5.0,M10.5.0/3")
|
||||
#define TZ_Indian_Antananarivo ("EAT-3")
|
||||
#define TZ_Indian_Chagos ("<+06>-6")
|
||||
#define TZ_Indian_Christmas ("<+07>-7")
|
||||
#define TZ_Indian_Cocos ("<+0630>-6:30")
|
||||
#define TZ_Indian_Comoro ("EAT-3")
|
||||
#define TZ_Indian_Kerguelen ("<+05>-5")
|
||||
#define TZ_Indian_Mahe ("<+04>-4")
|
||||
#define TZ_Indian_Maldives ("<+05>-5")
|
||||
#define TZ_Indian_Mauritius ("<+04>-4")
|
||||
#define TZ_Indian_Mayotte ("EAT-3")
|
||||
#define TZ_Indian_Reunion ("<+04>-4")
|
||||
#define TZ_Pacific_Apia ("<+13>-13<+14>,M9.5.0/3,M4.1.0/4")
|
||||
#define TZ_Pacific_Auckland ("NZST-12NZDT,M9.5.0,M4.1.0/3")
|
||||
#define TZ_Pacific_Bougainville ("<+11>-11")
|
||||
#define TZ_Pacific_Chatham ("<+1245>-12:45<+1345>,M9.5.0/2:45,M4.1.0/3:45")
|
||||
#define TZ_Pacific_Chuuk ("<+10>-10")
|
||||
#define TZ_Pacific_Easter ("<-06>6<-05>,M9.1.6/22,M4.1.6/22")
|
||||
#define TZ_Pacific_Efate ("<+11>-11")
|
||||
#define TZ_Pacific_Enderbury ("<+13>-13")
|
||||
#define TZ_Pacific_Fakaofo ("<+13>-13")
|
||||
#define TZ_Pacific_Fiji ("<+12>-12<+13>,M11.2.0,M1.2.3/99")
|
||||
#define TZ_Pacific_Funafuti ("<+12>-12")
|
||||
#define TZ_Pacific_Galapagos ("<-06>6")
|
||||
#define TZ_Pacific_Gambier ("<-09>9")
|
||||
#define TZ_Pacific_Guadalcanal ("<+11>-11")
|
||||
#define TZ_Pacific_Guam ("ChST-10")
|
||||
#define TZ_Pacific_Honolulu ("HST10")
|
||||
#define TZ_Pacific_Kiritimati ("<+14>-14")
|
||||
#define TZ_Pacific_Kosrae ("<+11>-11")
|
||||
#define TZ_Pacific_Kwajalein ("<+12>-12")
|
||||
#define TZ_Pacific_Majuro ("<+12>-12")
|
||||
#define TZ_Pacific_Marquesas ("<-0930>9:30")
|
||||
#define TZ_Pacific_Midway ("SST11")
|
||||
#define TZ_Pacific_Nauru ("<+12>-12")
|
||||
#define TZ_Pacific_Niue ("<-11>11")
|
||||
#define TZ_Pacific_Norfolk ("<+11>-11<+12>,M10.1.0,M4.1.0/3")
|
||||
#define TZ_Pacific_Noumea ("<+11>-11")
|
||||
#define TZ_Pacific_Pago_Pago ("SST11")
|
||||
#define TZ_Pacific_Palau ("<+09>-9")
|
||||
#define TZ_Pacific_Pitcairn ("<-08>8")
|
||||
#define TZ_Pacific_Pohnpei ("<+11>-11")
|
||||
#define TZ_Pacific_Port_Moresby ("<+10>-10")
|
||||
#define TZ_Pacific_Rarotonga ("<-10>10")
|
||||
#define TZ_Pacific_Saipan ("ChST-10")
|
||||
#define TZ_Pacific_Tahiti ("<-10>10")
|
||||
#define TZ_Pacific_Tarawa ("<+12>-12")
|
||||
#define TZ_Pacific_Tongatapu ("<+13>-13")
|
||||
#define TZ_Pacific_Wake ("<+12>-12")
|
||||
#define TZ_Pacific_Wallis ("<+12>-12")
|
||||
#define TZ_Etc_GMT ("GMT0")
|
||||
#define TZ_Etc_GMTm0 ("GMT0")
|
||||
#define TZ_Etc_GMTm1 ("<+01>-1")
|
||||
#define TZ_Etc_GMTm2 ("<+02>-2")
|
||||
#define TZ_Etc_GMTm3 ("<+03>-3")
|
||||
#define TZ_Etc_GMTm4 ("<+04>-4")
|
||||
#define TZ_Etc_GMTm5 ("<+05>-5")
|
||||
#define TZ_Etc_GMTm6 ("<+06>-6")
|
||||
#define TZ_Etc_GMTm7 ("<+07>-7")
|
||||
#define TZ_Etc_GMTm8 ("<+08>-8")
|
||||
#define TZ_Etc_GMTm9 ("<+09>-9")
|
||||
#define TZ_Etc_GMTm10 ("<+10>-10")
|
||||
#define TZ_Etc_GMTm11 ("<+11>-11")
|
||||
#define TZ_Etc_GMTm12 ("<+12>-12")
|
||||
#define TZ_Etc_GMTm13 ("<+13>-13")
|
||||
#define TZ_Etc_GMTm14 ("<+14>-14")
|
||||
#define TZ_Etc_GMT0 ("GMT0")
|
||||
#define TZ_Etc_GMTp0 ("GMT0")
|
||||
#define TZ_Etc_GMTp1 ("<-01>1")
|
||||
#define TZ_Etc_GMTp2 ("<-02>2")
|
||||
#define TZ_Etc_GMTp3 ("<-03>3")
|
||||
#define TZ_Etc_GMTp4 ("<-04>4")
|
||||
#define TZ_Etc_GMTp5 ("<-05>5")
|
||||
#define TZ_Etc_GMTp6 ("<-06>6")
|
||||
#define TZ_Etc_GMTp7 ("<-07>7")
|
||||
#define TZ_Etc_GMTp8 ("<-08>8")
|
||||
#define TZ_Etc_GMTp9 ("<-09>9")
|
||||
#define TZ_Etc_GMTp10 ("<-10>10")
|
||||
#define TZ_Etc_GMTp11 ("<-11>11")
|
||||
#define TZ_Etc_GMTp12 ("<-12>12")
|
||||
#define TZ_Etc_UCT ("UTC0")
|
||||
#define TZ_Etc_UTC ("UTC0")
|
||||
#define TZ_Etc_Greenwich ("GMT0")
|
||||
#define TZ_Etc_Universal ("UTC0")
|
||||
#define TZ_Etc_Zulu ("UTC0")
|
||||
|
||||
////////////////////////////////////////////////////////////
|
||||
|
||||
|
@ -15,8 +15,8 @@ include_dir = lib
|
||||
[common_env_data]
|
||||
upload_speed = 921600
|
||||
monitor_speed = 115200
|
||||
platform = espressif8266 @ 4.0.1
|
||||
platform32 = espressif32 @ 5.2.0
|
||||
platform = espressif8266 @ 4.1.0
|
||||
platform32 = espressif32 @ 6.0.0
|
||||
framework = arduino
|
||||
board = d1_mini
|
||||
build_unflags =
|
||||
@ -49,13 +49,13 @@ lib_deps =
|
||||
# https://github.com/mp-se/Arduino-Temperature-Control-Library
|
||||
# https://github.com/khoih-prog/ESP_WiFiManager
|
||||
# https://github.com/khoih-prog/ESP_DoubleResetDetector
|
||||
https://github.com/mp-se/tinyexpr # https://github.com/codeplea/tinyexpr
|
||||
https://github.com/mp-se/Arduino-Log#1.1.1 # https://github.com/thijse/Arduino-Log
|
||||
https://github.com/mp-se/ArduinoJson#v6.18.5 # https://github.com/bblanchon/ArduinoJson
|
||||
https://github.com/mp-se/arduinoCurveFitting#v1.0.6 # https://github.com/Rotario/arduinoCurveFitting
|
||||
https://github.com/mp-se/arduino-mqtt#v2.5.0 # https://github.com/256dpi/arduino-mqtt
|
||||
https://github.com/mp-se/tinyexpr#v1.0.0
|
||||
https://github.com/mp-se/Arduino-Log#1.1.1
|
||||
https://github.com/mp-se/ArduinoJson#v6.20.0
|
||||
https://github.com/mp-se/arduinoCurveFitting#v1.0.6
|
||||
https://github.com/mp-se/arduino-mqtt#v2.5.1
|
||||
lib_deps32 =
|
||||
https://github.com/mp-se/NimBLE-Arduino#1.3.8 # https://github.com/h2zero/NimBLE-Arduino
|
||||
https://github.com/mp-se/NimBLE-Arduino#1.4.1
|
||||
extra_scripts =
|
||||
script/copy_firmware.py
|
||||
script/create_versionjson.py
|
||||
@ -118,7 +118,7 @@ build_flags =
|
||||
${common_env_data.build_flags}
|
||||
-D LOG_LEVEL=4
|
||||
lib_deps =
|
||||
https://github.com/mp-se/incbin # https://github.com/graphitemaster/incbin
|
||||
https://github.com/mp-se/incbin#v1.0.0
|
||||
https://github.com/bxparks/AUnit#v1.6.1
|
||||
${common_env_data.lib_deps}
|
||||
board = ${common_env_data.board}
|
||||
|
@ -3,6 +3,25 @@
|
||||
Releases
|
||||
########
|
||||
|
||||
v1.3.0
|
||||
======
|
||||
|
||||
Issues adressed
|
||||
++++++++++++++++
|
||||
* BUG: Clarified that its the bucket ID and auth TOKEN for influxdb (config page)
|
||||
|
||||
Other
|
||||
+++++
|
||||
* Updated platformio esp8266 to v4.1.0
|
||||
* Updated platformio esp32 to v6.0.0
|
||||
* Updated h2zero/NimBLE-Arduino to b 1.4.1
|
||||
* Updated 256dpi/arduino-mqtt to v2.5.1
|
||||
* Created tag v1.0.0 for codeplea/tinyexpr to get control over releases
|
||||
* Created tag v1.0.0 for graphitemaster/incbin to get control over releases
|
||||
* Updated bblanchon/ArduinoJson to v6.20.0
|
||||
* Updated khoih-prog/ESP_WiFiManager to v1.12.1
|
||||
* Updated khoih-prog/ESP_DoubleResetDetector to v1.3.2
|
||||
|
||||
v1.2.1
|
||||
======
|
||||
|
||||
@ -12,7 +31,7 @@ Issues adressed
|
||||
|
||||
Other
|
||||
+++++
|
||||
* Update tinyexpr library to latest baseline. For forumula evaluation.
|
||||
* Update tinyexpr library to latest baseline (Used for forumula evaluation).
|
||||
|
||||
Documentation
|
||||
+++++++++++++
|
||||
|
Loading…
Reference in New Issue
Block a user