ESP8266 Access Point suchen

Hallo zusammen
ich habe ein sketch der sich bei Verfügbarkeit eins Access Point bei ihm einloggt und Port 13 für eine Sekunde auf high stellt.

#include <ESP8266WiFi.h>

const char* ssid     = "SSID";
const char* password = "pass";

void setup() {
 

pinMode(13, OUTPUT);

}

void loop() 
{

WiFi.begin(ssid, password);

while (WiFi.status() != WL_CONNECTED) {
 
digitalWrite(13, LOW);
 
}
  

digitalWrite(13, HIGH);

delay(1000);

digitalWrite(13, LOW);

delay(120000);  
}

Jetzt dauert das Einloggen teilweise bis zu 15 Sekunden, was für meine Anwendung zu lange ist.

Ist es möglich den Access Point zu detektieren, den Port 13 auf high zu schalten, ohne sich bei ihm einloggen zu müssen?

Ich habe lange gesucht, ich bin anscheinend der einzige der dies möchte oder der einzige der dies nicht versteht.

Du möchtest also nur schauen ob ein bestimmter Access Point vorhanden ist? Und dies mit LED13 anzeigen lassen?

Du bist aber ungeduldig wenn du deinem ESP nicht mal 15s gönnst...

Ich glaube am 8266 ist die LED Port 0.
Es geht um ein Garagentor das sich öffnet wenn ich mit meinem Auto angefahren komme.
Funktioniert gut, leider kann es passieren dass ich bis 15 sek. vor dem Tor warten muss. Mir macht das nichts aus, aber da es eine Gemeinschaftsgarage ist macht es denen hinter mir die warten müssen was aus.
Der Port wird für eine Sekunde high, der mit einer Loxone verbunden ist, die mir dann die Garage öffnet.
Ich habe mir auch schon den Beispiel Sketch Scan angeschaut, funktioniert auch wie beschrieben.
Ich bin auf der suche nach ungefähr:
if "meinAutoAccessPoint" available
then Port 13 high
oder so ähnlich.

Dann lass doch deinen ESP8266 nur die Scannen, und sobald er das richtige WLAN entdeckt hat, macht er das Toor auf.

Beispielcode siehe hier

Ist auch unter den Beispielen der IDE ESP8266WIFI/WiFiScan

Das Scannen braucht auch seine Zeit.
Meines bescheidenen Erachtens nach, länger, als das anmelden im Netz.

Vielleicht ist der ESP ja genau aus diesem Grund nix für dich.

Ein NRF24L01+ braucht diese Zeit nicht.
Der ist zu doof für "Anmeldeprozeduren"

Oder steig um auf Bluetooth. Ein HC-06 baut auch selbstständig eine Verbindung zum bekannten Slave auf und braucht dazu vielleicht 2-3 Sekunden. Außerdem hat es einen Pin der high wird sobald die Verbindung steht, also theoretisch brauchst du nicht mal mehr einen Controller dazwischen.

Gruß

hansheiri:
Jetzt dauert das Einloggen teilweise bis zu 15 Sekunden, was für meine Anwendung zu lange ist.

Ist es möglich den Access Point zu detektieren, den Port 13 auf high zu schalten, ohne sich bei ihm einloggen zu müssen?

Ich kenne die von Dir verwendete Library nicht, aber das hier dauerhaft im Sketch laufen zu haben, dürfte völliger Quatsch sein:

WiFi.begin(ssid, password);

Die ESP8266-Module mit gängiger AT-Firmware drauf versuchen nämlich immer automatisch, sich ab Power-on AUTOMATISCH mit dem Access-Point zu verbinden, mit dem sie zuletzt verbunden waren.

Du brauchst dann nur noch auf Connect zu testen, aber keine Befehle mehr geben, um aktiv eine Verbindung herzustellen.

Also: Du machst einen Sketch, mit dem Du einmalig erfolgreich eine Verbindung herstellst.

Und dann spielst Du einen anderen Sketch auf, komplett ohne "WiFi.begin(ssid, password);". Wenn Deine Library ohne den begin-Aufruf nicht arbeiten möchte, kloppe die Library in die Tonne, die ist dann Schrott.

ESP8266-Module mit AT-Firmware und mit der Standard-Konfiguration stellen immer von ganz alleine automatisch nach dem Power-On eine Wifi-Verbindung zu dem Access-Point her, mit dem sie zuletzt erfolgreich verbunden waren, dazu brauchst Du keine SSID und kein Passwort jedesmal senden.

jurs:
Die ESP8266-Module mit gängiger AT-Firmware drauf versuchen nämlich immer automatisch, sich ab Power-on AUTOMATISCH mit dem Access-Point zu verbinden, mit dem sie zuletzt verbunden waren.

ESP8266-Module mit AT-Firmware und mit der Standard-Konfiguration stellen immer von ganz alleine automatisch nach dem Power-On eine Wifi-Verbindung zu dem Access-Point her, mit dem sie zuletzt erfolgreich verbunden waren, dazu brauchst Du keine SSID und kein Passwort jedesmal senden.

Er arbeitet ja aber nicht mit AT-Firmware, sondern programmiert den ESP8266 direkt aus der IDE.

Aber "WiFi.begin(ssid, password);" ist auf jedenfall Quatsch, das jedesmal in der Loop aufzurufen.

ElEspanol:
Er arbeitet ja aber nicht mit AT-Firmware, sondern programmiert den ESP8266 direkt aus der IDE.

Wenn das so ist, gilt das von mir oben geschriebene natürlich nicht.

Ich war aufgrund der Tatsache, dass er die Pin-13 Board-LED schalten möchte, eigentlich davon ausgegangen, dass er ein Arduino-Board programmiert und sein ESP-Modul die AT-Firmware drauf hat, während diese nicht näher bezeichnete Wifi-Library über AT-Kommandos seriell mit dem Modul kommuniziert.

Ich hab da mal ne Frage. Dir ist dann aber auch bewusst das jedeer der deine SSID herausbekommt, was jedes Script Kiddi mitbleichtigkeit kann, dein garagentor öffnen kann, wenn du nur auf Verfügbarkeit prüfst? Ich würde zumindest eine Verbindung aufbauen, und dann ein Komando, oder Packet, oder was auch immer senden. Egal ob es dann 20 sek. Dauert. Die sicherheit wäre mir die zeit wert. Zumal ich nicht weis wiebdeine Versicherung reagiert, wenn etwas passiert und die mitbekommen das deine Garage so einfach zu öffnen ist.
Bei deinembganzen Konzept würde ich die Sicherheitsaspekte echt nochmal überdenken.