Arduino - HTTP Request
Arduino kan fungeren als webclient om HTTP-requests naar een webserver te versturen. Een webserver kan een website, Web API of REST API, webdienst zijn...
In deze handleiding leert u:
- Basiskennis van webclient en webserver
- Hoe u een HTTP-request maakt (GET en POST)
- Hoe u gegevens verzendt naar een webserver (website, Web API of REST API)
- Arduino-code:
- HTTP GET/POST verzoek maken met Arduino Uno/Mega + Ethernet Shield
- HTTP GET verzoek maken en gegevens verzenden met Arduino Uno/Mega + Ethernet Shield
- HTTP POST verzoek maken en gegevens verzenden met Arduino Uno/Mega + Ethernet Shield
- Arduino Uno R4 WiFi
- Arduino Uno/Mega met Ethernet Shield
- Uw pc/smartphone (als webclient) verstuurt een HTTP-request naar een webserver
- De webserver stuurt een HTTP-response terug naar uw pc/smartphone
- Uw pc/smartphone ontvangt de HTTP-response en toont deze op het scherm
- HTTP-request header
- (Optioneel) HTTP-request body
- Webadres (URL)
- Request-methode (POST of GET)
- HTTP-poort die de webserver gebruikt (meestal poort 80 voor HTTP)
- (Optioneel) Data die naar de webserver wordt gestuurd (query string). In deze handleiding gaan we ervan uit dat we temperatuur en luchtvochtigheid sturen naar een webserver in het formaat ?temperature={t-waarde}&humidity={h-waarde}.
- Declareer request-methode, HTTP-poort, hostname, pathname, query string
- Declareer een webclient-object
- Verbind met de webserver
- Indien verbonden met server, stuur HTTP-request
- Lees de response van de webserver
- HTTP GET-request
- Kan alleen data verzenden in query string-formaat
- Data wordt toegevoegd aan de pathname
- HTTP POST-request
- Kan data verzenden NIET ALLEEN in query string, maar ook in andere formaten zoals JSON, XML, afbeelding, etc.
- Data is de HTTP-body van het request
- Bouw de query string
- Pas de code aan voor het versturen van data in het HTTP-request
- HTTP GET: voeg de query string toe aan pathname
- HTTP POST: verstuur de query string als HTTP-body
- Lees de response van de webserver
- Voor Ethernet Shield moet u de Arduino-code aanpassen. Zie Arduino Ethernet Shield met statisch IP-adres

De code voor andere WiFi- of Ethernet Shields/Boards is vergelijkbaar. Het verschil zit alleen in de gebruikte bibliotheek.
De tutorial biedt Arduino-code voor twee situaties:
Benodigdheden hardware
| 1 | × | Arduino UNO R4 WiFi | |
| 1 | × | Alternatief: DIYables STEM V4 IoT | |
| 1 | × | Alternatief: DIYables STEM V4B IoT | |
| 1 | × | USB-kabel Type-C |
Alternatief bij gebruik van Ethernet:
Of u kunt de volgende kits kopen:
| 1 | × | DIYables STEM V4 IoT Starterskit (Arduino inbegrepen) | |
| 1 | × | DIYables STEM V4B IoT Starterskit (Arduino inbegrepen) | |
| 1 | × | DIYables Sensorkit (18 sensoren/displays) |
Basiskennis van webclient en webserver
Wanneer u een website opent op uw pc of smartphone, typt u simpelweg het webadres (URL) in de browser, wacht een moment en dan wordt de webpagina weergegeven op uw pc/smartphone. U ziet niet wat er achter de schermen gebeurt. Dit is wat er achter de schermen plaatsvindt:
In deze handleiding laten we de Arduino fungeren als webclient die iets soortgelijks doet als uw pc/smartphone.
Webadres (URL)
Een URL bestaat uit twee delen: hostname en pathname. Het hostname kan vervangen worden door het IP-adres van de webserver. Bijvoorbeeld: example.com/test
In een HTTP GET-verzoek kan de URL ook een query string bevatten. Bijvoorbeeld: example.com/test?temperature=20&humidity=70.
Query String
De query string is een reeks naam-waardeparen die in het HTTP-request worden meegestuurd om gegevens van de webclient naar de webserver te sturen.
Naam en waarde zijn gescheiden door "="-teken. Naam-waardeparen zijn gescheiden door "&"-teken.
Bijvoorbeeld: temperature=26&humidity=70&state=2
HTTP Request
Een HTTP-request bestaat uit:
HTTP-request header en body zijn gescheiden door twee combinaties van carriage return (ASCII 13, '\r') en newline (ASCII 10, '\n').
Er zijn veel HTTP request-methodes. Twee veelgebruikte methodes zijn: GET en POST. Gewoonlijk gebruiken we GET om data op te halen van een webserver en POST om data naar een webserver te sturen. Echter, GET kan ook gebruikt worden om data te versturen en ontvangen.
Vereisten
We moeten de volgende waarden bepalen:
Het webadres (URL) wordt opgesplitst in hostname en pathname.
Hoe maakt u een HTTP-request
In dit gedeelte wordt alleen code toegelicht die te maken heeft met HTTP. De volledige code per shield staat in het laatste deel.
| Arduino Ethernet Shield | EthernetClient client; |
| Arduino Uno WiFi | WiFiClient client; |
Hoe verstuurt u data naar een webserver
U kunt data opnemen in een HTTP-request. Het dataformaat is afhankelijk van de HTTP request-methode:
We moeten alleen de code aanpassen die het HTTP-request verstuurt:
Complete Arduino-code voor het maken van HTTP-requests
Hieronder staat de complete Arduino-code voor het maken van HTTP GET/POST requests
Arduino HTTP GET/POST request met Arduino Uno R4 WiFi
Arduino HTTP GET/POST request met Arduino Ethernet Shield
Complete Arduino-code voor HTTP GET-request met data
Arduino HTTP GET-request met data using Arduino Uno R4 WiFi
Arduino HTTP GET-request met data using Arduino Ethernet Shield
Complete Arduino-code voor HTTP POST-request met data
Arduino HTTP POST-request met data using Arduino Uno R4 WiFi
Arduino HTTP POST-request met data using Arduino Ethernet Shield
※ Notiz:
Deze handleiding gaat uit van een dynamisch IP-adres (via DHCP). Wilt u een statisch IP-adres gebruiken:
Opmerkingen
WARNING
Let op: deze tutorial is nog niet compleet. We zullen een bericht plaatsen op onze Facebook-pagina wanneer de tutorial compleet is. Like de pagina om op de hoogte te blijven.