Читаем данные с датчиков (DHT11, Blynk, Aimylogic)
Вступление
В данной статье рассмотрим вариант получения данных с датчиков посредством голосового запроса Алисе. Для примера будем использовать датчик DHT11 подключенный к NodeMCU и добавленный в проект Blynk.
Данная статья будет являться лишь примером получения данных с датчиков с помощью http get запроса. По данному примеру можно будет "пробросить" датчики, возвращающие ответ в различных форматах.
Собираем простейший датчик
В данном примеру будут использованы следующие компоненты:
Собираем простейшую схему, как на рис.1.

Внимание! Для работы с nodemcu в Arduino IDE требуется настройка с платой. Пример настройки можно найти здесь: https://robotclass.ru/articles/node-mcu-arduino-ide-setup/. Также потребуется установка библиотек Blynk - скачать можно здесь: http://help.blynk.cc/en/articles/512105-how-to-install-blynk-library-for-arduino-ide.
Подключаем плату к ПК и прошиваем следующей прошивкой:
#define BLYNK_PRINT Serial
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include "DHT.h"
int custT = 0;
int custH = 0;
char auth[] = "Токен_Blynk";
char ssid[] = "Имя_точки_доступа_Wifi";
char pass[] = "Пароль_Wifi";
#define DHTPIN D1
#define DHTTYPE DHT11 // DHT 11
DHT dht(DHTPIN, DHTTYPE);
void setup()
{
Serial.begin(9600);
Blynk.begin(auth, ssid, pass);
dht.begin();
}
void loop()
{
Blynk.run();
int h = dht.readHumidity(); //получаем влажность
int t = dht.readTemperature(); //получаем температуру
if (h != custH){ //если показания отличаются от прошлых - отправляем их на виртуальный пин
Blynk.virtualWrite(V0, h);
custH = h;
}
if (t != custT){ //если показания отличаются от прошлых - отправляем их на виртуальный пин
Blynk.virtualWrite(V1, t);
custT = t;
}
}
Не забываем изменить параметры:
char auth[] = "Токен_Blynk";
char ssid[] = "Имя_точки_доступа_Wifi";
char pass[] = "Пароль_Wifi";
Подробнее о том, как создать проект в Blynk и получить токен можно узнать ЗДЕСЬ
Читаем данные в Blynk
Проверим, работает ли датчик. Для этого в нашем проекте Blynk добавим 2 виджета:
- Нажимаем кнопку со знаком "+" в заголовке проекта.
- Выбираем один из виджетов (можно использовать любой из этих: Value Display, Labeled Value, Gauge). Для примера выберу Gauge.
- Оба виджета настраиваем выбрав в Source устройство, к которому привязан наш токен, виртуальные пины: V0 - для значений влажности, V1 - для значений температуры.
- Запускаем проект и видим текущие показания температуры и влажности. Проверить работу датчика можно дыханием в сторону датчика - показания должны увеличиться.
-
1. Нажимаем кнопку со знаком "+".
-
2. Выбираем один из виджетов.
-
3. Настраиваем виджеты.
-
4. Запускаем проект и видим показания.
Создаем навык для Яндекс Диалогов
На данный момент УДЯ не поддерживает получение данных с датчиков, поэтому мы схитрим. Создадим обычный навык для Яндекс Диалогов наиболее простейшим образом, т.е. с помощью конструктора Aimylogic.
Для этого пройдем регистрацию ЗДЕСЬ.
- После регистрации мы попадаем на главную страницу, где будут располагаться наши боты. Для создания нового бота (для навыка Алисы) нажимаем кнопку "Создать бота или обзвон".
- В следующем окне зададим имя бота (любое), язык и категорию.
- Перед нами откроется рабочая область создания сценария, в которой будет предложено создать первый экран. Для начала создадим блок "Текст", чтобы поприветствовать входящего в навык пользователя.
- Рекомендую задать что-то похожее на текст, указанный на рисунке, т.к. по требованиям Яндекс приватный навык должен с первого экрана предупреждать о том, что он приватный, а также при запросе "Помощь" (об этом чуть ниже) должна появляться справка о функционале навыка. Без данных требований навык не сможет пройти модерацию.
- В этом же экране создадим новый блок "Интенты", где зададим шаблоны фраз, на которые будет откликаться Алиса. В данном случае будет 2 интента (* ~температура * ~балкон * - для того чтобы узнать температуру для примера балкона (предположим, что наш датчик находится на балконе) и * ~влажность * ~балкон * - для того, чтобы узнать влажность балкона).
- Чуть ниже создадим новый экран с двумя блоками: "Текст" - где укажем, что будет отвечать Алиса, если фраза не совпадает с шаблонами интентов и "Переход", чтобы вернуться на начальный экран.
-
1. Нажимаем кнопку "Создать бота или обзвон".
-
2. Зададим имя бота (любое), язык и категорию.
-
3. Рабочая область.
-
4. Задаем текст приветствия.
-
5. Блок "Интенты".
-
6. Экран неизвестной фразы.