Рассмотрим пример который позволит наблюдать за температурой и влажностью воздуха, отслеживать часовые изменения в показаниях и строить график уровень Wi-Fi сигнала с частотой обновления информации каждые 20 секунд.
Что нам потребуется:
Добавление и настройка устройства:
Прошивка ESP8266:
#include <ESP8266WiFi.h>
#include <Wire.h>
#include "Adafruit_SHT31.h"
#include <WiFiClient.h>
#include <ESP8266HTTPClient.h>
HTTPClient http;
Adafruit_SHT31 sht31 = Adafruit_SHT31();
//ssid и пароль доступа для подключения к WI-FI
const char* ssid = "........";
const char* password = "........";
//Адрес и Порт сервера
const char* http_server = "VizIoT.com";
const int http_port = 48656;
//Ключ и пароль доступа VizIoT Устройства (можно узнать в настройках устройства)
String VizIoT_Device_key = "................";
String VizIoT_Device_pass = "....................";
void setup() {
//Включаем вывод информации в Serial Monitor
Serial.begin(115200);
//Подключаемся к WI-FI
setup_wifi();
Serial.println("Поиск датчика SHT31-D");
if (! sht31.begin(0x44)) { // укажите 0x45 для альтернативного i2c адреса датчика
Serial.println("Не могу найти SHT31-D");
}
}
void loop() {
String url = String("/update?key=") + VizIoT_Device_key + "&" + "pass=" + VizIoT_Device_pass ;
//считываем показания с датчиков
float t = sht31.readTemperature();
float h = sht31.readHumidity();
//проверяем информацию о температуре
if (! isnan(t)) {
Serial.print("Температура *C = ");
Serial.println(t);
url += String("&tem=") + t;
} else {
Serial.println("Ошибка при чтении температуры");
}
//проверяем информацию о влажности
if (! isnan(h)) {
Serial.print("Hum. % = ");
Serial.println(h);
url += String("&hum=") + h;
} else {
Serial.println("Ошибка при чтении влажности");
}
if (sendGetRequest(url) == true) {
Serial.println("Данные успешно отправлены на сервер");
} else {
Serial.println("Во время отправки данных возникла ошибка");
}
//уснуть на 20 секунд
delay(20000);
}
//Функция подключения к WI-FI
void setup_wifi() {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
//Ожидает подключения к WI-FI
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected");
}
//Функция отправки данных на сервер
int sendGetRequest(String url) {
if (WiFi.status() == WL_CONNECTED) {
http.begin(http_server, http_port, url);
int httpCode = http.GET();
if (httpCode > 0) {
String payload = http.getString();
http.end();
if (payload.equals("OK")) {
return true;
} else {
return false;
}
} else {
Serial.println("[HTTP] GET... failed, error!!!\r\n");
Serial.print("httpCode = ");
Serial.println(httpCode);
http.end();
return false;
}
} else {
return false;
}
}
Добавления виджетов:
Теперь вы все настроили и осталось дождаться подключения вашего устройства на сервер.