В этом примере создадим устройство, которое будет измерять температуру и влажность воздуха, передавать данные на сервер VizIoT, отслеживать динамику значений и строить графики. Также устройство будет отправлять уровень Wi-Fi сигнала (RSSI) каждые 20 секунд.
Создайте новое устройство, например: «Тест температура и влажность воздуха»
Добавьте параметры:
В разделе «Основные настройки» скопируйте:
Они понадобятся в прошивке.
#include <ESP8266WiFi.h>
#include <Wire.h>
#include "Adafruit_SHT31.h"
#include <WiFiClient.h>
#include <ESP8266HTTPClient.h>
HTTPClient http;
Adafruit_SHT31 sht31 = Adafruit_SHT31();
// Данные Wi-Fi
const char* ssid = "........";
const char* password = "........";
// Сервер VizIoT
const char* http_server = "VizIoT.com";
const int http_port = 48656;
// Ключи доступа VizIoT
String VizIoT_Device_key = "................";
String VizIoT_Device_pass = "....................";
void setup() {
Serial.begin(115200);
setup_wifi();
Serial.println("Поиск датчика SHT31-D");
if (!sht31.begin(0x44)) {
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("Влажность % = ");
Serial.println(h);
url += String("&hum=") + h;
} else {
Serial.println("Ошибка чтения влажности");
}
// RSSI
long rssi = WiFi.RSSI();
url += String("&rssi=") + rssi;
// Отправка на сервер
if (sendGetRequest(url) == true) {
Serial.println("Данные успешно отправлены на сервер");
} else {
Serial.println("Ошибка отправки данных");
}
delay(20000); // 20 секунд
}
void setup_wifi() {
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nWiFi 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();
return payload.equals("OK");
} else {
Serial.println("[HTTP] GET... failed");
http.end();
return false;
}
} else {
return false;
}
}
Установите библиотеку Adafruit SHT31 Library: https://github.com/adafruit/Adafruit_SHT31
ssid — имя вашей Wi-Fi сетиpassword — пароль Wi-FiVizIoT_Device_key — ключ устройстваVizIoT_Device_pass — пароль устройстваПодключаем по I²C:
| Пин датчика | Пин ESP8266 |
|---|---|
| VIN | 3V3 |
| GND | G |
| SCL | D1 |
| SDA | D2 |
После подключения — загрузите скетч в ваш ESP8266.
Создаём панель: «Тест панель темп. влаж.»
Добавляем виджеты:
Устройство полностью настроено — осталось дождаться, когда ESP8266 подключится к Wi-Fi и начнёт отправлять данные на сервер VizIoT.