Cette bibliothèque WiFiWebServer_RTL8720 est une bibliothèque WebServer simple mais complète pour les cartes Realtek RTL8720DN, RTL8722DM et RTL8722CSM .
Les fonctions sont similaires et compatibles avec celles des bibliothèques ESP32 WebServer
et ESP8266WebServer
pour faciliter grandement le portage des croquis depuis ESP8266/ESP32.
Cette bibliothèque WiFiWebServer_RTL8720 fournit également un client HTTP et WebSocket de haut niveau avec des fonctions similaires et compatibles avec celles de la bibliothèque ArduinoHttpClient.
La bibliothèque fournit des supports pour :
Il est basé sur et modifié à partir de :
La classe WiFiWebServer
trouvée dans l'en-tête WiFiWebServer_RTL8720.h
est un simple serveur Web qui sait gérer les requêtes HTTP telles que GET et POST et ne peut prendre en charge qu'un seul client à la fois.
Cette bibliothèque WiFiWebServer_RTL8720 prend actuellement en charge les cartes suivantes :
Arduino IDE 1.8.19+
pour Arduino.Arduino AmebaD core 3.1.4+
pour Realtek RTL8720DN, RTL8722DM et RTL8722CSM.Functional-Vlpp library v1.0.2+
pour utiliser la fonction lambda du serveur. À installer. vérifier Le moyen le meilleur et le plus simple consiste à utiliser Arduino Library Manager
. Recherchez WiFiWebServer_RTL8720 , puis sélectionnez/installez la dernière version. Vous pouvez également utiliser ce lien pour des instructions plus détaillées.
WiFiWebServer_RTL8720-main.zip
.WiFiWebServer_RTL8720-main
WiFiWebServer_RTL8720-main
dans le répertoire des bibliothèques Arduino tel que ~/Arduino/libraries/
.Pour éviter une erreur de compilation liée à PROGMEM, vous devez copier le fichier Realtek AmebaD core pgmspace.h dans le répertoire Realtek AmebaD (~/.arduino15/packages/realtek/hardware/AmebaD/3.1.4/cores/ambd/avr/pgmspace. h).
Supposons que la version principale de Realtek AmebaD soit 3.1.4. Ce fichier doit être copié dans le répertoire :
~/.arduino15/packages/realtek/hardware/AmebaD/3.1.4/cores/ambd/avr/pgmspace.h
Chaque fois qu'une nouvelle version est installée, pensez à copier ce fichier dans le répertoire de la nouvelle version. Par exemple, la nouvelle version est x.yy.zz Ce fichier doit être copié dans le répertoire :
~/.arduino15/packages/realtek/hardware/AmebaD/x.yy.zz/cores/ambd/avr/pgmspace.h
WiFiWebServer server ( 80 );
Crée l'objet de classe WiFiWebServer.
Paramètres :
numéro de port hôte : int port
(la valeur par défaut est le port HTTP standard 80)
Démarrage du serveur
void begin ();
Gestion des demandes clients entrantes
void handleClient ();
Désactivation du serveur
void close ();
void stop ();
Les deux méthodes fonctionnent de la même manière
Gestionnaires de demandes clients
void on ();
void addHandler ();
void onNotFound ();
void onFileUpload ();
Exemple:
server.on( " / " , handlerFunction);
server.onNotFound(handlerFunction); // called when handler is not assigned
server.onFileUpload(handlerFunction); // handle file uploads
Envoi des réponses au client
void send ();
void send_P ();
Parameters:
code
- Code de réponse HTTP, peut être 200
ou 404
, etc.
content_type
- Type de contenu HTTP, comme "text/plain"
ou "image/png"
, etc.
content
- corps du contenu réel
Obtenir des informations sur les arguments de la requête
const String & arg ();
const String & argName ();
int args ();
bool hasArg ();
Function usage:
arg
- récupère la valeur de l'argument de la requête, utilisez arg("plain")
pour obtenir le corps du POST
argName
- récupère le nom de l'argument de la requête
args
- obtenir le nombre d'arguments
hasArg
- vérifie si l'argument existe
Obtenir des informations sur les en-têtes de requête
const String & header ();
const String & headerName ();
const String & hostHeader ();
int headers ();
bool hasHeader ();
Function usage:
header
- obtenir la valeur de l'en-tête de la requête
headerName
- récupère le nom de l'en-tête de la demande
hostHeader
- récupère l'en-tête de l'hôte de la demande si disponible, sinon chaîne vide
headers
- obtenir le nombre d'en-têtes
hasHeader
- vérifie si l'en-tête existe
Authentification
bool authenticate ();
void requestAuthentication ();
Function usage:
authenticate
- authentification du serveur, renvoie vrai si le client est authentifié, sinon faux
requestAuthentication
- envoie une réponse d'échec d'authentification au client
Example Usage:
if (!server.authenticate(username, password))
{
server. requestAuthentication ();
}
const String& uri (); // get the current uri
HTTPMethod method (); // get the current method
WiFiClient client (); // get the current client
HTTPUpload& upload (); // get the current upload
void setContentLength (); // set content length
void sendHeader (); // send HTTP header
void sendContent (); // send content
void sendContent_P ();
void collectHeaders (); // set the request headers to collect
void serveStatic ();
size_t streamFile ();
WiFiWebServer_RTL8720/examples/AdvancedWebServer/AdvancedWebServer.ino
Lignes 40 à 245 dans 74723f4
WiFiWebServer_RTL8720/examples/AdvancedWebServer/defines.h
Lignes 11 à 42 dans 74723f4
Voici la sortie du terminal de débogage et la capture d'écran lors de l'exécution de l'exemple AdvancedWebServer sur Rtlduino RTL8720DN
Starting AdvancedServer on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
interface 0 is initialized
interface 1 is initialized
Initializing WIFI ...
WIFI initialized
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet1
RTL8721D[Driver]: set ssid [HueNet1]
RTL8721D[Driver]: rtw_set_wpa_ie[ 1160 ]: AuthKeyMgmt = 0x2
RTL8721D[Driver]: rtw_restruct_sec_ie[ 4225 ]: no pmksa cached
RTL8721D[Driver]: start auth to 68 : 7f : 74 : 94 :f4:a5
RTL8721D[Driver]: auth alg = 2
RTL8721D[Driver]:
OnAuthClient:algthm = 0 , seq = 2 , status = 0 , sae_msg_len = 11
RTL8721D[Driver]: auth success, start assoc
RTL8721D[Driver]: association success (res= 1 )
RTL8721D[Driver]: ClientSendEAPOL[1624]: no use cache pmksa
RTL8721D[Driver]: ClientSendEAPOL[1624]: no use cache pmksa
RTL8721D[Driver]: set pairwise key to hw: alg:4(WEP40- 1 WEP104- 5 TKIP- 2 AES- 4 )
RTL8721D[Driver]: set group key to hw: alg:2(WEP40- 1 WEP104- 5 TKIP- 2 AES- 4 ) keyid:1
Interface 0 IP address : 192.168.2.117
[INFO] Listen socket successfully
[INFO] Socket conntect successfully
HTTP server started @ 192.168.2.117
[INFO] Accept connection successfully
A client connected to this server :
[PORT]: 36912
[IP]:192.168.2.30
[INFO] Accept connection successfully
A client connected to this server :
[PORT]: 36914
[IP]:192.168.2.30
[WIFI] String Len = 0, extend to 2048
[INFO] Accept connection successfully
Voici la sortie du terminal de débogage et la capture d'écran lors de l'exécution de l'exemple WebClient sur Rtlduino RTL8720DN
Starting WebClientRepeating on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
interface 0 is initialized
interface 1 is initialized
Initializing WIFI ...
WIFI initialized
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet1
RTL8721D[Driver]: set ssid [HueNet1]
RTL8721D[Driver]: rtw_set_wpa_ie[ 1160 ]: AuthKeyMgmt = 0x2
RTL8721D[Driver]: rtw_restruct_sec_ie[ 4225 ]: no pmksa cached
RTL8721D[Driver]: start auth to 68 : 7f : 74 : 94 :f4:a5
RTL8721D[Driver]: auth alg = 2
RTL8721D[Driver]:
OnAuthClient:algthm = 0 , seq = 2 , status = 0 , sae_msg_len = 11
RTL8721D[Driver]: auth success, start assoc
RTL8721D[Driver]: association success (res= 1 )
RTL8721D[Driver]: ClientSendEAPOL[1624]: no use cache pmksa
RTL8721D[Driver]: ClientSendEAPOL[1624]: no use cache pmksa
RTL8721D[Driver]: set pairwise key to hw: alg:4(WEP40- 1 WEP104- 5 TKIP- 2 AES- 4 )
RTL8721D[Driver]: set group key to hw: alg:2(WEP40- 1 WEP104- 5 TKIP- 2 AES- 4 ) keyid:1
Interface 0 IP address : 192.168.2.117You're connected to the network, IP = 192.168.2.117
SSID: HueNet1, Signal strength (RSSI):-26 dBm
[INFO]server_drv.cpp: start_client
[INFO] Create socket successfully
[INFO] Connect to Server successfully!
Connecting...
HTTP/1.1 200 OK
Date: Thu, 28 Apr 2022 02:46:07 GMT
Content-Type: text/plain
Content-Length: 2263
Connection: close
x-amz-id-2: 0v2VZitmKPb1GvH/Of2rACgGVIyluvsMCTX1kbkYKmtOMZMLlHXAT1n7wdAcMiFQ6LPQ1Qy2tSg=
x-amz-request-id: 72CSXT4AMDTCDJYE
Last-Modified: Wed, 23 Feb 2022 14:56:42 GMT
ETag: "667cf48afcc12c38c8c1637947a04224"
CF-Cache-Status: DYNAMIC
Report-To: { " endpoints " :[{ " url " : " https://a.nel.cloudflare.com/report/v3?s=vdeduIIMRyhO44T972z7Z0qfco3T5svA5zYhyMJqQE5hTNGvTxTg%2B8S8e90uedVsSDo5oj73gg%2BxEoPfXW1%2FUCfu6XkFt6oLuf9zjLCo%2BSe58OLsZhr25mZ3MxPD%2ByY%3D " }], " group " : " cf-nel " , " max_age " : 604800 }
NEL: { " success_fraction " : 0 , " report_to " : " cf-nel " , " max_age " : 604800 }
Server: cloudflare
CF-RAY: 702c77389848b671-YWG
alt-svc: h3= " :443 " ; ma= 86400 , h3- 29 = " :443 " ; ma= 86400
`:;;;,` .:;;:.
.;;;;;;;;;;;` :;;;;;;;;;;: TM
`;;;;;;;;;;;;;;;` :;;;;;;;;;;;;;;;
:;;;;;;;;;;;;;;;;;; `;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;; .;;;;;;;;;;;;;;;;;;;;
;;;;;;;;:` `;;;;;;;;; ,;;;;;;;;.` .;;;;;;;;
.;;;;;;, :;;;;;;; .;;;;;;; ;;;;;;;
;;;;;; ;;;;;;; ;;;;;;, ;;;;;;.
,;;;;; ;;;;;;.;;;;;;` ;;;;;;
;;;;;. ;;;;;;;;;;;` ``` ;;;;;`
;;;;; ;;;;;;;;;, ;;; .;;;;;
`;;;;: `;;;;;;;; ;;; ;;;;;
,;;;;` `,,,,,,,, ;;;;;;; .,,;;;,,, ;;;;;
:;;;;` .;;;;;;;; ;;;;;, :;;;;;;;; ;;;;;
:;;;;` .;;;;;;;; `;;;;;; :;;;;;;;; ;;;;;
.;;;;. ;;;;;;;. ;;; ;;;;;
;;;;; ;;;;;;;;; ;;; ;;;;;
;;;;; .;;;;;;;;;; ;;; ;;;;;,
;;;;;; `;;;;;;;;;;;; ;;;;;
`;;;;;, .;;;;;; ;;;;;;; ;;;;;;
;;;;;;: :;;;;;;. ;;;;;;; ;;;;;;
;;;;;;;` .;;;;;;;, ;;;;;;;; ;;;;;;;:
;;;;;;;;;:,:;;;;;;;;;: ;;;;;;;;;;:,;;;;;;;;;;
`;;;;;;;;;;;;;;;;;;;. ;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;; :;;;;;;;;;;;;;;;;:
,;;;;;;;;;;;;;, ;;;;;;;;;;;;;;
.;;;;;;;;;` ,;;;;;;;;:
;;; ;;;;;` ;;;;: .;; ;; ,;;;;;, ;;. `;, ;;;;
;;; ;;:;;; ;;;;;; .;; ;; ,;;;;;: ;;; `;, ;;;:;;
,;:; ;; ;; ;; ;; .;; ;; ,;, ;;;,`;, ;; ;;
;; ;: ;; ;; ;; ;; .;; ;; ,;, ;;;;`;, ;; ;;.
;: ;; ;;;;;: ;; ;; .;; ;; ,;, ;;`;;;, ;; ;;`
,;;;;; ;;`;; ;; ;; .;; ;; ,;, ;; ;;;, ;; ;;
;; ,;, ;; .;; ;;;;;: ;;;;;: ,;;;;;: ;; ;;, ;;;;;;
;; ;; ;; ;;` ;;;;. `;;;: ,;;;;;, ;; ;;, ;;;;
Voici la sortie du terminal de débogage et la capture d'écran lors de l'exécution de l'exemple ScanNetworks sur Rtlduino RTL8720DN
Starting ScanNetworks on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet_5G
You ' re connected to the network, IP = 192.168.2.152
MAC address: 69:4E:06:60:C9:94
Scanning available networks...
Number of available networks:19
0) HueNet Signal: -26 dBm Encryption: WPA2_PSK
1) HueNet_5G Signal: -32 dBm Encryption: WPA2_PSK
2) HueNetTek Signal: -32 dBm Encryption: WPA2_PSK
3) HueNetTek_5G Signal: -33 dBm Encryption: WPA2_PSK
4) HueNet1 Signal: -36 dBm Encryption: WPA2_PSK
5) HueNet2 Signal: -58 dBm Encryption: WPA2_PSK
6) HueNet2_5G Signal: -60 dBm Encryption: WPA2_PSK
7) guest_24 Signal: -64 dBm Encryption: WPA2_PSK
8) bacau Signal: -65 dBm Encryption: WPA2_PSK
9) guest_5 Signal: -77 dBm Encryption: WPA2_PSK
10) pitesti Signal: -77 dBm Encryption: WPA2_PSK
Voici la sortie du terminal de débogage et la capture d'écran lors de l'exécution de l'exemple MQTTClient_Auth sur Rtlduino RTL8720DN
Starting MQTTClient_Auth on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet_5G
Connected! IP address: 192.168.2.152
Attempting MQTT connection to broker.emqx.io...connected
Message Send : MQTT_Pub => Hello from MQTTClient_Auth on Rtlduino RTL8720DN with RTL8720DN
Message arrived [MQTT_Pub] Hello from MQTTClient_Auth on Rtlduino RTL8720DN with RTL8720DN
Message Send : MQTT_Pub => Hello from MQTTClient_Auth on Rtlduino RTL8720DN with RTL8720DN
Message arrived [MQTT_Pub] Hello from MQTTClient_Auth on Rtlduino RTL8720DN with RTL8720DN
Voici la sortie du terminal de débogage et la capture d'écran lors de l'exécution de l'exemple MQTT_ThingStream sur Rtlduino RTL8720DN
Start MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet_5G
Connected! IP address: 192.168.2.152
***************************************
STM32_Pub
***************************************
Attempting MQTT connection to broker.emqx.io
...connected
Published connection message successfully!
Subscribed to: STM32_Sub
MQTT Message Send : STM32_Pub => Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message receive [STM32_Pub] Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message Send : STM32_Pub => Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message receive [STM32_Pub] Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message Send : STM32_Pub => Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message receive [STM32_Pub] Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message Send : STM32_Pub => Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
MQTT Message receive [STM32_Pub] Hello from MQTT_ThingStream on Rtlduino RTL8720DN with RTL8720DN
Voici la sortie du terminal de débogage et la capture d'écran lors de l'exécution de l'exemple WiFiUdpNTPClient sur Rtlduino RTL8720DN
Starting WiFiUdpNTPClient on Rtlduino RTL8720DN with RTL8720DN
WiFiWebServer_RTL8720 v1 .1.2
Current Firmware Version = 1.0.0
Attempting to connect to SSID: HueNet_5G
Connected! IP address: 192.168.2.152
SSID: HueNet1, Signal strength (RSSI):-39 dBm
Starting connection to server...
Listening on port 2390
packet received
Seconds since Jan 1 1900 = 3835239949
Unix time = 1626251149
The UTC time is 8:25:49
packet received
Seconds since Jan 1 1900 = 3835239960
Unix time = 1626251160
The UTC time is 8:26:00
packet received
Seconds since Jan 1 1900 = 3835239971
Unix time = 1626251171
The UTC time is 8:26:11
Le débogage est activé par défaut sur Serial. Niveau de débogage de 0 à 4. Pour désactiver, modifiez le WIFI_LOGLEVEL à 0
// Use this to output debug msgs to Serial
# define DEBUG_WIFI_WEBSERVER_PORT Serial
// Debug Level from 0 to 4
# define _WIFI_LOGLEVEL_ 1
Si vous obtenez des erreurs de compilation, le plus souvent, vous devrez peut-être installer une version plus récente du noyau de la carte, en appliquant les correctifs des bibliothèques, les correctifs des packages ou la dernière version de cette bibliothèque.
Cette bibliothèque WiFiWebServer_RTL8720 prend actuellement en charge les cartes suivantes :
La bibliothèque fournit des supports pour :
Soumettre les problèmes à : Problèmes WiFiWebServer_RTL8720
arduino.cc
à arduino.tips
dans les exemplesallman
. Relooker la bibliothèque ️️ Ivan Grokhotkov | ️Adrian McEwen |
Si vous souhaitez contribuer à ce projet :
Copyright (c) 2021- Khoi Hoang