http-post.ino
Télémétrie locale de la MKR WiFi 1010 : chaque minute, une mesure analogique part en JSON POST vers une API de votre réseau (Flask, Node, InfluxDB…). Le gabarit exact de ce qu'attendent les bases de séries temporelles, testable en dix lignes de serveur Python.
Matériel requis
Une Arduino MKR WiFi 1010 (microcontrôleur SAMD21, module Wi-Fi WINC1500, pas de Bluetooth, alimentation USB ou LiPo sur J6). MKR WiFi 1010 sur le LAN, machine d'écoute avec un serveur HTTP acceptant POST (IP fixe conseillée).
Câblage
Aucun câblage ; fixez l'IP du serveur via bail DHCP statique pour éviter les surprises.
Fonctionnement
Le corps JSON est construit avec String, Content-Length calculé automatiquement. La réponse du serveur est lue et jetée pour libérer la socket proprement avant le prochain cycle.
Exécution
Installez Arduino SAMD Boards et la bibliothèque WiFi101, sélectionnez la carte, téléversez. Le Wi-Fi fonctionne en 2,4 GHz uniquement : vérifiez que votre point d'accès n'est pas en 5 GHz seul.
Variantes
Ajoutez un en-tête d'authentification (Bearer), passez en HTTPS avec WiFiSSLClient, ou empilez les mesures en RAM pour un POST groupé économique.
http-post.ino
// POST JSON periodique MKR WiFi 1010 vers une API locale (Flask/Node).
#include <SPI.h>
#include <WiFi101.h>
const char SSID[] = "MonReseau";
const char PASS[] = "motdepassewifi";
const char SERVEUR[] = "192.168.1.50"; // machine d'ecoute
const int PORT = 5000;
WiFiClient client;
unsigned long dernier = 0;
void setup() {
Serial.begin(9600);
WiFi.begin(WPA_PASS_PHRASE, SSID, PASS);
while (WiFi.status() != WL_CONNECTED) delay(100);
Serial.println(WiFi.localIP());
}
void loop() {
if (millis() - dernier < 60000) return; // 1/min
dernier = millis();
String json = "{\"capteur\":\"salon\",\"valeur\":" +
String(analogRead(A1)) + "}";
if (client.connect(SERVEUR, PORT)) {
client.print(String("POST /mesures HTTP/1.1\r\nHost: ") + SERVEUR +
"\r\nContent-Type: application/json\r\nContent-Length: " +
json.length() + "\r\n\r\n" + json);
delay(500);
while (client.available()) client.read(); // vide la reponse
client.stop();
Serial.println("POST " + json);
} else Serial.println(F("serveur KO"));
}