• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Wifi manager - ну да, работает и что дальше??

Neznayka

New member
Ссылку OTA Updates — ESP8266 Arduino Core 2.4.0 documentation я дал, переведите в google будет понятней.
Результат тот же
14:52:19 [ERROR]: No response from device
Антивирус брандмауэр отключал, бонжур ставил, хотя какое эпл-мак сюда отношение имеет. Библиотека косячная. Доказательством тому поиск в гугл, то ей чего то не хватает, то версия (питон) не та, вообщем это для того что б STA пасс поменять )) . Буду искать решение через менеджер из AP/
PS если библиотека сделана с умом, то работает с пол оборота, и это не дело кривых рук.... Свою систему подстраивать переустанавливать из за этого нет желания. до этого ни с одной библиотекой проблем не было
 
Последнее редактирование:

CodeNameHawk

Moderator
Команда форума
PS если библиотека сделана с умом, то работает с пол оборота, и это не дело кривых рук....
У многих библиотека работает нормально, у некоторых работает с особенностями(как у меня, первым запускаю роутер, потом комп, потом есп и все работает(недавно поменял роутер, так теперь, если он загружен близко к 100%, тоже не обновляется, так это проблема железа, а не библиотеки)), некоторые не разобрались как ее "готовить", а в этом может помочь отладочная информация с Serial через COM порт.

Буду искать решение через менеджер из AP/
А чего его искать?
Тут(в примере WiFiMenager->AutoConnect) же по английски написано "// put your setup code here, to run once:" и "// put your main code here, to run repeatedly:"
"Перевести"? Я бы конечно мог написать, тупо скопируйте то что у вас в Setup в их Setup, оставив то что там еже есть, то что в Loop в Loop, но от этого пропало бы все удовольствие от программирования.
 
Последнее редактирование:

Neznayka

New member
У многих библиотека работает нормально, у некоторых работает с особенностями(как у меня, первым запускаю роутер, потом комп, потом есп и все работает(недавно поменял роутер, так теперь, если он загружен близко к 100%, тоже не обновляется, так это проблема железа, а не библиотеки)), некоторые не разобрались как ее "готовить", а в этом может помочь отладочная информация с Serial через COM порт.


А чего его искать?
Тут(в примере WiFiMenager->AutoConnect) же по английски написано "// put your setup code here, to run once:" и "// put your main code here, to run repeatedly:"
Перевести?
Так я в начале писал, что как пример он работает, ка только я совмещаю со своим скетчем, работает либо он либо мой, так как адрес уних в итоге один и тот же, а вообще он вот и с кнопкой сброса памяти даже, если надо
Код:
#include <FS.h>
#include <ESP8266WiFi.h>         
#include <ArduinoJson.h>        
//needed for library
#include <ESP8266WebServer.h>
#include <DNSServer.h>
#include <WiFiManager.h>      //   https://github.com/kentaylor/WiFiManager   ////   https://github.com/tzapu/WiFiManager

// Constants

#define Config_Network 5           /// BUTTON Config Wifi  !!!!!!!!!   СБРОС НАСТРОЕК
#define Led_No_Config_Network 13     /// LED No Config Wifi  ///  RED 
#define Led_Connect_Network 12       /// LED Connection client   ///   GREEN

// Variables

// Indicates whether ESP has WiFi credentials saved from previous session
bool initialConfig = false;

// Setup function
void setup() {
  // Put your setup code here, to run once
  Serial.begin(115200);
  Serial.println("\n Starting");

  pinMode(Config_Network, INPUT_PULLUP);
  pinMode(Led_No_Config_Network, OUTPUT);
  pinMode(Led_Connect_Network, OUTPUT);
   
  WiFi.printDiag(Serial); //Remove this line if you do not want to see WiFi password printed

  if (WiFi.SSID() == "") {
    Serial.println("We haven't got any access point credentials, so get them now");
    initialConfig = true;
  } else {
       
    WiFi.mode(WIFI_STA);
    unsigned long startedAt = millis();
    Serial.print("After waiting ");
    int connRes = WiFi.waitForConnectResult();
    float waited = (millis()- startedAt);
    Serial.print(waited/1000);
    Serial.print(" secs in setup() connection result is ");
    Serial.println(connRes);
  }

    if (WiFi.status()!=WL_CONNECTED){
    Serial.println("Failed to connect, finishing setup anyway");
  } else{
    Serial.print("Local ip: ");
    Serial.println(WiFi.localIP());
  }
}

// Loop function

void loop() {

 
  // is configuration portal requested? /// button
  if ( (digitalRead(Config_Network) == HIGH) || (initialConfig)) { 
     
    digitalWrite(Led_No_Config_Network, HIGH); // Turn LED off as we are not in configuration mode.       
    Serial.println("Configuration portal requested");   


       
    WiFiManager wifiManager;          
    wifiManager.setConfigPortalTimeout(180);  ///// reset esp8266 180 seg
   

    WiFiManagerParameter custom_text("<p>Test for PDAControl Excellent </p>");
    wifiManager.addParameter(&custom_text);

     ////Nota: Requiere mas .. funciones para capturar parametros!!!!! .............. Note: Requires more .. functions to capture parameters!!!!
     char mqtt_server[40]="PDAControl apikey example";
     WiFiManagerParameter custom_mqtt_server("server", "my parameters", mqtt_server, 40);
     wifiManager.addParameter(&custom_mqtt_server);

    
     ///  wifiManager.setCustomHeadElement("<style>html{filter: invert(100%); -webkit-filter: invert(100%);}</style>");
 
  
    wifiManager.startConfigPortal("ESP8266 manager id", "12344321");   

    ESP.reset(); // This is a bit crude. For some unknown reason webserver can only be started once per boot up
    // so resetting the device allows to go back into config mode again when it reboots.
    delay(2500);
  }
  digitalWrite(Led_No_Config_Network, LOW);

  // Configuration portal not requested, so run normal loop
  // Put your main code here, to run repeatedly...

}
 

CodeNameHawk

Moderator
Команда форума
Логика работы WiFiMenager такая, если подключился к роутеру - ничего не делать, если не подключился, то он запускает точку доступа (AP) с адресом 192.168.4.1. (Тут и коню понятно, что вы не должны запускать свою AP с адресом 192.168.4.1)
Подключившись к ней вы можете задать имя и пароль для подключения к роутеру.
 
Последнее редактирование:

Neznayka

New member
Вы не поверите, так и должно быть :)
Это по какой такой логике?? Я стартую с менеджера, для чего? чтоб попасть на свою основную страницу как по AP так и STA, естественно он должен при втором входе себя никак не проявлять, ну пока я не сделаю принудительный хард ресет кнопкой 5 еепром восстановится, и я опять попаду по менеджер, в противном случае вход будет по умолчанию на мою страницу, вот только я теперь не пойму про режим АР, который мне тоже нужен, как с ним
 

CodeNameHawk

Moderator
Команда форума
WiFiMenager предназначен, только для конфигурации доступа по STA.
Если нужно что то другое, пишите сами.
 

CodeNameHawk

Moderator
Команда форума
Я не искал, такое вам любой за 100$ напишет, а другим оно нафиг не нужно.
(если по STA есть доступ нафига еще одновременно и по АТ ?)
 

Neznayka

New member
любой за 100$ напишет
))) За такие деньги пишут чтоб в космос корабли запускать и не под 8266 а под ARM. Это раз . Второе... Когда светильник в углу комнаты включить выключить и работает комп, мне что за планшетом или мобильником, в другую комнату бежать ))) И третий вариант, понятно и кнопка локальная на нём + ко всему, но это встать надо будет, а то роутер кирдык, только из розетки
 

CodeNameHawk

Moderator
Команда форума
За такие деньги пишут чтоб в космос корабли запускать
Тогда понятно, почему каждый второй вообще до космоса не долетает.
и работает комп
У вас работает комп, а вы куда то бежать собрались, ЗАЧЕМ? Вам что, ограничили возможность с него управлять еспешкой?
 

Neznayka

New member
Тогда понятно, почему каждый второй вообще до космоса не долетает.

У вас работает комп, а вы куда то бежать собрались, ЗАЧЕМ? Вам что, ограничили возможность с него управлять еспешкой?
С него нет, но вот беда, его я выключил, а светильник забыл с него потушить. вот теперь на диване лежит смарт можно с него войти и выключить, а возможно посмотрев кино, захочется почитать, и его можно вернуть на родину. Вы видно к комфорту не стремитесь, всё руками, руками
 

Neznayka

New member
Дальше менеджера, до двух моих кнопок, не стартует
Код:
#include <FS.h>
#include <ESP8266WiFi.h> 
#include <WiFiClient.h>       
#include <ArduinoJson.h>        
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <DNSServer.h>
#include <WiFiManager.h>      //   https://github.com/kentaylor/WiFiManager   ////   https://github.com/tzapu/WiFiManager

#define Config_Network 5           /// BUTTON Config Wifi  !!!!!!!!!   СБРОС НАСТРОЕК
#define Led_No_Config_Network 13     /// LED No Config Wifi  ///  RED 
#define Led_Connect_Network 12       /// LED Connection client   ///   GREEN
int test_pin = 4;

String webPage = "";
// Indicates whether ESP has WiFi credentials saved from previous session
bool initialConfig = false;

MDNSResponder mdns;
ESP8266WebServer server(80);

// Setup function
void setup() {

  pinMode(test_pin, OUTPUT);
  digitalWrite(test_pin, LOW);
  pinMode(Config_Network, INPUT_PULLUP);
  pinMode(Led_No_Config_Network, OUTPUT);
  pinMode(Led_Connect_Network, OUTPUT);
 
  // Put your setup code here, to run once
  Serial.begin(115200);
  Serial.println("\n Starting"); 
  WiFi.printDiag(Serial); //Remove this line if you do not want to see WiFi password printed

  if (WiFi.SSID() == "") {
    Serial.println("We haven't got any access point credentials, so get them now");
    initialConfig = true;
  } else {       
    WiFi.mode(WIFI_STA);
    unsigned long startedAt = millis();
    Serial.print("After waiting ");
    int connRes = WiFi.waitForConnectResult();
    float waited = (millis()- startedAt);
    Serial.print(waited/1000);
    Serial.print(" secs in setup() connection result is ");
    Serial.println(connRes);
  }
    if (WiFi.status()!=WL_CONNECTED){
    Serial.println("Failed to connect, finishing setup anyway");
  } else{
    Serial.print("Local ip: ");
    Serial.println(WiFi.localIP());
  }
  webPage += "<!DOCTYPE HTML> <html> <head> <title>G1Tech: ESP8266 Web Server</title>";
  webPage += "<style type=\"text/css\">";
  webPage += ".label {display: inline; padding: .2em .6em .3em; font-size: 75%; font-weight: 700; line-height: 1; color: #fff; text-align: center; white-space: nowrap; vertical-align: baseline; border-radius: .25em;}";
  webPage += ".label-default {background-color: #777;}";
  webPage += ".btn {background-color: #4CAF50; border: none; color: white; padding: 16px 32px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; -webkit-transition-duration: 0.4s; transition-duration: 0.4s; cursor: pointer;}";
  webPage += ".btn-on {background-color: white; color: black; border: 2px solid #4CAF50;}";
  webPage += ".btn-on:hover {background-color: #4CAF50; color: white;}";
  webPage += ".btn-off {background-color: white; color: black; border: 2px solid #f44336;}";
  webPage += ".btn-off:hover {background-color: #f44336; color: white;}"; 
  webPage += "</style> </head> <body>";
  webPage += "<h1>G1Tech: ESP8266 Web Server</h1><h1><p class=\"label label-default\">LED #16 </p><p><a href=\"LEDOn\"><button class=\"btn btn-on\">ON</button></a>&nbsp;<a href=\"LEDOff\"><button class=\"btn btn-off\" >OFF</button></a></p></h1></body></html>";
  if (mdns.begin("esp8266", WiFi.localIP())) {
    Serial.println("MDNS responder started");
  } 
  server.on("/", [](){
    server.send(200, "text/html", webPage);
  });
  server.on("/LEDOn", [](){
    server.send(200, "text/html", webPage);
    digitalWrite(test_pin, LOW);
    Serial.println(digitalRead(test_pin));
    delay(1000);
  });
  server.on("/LEDOff", [](){
    server.send(200, "text/html", webPage);
    digitalWrite(test_pin, HIGH);
    Serial.println(digitalRead(test_pin));
    delay(1000);
  }); 
  server.begin();
  Serial.println("HTTP server started");
}

void loop() {
server.handleClient();
  // is configuration portal requested? /// button
  if ( (digitalRead(Config_Network) == HIGH) || (initialConfig)) {       
    digitalWrite(Led_No_Config_Network, HIGH); // Turn LED off as we are not in configuration mode.       
    Serial.println("Configuration portal requested");   
    WiFiManager wifiManager;          
    wifiManager.setConfigPortalTimeout(180);  ///// reset esp8266 180 seg
    WiFiManagerParameter custom_text("<p>Test for PDAControl Excellent </p>");
    wifiManager.addParameter(&custom_text);
////Note: Requires more .. functions to capture parameters!!!!
    char mqtt_server[40]="PDAControl apikey example";
    WiFiManagerParameter custom_mqtt_server("server", "my parameters", mqtt_server, 40);
    wifiManager.addParameter(&custom_mqtt_server); 
    wifiManager.startConfigPortal("ESP8266 manager id", "12344321");   
    ESP.reset(); // This is a bit crude. For some unknown reason webserver can only be started once per boot up
    // so resetting the device allows to go back into config mode again when it reboots.
    delay(2500);
  }
  digitalWrite(Led_No_Config_Network, LOW);

}
 

CodeNameHawk

Moderator
Команда форума
светильник забыл с него потушить. вот теперь на диване лежит смарт можно с него войти и выключить, а возможно посмотрев кино, захочется почитать, и его можно вернуть на родину
Выключить со смарта помешает только выключенный роутер.

А насчет программы займитесь отладкой.
 

Neznayka

New member
Выключить со смарта помешает только выключенный роутер.
Это Вы почему так решили? Я им на улице включаю, там моего роутера нет, как к точке. Да вам тоже корабли не запускать...
Код:
String _ssid     = "***********"; // Для хранения SSID
String _password = "************"; // Для хранения пароля сети
String _ssidAP = "id_AP_Home_test";   // SSID AP точки доступа
String _passwordAP = "***************"; // пароль точки доступа

// Wait for connection
  delay(1000);
  Serial.begin(115200);
  delay(1000);
  Serial.println("\r\n\r\nSetup\r\n");
  WiFi.mode(WIFI_AP_STA);
  Serial.println(_ssid);
  Serial.println("/STA/ ip address: ");
  Serial.println(WiFi.localIP());
  Serial.println();
  WiFi.begin(_ssid.c_str(), _password.c_str());
  WiFi.softAP(_ssidAP.c_str(), _passwordAP.c_str());
  Serial.println("-----------------");
  IPAddress myIP = WiFi.softAPIP();
  Serial.println(_ssidAP);                       
  Serial.println("/AP/ ip address: ");
  Serial.println(myIP);
  int i = 0;
  while (WiFi.status() != WL_CONNECTED && i < 50) {
    delay(500);
    i++;
    Serial.println(".");
  }
 

CodeNameHawk

Moderator
Команда форума
С вами весело общаться.
С него нет, но вот беда, его я выключил, а светильник забыл с него потушить. вот теперь на диване лежит смарт можно с него войти и выключить, а возможно посмотрев кино, захочется почитать, и его можно вернуть на родину.
Правильно ли я понял из вашего текста, что если вы выключили комп, а на есп не запущен АТ, то вы никак не сможете со сматфона управлять светильником?

Выключить со смарта помешает только выключенный роутер.
Понимать так :
Если работает роутер, есп(с правильной программой в режиме STA) и сматрфон подключены к роутеру, то этого достаточно для управления светильником, достаточно а не единственно возможный метод.
И еще, если роутер не работает или есп к роутеру не подключилась, а в есп не запущен режим АТ, то не сможете управлять светильником с смартфона, да и с любого другого устройства тоже.

Вот если роутер выключается, то без АТ не обойтись.

(Я у себя выключаю роутер, если не долгое время не пользуюсь интернетом, по причине пожаробезопасности.
Есть возможность подключиться с соседскому роутеру, мне не тяжело поднять задницу и вручную выключить свет. )
 
Последнее редактирование:

Neznayka

New member
С вами весело общаться.
Понимать так :
Если работает роутер, есп(с правильной программой в режиме STA) и сматрфон подключены к роутеру, то этого достаточно для управления смартфона, да и с любого другого устройства тоже.
Вот если роутер выключается, то без АТ не обойтись.

Я у себя выключаю роутер, если не долгое время не пользуюсь интернетом, по причине пожаробезопасности.
1 На моем (рабочем и проверенным временем, время наработки, а он включен 365 ни разу не зависло ) скетче, будем считать что неправильном, работает как гибрид код, отрывок похожий что сверху на dth22+4 канала+бузер+3 локальные кнопки + вход утентификации, я доволен как слон, но это у меня дома, а на подарок хотел сделать, ещё только и всего что б на STA можно было пасс поменять, без бубнов, домохозяйке, для которой собственно и весь цирк.
2 Пожаробезопасность меня мало интересует за столом не стене на дин рейке висит БП - Мин Вэлл , он железный, надёжен как танк 12В-4А.. 5В-17А ..24В-4А три в одном, я выкинул все китайские адаптеры что были, и питаюсь от него, там же USB- хаб, и куча разный гнёзд для зарядки гаджетов
 

Сергей_Ф

Moderator
Команда форума
@Neznayka посмотрите примеры WebUpdate. Там ни Питон не нужен, ни Бонжур. Это не OTA, а обновление путем загрузки прошивки через веб.
 

Neznayka

New member
@Neznayka посмотрите примеры WebUpdate. Там ни Питон не нужен, ни Бонжур. Это не OTA, а обновление путем загрузки прошивки через веб.
С этого всё и началось, когда я совмещаю этот код и мой, он блокирует открытие моего сервера. Вероятно надо сделать его старт на 10 сек, после чего, если его кнопки не нажаты, он переходит на мою программу, либо вывести его кнопки в мой интерфейс, что для меня ещё сложнее пока , ещё один минус, опять же внутри должны быть зашиты лог и пасс, но это 2е

Код:
/*
  To upload through terminal you can use: curl -F "image=@firmware.bin" esp8266-webupdate.local/update
*/

#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>

const char* host = "esp8266-webupdate";
const char* ssid = "88888888888";
const char* password = "88888888888";

ESP8266WebServer server(80);
const char* serverIndex = "<form method='POST' action='/update' enctype='multipart/form-data'><input type='file' name='update'><input type='submit' value='Update'></form>";

void setup(void){
  Serial.begin(115200);
  Serial.println();
  Serial.println("Booting Sketch...");
  WiFi.mode(WIFI_AP_STA);
  WiFi.begin(ssid, password);
  if(WiFi.waitForConnectResult() == WL_CONNECTED){
    MDNS.begin(host);
    server.on("/", HTTP_GET, [](){
      server.sendHeader("Connection", "close");
      server.send(200, "text/html", serverIndex);
    });
    server.on("/update", HTTP_POST, [](){
      server.sendHeader("Connection", "close");
      server.send(200, "text/plain", (Update.hasError())?"FAIL":"OK");
      ESP.restart();
    },[](){
      HTTPUpload& upload = server.upload();
      if(upload.status == UPLOAD_FILE_START){
        Serial.setDebugOutput(true);
        WiFiUDP::stopAll();
        Serial.printf("Update: %s\n", upload.filename.c_str());
        uint32_t maxSketchSpace = (ESP.getFreeSketchSpace() - 0x1000) & 0xFFFFF000;
        if(!Update.begin(maxSketchSpace)){//start with max available size
          Update.printError(Serial);
        }
      } else if(upload.status == UPLOAD_FILE_WRITE){
        if(Update.write(upload.buf, upload.currentSize) != upload.currentSize){
          Update.printError(Serial);
        }
      } else if(upload.status == UPLOAD_FILE_END){
        if(Update.end(true)){ //true to set the size to the current progress
          Serial.printf("Update Success: %u\nRebooting...\n", upload.totalSize);
        } else {
          Update.printError(Serial);
        }
        Serial.setDebugOutput(false);
      }
      yield();
    });
    server.begin();
    MDNS.addService("http", "tcp", 80);

    Serial.printf("Ready! Open http://%s.local in your browser\n", host);
  } else {
    Serial.println("WiFi Failed");
  }
}

void loop(void){
  server.handleClient();
  delay(1);
}
 
Сверху Снизу