ESP8266 und OTA

Hallo,

funktioniert OTA auch wenn der ESP als Access Point arbeitet, also ohne Router?
Es klappt hier problemlos wenn der ESP in meinem WLAN-Netz ist, wenn er aber "nur" ein AP-Netz aufbaut sehe ich ihn nicht in der IDE. Über die 192.168.4.1. im AP-Netz erreiche ich den ESP problemlos, Netzwerkname, IP's und Schlüssel sind alle ok.....

uk1408:
funktioniert OTA auch wenn der ESP als Access Point arbeitet, also ohne Router?

Hab's noch nie gebraucht!

Ich wollte es nun aber wissen!

Klar es funktioniert!

Netzwerk bleibt Netzwerk!

Gruß Fips

Dein Rechner mit der IDE muss natürlich mit dem ESP8266 per wifi als client verbunden sein.

Hallo,

jetzt probiere ich schon den halben Sonntag rum und komme nicht weiter.
Ich habe mal ein Beispiel aus ArduinoOTA etwas bearbeitet.

Im Infrastruktur-Modus verbindet es sich mit dem Netz (sehe ich im Router am Status). Ich komme aber nicht über die IP auf den Server (IE sagt "Kein Zugriff auf Seite").
Dafür sehe ich den NODEMCU als Port in der IDE(1.8_8), kann aber nichts hochladen. Es kommt die Passwort-Abfrage, die wird aber mit "no Answer" abgelehnt.

Starte ich im AP-Modus kann ich mich mit dem AD-HOC-Netz verbinden und über 192.168.4.1 erreiche ich den Server. Dafür sehe ich nichts davon als Port in der IDE.

Zwischendrin hat es schon ab und zu funktioniert, aber es war alles nicht reproduzierbar...

Hier der Code, was könnte da los sein? So langsam komme ich nicht mehr mit >:( :confused:

#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <ESP8266WebServer.h>

#ifndef STASSID
#define STASSID "SSID"                                // SSID
#define STAPSK  "PASSWORD"                             // Password
#endif

const char* ssid = STASSID;
const char* password = STAPSK;

ESP8266WebServer  server(80);                                      // HTTP-Server auf Port 80
//-----------------------------------------------------
void setup()
{
  Serial.begin(74880);
  delay(1000);
  Serial.println("Booting");

  int a = 1;                                        // 1 = Station Mode

  if (a == 1)
  {
    WiFi.mode(WIFI_STA);
    WiFi.hostname("BasicOTA");
    int n = 0;
    WiFi.begin(ssid, password);
    while ((WiFi.status() != WL_CONNECTED) && (n <= 15))         // max. 15 Versuche
    {
      delay(500);
      Serial.print(".");
      n++;
    }
    Serial.println("\nok");
  }
  else
  {
    Serial.print("AP-Mode");
    WiFi.mode(WIFI_AP);                                          // Access-Point-Modus --> Access-Point Adresse http://192.168.4.1/
    Serial.print(WiFi.softAP("BasicOTA") ? " Ready" : " Failed!"); // Netzwerkname BattMon
    Serial.println (", Adresse http://192.168.4.1/");
  }

  server.on("/", handleRoot);                                    // Callback für korrekten HTTP-Zugriff
  server.begin();
  Serial.println("HTTP Server gestarted");

  ArduinoOTA.setHostname("OTA_Test");
  ArduinoOTA.setPassword("OTA_Test");

  ArduinoOTA.begin();
  Serial.println("Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
}
//-----------------------------------------------------
void loop()
{
  ArduinoOTA.handle();
  server.handleClient();
}
//-----------------------------------------------------

bool handleRoot()                                                  // gültige HTML Anfrage
{
  Serial.println("HTML-Anfrage");
  String content = "<html><header><title>BasicOTA</title>"
                   "</header><body>Hello world</body></html>";
  server.send(200, "text/html", content);                          // und weg damit
}

Ich habe deinen Sketch mal ausprobiert.

uk1408:
Ich komme aber nicht über die IP auf den Server (IE sagt "Kein Zugriff auf Seite").

Keine Ahnung wer "IE" ist. Firefox zeigt dein "Hello World".

uk1408:
Dafür sehe ich den NODEMCU als Port in der IDE(1.8_8), kann aber nichts hochladen. Es kommt die Passwort-Abfrage, die wird aber mit "no Answer" abgelehnt.

Mit Passwort hat OTA bei mir noch nie funktioniert.

uk1408:
Starte ich im AP-Modus kann ich mich mit dem AD-HOC-Netz verbinden und über 192.168.4.1 erreiche ich den Server. Dafür sehe ich nichts davon als Port in der IDE.

IDE oder auch Rechner neu starten.

while ((WiFi.status() != WL_CONNECTED) && (n <= 15))         // max. 15 Versuche

Frag doch auf SSID erreichbar ab, das geht schneller.

if (WiFi.status() == WL_NO_SSID_AVAIL || i > 30) {  // Ist die oben eingegebene SSID nicht erreichbar, wird ein eigenes Netzwerk erstellt.

Serial.println (", Adresse http://192.168.4.1/");

Gib doch die "echte" Adresse vom "WiFi.softAP" aus!

Serial.printf("Verbinde dich mit dem Netzwerk "EspConfig"\nGib die IP %s im Browser ein\n\n", WiFi.softAPIP().toString().c_str());

Du kannst dir gerne mal meinen Login Manager zur Anregung anschauen.

Gruß Fips

Hallo und erst mal Danke für die Hinweise.
IE ist mein Internet Explorer (IE11 WIN10).
Ich habe jetzt einiges umgesetzt und es klappt jetzt auch (wieder) mit dem Zugriff auf den Server im ESP, warum auch immer.
OTA macht was es will, mal sehe ich die IP bei den Ports und mal nicht, mal geht es dann und mal nicht, mal geht es mit Passwort und mal nicht. Das muss ich noch beobachten. Und noch komme ich mit USB an alle meine ESP's.

@derFips

ICh habe gerade den Post gelesen und ich bin gerade bei meinen Versuchen mit OTA auch an diesem Punkt wie der Thread-Starter. ALso fast ähnlich. Ich habe die Sache mit dem OTA so befolgt wie sie im Netz beschrieben wurden. HAbe die Library ArduinoOTA.h installiert und das Besipielskript OTA geöffnet.
Python 2.7 ist auch installiert und nachNeustart konnte ich nun zusätzlich unter den Ports die 192.168.4.1 auswählen. Also der ESP wurde quasi erkannt. Ich betriebe ihn momentan nur als "AccessPoint". Beim hochladen des Beispielsketches auf den ESP kommt dann aber immer die Fehlermeldung "No response from device". Ich dachte mir auch schon es könnte daran liegen, dass er im AP Modus das nicht machen will. Aber laut Deiner Ausage @derFips soll es ja anscheinend doch funktionieren.
Hast Du mir einen Tipp was ich probieren könnte um dem Problem auf die schliche zu kommen?
ICh werde heute Abend mal versuchen, den ESP sich als CLient im Netzwerk anmelden zu lassen und es dann so nochmals zu testen. Aber ich denke es liegt an was anderem.
Viele Grüße
Thorsten

So oder ähnlich hatte ich es auch immer gemacht, einen festen OTA-Namen vergeben.

ArduinoOTA.setHostname("OTA_Test");

Dann hatte ich mal ein paar gleiche Sketche am laufen und trotz verschiedener IP-Adressen war immer nur ein Sketch in den Ports der IDE sichtbar. Bis ich dann jedem laufenden Sketch einen anderen OTA-Namen gab. Seitdem klappt es 99%-ig.

Rittermini:
HAbe die Library ArduinoOTA.h installiert und das Besipielskript OTA geöffnet.

Die Library is Bestandteil des Esp Core, die musst du nicht extra installieren.

Rittermini:
Python 2.7 ist auch installiert

Ich habe inzwischen die 3.8 drauf.

Probiere OTA doch erstmal mit dem Esp als Station an deinem Router, damit du weißt ob alles richtig konfiguriert wurde.

Gruß Fips

Probiere OTA doch erstmal mit dem Esp als Station an deinem Router, damit du weißt ob alles richtig konfiguriert wurde.

Habe ich jetzt gemacht. Hier funktioniert es reibungslos.
Wenn ich den ESP aber wieder als AP definiere, dann bekomme ich im Moment nicht einmal mehr die 192.168.4.1 angeboten. Nur noch COM-Ports---- :frowning: hm komisch irgendwas scheint nicht richtig zu sein. Ich weiß aber im Moment nicht wonach ich suchen soll. HAt jemand von euch da draussen ne IDee wie man dem Problem auf die schliche kommen könnte?
Vielen Dank für eure Hilfe.

EDIT: Habe gerade den Computer neu gestartet und jetzt habe ich wieder die 192.168.4.1 zur Auswahl. Jedoch kommt nun wieder die Fehlermeldung [ERROR]: No response from device

Gruß Thorsten