http-post.ino

Arduino MKR WiFi 1010 · Archivo : http-post.ino · Lenguaje : Arduino · Uso : Publier une mesure vers une API REST en POST

Telemetría local de la MKR WiFi 1010: cada minuto una lectura analógica sale como POST JSON hacia una API de tu red (Flask, Node, InfluxDB...). La plantilla exacta que esperan las bases de series temporales, comprobable con diez líneas de servidor Python.

Hardware

Una Arduino MKR WiFi 1010 (microcontrolador SAMD21, módulo Wi-Fi WINC1500, sin Bluetooth, alimentación USB o LiPo en J6). MKR WiFi 1010 en la LAN, máquina de escucha con servidor HTTP que acepte POST (IP fija recomendada).

Cableado

Sin cableado; fija la IP del servidor con un lease DHCP estático para evitar sorpresas.

Funcionamiento

El cuerpo JSON se construye con String, Content-Length calculado automáticamente. La respuesta del servidor se lee y se descarta para liberar el socket limpiamente antes del siguiente ciclo.

Ejecución

Instala Arduino SAMD Boards y la librería WiFi101, selecciona la placa y carga. El Wi-Fi funciona solo en 2,4 GHz: comprueba que tu punto de acceso no sea solo de 5 GHz.

Variantes

Añade una cabecera de autenticación (Bearer), pasa a HTTPS con WiFiSSLClient o acumula medidas en RAM para un POST agrupado económico.

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"));
}

← Volver a la ficha