Skip to main content

HTTP POST na ThingSpeak

Što prikazuje ovaj primjer​

Povežite se na svoju Wi-Fi mrežu i svakih 20 sekundi šaljite nasumični broj na ThingSpeak kanal HTTP POST zahtjevom. Zaslon samo jednom, na početku, prikazuje kratku poruku; napredak se ispisuje na serijskom monitoru.

Prije prijenosa programa:

  1. Izradite besplatan račun na ThingSpeak.com i otvorite karticu Channels.
  2. Izradite novi kanal s jednim poljem. Skica šalje field1, pa polje mora imati upravo taj naziv.
  3. Otvorite kanal, idite na karticu API Keys i kopirajte svoj Write API Key.
  4. Upišite naziv svoje mreže i lozinku između navodnika kod ssid i pass, a ključ između navodnika kod writeAPIKey.

Komentar u samoj skici navodi da besplatna ThingSpeak licenca dopušta najmanje 15 sekundi između zahtjeva; POSTING_INTERVAL_IN_SESCS iznosi 20. Kada je zahtjev poslan, otvorite svoj kanal kako biste vidjeli graf poslanih podataka.

Ovaj primjer koristi i WiFi i WiFiClient (arduino-esp32), koji nisu dio Inkplate biblioteke i dolaze s paketom pločice ESP32.

Primjer koda​

Select Board
Inkplate7SPECTRA_HTTP_POST_ThingSpeak.ino
#include "Inkplate.h"
#include "WiFi.h"

Inkplate display;
WiFiClient client;

#define POSTING_INTERVAL_IN_SESCS 20

const char *ssid = "";
const char *pass = "";

char *server = "api.thingspeak.com";
String writeAPIKey = ""; // Enter your Write API Key

unsigned long lastConnectionTime = 0;

void setup()
{
// Init serial communication
Serial.begin(115200);

// Init Inkplate library (you should call this function ONLY ONCE)
display.begin();

// Clear frame buffer of display
display.clearDisplay();

// Set text color and size
display.setTextColor(INKPLATE_BLACK);
display.setTextSize(3);

// Display a message
display.printf("HTTP POST request example\n\n");
display.printf("Open Serial Monitor at \n115200 baud rate to see \nwhat's happening.");
display.display();

// Connect to the WiFi network
WiFi.mode(WIFI_MODE_STA);
WiFi.begin(ssid, pass);
Serial.print("Connecting to Wifi ");
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println();
Serial.print("Connected to WiFi network with IP Address: ");
Serial.println(WiFi.localIP());
}


void loop()
{
// Every POSTING_INTERVAL_IN_SESCS seconds make the POST request
if ((unsigned long)(millis() - lastConnectionTime) > POSTING_INTERVAL_IN_SESCS * 1000LL)
{
// Clear frame buffer of display
display.clearDisplay();

// Connect the WiFi client to the server via port 80
if (!client.connect(server, 80))
{
// If it fails, print a message, remember time, stop the client and reset the loop
Serial.println("Connection failed");
lastConnectionTime = millis();
client.stop();
return;
}
else
{
// If you have any sensor or something else, here you have to put data to send instead of a random number
int field1Data = random(40);

// Create data string to send to ThingSpeak
String data = "field1=" + String(field1Data); // shows how to include additional field data in http post

// POST data to ThingSpeak
if (client.connect(server, 80))
{
client.println("POST /update HTTP/1.1");
client.println("Host: api.thingspeak.com");
client.println("Connection: close");
client.println("User-Agent: ESP32WiFi/1.1");
client.println("X-THINGSPEAKAPIKEY: " + writeAPIKey);
client.println("Content-Type: application/x-www-form-urlencoded");
client.print("Content-Length: ");
client.print(data.length());
client.print("\n\n");
client.print(data);

Serial.print("The POST request is done: ");
Serial.println(data);
lastConnectionTime = millis();
delay(250);
}
}
client.stop();
}
}

Korištene funkcije​

Inkplate()returns None

Stvara Inkplate objekt, ovdje nazvan display. Inkplate 7SPECTRA ima jedan šesterobojni način rada, pa konstruktor ne prima argument načina rada.

ReturnsKonstruktor; nema povratne vrijednosti.

display.begin()returns void

Inicijalizira biblioteku, periferiju i međuspremnik okvira. Pozovite ga jednom u setup().

ReturnsNišta.

display.clearDisplay()returns void

Ispunjava međuspremnik okvira bijelom bojom. Ne mijenja zaslon.

ReturnsNišta.

display.setTextColor(uint16_t c)returns void

Postavlja boju teksta, ovdje INKPLATE_BLACK.

ReturnsNišta.

display.setTextSize(uint8_t s)returns void

Postavlja povećanje teksta, ovdje 3.

ReturnsNišta.

display.printf(format, ...)returns size_t

Ispisuje formatirani tekst u međuspremnik okvira, kao Serial.printf(). Skica ga koristi za poruku u dva dijela koja vas poziva da otvorite serijski monitor pri 115200 baud.

ReturnsBroj ispisanih bajtova.

display.display(bool _leaveOn = 0)returns void

Šalje cijeli međuspremnik okvira na zaslon i osvježava ga.

ReturnsNišta.

WiFi.mode(wifi_mode_t mode)returns bool

Paket pločice ESP32: postavlja Wi-Fi način rada. Skica koristi WIFI_MODE_STA, način za povezivanje na mrežu.

Returnstrue ako je način rada postavljen.

WiFi.begin(ssid, pass)returns wl_status_t

Paket pločice ESP32: započinje povezivanje na mrežu.

ReturnsStatus veze.

WiFi.status()returns wl_status_t

Paket pločice ESP32: status veze; WL_CONNECTED nakon povezivanja.

ReturnsStatus veze.

WiFi.localIP()returns IPAddress

Paket pločice ESP32: IP adresa koju je pločica dobila na mreži.

ReturnsIP adresa pločice.

WiFiClient()returns None

Paket pločice ESP32: objekt TCP klijenta. Skica ga stvara pod nazivom `client`.

ReturnsKonstruktor; nema povratne vrijednosti.

client.connect(host, port)returns int

WiFiClient: otvara vezu s poslužiteljem. Skica se povezuje na api.thingspeak.com na portu 80.

Returns1 ako je veza uspostavljena, 0 ako nije.

client.println(data)returns size_t

WiFiClient: šalje tekst praćen prijelomom retka. Skica uz njega šalje redak zahtjeva i HTTP zaglavlja, uključujući Write API Key u zaglavlju X-THINGSPEAKAPIKEY.

ReturnsBroj poslanih bajtova.

client.print(data)returns size_t

WiFiClient: šalje tekst takav kakav jest. Skica uz njega šalje vrijednost zaglavlja Content-Length, prazan redak i tijelo `field1=<number>`.

ReturnsBroj poslanih bajtova.

client.stop()returns void

WiFiClient: zatvara vezu.

ReturnsNišta.

Što očekivati​

Na zaslonu se prikazuju HTTP POST request example i redak koji traži da otvorite serijski monitor pri 115200 baud. U serijskom monitoru pri 115200 baud vidite Connecting to Wifi i točku svakih pola sekunde dok se pločica ne poveže, zatim Connected to WiFi network with IP Address: , a iza toga adresu koju je pločica dobila. Nakon toga, svakih 20 sekundi skica ispisuje The POST request is done: field1=, a iza toga nasumični broj od 0 do 39 koji je poslala, ili Connection failed kada ne može doći do poslužitelja.

🔗Otvorite cijeli primjer

examples/Inkplate7SPECTRA/Advanced/WEB_WiFi/Inkplate7SPECTRA_HTTP_POST_ThingSpeak

→