Подскажите пожалуйста купил платку nodemcu cp2102 nodemcu залил прошивку wifi видет но подключится не магу пишет пароль не верный, пробовал другую прошивку по ip заходит только пишет, erro
прошивку в студию
/*
syncwebserver.h - ESP3D sync functions file
Copyright (c) 2014 Luc Lebosse. All rights reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef SYNCWEBSERVER_H
#define SYNCWEBSERVER_H
#include "config.h"
#define NODEBUG_WEBSOCKETS
#include <WebSocketsServer.h>
extern void handle_web_interface_root();
extern void handle_login();
extern void handleFileList();
extern void SPIFFSFileupload();
extern void handle_not_found();
extern void handle_web_command();
extern void handle_web_command_silent();
extern void handle_serial_SDFileList();
extern void SDFile_serial_upload();
extern WebSocketsServer * socket_server;
extern void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length);
#ifdef SSDP_FEATURE
extern void handle_SSDP ();
#endif
#ifdef WEB_UPDATE_FEATURE
extern void handleUpdate ();
extern void WebUpdateUpload ();
/*
syncwebserver.h - ESP3D sync functions file
Copyright (c) 2014 Luc Lebosse. All rights reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#ifndef SYNCWEBSERVER_H
#define SYNCWEBSERVER_H
#include "config.h"
#define NODEBUG_WEBSOCKETS
#include <WebSocketsServer.h>
extern void handle_web_interface_root();
extern void handle_login();
extern void handleFileList();
extern void SPIFFSFileupload();
extern void handle_not_found();
extern void handle_web_command();
extern void handle_web_command_silent();
extern void handle_serial_SDFileList();
extern void SDFile_serial_upload();
extern WebSocketsServer * socket_server;
extern void webSocketEvent(uint8_t num, WStype_t type, uint8_t * payload, size_t length);
#ifdef SSDP_FEATURE
extern void handle_SSDP ();
#endif
#ifdef WEB_UPDATE_FEATURE
extern void handleUpdate ();
extern void WebUpdateUpload ();
#endif
#endif
```cpp
/*
config.cpp- ESP3D configuration class
Copyright (c) 2014 Luc Lebosse. All rights reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include "config.h"
#include <EEPROM.h>
#ifndef FS_NO_GLOBALS
#define FS_NO_GLOBALS
#endif
#include <FS.h>
#include <WiFiUdp.h>
#include "wificonf.h"
#ifdef ARDUINO_ARCH_ESP8266
extern "C" {
#include "user_interface.h"
}
#endif
#ifdef ARDUINO_ARCH_ESP32
#include <esp_ota_ops.h>
#include "Update.h"
#include "esp_wifi.h"
#endif
#include "espcom.h"
#ifdef TIMESTAMP_FEATURE
#include <time.h>
#endif
#ifdef DHT_FEATURE
#include "DHTesp.h"
extern DHTesp dht;
#endif
#ifdef NOTIFICATION_FEATURE
#include "notifications_service.h"
#endif
uint8_t CONFIG::FirmwareTarget = UNKNOWN_FW;
byte CONFIG::output_flag = DEFAULT_OUTPUT_FLAG;
bool CONFIG::is_com_enabled = false;
#ifdef DHT_FEATURE
byte CONFIG::DHT_type = DEFAULT_DHT_TYPE;
int CONFIG::DHT_interval = DEFAULT_DHT_INTERVAL;
#endif
//Watchdog feeder
void CONFIG::wdtFeed()
{
#ifdef ARDUINO_ARCH_ESP8266
ESP.wdtFeed();
#else
void esp_task_wdt_feed();
#endif
}
void CONFIG::wait (uint32_t milliseconds)
{
#if defined(ASYNCWEBSERVER)
uint32_t timeout = millis();
while ( (millis() - timeout) < milliseconds) {
wdtFeed();
}
#else
delay(milliseconds);
#endif
}
bool CONFIG::SetFirmwareTarget (uint8_t fw)
{
if ( fw <= MAX_FW_ID) {
FirmwareTarget = fw;
return true;
} else {
return false;
}
}
uint8_t CONFIG::GetFirmwareTarget()
{
return FirmwareTarget;
}
const char* CONFIG::GetFirmwareTargetName()
{
static String response;
if ( CONFIG::FirmwareTarget == REPETIER4DV) {
response = F ("Repetier for Davinci");
} else if ( CONFIG::FirmwareTarget == REPETIER) {
response = F ("Repetier");
} else if ( CONFIG::FirmwareTarget == MARLIN) {
response = F ("Marlin");
} else if ( CONFIG::FirmwareTarget == MARLINKIMBRA) {
response = F ("MarlinKimbra");
} else if ( CONFIG::FirmwareTarget == SMOOTHIEWARE) {
response = F ("Smoothieware");
} else if ( CONFIG::FirmwareTarget == GRBL) {
response = F ("Grbl");
} else {
response = F ("???");
}
return response.c_str();
}
const char* CONFIG::GetFirmwareTargetShortName()
{
static String response;
if ( CONFIG::FirmwareTarget == REPETIER4DV) {
response = F ("repetier4davinci");
} else if ( CONFIG::FirmwareTarget == REPETIER) {
response = F ("repetier");
} else if ( CONFIG::FirmwareTarget == MARLIN) {
response = F ("marlin");
} else if ( CONFIG::FirmwareTarget == MARLINKIMBRA) {
response = F ("marlinkimbra");
} else if ( CONFIG::FirmwareTarget == SMOOTHIEWARE) {
response = F ("smoothieware");
} else if ( CONFIG::FirmwareTarget == GRBL) {
response = F ("grbl");
} else {
response = F ("???");
}
return response.c_str();
}
void CONFIG::InitFirmwareTarget()
{
uint8_t b = UNKNOWN_FW;
if (!CONFIG::read_byte (EP_TARGET_FW, &b ) ) {
b = UNKNOWN_FW;
}
if (!SetFirmwareTarget (b) ) {
SetFirmwareTarget (UNKNOWN_FW) ;
}
}
void CONFIG::InitOutput()
{
byte bflag = 0;
if (!CONFIG::read_byte (EP_OUTPUT_FLAG, &bflag ) ) {
bflag = 0;
}
CONFIG::output_flag = bflag;
}
bool CONFIG::is_locked(byte flag)
{
return ((CONFIG::output_flag & flag) == flag);
}
void CONFIG::InitDirectSD()
{
CONFIG::is_direct_sd = false;
}
bool CONFIG::DisableSerial()
{
#ifdef USE_SERIAL_0
Serial.end();
#endif
#ifdef USE_SERIAL_1
Serial1.end();
#endif
#ifdef USE_SERIAL_2
Serial2.end();
#endif
CONFIG::is_com_enabled = false;
return true;
}
bool CONFIG::InitBaudrate(long value)
{
long baud_rate = 0;
if (value > 0) {
baud_rate = value;
} else {
if ( !CONFIG::read_buffer (EP_BAUD_RATE, (byte *) &baud_rate, INTEGER_LENGTH) ) {
return false;
}
}
if ( ! (baud_rate == 9600 || baud_rate == 19200 || baud_rate == 38400 || baud_rate == 57600 || baud_rate == 115200 || baud_rate == 230400 || baud_rate == 250000 || baud_rate == 500000 || baud_rate == 921600 ) ) {
return false;
}
//setup serial
//TODO define baudrate for each Serial
#ifdef USE_SERIAL_0
if (Serial.baudRate() != baud_rate) {
#ifdef ARDUINO_ARCH_ESP8266
Serial.begin (baud_rate);
#else
Serial.begin (baud_rate, ESP_SERIAL_PARAM, ESP_RX_PIN, ESP_TX_PIN);
#endif
}
#endif
#ifdef USE_SERIAL_1
if (Serial1.baudRate() != baud_rate) {
#ifdef ARDUINO_ARCH_ESP8266
Serial1.begin (baud_rate);
#else
Serial1.begin (baud_rate, ESP_SERIAL_PARAM, ESP_RX_PIN, ESP_TX_PIN);
#endif
}
#endif
#ifdef USE_SERIAL_2
if (Serial2.baudRate() != baud_rate) {
#ifdef ARDUINO_ARCH_ESP8266
Serial2.begin (baud_rate);
#else
Serial2.begin (baud_rate, ESP_SERIAL_PARAM, ESP_RX_PIN, ESP_TX_PIN);
#endif
}
#endif
//only Serial for ESP8266
#ifdef ARDUINO_ARCH_ESP8266
Serial.setRxBufferSize (SERIAL_RX_BUFFER_SIZE);
#endif
wifi_config.baud_rate = baud_rate;
delay (100);
CONFIG::is_com_enabled = true;
return true;
}
bool CONFIG::InitExternalPorts()
{
if (!CONFIG::read_buffer (EP_WEB_PORT, (byte *) & (wifi_config.iweb_port), INTEGER_LENGTH) || !CONFIG::read_buffer (EP_DATA_PORT, (byte *) & (wifi_config.idata_port), INTEGER_LENGTH) ) {
return false;
}
if (wifi_config.iweb_port < DEFAULT_MIN_WEB_PORT || wifi_config.iweb_port > DEFAULT_MAX_WEB_PORT || wifi_config.idata_port < DEFAULT_MIN_DATA_PORT || wifi_config.idata_port > DEFAULT_MAX_DATA_PORT) {
return false;
}
return true;
}
//warning if using from async function with async param
//restart will work but reason will be wrong
//better to use "web_interface->restartmodule = true;" instead
void CONFIG::esp_restart (bool async)
{
LOG ("Restarting\r\n")
ESPCOM::flush (DEFAULT_PRINTER_PIPE);
SPIFFS.end();
if (!async) {
delay (1000);
}
#ifdef ARDUINO_ARCH_ESP8266
//ESP8266 has only serial
Serial.swap();
#endif
ESP.restart();
while (1) {
if (!async) {
delay (1);
}
};
}
#ifdef DHT_FEATURE
void CONFIG::InitDHT(bool refresh)
{
if (!refresh) {
byte bflag = DEFAULT_DHT_TYPE;
int ibuf = DEFAULT_DHT_INTERVAL;
if (!CONFIG::read_byte (EP_DHT_TYPE, &bflag ) ) {
bflag = DEFAULT_DHT_TYPE;
}
CONFIG::DHT_type = bflag;
if (!CONFIG::read_buffer (EP_DHT_INTERVAL, (byte *) &ibuf, INTEGER_LENGTH) ) {
ibuf = DEFAULT_DHT_INTERVAL;
}
CONFIG::DHT_interval = ibuf;
}
if (CONFIG::DHT_type != 255) {
dht.setup(ESP_DHT_PIN,(DHTesp::DHT_MODEL_t)CONFIG::DHT_type); // Connect DHT sensor to GPIO ESP_DHT_PIN
}
}
#endif
void CONFIG::InitPins()
{
#ifdef RECOVERY_FEATURE
pinMode (RESET_CONFIG_PIN, INPUT);
#endif
#ifdef DHT_FEATURE
CONFIG::InitDHT();
#endif
}
#if defined(TIMESTAMP_FEATURE)
void CONFIG::init_time_client()
{
String s1, s2, s3;
int8_t t1;
byte d1;
if (!CONFIG::read_string (EP_TIME_SERVER1, s1, MAX_DATA_LENGTH) ) {
s1 = FPSTR (DEFAULT_TIME_SERVER1);
}
if (!CONFIG::read_string (EP_TIME_SERVER2, s2, MAX_DATA_LENGTH) ) {
s2 = FPSTR (DEFAULT_TIME_SERVER2);
}
if (!CONFIG::read_string (EP_TIME_SERVER3, s3, MAX_DATA_LENGTH) ) {
s3 = FPSTR (DEFAULT_TIME_SERVER3);
}
if (!CONFIG::read_byte (EP_TIMEZONE, (byte *) &t1 ) ) {
t1 = DEFAULT_TIME_ZONE;
}
if (!CONFIG::read_byte (EP_TIME_ISDST, &d1 ) ) {
d1 = DEFAULT_TIME_DST;
}
configTime (3600 * (t1), d1 * 3600, s1.c_str(), s2.c_str(), s3.c_str() );
time_t now = time(nullptr);
if (WiFi.getMode() == WIFI_STA) {
int nb = 0;
while ((now < 8 * 3600 * 2) && (nb < 6)) {
wait(500);
nb++;
now = time(nullptr);
}
}
}
#endif
bool CONFIG::is_direct_sd = false;
bool CONFIG::isHostnameValid (const char * hostname)
{
//limited size
char c;
if (strlen (hostname) > MAX_HOSTNAME_LENGTH || strlen (hostname) < MIN_HOSTNAME_LENGTH) {
return false;
}
//only letter and digit
for (uint i = 0; i < strlen (hostname); i++) {
c = hostname[i];
if (! (isdigit (c) || isalpha (c) || c == '_') ) {
return false;
}
if (c == ' ') {
return false;
}
}
return true;
}
bool CONFIG::isSSIDValid (const char * ssid)
{
//limited size
//char c;
if (strlen (ssid) > MAX_SSID_LENGTH || strlen (ssid) < MIN_SSID_LENGTH) {
return false;
}
//only printable
for (uint i = 0; i < strlen (ssid); i++) {
if (!isPrintable (ssid[i]) ) {
return false;
}
}
return true;
}
bool CONFIG::isPasswordValid (const char * password)
{
//limited size
if (strlen (password) > MAX_PASSWORD_LENGTH) {
return false;
}
#if MIN_PASSWORD_LENGTH > 0
if (strlen (password) < MIN_PASSWORD_LENGTH) {
) return false;
}
#endif
//no space allowed
for (uint i = 0; i < strlen (password); i++)
if (password[i] == ' ') {
return false;
}
return true;
}
bool CONFIG::isLocalPasswordValid (const char * password)
{
char c;
//limited size
if ( (strlen (password) > MAX_LOCAL_PASSWORD_LENGTH) || (strlen (password) < MIN_LOCAL_PASSWORD_LENGTH) ) {
return false;
}
//no space allowed
for (uint i = 0; i < strlen (password); i++) {
c = password[i];
if (c == ' ') {
return false;
}
}
return true;
}
bool CONFIG::isIPValid (const char * IP)
{
//limited size
int internalcount = 0;
int dotcount = 0;
bool previouswasdot = false;
char c;
if (strlen (IP) > 15 || strlen (IP) == 0) {
return false;
}
//cannot start with .
if (IP[0] == '.') {
return false;
}
//only letter and digit
for (uint i = 0; i < strlen (IP); i++) {
c = IP[i];
if (isdigit (c) ) {
//only 3 digit at once
internalcount++;
previouswasdot = false;
if (internalcount > 3) {
return false;
}
} else if (c == '.') {
//cannot have 2 dots side by side
if (previouswasdot) {
return false;
}
previouswasdot = true;
internalcount = 0;
dotcount++;
}//if not a dot neither a digit it is wrong
else {
return false;
}
}
//if not 3 dots then it is wrong
if (dotcount != 3) {
return false;
}
//cannot have the last dot as last char
if (IP[strlen (IP) - 1] == '.') {
return false;
}
return true;
}
char * CONFIG::intTostr (int value)
{
static char result [12];
sprintf (result, "%d", value);
return result;
}
String CONFIG::formatBytes (uint64_t bytes)
{
if (bytes < 1024) {
return String ((uint16_t)bytes) + " B";
} else if (bytes < (1024 * 1024) ) {
return String ((float)(bytes / 1024.0)) + " KB";
} else if (bytes < (1024 * 1024 * 1024) ) {
return String ((float)(bytes / 1024.0 / 1024.0)) + " MB";
} else {
return String ((float)(bytes / 1024.0 / 1024.0 / 1024.0)) + " GB";
}
}
//helper to convert string to IP
//do not use IPAddress.fromString() because lack of check point and error result
//return number of parts
byte CONFIG::split_ip (const char * ptr, byte * part)
{
if (strlen (ptr) > 15 || strlen (ptr) < 7) {
part[0] = 0;
part[1] = 0;
part[2] = 0;
part[3] = 0;
return 0;
}
char pstart [16];
char * ptr2;
strcpy (pstart, ptr);
ptr2 = pstart;
byte i = strlen (pstart);
byte pos = 0;
for (byte j = 0; j < i; j++) {
if (pstart[j] == '.') {
if (pos == 4) {
part[0] = 0;
part[1] = 0;
part[2] = 0;
part[3] = 0;
return 0;
}
pstart[j] = 0x0;
part[pos] = atoi (ptr2);
pos++;
ptr2 = &pstart[j + 1];
}
}
part[pos] = atoi (ptr2);
return pos + 1;
}
//just simple helper to convert mac address to string
char * CONFIG::mac2str (uint8_t mac [WL_MAC_ADDR_LENGTH])
{
static char macstr [18];
if (0 > sprintf (macstr, "%02X:%02X:%02X:%02X:%02X:%02X", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]) ) {
strcpy (macstr, "00:00:00:00:00:00");
}
return macstr;
}
bool CONFIG::set_EEPROM_version(uint8_t v)
{
byte byte_buffer[6];
byte_buffer[0]='E';
byte_buffer[1]='S';
byte_buffer[2]='P';
byte_buffer[3]='3';
byte_buffer[4]='D';
byte_buffer[5]=v;
return CONFIG::write_buffer (EP_EEPROM_VERSION, byte_buffer, 6);
}
uint8_t CONFIG::get_EEPROM_version()
{
byte byte_buffer[6];
long baud_rate;
if (!CONFIG::read_buffer (EP_EEPROM_VERSION, byte_buffer, 6)) {
return EEPROM_V0;
}
if ((byte_buffer[0]=='E') && (byte_buffer[1]=='S') && (byte_buffer[2]=='P')&& (byte_buffer[3]=='3') && (byte_buffer[4]=='D')) {
return byte_buffer[5];
}
if ( !CONFIG::read_buffer (EP_BAUD_RATE, (byte *) &baud_rate, INTEGER_LENGTH) ) {
return EEPROM_V0;
}
if ((baud_rate == 9600 || baud_rate == 19200 || baud_rate == 38400 || baud_rate == 57600 || baud_rate == 115200 || baud_rate == 230400 || baud_rate == 250000 || baud_rate == 500000 || baud_rate == 921600 ) ) {
return EEPROM_V1;
}
return EEPROM_V0;
}
bool CONFIG::adjust_EEPROM_settings()
{
uint8_t v = get_EEPROM_version();
bool bdone =false;
if (v == EEPROM_CURRENT_VERSION) {
return true;
}
if (v == 1) {
bdone =true;
#ifdef SDCARD_FEATURE
if (!CONFIG::write_byte (EP_SD_SPEED_DIV, DEFAULT_SDREADER_SPEED) ) {
bdone =false;
}
#endif
#ifdef DHT_FEATURE
if (!CONFIG::write_buffer (EP_DHT_INTERVAL, (const byte *) &DEFAULT_DHT_INTERVAL, INTEGER_LENGTH) ) {
bdone =false;
}
if (!CONFIG::write_byte (EP_DHT_TYPE, DEFAULT_DHT_TYPE) ) {
bdone =false;
}
#endif
if (!CONFIG::write_byte (EP_OUTPUT_FLAG, DEFAULT_OUTPUT_FLAG) ) {
bdone =false;
}
}
if (bdone) {
set_EEPROM_version(EEPROM_CURRENT_VERSION);
}
return bdone;
}
//read a string
//a string is multibyte + \0, this is won't work if 1 char is multibyte like chinese char
bool CONFIG::read_string (int pos, char byte_buffer[], int size_max)
{
//check if parameters are acceptable
if (size_max == 0 || pos + size_max + 1 > EEPROM_SIZE || byte_buffer == NULL) {
LOG ("Error read string\r\n")
return false;
}
EEPROM.begin (EEPROM_SIZE);
byte b = 13; // non zero for the while loop below
int i = 0;
//read until max size is reached or \0 is found
while (i < size_max && b != 0) {
b = EEPROM.read (pos + i);
byte_buffer[i] = b;
i++;
}
// Be sure there is a 0 at the end.
if (b != 0) {
byte_buffer[i - 1] = 0x00;
}
EEPROM.end();
return true;
}
bool CONFIG::read_string (int pos, String & sbuffer, int size_max)
{
//check if parameters are acceptable
if (size_max == 0 || pos + size_max + 1 > EEPROM_SIZE ) {
LOG ("Error read string\r\n")
return false;
}
byte b = 13; // non zero for the while loop below
int i = 0;
sbuffer = "";
EEPROM.begin (EEPROM_SIZE);
//read until max size is reached or \0 is found
while (i < size_max && b != 0) {
b = EEPROM.read (pos + i);
if (b != 0) {
sbuffer += char (b);
}
i++;
}
EEPROM.end();
return true;
}
//read a buffer of size_buffer
bool CONFIG::read_buffer (int pos, byte byte_buffer[], int size_buffer)
{
//check if parameters are acceptable
if (size_buffer == 0 || pos + size_buffer > EEPROM_SIZE || byte_buffer == NULL) {
LOG ("Error read buffer\r\n")
return false;
}
int i = 0;
EEPROM.begin (EEPROM_SIZE);
//read until max size is reached
while (i < size_buffer ) {
byte_buffer[i] = EEPROM.read (pos + i);
i++;
}
EEPROM.end();
return true;
}
//read a flag / byte
bool CONFIG::read_byte (int pos, byte * value)
{
//check if parameters are acceptable
if (pos + 1 > EEPROM_SIZE) {
LOG ("Error read byte\r\n")
return false;
}
EEPROM.begin (EEPROM_SIZE);
value[0] = EEPROM.read (pos);
EEPROM.end();
return true;
}
bool CONFIG::write_string (int pos, const __FlashStringHelper *str)
{
String stmp = str;
return write_string (pos, stmp.c_str() );
}
//write a string (array of byte with a 0x00 at the end)
bool CONFIG::write_string (int pos, const char * byte_buffer)
{
int size_buffer;
int maxsize = EEPROM_SIZE;
size_buffer = strlen (byte_buffer);
//check if parameters are acceptable
switch (pos) {
case EP_ADMIN_PWD:
case EP_USER_PWD:
maxsize = MAX_LOCAL_PASSWORD_LENGTH;
break;
case EP_AP_SSID:
case EP_STA_SSID:
maxsize = MAX_SSID_LENGTH;
break;
case EP_AP_PASSWORD:
case EP_STA_PASSWORD:
maxsize = MAX_PASSWORD_LENGTH;
break;
case EP_HOSTNAME:
maxsize = MAX_HOSTNAME_LENGTH;
break;
case EP_TIME_SERVER1:
case EP_TIME_SERVER2:
case EP_TIME_SERVER3:
maxsize = MAX_DATA_LENGTH;
break;
case ESP_NOTIFICATION_TOKEN1:
case ESP_NOTIFICATION_TOKEN2:
maxsize = MAX_NOTIFICATION_TOKEN_LENGTH;
break;
case ESP_NOTIFICATION_SETTINGS:
maxsize = MAX_NOTIFICATION_SETTINGS_LENGTH;
break;
default:
maxsize = EEPROM_SIZE;
break;
}
if ( pos + size_buffer + 1 > EEPROM_SIZE || size_buffer > maxsize ) {
LOG ("Error write string\r\n")
return false;
}
if (!((pos == EP_STA_PASSWORD) || (pos == EP_AP_PASSWORD))) {
if((size_buffer == 0 ) || (byte_buffer == NULL )) {
LOG ("Error write string\r\n")
return false;
}
}
//copy the value(s)
EEPROM.begin (EEPROM_SIZE);
for (int i = 0; i < size_buffer; i++) {
EEPROM.write (pos + i, byte_buffer[i]);
}
//0 terminal
EEPROM.write (pos + size_buffer, 0x00);
EEPROM.commit();
EEPROM.end();
return true;
}
//write a buffer
bool CONFIG::write_buffer (int pos, const byte * byte_buffer, int size_buffer)
{
//check if parameters are acceptable
if (size_buffer == 0 || pos + size_buffer > EEPROM_SIZE || byte_buffer == NULL) {
LOG ("Error write buffer\r\n")
return false;
}
EEPROM.begin (EEPROM_SIZE);
//copy the value(s)
for (int i = 0; i < size_buffer; i++) {
EEPROM.write (pos + i, byte_buffer[i]);
}
EEPROM.commit();
EEPROM.end();
return true;
}
//read a flag / byte
bool CONFIG::write_byte (int pos, const byte value)
{
//check if parameters are acceptable
if (pos + 1 > EEPROM_SIZE) {
LOG ("Error write byte\r\n")
return false;
}
EEPROM.begin (EEPROM_SIZE);
EEPROM.write (pos, value);
EEPROM.commit();
EEPROM.end();
return true;
}
bool CONFIG::reset_config()
{
if (!CONFIG::write_byte (EP_WIFI_MODE, DEFAULT_WIFI_MODE) ) {
return false;
}
if (!CONFIG::write_buffer (EP_BAUD_RATE, (const byte *) &DEFAULT_BAUD_RATE, INTEGER_LENGTH) ) {
return false;
}
if (!CONFIG::write_string (EP_AP_SSID, FPSTR (DEFAULT_AP_SSID) ) ) {
return false;
}
if (!CONFIG::write_string (EP_AP_PASSWORD, FPSTR (DEFAULT_AP_PASSWORD) ) ) {
return false;
}
if (!CONFIG::write_string (EP_STA_SSID, FPSTR (DEFAULT_STA_SSID) ) ) {
return false;
}
if (!CONFIG::write_string (EP_STA_PASSWORD, FPSTR (DEFAULT_STA_PASSWORD) ) ) {
return false;
}
if (!CONFIG::write_byte (EP_AP_IP_MODE, DEFAULT_AP_IP_MODE) ) {
return false;
}
if (!CONFIG::write_byte (EP_STA_IP_MODE, DEFAULT_STA_IP_MODE) ) {
return false;
}
if (!CONFIG::write_buffer (EP_STA_IP_VALUE, DEFAULT_IP_VALUE, IP_LENGTH) ) {
return false;
}
if (!CONFIG::write_buffer (EP_STA_MASK_VALUE, DEFAULT_MASK_VALUE, IP_LENGTH) ) {
return false;
}
if (!CONFIG::write_buffer (EP_STA_GATEWAY_VALUE, DEFAULT_GATEWAY_VALUE, IP_LENGTH) ) {
return false;
}
if (!CONFIG::write_byte (EP_STA_PHY_MODE, DEFAULT_PHY_MODE) ) {
return false;
}
if (!CONFIG::write_buffer (EP_AP_IP_VALUE, DEFAULT_IP_VALUE, IP_LENGTH) ) {
return false;
}
if (!CONFIG::write_buffer (EP_AP_MASK_VALUE, DEFAULT_MASK_VALUE, IP_LENGTH) ) {
return false;
}
if (!CONFIG::write_buffer (EP_AP_GATEWAY_VALUE, DEFAULT_GATEWAY_VALUE, IP_LENGTH) ) {
return false;
}
if (!CONFIG::write_byte (EP_AP_PHY_MODE, DEFAULT_PHY_MODE) ) {
return false;
}
if (!CONFIG::write_byte (EP_SLEEP_MODE, DEFAULT_SLEEP_MODE) ) {
return false;
}
if (!CONFIG::write_byte (EP_CHANNEL, DEFAULT_CHANNEL) ) {
return false;
}
if (!CONFIG::write_byte (EP_AUTH_TYPE, DEFAULT_AUTH_TYPE) ) {
return false;
}
if (!CONFIG::write_byte (EP_SSID_VISIBLE, DEFAULT_SSID_VISIBLE) ) {
return false;
}
if (!CONFIG::write_buffer (EP_WEB_PORT, (const byte *) &DEFAULT_WEB_PORT, INTEGER_LENGTH) ) {
return false;
}
if (!CONFIG::write_buffer (EP_DATA_PORT, (const byte *) &DEFAULT_DATA_PORT, INTEGER_LENGTH) ) {
return false;
}
if (!CONFIG::write_string (EP_HOSTNAME, wifi_config.get_default_hostname() ) ) {
return false;
}
if (!CONFIG::write_string (EP_ADMIN_PWD, FPSTR (DEFAULT_ADMIN_PWD) ) ) {
return false;
}
if (!CONFIG::write_string (EP_USER_PWD, FPSTR (DEFAULT_USER_PWD) ) ) {
return false;
}
if (!CONFIG::write_byte (EP_TARGET_FW, UNKNOWN_FW) ) {
return false;
}
#if defined(TIMESTAMP_FEATURE)
if (!CONFIG::write_byte (EP_TIMEZONE, DEFAULT_TIME_ZONE) ) {
return false;
}
if (!CONFIG::write_byte (EP_TIME_ISDST, DEFAULT_TIME_DST) ) {
return false;
}
if (!CONFIG::write_string (EP_TIME_SERVER1, FPSTR (DEFAULT_TIME_SERVER1) ) ) {
return false;
}
if (!CONFIG::write_string (EP_TIME_SERVER2, FPSTR (DEFAULT_TIME_SERVER2) ) ) {
return false;
}
if (!CONFIG::write_string (EP_TIME_SERVER3, FPSTR (DEFAULT_TIME_SERVER3) ) ) {
return false;
}
#endif
if (!CONFIG::write_byte (EP_OUTPUT_FLAG, DEFAULT_OUTPUT_FLAG) ) {
return false;
}
#ifdef DHT_FEATURE
if (!CONFIG::write_buffer (EP_DHT_INTERVAL, (const byte *) &DEFAULT_DHT_INTERVAL, INTEGER_LENGTH) ) {
return false;
}
if (!CONFIG::write_byte (EP_DHT_TYPE, DEFAULT_DHT_TYPE) ) {
return false;
}
#endif
#ifdef NOTIFICATION_FEATURE
if (!CONFIG::write_byte (ESP_NOTIFICATION_TYPE, DEFAULT_NOTIFICATION_TYPE) ) {
return false;
}
if (!CONFIG::write_string (ESP_NOTIFICATION_TOKEN1, DEFAULT_NOTIFICATION_TOKEN1 ) ) {
return false;
}
if (!CONFIG::write_string (ESP_NOTIFICATION_TOKEN2, DEFAULT_NOTIFICATION_TOKEN2 ) ) {
return false;
}
if (!CONFIG::write_string (ESP_NOTIFICATION_SETTINGS, DEFAULT_NOTIFICATION_SETTINGS ) ) {
return false;
}
if (!CONFIG::write_byte (ESP_AUTO_NOTIFICATION, DEFAULT_AUTO_NOTIFICATION_STATE) ) {
return false;
}
#endif
return set_EEPROM_version(EEPROM_CURRENT_VERSION);
}
void CONFIG::print_config (tpipe output, bool plaintext, ESPResponseStream *espresponse)
{
if (!plaintext) {
ESPCOM::print (F ("{\"chip_id\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Chip ID: "), output, espresponse);
}
#ifdef ARDUINO_ARCH_ESP8266
ESPCOM::print (String (ESP.getChipId() ).c_str(), output, espresponse);
#else
ESPCOM::print (String ( (uint16_t) (ESP.getEfuseMac() >> 32) ).c_str(), output, espresponse);
#endif
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"cpu\":\""), output, espresponse);
} else {
ESPCOM::print (F ("CPU Frequency: "), output, espresponse);
}
ESPCOM::print (String (ESP.getCpuFreqMHz() ).c_str(), output, espresponse);
if (plaintext) {
ESPCOM::print (F ("Mhz"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
#ifdef ARDUINO_ARCH_ESP32
if (!plaintext) {
ESPCOM::print (F ("\"cpu_temp\":\""), output, espresponse);
} else {
ESPCOM::print (F ("CPU Temperature: "), output, espresponse);
}
ESPCOM::print (String (temperatureRead(), 1).c_str(), output, espresponse);
if (plaintext) {
ESPCOM::print (F ("C"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
#endif
if (!plaintext) {
ESPCOM::print (F ("\"freemem\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Free memory: "), output, espresponse);
}
ESPCOM::print (formatBytes (ESP.getFreeHeap() ).c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\""), output, espresponse);
}
ESPCOM::print (F ("SDK"), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\":\""), output, espresponse);
} else {
ESPCOM::print (F (": "), output, espresponse);
}
ESPCOM::print (ESP.getSdkVersion(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"flash_size\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Flash Size: "), output, espresponse);
}
ESPCOM::print (formatBytes (ESP.getFlashChipSize() ).c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
#ifdef ARDUINO_ARCH_ESP8266
if (!plaintext) {
ESPCOM::print (F ("\"update_size\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Available Size for update: "), output, espresponse);
}
uint32_t flashsize = ESP.getFlashChipSize();
fs::FSInfo info;
SPIFFS.info (info);
//if higher than 1MB take out SPIFFS
if (flashsize > 1024 * 1024) {
flashsize = (1024 * 1024)-ESP.getSketchSize()-1024;
} else {
flashsize = flashsize - ESP.getSketchSize()-info.totalBytes-1024;
}
ESPCOM::print(formatBytes(flashsize).c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
if (flashsize > ( ESP.getSketchSize())) {
ESPCOM::println(F("(Ok)"), output, espresponse);
} else {
ESPCOM::println(F ("(Not enough)"), output, espresponse);
}
}
if (!plaintext) {
ESPCOM::print (F ("\"spiffs_size\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Available Size for SPIFFS: "), output, espresponse);
}
ESPCOM::print (formatBytes (info.totalBytes).c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
#else
if (!plaintext) {
ESPCOM::print (F ("\"update_size\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Available Size for update: "), output, espresponse);
}
size_t flashsize = 0;
if (esp_ota_get_running_partition()) {
const esp_partition_t* partition = esp_ota_get_next_update_partition(NULL);
if (partition) {
flashsize = partition->size;
}
}
ESPCOM::print (formatBytes (flashsize).c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
if (flashsize > 0x0) {
ESPCOM::println (F ("(Ok)"), output, espresponse);
} else {
ESPCOM::print (F ("(Not enough)"), output, espresponse);
}
}
if (!plaintext) {
ESPCOM::print (F ("\"spiffs_size\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Available Size for SPIFFS: "), output, espresponse);
}
ESPCOM::print (formatBytes (SPIFFS.totalBytes() ).c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
#endif
if (!plaintext) {
ESPCOM::print (F ("\"baud_rate\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Baud rate: "), output, espresponse);
}
uint32_t br = ESPCOM::baudRate(DEFAULT_PRINTER_PIPE);
ESPCOM::print (String (br).c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"sleep_mode\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Sleep mode: "), output, espresponse);
}
#ifdef ARDUINO_ARCH_ESP32
wifi_ps_type_t ps_type;
esp_wifi_get_ps (&ps_type);
#else
WiFiSleepType_t ps_type;
ps_type = WiFi.getSleepMode();
#endif
if (ps_type == WIFI_NONE_SLEEP) {
ESPCOM::print (F ("None"), output, espresponse);
} else if (ps_type == WIFI_LIGHT_SLEEP) {
ESPCOM::print (F ("Light"), output, espresponse);
} else if (ps_type == WIFI_MODEM_SLEEP) {
ESPCOM::print (F ("Modem"), output, espresponse);
} else {
ESPCOM::print (F ("???"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"channel\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Channel: "), output, espresponse);
}
ESPCOM::print (String (WiFi.channel() ).c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
#ifdef ARDUINO_ARCH_ESP32
uint8_t PhyMode;
if (WiFi.getMode() == WIFI_STA) {
esp_wifi_get_protocol (WIFI_IF_STA, &PhyMode);
} else {
esp_wifi_get_protocol (WIFI_IF_AP, &PhyMode);
}
#else
WiFiPhyMode_t PhyMode = WiFi.getPhyMode();
#endif
if (!plaintext) {
ESPCOM::print (F ("\"phy_mode\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Phy Mode: "), output, espresponse);
}
if (PhyMode == (WIFI_PHY_MODE_11G) ) {
ESPCOM::print (F ("11g"), output, espresponse);
} else if (PhyMode == (WIFI_PHY_MODE_11B) ) {
ESPCOM::print (F ("11b"), output, espresponse);
} else if (PhyMode == (WIFI_PHY_MODE_11N) ) {
ESPCOM::print (F ("11n"), output, espresponse);
} else {
ESPCOM::print (F ("???"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"web_port\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Web port: "), output, espresponse);
}
ESPCOM::print (String (wifi_config.iweb_port).c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"data_port\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Data port: "), output, espresponse);
}
#ifdef TCP_IP_DATA_FEATURE
ESPCOM::print (String (wifi_config.idata_port).c_str(), output, espresponse);
#else
ESPCOM::print (F ("Disabled"), output, espresponse);
#endif
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (WiFi.getMode() == WIFI_STA || WiFi.getMode() == WIFI_AP_STA) {
if (!plaintext) {
ESPCOM::print (F ("\"hostname\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Hostname: "), output, espresponse);
}
#ifdef ARDUINO_ARCH_ESP32
ESPCOM::print (WiFi.getHostname(), output, espresponse);
#else
ESPCOM::print (WiFi.hostname().c_str(), output, espresponse);
#endif
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
}
if (!plaintext) {
ESPCOM::print (F ("\"active_mode\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Active Mode: "), output, espresponse);
}
if (WiFi.getMode() == WIFI_STA) {
ESPCOM::print (F ("STA ("), output, espresponse);
ESPCOM::print (WiFi.macAddress().c_str(), output, espresponse);
ESPCOM::print (F (")"), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (WiFi.isConnected() ) {
if (!plaintext) {
ESPCOM::print (F ("\"connected_ssid\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Connected to: "), output, espresponse);
}
ESPCOM::print (WiFi.SSID().c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"connected_signal\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Signal: "), output, espresponse);
}
ESPCOM::print (String (wifi_config.getSignal (WiFi.RSSI() ) ).c_str(), output, espresponse);
ESPCOM::print (F ("%"), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
} else {
if (!plaintext) {
ESPCOM::print (F ("\"connection_status\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Connection Status: "), output, espresponse);
}
ESPCOM::print (F ("Connection Status: "), output, espresponse);
if (WiFi.status() == WL_DISCONNECTED) {
ESPCOM::print (F ("Disconnected"), output, espresponse);
} else if (WiFi.status() == WL_CONNECTION_LOST) {
ESPCOM::print (F ("Connection lost"), output, espresponse);
} else if (WiFi.status() == WL_CONNECT_FAILED) {
ESPCOM::print (F ("Connection failed"), output, espresponse);
} else if (WiFi.status() == WL_NO_SSID_AVAIL) {
ESPCOM::print (F ("No connection"), output, espresponse);
} else if (WiFi.status() == WL_IDLE_STATUS ) {
ESPCOM::print (F ("Idle"), output, espresponse);
} else {
ESPCOM::print (F ("Unknown"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
}
if (!plaintext) {
ESPCOM::print (F ("\"ip_mode\":\""), output, espresponse);
} else {
ESPCOM::print (F ("IP Mode: "), output, espresponse);
}
#ifdef ARDUINO_ARCH_ESP32
tcpip_adapter_dhcp_status_t dhcp_status;
tcpip_adapter_dhcpc_get_status (TCPIP_ADAPTER_IF_STA, &dhcp_status);
if (dhcp_status == TCPIP_ADAPTER_DHCP_STARTED)
#else
if (wifi_station_dhcpc_status() == DHCP_STARTED)
#endif
{
ESPCOM::print (F ("DHCP"), output, espresponse);
} else {
ESPCOM::print (F ("Static"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"ip\":\""), output, espresponse);
} else {
ESPCOM::print (F ("IP: "), output, espresponse);
}
ESPCOM::print (WiFi.localIP().toString().c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"gw\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Gateway: "), output, espresponse);
}
ESPCOM::print (WiFi.gatewayIP().toString().c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"msk\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Mask: "), output, espresponse);
}
ESPCOM::print (WiFi.subnetMask().toString().c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"dns\":\""), output, espresponse);
} else {
ESPCOM::print (F ("DNS: "), output, espresponse);
}
ESPCOM::print (WiFi.dnsIP().toString().c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"disabled_mode\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Disabled Mode: "), output, espresponse);
}
ESPCOM::print (F ("AP ("), output, espresponse);
ESPCOM::print (WiFi.softAPmacAddress().c_str(), output, espresponse);
ESPCOM::print (F (")"), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
} else if (WiFi.getMode() == WIFI_AP) {
ESPCOM::print (F ("AP ("), output, espresponse);
ESPCOM::print (WiFi.softAPmacAddress().c_str(), output, espresponse);
ESPCOM::print (F (")"), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
//get current config
#ifdef ARDUINO_ARCH_ESP32
wifi_ap_config_t apconfig;
wifi_config_t conf;
esp_wifi_get_config (WIFI_IF_AP, &conf);
apconfig.ssid_hidden = conf.ap.ssid_hidden;
apconfig.authmode = conf.ap.authmode;
apconfig.max_connection = conf.ap.max_connection;
#else
struct softap_config apconfig;
wifi_softap_get_config (&apconfig);
#endif
if (!plaintext) {
ESPCOM::print (F ("\"ap_ssid\":\""), output, espresponse);
} else {
ESPCOM::print (F ("SSID: "), output, espresponse);
}
#ifdef ARDUINO_ARCH_ESP32
ESPCOM::print ( (const char*) conf.ap.ssid, output, espresponse);
#else
ESPCOM::print ( (const char*) apconfig.ssid, output, espresponse);
#endif
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"ssid_visible\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Visible: "), output, espresponse);
}
ESPCOM::print ( (apconfig.ssid_hidden == 0) ? F ("Yes") : F ("No"), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"ssid_authentication\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Authentication: "), output, espresponse);
}
if (apconfig.authmode == AUTH_OPEN) {
ESPCOM::print (F ("None"), output, espresponse);
} else if (apconfig.authmode == AUTH_WEP) {
ESPCOM::print (F ("WEP"), output, espresponse);
} else if (apconfig.authmode == AUTH_WPA_PSK) {
ESPCOM::print (F ("WPA"), output, espresponse);
} else if (apconfig.authmode == AUTH_WPA2_PSK) {
ESPCOM::print (F ("WPA2"), output, espresponse);
} else {
ESPCOM::print (F ("WPA/WPA2"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"ssid_max_connections\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Max Connections: "), output, espresponse);
}
ESPCOM::print (String (apconfig.max_connection).c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"ssid_dhcp\":\""), output, espresponse);
} else {
ESPCOM::print (F ("DHCP Server: "), output, espresponse);
}
#ifdef ARDUINO_ARCH_ESP32
tcpip_adapter_dhcp_status_t dhcp_status;
tcpip_adapter_dhcps_get_status (TCPIP_ADAPTER_IF_AP, &dhcp_status);
if (dhcp_status == TCPIP_ADAPTER_DHCP_STARTED)
#else
if (wifi_softap_dhcps_status() == DHCP_STARTED)
#endif
{
ESPCOM::print (F ("Started"), output, espresponse);
} else {
ESPCOM::print (F ("Stopped"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"ip\":\""), output, espresponse);
} else {
ESPCOM::print (F ("IP: "), output, espresponse);
}
ESPCOM::print (WiFi.softAPIP().toString().c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
#ifdef ARDUINO_ARCH_ESP32
tcpip_adapter_ip_info_t ip;
tcpip_adapter_get_ip_info (TCPIP_ADAPTER_IF_AP, &ip);
#else
struct ip_info ip;
wifi_get_ip_info (SOFTAP_IF, &ip);
#endif
if (!plaintext) {
ESPCOM::print (F ("\"gw\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Gateway: "), output, espresponse);
}
ESPCOM::print (IPAddress (ip.gw.addr).toString().c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"msk\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Mask: "), output, espresponse);
}
ESPCOM::print (IPAddress (ip.netmask.addr).toString().c_str(), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"connected_clients\":["), output, espresponse);
} else {
ESPCOM::print (F ("Connected clients: "), output, espresponse);
}
int client_counter = 0;
#ifdef ARDUINO_ARCH_ESP32
wifi_sta_list_t station;
tcpip_adapter_sta_list_t tcpip_sta_list;
esp_wifi_ap_get_sta_list (&station);
tcpip_adapter_get_sta_list (&station, &tcpip_sta_list);
#else
struct station_info * station;
station = wifi_softap_get_station_info();
#endif
String stmp = "";
#ifdef ARDUINO_ARCH_ESP32
for (int i = 0; i < station.num; i++) {
#else
while (station) {
#endif
if (stmp.length() > 0) {
if (!plaintext) {
stmp += F (",");
} else {
stmp += F ("\n");
}
}
if (!plaintext) {
stmp += F ("{\"bssid\":\"");
}
//BSSID
#ifdef ARDUINO_ARCH_ESP32
stmp += CONFIG::mac2str (tcpip_sta_list.sta[i].mac);
#else
stmp += CONFIG::mac2str (station->bssid);
#endif
if (!plaintext) {
stmp += F ("\",\"ip\":\"");
} else {
stmp += F (" ");
}
//IP
#ifdef ARDUINO_ARCH_ESP32
stmp += IPAddress (tcpip_sta_list.sta[i].ip.addr).toString().c_str();
#else
stmp += IPAddress ( (const uint8_t *) &station->ip).toString().c_str();
#endif
if (!plaintext) {
stmp += F ("\"}");
}
//increment counter
client_counter++;
#ifdef ARDUINO_ARCH_ESP32
}
#else
//go next record
station = STAILQ_NEXT (station, next);
}
wifi_softap_free_station_info();
#endif
if (!plaintext) {
ESPCOM::print (stmp.c_str(), output, espresponse);
ESPCOM::print (F ("],"), output, espresponse);
} else {
//display number of client
ESPCOM::println (String (client_counter).c_str(), output, espresponse);
//display list if any
if (stmp.length() > 0) {
ESPCOM::println (stmp.c_str(), output, espresponse);
}
}
if (!plaintext) {
ESPCOM::print (F ("\"disabled_mode\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Disabled Mode: "), output, espresponse);
}
ESPCOM::print (F ("STA ("), output, espresponse);
ESPCOM::print (WiFi.macAddress().c_str(), output, espresponse);
ESPCOM::print (F (") is disabled"), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
} else if (WiFi.getMode() == WIFI_AP_STA)
{
ESPCOM::print (F ("Mixed"), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext) {
ESPCOM::print (F ("\"active_mode\":\""), output, espresponse);
} else {
ESPCOM::print (F ("Active Mode: "), output, espresponse);
}
ESPCOM::print (F ("AP ("), output, espresponse);
ESPCOM::print (WiFi.softAPmacAddress().c_str(), output, espresponse);
ESPCOM::println (F (")"), output, espresponse);
ESPCOM::print (F ("STA ("), output, espresponse);
ESPCOM::print (WiFi.macAddress().c_str(), output, espresponse);
ESPCOM::print (F (")"), output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
} else
{
ESPCOM::print ("Wifi Off", output, espresponse);
if (!plaintext) {
ESPCOM::print (F ("\","), output, espresponse);
} else {
ESPCOM::print (F ("\n"), output, espresponse);
}
}
if (!plaintext)
{
ESPCOM::print (F ("\"captive_portal\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("Captive portal: "), output, espresponse);
}
#ifdef CAPTIVE_PORTAL_FEATURE
ESPCOM::print (F ("Enabled"), output, espresponse);
#else
ESPCOM::print (F ("Disabled"), output, espresponse);
#endif
if (!plaintext)
{
ESPCOM::print (F ("\","), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext)
{
ESPCOM::print (F ("\"ssdp\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("SSDP: "), output, espresponse);
}
#ifdef SSDP_FEATURE
ESPCOM::print (F ("Enabled"), output, espresponse);
#else
ESPCOM::print (F ("Disabled"), output, espresponse);
#endif
if (!plaintext)
{
ESPCOM::print (F ("\","), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext)
{
ESPCOM::print (F ("\"netbios\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("NetBios: "), output, espresponse);
}
#ifdef NETBIOS_FEATURE
ESPCOM::print (F ("Enabled"), output, espresponse);
#else
ESPCOM::print (F ("Disabled"), output, espresponse);
#endif
if (!plaintext)
{
ESPCOM::print (F ("\","), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext)
{
ESPCOM::print (F ("\"mdns\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("mDNS: "), output, espresponse);
}
#ifdef MDNS_FEATURE
ESPCOM::print (F ("Enabled"), output, espresponse);
#else
ESPCOM::print (F ("Disabled"), output, espresponse);
#endif
if (!plaintext)
{
ESPCOM::print (F ("\","), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext)
{
ESPCOM::print (F ("\"web_update\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("Web Update: "), output, espresponse);
}
#ifdef WEB_UPDATE_FEATURE
ESPCOM::print (F ("Enabled"), output, espresponse);
#else
ESPCOM::print (F ("Disabled"), output, espresponse);
#endif
if (!plaintext)
{
ESPCOM::print (F ("\","), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext)
{
ESPCOM::print (F ("\"pin recovery\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("Pin Recovery: "), output, espresponse);
}
#ifdef RECOVERY_FEATURE
ESPCOM::print (F ("Enabled"), output, espresponse);
#else
ESPCOM::print (F ("Disabled"), output, espresponse);
#endif
if (!plaintext)
{
ESPCOM::print (F ("\","), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext)
{
ESPCOM::print (F ("\"autentication\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("Authentication: "), output, espresponse);
}
#ifdef AUTHENTICATION_FEATURE
ESPCOM::print (F ("Enabled"), output, espresponse);
#else
ESPCOM::print (F ("Disabled"), output, espresponse);
#endif
if (!plaintext)
{
ESPCOM::print (F ("\","), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
if (!plaintext)
{
ESPCOM::print (F ("\"target_fw\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("Target Firmware: "), output, espresponse);
}
ESPCOM::print (CONFIG::GetFirmwareTargetName(), output, espresponse);
if (!plaintext)
{
ESPCOM::print (F ("\","), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
//flag M117
if (!plaintext)
{
ESPCOM::print (F ("\"M117_output\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("M117 output: "), output, espresponse);
}
if (!CONFIG::is_locked(FLAG_BLOCK_M117))
{
ESPCOM::print (F ("Enabled"), output, espresponse);
} else
{
ESPCOM::print (F ("Disabled"), output, espresponse);
}
if (!plaintext)
{
ESPCOM::print (F ("\","), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
#ifdef NOTIFICATION_FEATURE
if (!plaintext)
{
ESPCOM::print (F ("\"Notifications\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("Notifications: "), output, espresponse);
}
if (notificationsservice.started())
{
ESPCOM::print (notificationsservice.getTypeString(), output, espresponse);
} else
{
ESPCOM::print (F ("Disabled"), output, espresponse);
}
if (!plaintext)
{
ESPCOM::print (F ("\","), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
#endif
//Flag Oled
#ifdef ESP_OLED_FEATURE
if (!plaintext)
{
ESPCOM::print (F ("\"Oled_output\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("Oled output: "), output, espresponse);
}
if (!CONFIG::is_locked(FLAG_BLOCK_OLED))
{
ESPCOM::print (F ("Enabled"), output, espresponse);
} else
{
ESPCOM::print (F ("Disabled"), output, espresponse);
}
if (!plaintext)
{
ESPCOM::print (F ("\","), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
#endif
//flag serial
if (!plaintext)
{
ESPCOM::print (F ("\"Serial_output\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("Serial output: "), output, espresponse);
}
if (!CONFIG::is_locked(FLAG_BLOCK_SERIAL))
{
ESPCOM::print (F ("Enabled"), output, espresponse);
} else
{
ESPCOM::print (F ("Disabled"), output, espresponse);
}
if (!plaintext)
{
ESPCOM::print (F ("\","), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
#ifdef WS_DATA_FEATURE
//flag websocket
if (!plaintext)
{
ESPCOM::print (F ("\"Websocket_output\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("Web socket output: "), output, espresponse);
}
if (!CONFIG::is_locked(FLAG_BLOCK_WSOCKET))
{
ESPCOM::print (F ("Enabled"), output, espresponse);
} else
{
ESPCOM::print (F ("Disabled"), output, espresponse);
}
if (!plaintext)
{
ESPCOM::print (F ("\","), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
#endif
#ifdef TCP_IP_DATA_FEATURE
//flag tcp
if (!plaintext)
{
ESPCOM::print (F ("\"TCP_output\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("TCP output: "), output, espresponse);
}
if (!CONFIG::is_locked(FLAG_BLOCK_TCP))
{
ESPCOM::print (F ("Enabled"), output, espresponse);
} else
{
ESPCOM::print (F ("Disabled"), output, espresponse);
}
if (!plaintext)
{
ESPCOM::print (F ("\","), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
#endif
#ifdef DEBUG_ESP3D
if (!plaintext)
{
ESPCOM::print (F ("\"debug\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("Debug: "), output, espresponse);
}
ESPCOM::print (F ("Debug Enabled :"), output, espresponse);
#ifdef DEBUG_OUTPUT_SPIFFS
ESPCOM::print (F ("SPIFFS"), output, espresponse);
#endif
#ifdef DEBUG_OUTPUT_SD
ESPCOM::print (F ("SD"), output, espresponse);
#endif
#ifdef DEBUG_OUTPUT_SERIAL
ESPCOM::print (F ("serial"), output, espresponse);
#endif
#ifdef DEBUG_OUTPUT_TCP
ESPCOM::print (F ("TCP"), output, espresponse);
#endif
if (!plaintext)
{
ESPCOM::print (F ("\","), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
#endif
if (!plaintext)
{
ESPCOM::print (F ("\"fw\":\""), output, espresponse);
} else
{
ESPCOM::print (F ("FW version: "), output, espresponse);
}
ESPCOM::print (FW_VERSION, output, espresponse);
#ifdef ARDUINO_ARCH_ESP8266
ESPCOM::print (" ESP8266/8586", output, espresponse);
#else
ESPCOM::print (" ESP32", output, espresponse);
#endif
if (!plaintext)
{
ESPCOM::print (F ("\"}"), output, espresponse);
} else
{
ESPCOM::print (F ("\n"), output, espresponse);
}
}
#ifdef DEBUG_OUTPUT_SOCKET
#if defined(ARDUINO_ARCH_ESP8266)
#define NODEBUG_WEBSOCKETS
#include <WebSocketsServer.h>
extern WebSocketsServer * socket_server;
const char * pathToFileName(const char * path)
{
size_t i = 0;
size_t pos = 0;
char * p = (char *)path;
while(*p) {
i++;
if(*p == '/' || *p == '\\') {
pos = i;
}
p++;
}
return path+pos;
}
#endif //ARDUINO_ARCH_ESP8266
void log_socket(const char *format, ...){
if(socket_server){
char loc_buf[255];
char * temp = loc_buf;
va_list arg;
va_list copy;
va_start(arg, format);
va_copy(copy, arg);
size_t len = vsnprintf(NULL, 0, format, arg);
va_end(copy);
if(len >= sizeof(loc_buf)){
temp = new char[len+1];
if(temp == NULL) {
return;
}
}
len = vsnprintf(temp, len+1, format, arg);
socket_server->sendBIN(ESPCOM::current_socket_id,(uint8_t *)temp,strlen(temp));
va_end(arg);
if(len > 255){
delete[] temp;
}
}
}
#endif
и где ты его взял?
библиотеку недостающую не искал, если 36 строку замаркировать, то компилируется (ESP8266 D1 mini)
//#define USING_AXTLS
#if defined(USING_AXTLS)
#include "WiFiClientSecureAxTLS.h"
. Variables and constants in RAM (global, static), used 34336 / 80192 bytes (42%)
║ SEGMENT BYTES DESCRIPTION
╠══ DATA 1512 initialized variables
╠══ RODATA 5304 constants
╚══ BSS 27520 zeroed variables
. Instruction RAM (IRAM_ATTR, ICACHE_RAM_ATTR), used 62115 / 65536 bytes (94%)
║ SEGMENT BYTES DESCRIPTION
╠══ ICACHE 32768 reserved space for flash instruction cache
╚══ IRAM 29347 code in IRAM
. Code in flash (default, ICACHE_FLASH_ATTR), used 506460 / 1048576 bytes (48%)
║ SEGMENT BYTES DESCRIPTION
╚══ IROM 506460 code in flash
Несколько библиотек найдено для "WebSocketsServer.h"
Используется: D:\arduino-1.8.19-YA\portable\sketchbook\libraries\arduinoWebSockets-master
Не используется: D:\arduino-1.8.19-YA\portable\sketchbook\libraries\arduinoWebSockets
Используем библиотеку ESP8266WiFi версии 1.0 из папки: D:\arduino-1.8.19-YA\portable\packages\esp8266\hardware\esp8266\3.1.1\libraries\ESP8266WiFi
Используем библиотеку ESP8266mDNS версии 1.2 из папки: D:\arduino-1.8.19-YA\portable\packages\esp8266\hardware\esp8266\3.1.1\libraries\ESP8266mDNS
Используем библиотеку ESP8266WebServer версии 1.0 из папки: D:\arduino-1.8.19-YA\portable\packages\esp8266\hardware\esp8266\3.1.1\libraries\ESP8266WebServer
Используем библиотеку EEPROM версии 1.0 из папки: D:\arduino-1.8.19-YA\portable\packages\esp8266\hardware\esp8266\3.1.1\libraries\EEPROM
Используем библиотеку DNSServer версии 1.1.1 из папки: D:\arduino-1.8.19-YA\portable\packages\esp8266\hardware\esp8266\3.1.1\libraries\DNSServer
Используем библиотеку arduinoWebSockets-master версии 2.3.7 из папки: D:\arduino-1.8.19-YA\portable\sketchbook\libraries\arduinoWebSockets-master
Используем библиотеку ESP8266SSDP версии 1.0 из папки: D:\arduino-1.8.19-YA\portable\packages\esp8266\hardware\esp8266\3.1.1\libraries\ESP8266SSDP
Используем библиотеку Hash версии 1.0 из папки: D:\arduino-1.8.19-YA\portable\packages\esp8266\hardware\esp8266\3.1.1\libraries\Hash
Есть еще прошивка прошивает подключается но пишет,
Error opening: /home.tpl
там же всё написано, ядро 2.5.2 ставь и будет тебе счастье, но на 3.1.1 тоже компилируется, если строку 36 замаркировать
не поленился, поставил это ядро, всё компилируется и работает, по крайней мере на вэбморду по адресу 192.168.0.1 захожу, тут два пункта доступны Flash Filesystem и Firware Update еще объём свободной и занятой памяти показывает
в мониторе порта
M117 Error Wifi AP!
M117 192.168.0.1
M117 New client
Я только начель разбиратса, пока учусь, я скачал скетч для 3д принтера все перепробовал, скетч прошиваетса сеть пояляетса но при подключение к сети пишет не верный пароль.
так исправь на верные ищи поиском (CTRL+F)
Вот в этом и причина заменил пароль и все равно пишет не верный пароль.
а имя точки кто менять будет, см. режим STA