[ESP8266] Wie kann ich den AP-Modus abschalten?

Wieder eine Anfängerfrage: :o
Beim Starten des ESP8266 (power on) startet mir das Modul immer einen WLAN AP.
Wie kann ich das unterdrücken (und nur starten, wenn bei der initialisierung kein WLAN zum einloggen gefunden wurde)?

hajos118:
Wieder eine Anfängerfrage: :o
Beim Starten des ESP8266 (power on) startet mir das Modul immer einen WLAN AP.
Wie kann ich das unterdrücken (und nur starten, wenn bei der initialisierung kein WLAN zum einloggen gefunden wurde)?

Was sagt die Doku zum ESP8266 dazu?

Gruß

Gregor

hajos118:
Wieder eine Anfängerfrage: :o
Beim Starten des ESP8266 (power on) startet mir das Modul immer einen WLAN AP.
Wie kann ich das unterdrücken (und nur starten, wenn bei der initialisierung kein WLAN zum einloggen gefunden wurde)?

Der ESP folgt seiner Programmierung!

Wenn dir diese nicht gefällt, wirst du ihn umprogrammieren müssen.

na ich versuch's ja schon mit "WiFi.mode(WIFI_STA)", trotzdem will das dämliche Ding immer einen AP starten ...

Hallo,
"WiFi.mode(WIFI_STA)"
Nicht auszudenken, was da alles passieren kann…
Wo hast Du das denn hingekritzelt? In Deinen Sketch?

Damit Du eine Vorstellung von Deiner Hardware bekommst.

Hier könntest Du einmal nachschlagen.
Gruß und Spaß
Andreas

Du bist mit 58 Posts ja kein absoluter Neuling mehr.

Deshalb wundert es mich, dass Du uns keinen Sketch zeigst.

Gruß Tommy

Stimmt, kein Neuling, aber sketch ist recht umfangreich.
Habe übrigens die Lösung gefunden:

WiFi.setAutoConnect(false)

... bringt den ESP8266 soweit, dass kein neuer Versuch mehr gestartet wird, sich an ein WLAN anzumelden.

Die Info kann man auch ohne kompletten Sketch geben.

... aber für die Sammler und Jäger unter Euch: (gekürzt auf die erlaubten xxxx Zeichen)

// universal includes
#include <ESP8266WiFi.h>
#include <WiFiUdp.h>
#include <WiFiClient.h>
#include <WiFiManager.h>
#include <ESP8266WebServer.h>
...
char *myssid;

ESP8266WebServer server ( 80 );
WiFiUDP udp;
unsigned int localPort = 2390;       // local port to listen for UDP packets
IPAddress timeServerIP; // time.nist.gov NTP server address
IPAddress theremoteIP = (0, 0, 0, 0);
const char* ntpServerName = "time.nist.gov";
const int NTP_PACKET_SIZE = 48; // NTP time stamp is in the first 48 bytes of the message
byte packetBuffer[ NTP_PACKET_SIZE]; //buffer to hold incoming and outgoing packets

const int led = D4;
int callcnt = 0;
int sec, min, hr;
long mysec, mymin, myhr;
long offset = -20;
long oldoffset = -20;
long epoch;
char uptime[32];
char runtime[32];
char rs[16];
bool needNTP = true;
bool showWifiManager = true;
bool NotFound = false;
String message;

int _ip0, _ip1, _ip2, _ip3; // internal use for translate IPAddress to 4 int


void setup ( void ) { // Vorbereitung
  { // onboard setup
...
  }

  { // display setup
...
  }

  { // WiFi setup
    WiFi.setAutoConnect(false);
    WiFi.mode(WIFI_STA);
    if (RunWiFi((char *)ssid1, (char *) password1))       myssid = (char *) ssid1;
    else if (RunWiFi((char *)ssid, (char *)password))     myssid = (char *) ssid;
...
      else
      { // No WLAN available
        Serial.println();
        Serial.println("Std WLAN not found");
        display.clearDisplay();
        display.setCursor(0, 0);
        display.println("Std WLAN not found!");
        display.display();
        while (true) {
          delay(100);
          digitalWrite ( led, 1 );
          delay(500);
          digitalWrite ( led, 0 );
        } ;
      }
    }
  }

  { // Status WLAN Anbindung an Serielle Schnittstelle
    Serial.println ( "" );
    Serial.print ( "Connected to " );
    Serial.println ( myssid );
  }

  { // setup NTP Client
...
  }

  { // WEB Server Verteilung der sites
    server.on ( "/", handleRoot );
    server.on ( "/do", handleLED );
    server.onNotFound ( handleNotFound );
    server.begin();
  }

  { // final Actions for setup
...
  }
}

void loop ( void ) { // Arbeitsschleife
  int xmysec;
  {
... NTP Code
  }

  oled_Status(); // Status anzeigen
  xmysec = mysec % 900; // Anzahl der Sekunden bis Neusynchronisierung
  if (xmysec == 0 or needNTP) { // Timeserver synch
    sendNTPpacket(timeServerIP); // send an NTP packet to a time server
    delay(1000); // 1 sec. Wartezeit
  }
  else {
    server.handleClient(); // Server-Anfrage bearbeiten
  }
}

/*
   ab hier: Hilfsfunktionen
*/

unsigned long sendNTPpacket(IPAddress & address) {

void oled_Status() { // Mini Display Ausgabe

int IP2int(char IP[], IPAddress ad) { // IP_Adresse nach 4 integer wandeln

bool RunWiFi(char *ssid, char *passwd) { // Verbindungsversuch zu WLAN

/****************
   Ab hier die WebSites
*/

void handleLED() {

void handleRoot() { // Aufbau der Site in IoT@home.h

void handleNotFound() {

void handleRest() {

Bei mir hat sich auch mal einer geweigert den AP wieder zu vergessen.
setz mal WiFi.disconnect();
vor WiFi.mode(WIFI_STA);
wenn er sich als STA verbunden hat, dem Teil den Saft abdrehen.
Dadurch sollte er vergesslich werden.
Sollte dann auch wieder ohne WiFi.disconnect(); funktionieren.

Gruß Fips

hajos118:
Stimmt, kein Neuling, aber sketch ist recht umfangreich.
Habe übrigens die Lösung gefunden:

WiFi.setAutoConnect(false)

... bringt den ESP8266 soweit, dass kein neuer Versuch mehr gestartet wird, sich an ein WLAN anzumelden.

Die Info kann man auch ohne kompletten Sketch geben.

... aber für die Sammler und Jäger unter Euch: (gekürzt auf die erlaubten xxxx Zeichen)

Prima, dass es funktioniert. Ich wollte eigentlich nur das WiFi-Setup sehen, um zu schauen, was Du da machst.

Du siehst Deinen Code, wir nicht. Wir wissen also nicht, welche Aufrufe Du in welcher Reihenfolge drin hast. Deshalb die Frage nach dem Sketch.

Gruß Tommy

Wie Derfips schon schrieb ist disconnect() die Lösung des Rätsels. Der ESP merkt sich dummerweise, wenn er verbunden war, daher ist es ratsam bei jedem Wechsel des Modus vorher einen disconnect zu machen. So geht man sicher, dass er nicht in den mixed Mode geht oder sonst irgendwelchen Blödsinn macht.