 |
ESP3D
3.0
Firmware for ESP boards connected to 3D Printer
|
Go to the documentation of this file.
21 #include "../include/esp3d_config.h"
22 #if defined (ESP_SAVE_SETTINGS)
26 #if ESP_SAVE_SETTINGS == SETTINGS_IN_EEPROM
29 #define EEPROM_SIZE 2048 //max is 2048
30 #endif //SETTINGS_IN_EEPROM
32 #if defined (WIFI_FEATURE) || defined(ETH_FEATURE)
33 #include "../modules/network/netconfig.h"
34 #if defined (WIFI_FEATURE)
35 #include "../modules/wifi/wificonfig.h"
37 #endif //WIFI_FEATURE || ETH_FEATURE
40 #if ESP_SAVE_SETTINGS == SETTINGS_IN_PREFERENCES
41 #include <Preferences.h>
42 #define NAMESPACE "ESP3D"
43 #endif // SETTINGS_IN_PREFERENCES
46 #define CURRENT_SETTINGS_VERSION "ESP3D04"
49 #define MAX_DHT_INTERVAL 60000
50 #define MIN_DHT_INTERVAL 0
51 #define MAX_LOCAL_PASSWORD_LENGTH 20
52 #define MIN_LOCAL_PASSWORD_LENGTH 1
53 #define MAX_VERSION_LENGTH 7 //ESP3DXX
54 #define MAX_BOOT_DELAY 40000
55 #define MIN_BOOT_DELAY 0
56 #define MIN_NOTIFICATION_TOKEN_LENGTH 0
57 #define MIN_NOTIFICATION_SETTINGS_LENGTH 0
58 #define MAX_NOTIFICATION_TOKEN_LENGTH 63
59 #define MAX_NOTIFICATION_SETTINGS_LENGTH 127
60 #define MAX_SERVER_ADDRESS_LENGTH 128
61 #define MIN_SERVER_ADDRESS_LENGTH 0
66 #define DEFAULT_ESP_RADIO_MODE ESP_WIFI_AP
68 #ifdef BLUETOOTH_FEATURE
69 #define DEFAULT_ESP_RADIO_MODE ESP_BT
70 #else //BLUETOOTH_FEATURE
72 #define DEFAULT_ESP_RADIO_MODE ESP_ETH_STA
73 #else //BLUETOOTH_FEATURE
74 #define DEFAULT_ESP_RADIO_MODE NO_NETWORK
76 #endif //BLUETOOTH_FEATURE
79 #define DEFAULT_BUZZER_STATE 1
80 #endif //BUZZER_DEVICE
81 #ifdef TIMESTAMP_FEATURE
82 #define DEFAULT_INTERNET_TIME 0
83 #endif //TIMESTAMP_FEATURE
85 #define DEFAULT_ESP_BYTE 0
86 #define DEFAULT_ESP_STRING_SIZE 0
87 #if defined (WIFI_FEATURE) || defined (ETH_FEATURE)
88 #define DEFAULT_STA_IP_MODE DHCP_MODE
89 #endif //WIFI_FEATURE || ETH_FEATURE
92 #define DEFAULT_AP_CHANNEL 11
93 #define DEFAULT_AUTH_TYPE AUTH_WPA_PSK
94 #define DEFAULT_SSID_VISIBLE 1
95 #define DEFAULT_OUTPUT_FLAG ESP_ALL_CLIENTS
96 #define DEFAULT_SDREADER_SPEED 4
97 #define DEFAULT_FW UNKNOWN_FW
98 #define DEFAULT_TIME_ZONE 0
99 #define DEFAULT_TIME_DST 0
100 #define DEFAULT_SD_MOUNT ESP_SD_ROOT
101 #define DEFAULT_DIRECT_SD_CHECK 0
102 #define DEFAULT_SD_CHECK_UPDATE_AT_BOOT 1
103 #define DEFAULT_DHT_TYPE NO_DHT_DEVICE
104 #define DEFAULT_SD_DEVICE_TYPE ESP_NO_SD
105 #define DEFAULT_HTTP_ON 1
106 #define DEFAULT_FTP_ON 1
107 #define DEFAULT_TELNET_ON 1
108 #define DEFAULT_WEBSOCKET_ON 1
109 #define DEFAULT_NOTIFICATION_TYPE 0
110 #define DEFAULT_NOTIFICATION_TOKEN1 ""
111 #define DEFAULT_NOTIFICATION_TOKEN2 ""
112 #define DEFAULT_NOTIFICATION_SETTINGS ""
113 #define DEFAULT_AUTO_NOTIFICATION_STATE 1
117 #define DEFAULT_ESP_INT 0L
118 #define DEFAULT_BAUD_RATE 115200L
119 #define DEFAULT_HTTP_PORT 80L
120 #define DEFAULT_FTP_CTRL_PORT 21L
121 #define DEFAULT_FTP_ACTIVE_PORT 20L
122 #define DEFAULT_FTP_PASSIVE_PORT 55600L
123 #define DEFAULT_WEBSOCKET_PORT 8282L
124 #define DEFAULT_CAMERA_PORT 9600L
125 #define DEFAULT_TELNET_PORT 23L
126 #define DEFAULT_DHT_INTERVAL 30000L
127 #define DEFAULT_BOOT_DELAY 10000L
128 #define DEFAULT_CALIBRATION_VALUE 0
129 #define DEFAULT_CALIBRATION_DONE 0
137 #endif //WIFI_FEATURE
138 #if defined (BLUETOOTH_FEATURE) || defined (WIFI_FEATURE) ||defined (ETH_FEATURE)
140 #endif //BLUETOOTH_FEATURE ||WIFI_FEATURE || ETH_FEATURE
142 #ifdef AUTHENTICATION_FEATURE
143 const char DEFAULT_ADMIN_PWD [] =
"admin";
144 const char DEFAULT_USER_PWD [] =
"user";
145 #endif //AUTHENTICATION_FEATURE
146 #ifdef TIMESTAMP_FEATURE
147 const char DEFAULT_TIME_SERVER1 [] =
"1.pool.ntp.org";
148 const char DEFAULT_TIME_SERVER2 [] =
"2.pool.ntp.org";
149 const char DEFAULT_TIME_SERVER3 [] =
"0.pool.ntp.org";
150 #endif //TIMESTAMP_FEATURE
153 #if defined (WIFI_FEATURE) ||defined (ETH_FEATURE)
157 #define DEFAULT_GATEWAY_VALUE DEFAULT_IP_VALUE
159 #endif //WIFI_FEATURE || ETH_FEATURE
161 uint8_t Settings_ESP3D::_FirmwareTarget =
UNKNOWN_FW;
162 bool Settings_ESP3D::_SDdevice =
ESP_NO_SD;
188 return _FirmwareTarget;
205 static String response;
207 response = F (
"repetier4davinci");
208 }
else if ( _FirmwareTarget ==
REPETIER) {
209 response = F (
"repetier");
210 }
else if ( _FirmwareTarget ==
MARLIN) {
211 response = F (
"marlin");
213 response = F (
"marlinkimbra");
215 response = F (
"smoothieware");
216 }
else if ( _FirmwareTarget ==
GRBL) {
217 response = F (
"grbl");
219 response = F (
"???");
221 return response.c_str();
232 #ifdef TIMESTAMP_FEATURE
234 res = DEFAULT_INTERNET_TIME;
236 #endif //TIMESTAMP_FEATURE
239 res = DEFAULT_BUZZER_STATE;
241 #endif //BUZZER_DEVICE
242 #ifdef NOTIFICATION_FEATURE
249 #endif //NOTIFICATION_FEATURE
250 #if defined (WIFI_FEATURE) || defined (ETH_FEATURE)
254 #endif //WIFI_FEATURE || ETH_FEATURE
262 #if defined (WIFI_FEATURE)
272 #endif //WIFI_FEATURE
285 #endif //HTTP_FEATURE
286 #ifdef TELNET_FEATURE
290 #endif //TELNET_FEATURE
291 #ifdef WS_DATA_FEATURE
295 #endif //WS_DATA_FEATURE
316 #ifdef TIMESTAMP_FEATURE
323 #endif //TIMESTAMP_FEATURE
325 #if defined(DHT_DEVICE)
330 #if defined(DISPLAY_DEVICE) && defined(DISPLAY_TOUCH_DRIVER)
334 #endif // DISPLAY_DEVICE && DISPLAY_TOUCH_DRIVER
352 #if defined(DISPLAY_DEVICE) && defined(DISPLAY_TOUCH_DRIVER)
360 #endif // DISPLAY_DEVICE && DISPLAY_TOUCH_DRIVER
361 #if defined (WIFI_FEATURE) || defined (ETH_FEATURE)
372 #endif //WIFI_FEATURE || ETH_FEATURE
388 #endif //HTTP_FEATURE
389 #ifdef TELNET_FEATURE
393 #endif //TELNET_FEATURE
394 #ifdef WS_DATA_FEATURE
398 #endif //WS_DATA_FEATURE
403 #endif //CAMERA_DEVICE
404 #if defined(DHT_DEVICE)
427 #endif //CAMERA_DEVICE
439 #endif //HTTP_FEATURE
440 #ifdef TELNET_FEATURE
444 #endif //TELNET_FEATURE
445 #ifdef WS_DATA_FEATURE
449 #endif //WS_DATA_FEATURE
450 #if defined(DHT_DEVICE)
473 #endif //CAMERA_DEVICE
485 #endif //HTTP_FEATURE
486 #ifdef TELNET_FEATURE
490 #endif //TELNET_FEATURE
491 #ifdef WS_DATA_FEATURE
495 #endif //WS_DATA_FEATURE
496 #if defined(DHT_DEVICE)
511 #if defined (WIFI_FEATURE)
515 #endif //WIFI_FEATURE
516 #ifdef TIMESTAMP_FEATURE
520 #endif //TIMESTAMP_FEATURE
531 #if defined (WIFI_FEATURE)
535 #endif //WIFI_FEATURE
536 #ifdef TIMESTAMP_FEATURE
540 #endif //TIMESTAMP_FEATURE
558 #if defined (WIFI_FEATURE) || defined (ETH_FEATURE) || defined (BLUETOOTH_FEATURE)
562 #endif //WIFI_FEATURE || ETH_FEATURE || defined (ETH_FEATURE)
563 #ifdef TIMESTAMP_FEATURE
565 res = DEFAULT_TIME_SERVER1;
568 res = DEFAULT_TIME_SERVER2;
571 res = DEFAULT_TIME_SERVER3;
573 #endif //TIMESTAMP_FEATURE
574 #ifdef NOTIFICATION_FEATURE
584 #endif //NOTIFICATION_FEATURE
585 #if defined (WIFI_FEATURE)
598 #endif //WIFI_FEATURE
599 #ifdef AUTHENTICATION_FEATURE
601 res = DEFAULT_ADMIN_PWD;
604 res = DEFAULT_USER_PWD;
606 #endif //AUTHENTICATION_FEATURE
621 #if defined (WIFI_FEATURE) || defined (ETH_FEATURE) || defined (BLUETOOTH_FEATURE)
625 #endif //WIFI_FEATURE || ETH_FEATURE || BLUETOOTH_FEATURE
626 #ifdef TIMESTAMP_FEATURE
632 #endif //TIMESTAMP_FEATURE
633 #ifdef NOTIFICATION_FEATURE
641 #endif //NOTIFICATION_FEATURE
642 #if defined (WIFI_FEATURE)
651 #endif //WIFI_FEATURE
652 #ifdef AUTHENTICATION_FEATURE
657 #endif //AUTHENTICATION_FEATURE
672 #if defined (WIFI_FEATURE) || defined (ETH_FEATURE) || defined (BLUETOOTH_FEATURE)
676 #endif //WIFI_FEATURE || ETH_FEATURE || BLUETOOTH_FEATURE
677 #ifdef NOTIFICATION_FEATURE
685 #endif //NOTIFICATION_FEATURE
686 #ifdef TIMESTAMP_FEATURE
692 #endif //TIMESTAMP_FEATURE
693 #if defined (WIFI_FEATURE)
702 #endif //WIFI_FEATURE
703 #ifdef AUTHENTICATION_FEATURE
708 #endif //AUTHENTICATION_FEATURE
721 #if ESP_SAVE_SETTINGS == SETTINGS_IN_EEPROM
723 if ((pos + 1 > EEPROM_SIZE) ) {
728 EEPROM.begin (EEPROM_SIZE);
729 value = EEPROM.read (pos);
731 #endif //SETTINGS_IN_EEPROM
732 #if ESP_SAVE_SETTINGS == SETTINGS_IN_PREFERENCES
734 if (!prefs.begin(NAMESPACE,
true)) {
735 log_esp3d(
"Error opening %s", NAMESPACE);
738 String p =
"P_" + String(pos);
741 #endif //SETTINGS_IN_PREFERENCES
751 #if ESP_SAVE_SETTINGS == SETTINGS_IN_EEPROM
753 if (pos + 1 > EEPROM_SIZE) {
757 EEPROM.begin (EEPROM_SIZE);
758 EEPROM.write (pos, value);
759 if (!EEPROM.commit()) {
764 #endif //SETTINGS_IN_EEPROM
765 #if ESP_SAVE_SETTINGS == SETTINGS_IN_PREFERENCES
767 if (!prefs.begin(NAMESPACE,
false)) {
768 log_esp3d(
"Error opening %s", NAMESPACE);
771 String p =
"P_" + String(pos);
772 uint8_t r = prefs.putChar(p.c_str(), value);
778 #endif //SETTINGS_IN_PREFERENCES
782 bool Settings_ESP3D::is_string(
const char * s, uint len)
784 for (uint p = 0; p < len; p++) {
785 if (!isPrintable (
char(s[p]))) {
804 #if ESP_SAVE_SETTINGS == SETTINGS_IN_EEPROM
805 static char * byte_buffer = NULL;
812 if (pos + size_max + 1 > EEPROM_SIZE) {
816 byte_buffer = (
char *)malloc(size_max+1);
818 log_esp3d(
"Error mem read string %d", pos);
821 EEPROM.begin (EEPROM_SIZE);
826 while (i < size_max && b != 0) {
827 b = EEPROM.read (pos + i);
828 byte_buffer[i] = isPrintable (
char(b))?b:0;
834 byte_buffer[i - 1] = 0x00;
843 #endif //SETTINGS_IN_EEPROM
844 #if ESP_SAVE_SETTINGS == SETTINGS_IN_PREFERENCES
848 if (!prefs.begin(NAMESPACE,
true)) {
849 log_esp3d(
"Error opening %s", NAMESPACE);
852 String p =
"P_" + String(pos);
856 if (res.length() > size_max) {
857 log_esp3d(
"String too long %d vs %d", res.length(), size_max);
858 res = res.substring(0,size_max-1);
866 #endif //SETTINGS_IN_PREFERENCES
872 int size_buffer = strlen (byte_buffer);
879 if (size_max < size_buffer) {
880 log_esp3d(
"Error string too long %d, %d", pos, size_buffer);
883 #if ESP_SAVE_SETTINGS == SETTINGS_IN_EEPROM
884 if ( pos + size_buffer + 1 > EEPROM_SIZE || byte_buffer == NULL) {
889 EEPROM.begin (EEPROM_SIZE);
890 for (
int i = 0; i < size_buffer; i++) {
891 EEPROM.write (pos + i, byte_buffer[i]);
894 EEPROM.write (pos + size_buffer, 0x00);
895 if (!EEPROM.commit()) {
900 #endif //SETTINGS_IN_EEPROM
901 #if ESP_SAVE_SETTINGS == SETTINGS_IN_PREFERENCES
903 if (!prefs.begin(NAMESPACE,
false)) {
904 log_esp3d(
"Error opening %s", NAMESPACE);
907 String p =
"P_" + String(pos);
908 uint8_t r = prefs.putString(p.c_str(), byte_buffer);
910 if (r != size_buffer) {
914 #endif //SETTINGS_IN_PREFERENCES
925 #if ESP_SAVE_SETTINGS == SETTINGS_IN_EEPROM
927 uint8_t size_buffer =
sizeof(uint32_t);
928 if ( pos + size_buffer > EEPROM_SIZE ) {
933 EEPROM.begin (EEPROM_SIZE);
935 while (i < size_buffer ) {
936 ((uint8_t *)(&res))[i] = EEPROM.read (pos + i);
940 #endif //SETTINGS_IN_EEPROM
941 #if ESP_SAVE_SETTINGS == SETTINGS_IN_PREFERENCES
943 if (!prefs.begin(NAMESPACE,
true)) {
944 log_esp3d(
"Error opening %s", NAMESPACE);
947 String p =
"P_" + String(pos);
948 res = prefs.getUInt(p.c_str(), res);
950 #endif //SETTINGS_IN_PREFERENCES
972 #if ESP_SAVE_SETTINGS == SETTINGS_IN_EEPROM
973 uint8_t size_buffer =
sizeof(uint32_t);
975 if (pos + size_buffer > EEPROM_SIZE) {
976 log_esp3d(
"Error invalid entry %d", pos);
979 EEPROM.begin (EEPROM_SIZE);
981 for (
int i = 0; i < size_buffer; i++) {
982 EEPROM.write (pos + i, ((uint8_t *)(&value))[i]);
984 if (!EEPROM.commit()) {
989 #endif //SETTINGS_IN_EEPROM
990 #if ESP_SAVE_SETTINGS == SETTINGS_IN_PREFERENCES
992 if (!prefs.begin(NAMESPACE,
false)) {
993 log_esp3d(
"Error opening %s", NAMESPACE);
996 String p =
"P_" + String(pos);
997 uint8_t r = prefs.putUInt(p.c_str(), value);
1000 log_esp3d(
"Error commit %s", p.c_str());
1003 #endif //SETTINGS_IN_PREFERENCES
1019 #if ESP_SAVE_SETTINGS == SETTINGS_IN_PREFERENCES
1022 if (!prefs.begin(NAMESPACE,
false)) {
1025 res = prefs.clear();
1027 #endif //SETTINGS_IN_PREFERENCES
1030 #if ESP_SAVE_SETTINGS == SETTINGS_IN_EEPROM
1033 #if defined(DISPLAY_DEVICE) && defined(DISPLAY_TOUCH_DRIVER)
1042 #endif // DISPLAY_DEVICE && DISPLAY_TOUCH_DRIVER
1043 #ifdef BUZZER_DEVICE
1046 #endif //BUZZER_DEVICE
1047 #if defined (WIFI_FEATURE) || defined (BLUETOOTH_FEATURE) || defined (ETH_FEATURE)
1050 #endif //WIFI_FEATURE || BLUETOOTH_FEATURE || ETH_FEATURE
1051 #ifdef NOTIFICATION_FEATURE
1062 #endif //NOTIFICATION_FEATURE
1065 #if defined (WIFI_FEATURE)
1084 #endif //WIFI_FEATURE
1086 #if defined (WIFI_FEATURE) || defined (ETH_FEATURE)
1097 #endif //WIFI_FEATURE || ETH_FEATURE
1108 #endif //FTP_FEATURE
1115 #endif //HTTP_FEATURE
1117 #ifdef TELNET_FEATURE
1124 #ifdef CAMERA_DEVICE
1127 #endif //CAMERA_DEVICE
1129 #ifdef WS_DATA_FEATURE
1134 #endif //WS_DATA_FEATURE
1135 #ifdef AUTHENTICATION_FEATURE
1140 #endif //AUTHENTICATION_FEATURE
1152 #ifdef TIMESTAMP_FEATURE
1165 #endif //TIMESTAMP_FEATURE
1174 #endif //SETTINGS_IN_EEPROM
1192 if ((version ==
"ESP3D") ||( version.length() != 7) || (version.indexOf(
"ESP3D")!=0)) {
1193 log_esp3d(
"Invalid Settings Version %s",version.c_str());
1196 v = version.substring(5).toInt();
1210 uint32_t ip_int = 0;
1212 if (ipaddr.fromString(s)) {
1221 static IPAddress ipaddr;
1223 return ipaddr.toString();
1228 #ifdef ARDUINO_ARCH_ESP32
1230 #endif //ARDUINO_ARCH_ESP32
1231 #ifdef ARDUINO_ARCH_ESP8266
1233 #endif //ARDUINO_ARCH_ESP8266
1244 for (uint8_t i = 0; i < strlen (password); i++) {
1252 #endif //ESP_SAVE_SETTINGS
#define ESP_CALIBRATION_4
#define ESP_FTP_DATA_ACTIVE_PORT
static bool write_byte(int pos, const uint8_t value)
const char DEFAULT_ESP_STRING[]
const char DEFAULT_HOSTNAME[]
#define DEFAULT_CAMERA_PORT
static const char * read_string(int pos, bool *haserror=NULL)
#define DEFAULT_ESP_STRING_SIZE
#define ESP_SETTINGS_VERSION
static bool isLocalPasswordValid(const char *password)
#define DEFAULT_TELNET_ON
#define ESP_NOTIFICATION_TYPE
#define MAX_NOTIFICATION_TOKEN_LENGTH
static uint32_t get_default_int32_value(int pos)
static uint32_t get_max_int32_value(int pos)
#define DEFAULT_STA_IP_MODE
static uint8_t get_default_byte_value(int pos)
#define DEFAULT_NOTIFICATION_TYPE
static int8_t GetSettingsVersion()
#define MIN_NOTIFICATION_TOKEN_LENGTH
const uint8_t DEFAULT_MASK_VALUE[]
const char DEFAULT_STA_SSID[]
#define DEFAULT_SD_CHECK_UPDATE_AT_BOOT
#define DEFAULT_BOOT_DELAY
const char DEFAULT_AP_PASSWORD[]
#define MAX_HOSTNAME_LENGTH
#define DEFAULT_TIME_ZONE
#define MIN_WEBSOCKET_PORT
static const String & get_default_string_value(int pos)
static uint8_t GetSDDevice(bool fromsettings=false)
#define MIN_HOSTNAME_LENGTH
#define ESP_AUTO_NOTIFICATION
#define ESP_NOTIFICATION_TOKEN1
static bool write_uint32(int pos, const uint32_t value)
#define ESP_INTERNET_TIME
static uint8_t GetFirmwareTarget(bool fromsettings=false)
const uint8_t DEFAULT_IP_VALUE[]
#define DEFAULT_NOTIFICATION_SETTINGS
#define ESP_DIRECT_SD_CHECK
#define ESP_NOTIFICATION_SETTINGS
const uint8_t DEFAULT_ADDRESS_VALUE[]
static uint8_t get_min_string_size(int pos)
#define ESP_CALIBRATION_1
static const char * GetFirmwareTargetShortName()
static bool write_IP(int pos, const uint32_t value)
#define MIN_LOCAL_PASSWORD_LENGTH
#define ESP_FTP_CTRL_PORT
static uint32_t read_IP(int pos, bool *haserror=NULL)
#define ESP_CALIBRATION_3
#define ESP_CALIBRATION_2
#define DEFAULT_GATEWAY_VALUE
#define ESP_CALIBRATION_5
#define DEFAULT_FTP_CTRL_PORT
#define DEFAULT_AUTO_NOTIFICATION_STATE
#define ESP_SD_CHECK_UPDATE_AT_BOOT
#define DEFAULT_BAUD_RATE
#define MIN_PASSWORD_LENGTH
#define DEFAULT_OUTPUT_FLAG
#define DEFAULT_SDREADER_SPEED
#define ESP_WEBSOCKET_PORT
static uint32_t get_min_int32_value(int pos)
static bool write_string(int pos, const char *byte_buffer)
#define log_esp3d(format,...)
#define DEFAULT_WEBSOCKET_ON
#define MAX_VERSION_LENGTH
static uint8_t get_max_byte(int pos)
static uint32_t read_uint32(int pos, bool *haserror=NULL)
#define CURRENT_SETTINGS_VERSION
static uint32_t get_default_IP_value(int pos)
static uint8_t get_max_string_size(int pos)
#define MAX_SERVER_ADDRESS_LENGTH
static const char * TargetBoard()
#define DEFAULT_DIRECT_SD_CHECK
const char DEFAULT_AP_SSID[]
#define DEFAULT_WEBSOCKET_PORT
#define DEFAULT_TELNET_PORT
#define DEFAULT_NOTIFICATION_TOKEN1
#define DEFAULT_ESP_RADIO_MODE
#define DEFAULT_FTP_PASSIVE_PORT
#define ESP_STA_GATEWAY_VALUE
static uint8_t read_byte(int pos, bool *haserror=NULL)
static bool write_IP_String(int pos, const char *value)
const char DEFAULT_STA_PASSWORD[]
#define MAX_WEBSOCKET_PORT
#define DEFAULT_HTTP_PORT
#define DEFAULT_AP_CHANNEL
#define ESP_STA_MASK_VALUE
static uint8_t get_min_byte(int pos)
#define MAX_LOCAL_PASSWORD_LENGTH
#define ESP_SD_DEVICE_TYPE
#define DEFAULT_CALIBRATION_DONE
#define DEFAULT_SD_DEVICE_TYPE
static String IPtoString(uint32_t ip_int)
#define ESP_FTP_DATA_PASSIVE_PORT
const char DEFAULT_SETTINGS_VERSION[]
#define DEFAULT_CALIBRATION_VALUE
#define MAX_PASSWORD_LENGTH
#define ESP_NOTIFICATION_TOKEN2
#define MIN_SERVER_ADDRESS_LENGTH
#define DEFAULT_DHT_INTERVAL
#define MIN_NOTIFICATION_SETTINGS_LENGTH
static String read_IP_String(int pos, bool *haserror=NULL)
#define DEFAULT_NOTIFICATION_TOKEN2
#define DEFAULT_FTP_ACTIVE_PORT
static uint32_t StringtoIP(const char *s)
#define MAX_NOTIFICATION_SETTINGS_LENGTH