Рассмотрим пример который позволит наблюдать за температурой и влажностью воздуха, отслеживать часовые изменения в показаниях и строить график уровень 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; } }
Добавления виджетов:
Теперь вы все настроили и осталось дождаться подключения вашего устройства на сервер.