当前位置:网站首页>Esp8266 Smartconfig
Esp8266 Smartconfig
2022-06-11 09:37:00 【Petit tigre IOT】
1、WiFiMode de distribution
Cet article présente et analyse plusieursWiFiMode de distribution,Je vous recommande,Le courant dominantWiFiLe réseau de distribution est équipé d'un réseau de distribution Hotspot、Réseau de distribution Bluetooth、Réseau de distribution à un bouton(SmartConfig);
- Réseau de distribution des points chauds de l'équipement:Hotspots créés par les appareils connectés au téléphone,Pour avoir accès à InternetWiFiNom et mot de passe à l'appareil;
- Réseau de distribution Bluetooth:Téléphone mobile avec appareil Bluetooth,Pour avoir accès à InternetWiFiNom et mot de passe à l'appareil;
- Réseau de distribution à un bouton:Le téléphone est toujours connecté à InternetWiFi,DiffusionWiFiNom et mot de passe,L'appareil est allumésnifferMode d'écoute,Je l'ai.WiFiNom et mot de passe;
2、SmartConfigRéseau de distribution
- Accès au matérielsnifferMode(Aussi connu sous le nom de mode hybride,C'est - à - dire ne pas filtrer les messages de données),Écoutez tous les802.11Message;
- L'appareil doit être pris en charge dansCanal(En général1-13)Surveillance du scrutin(Parce que l'appareil ne connaît pas les canaux du téléphone de l'utilisateur et du routeur cible);
- Capture conforme àMessage de données pour les règles du réseau de distributionArrêter le sondage du canal après,Essayez de recevoir tous les messages complets sur ce canal;
- La réception actuelle du canal a échoué ou a expiré pour revenir à l'étape 2;
- Fermeture lorsque la réception du message de données est terminée snifferMode,RetourstationMode Et commencer à essayer de se connecter au routeur , Le processus de distribution au sens étroit est terminé .
3、ESP8266DeSmartConfigInterface
ParamètresSmartConfigMode,OuvertSmartConfig, Fonction de rappel selon les différentes phases du réseau de distribution ,Puis ferméSmartConfig;
3.1、smartconfig_set_type
Parce que c'est Wechat AirkissFonction,Alors choisissezSC_TYPE_AIRKISS;
ESPTOUCH C'est l'un des APP, Pour le réseau de distribution ,Pas ici.;
3.2、smartconfig_start
Suivez les instructions ,Premier réglageSTA Le mode appelle à nouveau ceci API, Les paramètres de la fonction de rappel varient selon les phases du réseau de distribution ,Pour que ça marche.switch case Effectuer les opérations appropriées en fonction de l'état , Et officiellement API Il y a aussi des exemples de références sous le document ;
3.3、smartconfig_stop
FermerSmartConfigMode,Libérer la mémoire,ObtenirIPAppelé plus tard;

4、Code
C'est basé sur la dernière fois MQTT Changement de procédure , La fonction que je veux ajouter est ,FlashDansSSID Connexion au mot de passe APÉchec10Après,EntréeSmartConfigRéseau de distribution,Et après“Axenko Technology” Réseau de distribution sur le numéro public ,Et mettre le nouveauSSID Et mot de passe mis à jour à Flash, De cette façon, le réseau de distribution n'est pas nécessaire la prochaine fois que l'électricité est allumée ;Bien sûr.,Comme justeWiFi Déconnecter vous pouvez redémarrer sans réseau ( Si seulement on pouvait récupérer automatiquement ,Creuser un trou)
Réaliser les fonctions ci - dessusIl suffit de modifierwifi.cCode,Oui.wifi La fonction est ajoutée SmartConfigL'extension de,Fichier d'en - tête à inclure#include "smartconfig.h" ,Originalwifi_check_ip Le texte à ajouter est le suivant , Le réglage n'a pas été obtenu IP 10 Accès au réseau de distribution à un bouton après ;
// Fonction de synchronisation:VérifiezIPObtenir des informations
static void ICACHE_FLASH_ATTR wifi_check_ip(void *arg)
{
static u8 fail_num = 0;
// Non obtenuIPAdresse-------------------------------------------------------------
else{
fail_num++;
if(fail_num >= 10){
fail_num = 0;
INFO("--------------START SmartConfig------------------\r\n");
//wifi_set_opmode(STATION_MODE); // Set toSTAMode
smartconfig_set_type(SC_TYPE_AIRKISS); // ESP8266Mode de distribution【AIRKISS】
smartconfig_start(smartconfig_done); // Entrée【 Mode de distribution intelligent 】,Et définir la fonction de rappel
return;
}
}
}Et puisAjouterSmartConfigFonction de rappel pour, L'accent est mis sur la façon de mettre à jour SSIDEt mot de passeFlash,Et l'appeluser_main.cMoyenneWiFi Fonction de rappel après connexion ,Pour entrerSNTP、TCP、MQTTAttendez les prochaines étapes, N'oubliez pas de redémarrer le minuteur , N'oubliez pas de mettre par défaut SSID Message corrigé ;
// SmartConfigLorsque l'état change, Entrez cette fonction de rappel
// Paramètres1:sc_status status / Paramètres2:Pointeur sans type【Dans différents états,[void *pdata] Les paramètres entrants sont différents pour 】
void ICACHE_FLASH_ATTR smartconfig_done(sc_status status, void *pdata)
{
switch(status)
{
// CmartConfigAttendez.
case SC_STATUS_WAIT:
os_printf("\r\nSC_STATUS_WAIT\r\n");
break;
// Découverte【WIFISignal】(8266 Attendre le réseau de distribution dans cet état )
case SC_STATUS_FIND_CHANNEL:
os_printf("\r\nSC_STATUS_FIND_CHANNEL\r\n");
os_printf("\r\n---- Please Use WeChat to SmartConfig ------\r\n\r\n");
break;
// Obtenir【SSID】【PSWD】(8266 Récupération et décryptage 【SSID+PSWD】)
case SC_STATUS_GETTING_SSID_PSWD:
os_printf("\r\nSC_STATUS_GETTING_SSID_PSWD\r\n");
// Mode de distribution
sc_type *type = pdata;
if (*type == SC_TYPE_ESPTOUCH){
os_printf("\r\nSC_TYPE:SC_TYPE_ESPTOUCH\r\n");
}else{
os_printf("\r\nSC_TYPE:SC_TYPE_AIRKISS\r\n");
}
break;
// Obtenu avec succès【SSID】【PSWD】,EnregistrerSTAParamètres,Et connectéWIFI
case SC_STATUS_LINK:
os_printf("\r\nSC_STATUS_LINK\r\n");
struct station_config *sta_conf = pdata; // Accès【STAParamètres】Pointeur
// Oui.【SSID】【PASS】Enregistrer à【ExtérieurFlash】Moyenne
os_strncpy(sysCfg.sta_ssid, sta_conf->ssid, 32); // 【STA_SSID】WIFINom
os_strncpy(sysCfg.sta_pwd, sta_conf->password, 64); // 【STA_PASS】WIFIMot de passe
CFG_Save(); // Graver les paramètres du système mis à jour dans FlashMoyenne
//ConnexionWiFi
wifi_station_set_config(sta_conf); // ParamètresSTAParamètres【Flash】
wifi_station_disconnect(); // DéconnecterSTAConnexion
wifi_station_connect(); // ESP8266ConnexionWIFI
break;
// ESP8266En tant queSTA,Connexion réussie àWIFI
case SC_STATUS_LINK_OVER:
os_printf("\r\nSC_STATUS_LINK_OVER\r\n");
smartconfig_stop(); // Arrêtez!SmartConfig,Libérer la mémoire
if(wifiCb){ // Pour déterminer si[wifiConnectCb]Fonctions
wifiStatus = wifi_station_get_connect_status(); // Obtenir l'état d'accès
wifiCb(wifiStatus); // wifiCb(wifiStatus)=wifiConnectCb(wifiStatus)
}
// Rallumez le minuteur-------------------------------------------------------
os_timer_setfn(&WiFiLinker, (os_timer_func_t *)wifi_check_ip, NULL);
os_timer_arm(&WiFiLinker, 1000, 0); // 1sTiming
break;
}
}边栏推荐
- Day44 database
- [ERP system] how much do you know about the professional and technical evaluation?
- Remote office related issues to be considered by enterprises
- Identifier keyword literal data type base conversion character encoding variable data type explanation operator
- Version mismatch between installed deeply lib and the required one by the script
- Résumé de la méthode d'examen des mathématiques
- Day41 process pool and thread pool
- 【软件】大企业ERP选型的方法
- Pytorch installation for getting started with deep learning
- OpenCV OAK相机对比及介绍
猜你喜欢

Flask (VIII) - form processing

Some learning records I=

A summary of the problem type and method for proving the limit of sequence in postgraduate entrance examination

Pytorch installation for getting started with deep learning

Video review pulsar summit Asia 2021, cases, operation and maintenance, ecological dry goods

Type-C docking station adaptive power supply patent protection case

Machine learning notes - spatial transformer network using tensorflow

Detailed explanation of this and static

我们是如何连上WiFi的?

Output image is bigger (1228800b) than maximum frame size specified in properties (1048576b)
随机推荐
js基础--Array对象
Pulsar job Plaza | Tencent, Huawei cloud, shrimp skin, Zhong'an insurance, streamnational and other hot jobs
Day 47 how to query a table
Augmented reality experiment IV of Shandong University
Type-C Bluetooth speaker single port rechargeable OTG solution
Modularnotfounderror: no module named 'find_ version’
实现边充边OTG的PD芯片GA670-10
Version mismatch between installed deeply lib and the required one by the script
Strength and appearance Coexist -- an exclusive interview with Liu Yu, a member of Apache pulsar PMC
Machine learning notes - spatial transformer network using tensorflow
报错Output image is bigger(1228800B) than maximum frame size specified in properties(1048576B)
Award winning survey streamnational sponsored 2022 Apache pulsar user questionnaire
MySQL:Got a packet bigger than ‘max_ allowed_ packet‘ bytes
Day39 content summary
Package details
Day39 process object and other method mutexes
企业需要考虑的远程办公相关问题
Don't use redis list to implement message queue. Stream is designed for queues
Machine learning notes - the story of master kaggle Janio Martinez Bachmann
Analysis of high frequency interview questions in massive data processing