Как настроить mqtt dash

Доступная автоматика HelloDistiller на Ардуино Мега 2560

Подскажите, что будет если в ардуину залить скетч и подключить толко дисплей шилд с кнопками?
У меня какая-то ерунда.
Сначала секунды на 2 появляется экран с определение количества датчиков температуры.
Потом на 2 секунды номер прошивки и номер упрощенной версии.
А далее начинают прыгать параметры отраженные на экране. То пишет развар, то аларм, то вода.
На клавиатуру не реагирует.

Это все нормально?

Прошивка 347i-1 упрощенка — 0.

А далее начинают прыгать параметры отраженные на экране. binomus, 25 Нояб. 16, 22:37

скинул скетч для проверки кнопок binomus, 26 Нояб. 16, 09:26

Скетч маленький. Его проще в сообщении указать:
#include
//подключаем библиотеку работы с ЖКИ

LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
int analogPin = 0; // номер порта к которому подключены кнопки
int val = 0; // переменная для хранения считываемого значения

void loop()
<
val = analogRead(analogPin); // считываем значение
lcd.setCursor(0, 1);
lcd.print(val); // выводим полученное значение
delay(500);
lcd.setCursor(0, 1);
lcd.print(» «); // стираем старое значение
>

Его задача показывать значения нажатых клавиш. А вот как основной скетч автоматики подправить, если я знаю значения нажатых кнопок?

Подскажите,где можно скорректировать скетч под нестандартные аналоговые кнопки? binomus, 26 Нояб. 16, 09:26

Посл. ред. 26 Нояб. 16, 13:46 от shram1970

Продолжая тему, начатую здесь [сообщение #12860905], опишу в этом сообщении как установить MQTT Dash, скачать настройки для отображения информации, завести аккаунт на бесплатном MQTT-брокере CloudMQTT и подключиться к нему.

1. Установка MQTT Dash и скачивание настроек.
Программу можно установить на любое ваше андроид устройство. Скачиваете программу по этой ссылке https://play.google.com/store/apps/details?id=net.routix.mqttdash (не забудьте плюсануть разработчику за абсолютно безвозмездное предоставление программы ). Запустите программу и создайте новое соединение с MQTT-брокером для скачивания настроек. Для этого нажмите на «+» в правом верхнем углу. Заполните настройки соединения, как показано на скриншоте. Пароль пользователя 12345. Идентификатор клиента заполняется автоматически. Имя для страницы можете указать любое.
Screenshot_2016-11-26-15-06-52. Доступная автоматика HelloDistiller на Ардуино Мега 2560. Автоматика.
После заполнения нажмите на кнопку сохранения в правом верхнем углу.
Войдите в созданное соединение и нажмите на кнопку с двумя разнонаправленными стрелками. Появится окно диалога для скачивания настроек.
Screenshot_2016-11-26-14-11-44. Доступная автоматика HelloDistiller на Ардуино Мега 2560. Автоматика.
Введите в поле «Топик» значение page_settings и нажмите на кнопку «Подписаться и ждать метрики». Настройки будут скачены с MQTT-брокера и отобразятся на странице.
Повторите аналогичные действия для создания страницы «Ректификация».
Screenshot_2016-11-26-14-09-29. Доступная автоматика HelloDistiller на Ардуино Мега 2560. Автоматика.
При скачивании настроек в поле «Топик» введите значение page_rectif.

2. Создание аккаунта на брокере CloudMQTT.
Как зарегистрироваться и настроить брокер, подробно описано в начале этой статьи https://esp8266.ru/IoT-Manager-for-DIY/#quickstart, поэтому копипастом заниматься не буду. На видео в статье также показаны все необходимые действия.
Единственное, на что надо обратить внимание, не используйте имена пользователей и пароли из скриншотов в статье.
ВАЖНО: когда будете описывать доступ к темам в разделе «New Rule», обязательно включите оба чекбокса Read Access и Write Access.
После регистрации и настройки своего аккаунта на брокере, необходимо подключить к нему MQTT Dash. Для этого используем долгое нажатие на имени соединения и попадаем в настройки соединения (мы это уже делали в первом пункте, когда подключались к брокеру для скачивания настроек).
В указанной выше статье показан скриншот страницы брокера «Instance Info», надо ввести с подобной страницы параметры своего аккаунта при настройке соединения в MQTT Dash.
ВАЖНО: обратите внимание, что значение порта надо брать из графы «Port» (не SSL Port и не Websoscets Port).
Если вы все сделали правильно, то при входе на страницу отображения информации у вас не будет появляться сообщение в нижней части экрана «Connection failed».

Для проверки соединения с брокером добавим тестовую кнопку и «поуправляем» клапаном отбора. Для этого нажимаем на «+» в правом верхнем углу страницы и попадаем в диалог добавления нового элемента отображения информации.
Screenshot_2016-11-26-14-24-41. Доступная автоматика HelloDistiller на Ардуино Мега 2560. Автоматика.
Выбираем элемент Switch (переключатель) и остальные параметры заполняем, как указано на этом скриншоте.
Screenshot_2016-11-26-14-27-43. Доступная автоматика HelloDistiller на Ардуино Мега 2560. Автоматика.
Не забывайте сохранить введенные настройки.
Теперь при нажатии на эту тестовую кнопку изображение состояния клапана отбора будет меняться.

Читайте также:  Как отремонтировать тетрадь если оторвалась обложка

Скетчи для ардуино и ESP выложу чуть позже. Ну и опишу, как установить локальный брокер Mosquitto в локальной домашней сети (чтобы был выбор между облачным брокером и локальным).

Посл. ред. 30 Нояб. 16, 10:07 от max506

Если вам удалось подключиться к MQTT-брокеру и через него с помощью тестовой кнопки поуправлять состоянием клапана отбора, то самое время перейти к заливке скетчей в ардуино Мега и ESP8266.

1. Подготовка среды разработки Arduino IDE для поддержки плат ESP.
Загружаете среду разработки Ардуино (у меня версия 1.6.10). Открываете меню Файл => Настройки.
В открывшемся окне в поле «Дополнительные ссылки для Менеджера плат» вводите строку http://arduino.esp8266.com/. 6com_index.json. Жмете «OK».
Pic1. Доступная автоматика HelloDistiller на Ардуино Мега 2560. Автоматика.
Открываете меню Инструменты => Менеджер плат (в самом верху меню, в котором выбирается используемая плата). В открывшемся окне в строке поиска вводите «esp».
Pic2. Доступная автоматика HelloDistiller на Ардуино Мега 2560. Автоматика.
Выбираете esp8266 by ESP8266 Community.
Pic3. Доступная автоматика HelloDistiller на Ардуино Мега 2560. Автоматика.
ВАЖНО: Устанавливаемую версию обязательно выбирать 2.0.0, поскольку с более свежими версиями не всегда корректно работает передача данных по UART. Жмете «Установка» и дожидаетесь установки поддержки семейства плат ESP.
Теперь необходимо выбрать саму плату. Мне повезло, поскольку я использую плату WeMos D1, и конкретно она есть в списке. Но также пробовал выбирать ESP-12 Module и ESP-12E Module, тоже работает. Пробуйте варианты для своих плат.
Осталось скопировать библиотеку поддержки MQTT PubSubClient в каталог libraries среды разработки Ардуино. Библиотека в присоединенном файле pubsubclientesp8266.rar
Теперь среда разработки готова для компиляции и загрузки скетча в модуль ESP.

2. Загрузка скетча в ESP.
ВАЖНО:
— перед загрузкой скетча убедитесь, что вы сможете/умеете вернуть в свой модуль ESP предыдущую прошивку.

В этой теме многие писали, что умеют загружать прошивки на основе AT-команд (именно эта прошивка используется программой автоматики изначально), но для непосвященного процесс может быть не тривиальным. Ну, или как вариант, купить еще один модуль. В хозяйстве всегда пригодится и цена их сейчас копеечная.
— я тестировал скетч с модулями, имеющими память 4Mб. Ранние модули ESP имеют память 1Mб, с ними надо пробовать.
Открываем в среде разработки скетч из присоединенного файла Esp8266_MQTT.rar
В верхней части скетча необходимо прописать свои значения в переменные, выделенные на скриншоте
Pic4. Доступная автоматика HelloDistiller на Ардуино Мега 2560. Автоматика.
ssid и pass — это имя и пароль точки доступа, через которую вы выходите в интернет.
mqtt_server, mqtt_port, mqtt_user, mqtt_pass — это значения, которые вы вводили при настройке соединения с брокером в программе MQTT Dash. В переменную esp_name можете прописать название своего модуля esp.
Теперь можно компилировать скетч и загружать его в ESP.

3. Загрузка скетча автоматики в ардуино Мега.
За основу взят скетч версии 347i-1 (см. присоединенный файл HelloDistiller347i-1.rar). Он полностью готов к компиляции и загрузке.
Если вы используете свои версии скетчей, то просто перенесите блоки кода в свои скетчи на те же места (таких блоков пять).
Каждый блок кода помещен в директивы компилятору
//###########################################################################################
#ifdef MQTT_BROKER

Таким образом код легко переносить между скетчами и с помощью комментирования директивы условной компиляции //#define MQTT_BROKER полностью исключать его из основного кода программы.

ВАЖНО: платы ардуино Мега и ESP обмениваются информацией по UART. Для ардуино это аппаратный Serial3, пины 15(RX) и 14(TX). У ESP один аппаратный Serial. Не забудьте при подключении согласовать модули по питанию, например, вот через такое устройство http://brainid.ru/product/level-converter-4p/

4. Несколько слов об известной проблеме с недостатком свободной памяти.
Сейчас при компиляции скетча мы видим сообщение о недостатке динамической памяти для размещения в ней значений переменных. Я сразу же столкнулся с этой проблемой, поскольку написанный код содержал много строковых констант, которые передаются потом по UART. Ну а вот Flash памяти, куда загружается код программы, у нас предостаточно. И там же хранятся все текстовые строки. Так почему бы их значения не читать непосредственно из этой памяти, экономя при этом динамическую память? Что я и сделал, объявив эти переменные с директивой PROGMEM и используя соответствующие функции для доступа к Flash (PROGMEM). Благодаря этому удалось разместить весь код в 261 байт динамической памяти (остальное во Flash).
Думаю, что если применить подобный подход к хранению всех текстовых шаблонов строк, выводимых на LCD дисплей, можно совсем избавиться от сообщения «Недостаточно памяти, программа может работать нестабильно».

Читайте также:  Сломалось сливная пробка радиатора от ваз

5. Установка локального брокера Mosquitto.
Если вы не хотите расходовать интернет трафик для подключения к облачному брокеру CloudMQTT, установите в своей локальной сети брокер Mosquitto.
Процесс установки подробно показан в этом видео
Кратко о некоторых моментах:
Скачать брокер можно по этой ссылке в разделе Windows http://mosquitto.org/download/. Инсталляция очень проста и не вызовет проблем. Единственный нюанс (об этом упоминается на видео в 2:35 по времени), требуется скачать дополнительные файлы и поместить их в директорию mosquitto установленного брокера. Я выложил их для вас в присоединенном архиве Mosquitto_files.rar.
Для запуска брокера рекомендую создать ярлык на рабочем столе и запускать с опцией -v, так вы будете видеть в окне консоли брокера все посылаемые через него сообщения.
Yarlik. Доступная автоматика HelloDistiller на Ардуино Мега 2560. Автоматика.
Не забудьте настроить схему электропитания так, чтобы комп, на котором вы установили брокер, не уходил в режим сна, иначе брокер станет недоступен.

ВАЖНО. Настройка подключения к локальному MQTT брокеру Mosquitto программы MQTT Dash:
— в поле Адрес надо ввести ip-адрес компьютера, на котором установлен брокер;
— порт всегда 1883 по умолчанию;
— если вы не настраивали аутентификацию на брокере, то поля Имя пользователя и Пароль пользователя не заполняете.
Аналогичные настройки требуется прописать в скетч для модуля ESP.

С удовольствием отвечу на возникшие (как по прочтению, так и в процессе установки) вопросы.
Удачи!

Видео ректификации с использованием MajorDoMo и MQTTDash здесь [сообщение #12901566]

Источник

Esp8266 управление через интернет по протоколу MQTT


Всем привет! В этой статье будет подробно рассказано и показано как буквально за 20 минут свободного времени настроить дистанционное управление модулем esp8266 с помощью приложения на Android по протоколу MQTT.

Идея дистанционного управления и мониторинга всегда будоражила умы увлеченных в электронике и программировании людей. Ведь возможность в любой момент времени получить или отправить нужные данные, не зависимо от своего местоположения, дает широкие возможности. В своих прошлых статьях ( Статья 1 и Статья 2) я пытался рассмотреть несколько доступных и относительно простых вариантах реализации дистанционного управления микроконтроллерами через интернет. Однако время и весь мир не стоит на месте – прогресс продолжает свое неумолимое движение вперед. За это небольшое время приобрел широкую популярность модуль esp8266 который благодаря низкой цене и встроенному wi-fi стал одним из основных составляющих «Умного дома».

На данный момент MQTT является передовым и наиболее популярным протоколом передачи данных между отдельными устройствами в рамках систем «Умного дома». Он обладает рядом преимуществ по отношению к другим протоколам:
— низкое потребление трафика;
— соединение между клиентом и сервером всегда открыто;
— не нагружает интернет канал;
— отсутствие задержек в передаче данных;
— удобная система подписок на топики;
Всё это дает возможность мониторинга и управления в режиме реального времени. Однако MQTT требует наличие своего собственного сервера, который выполняет роль посредника между клиентами сети. Тут есть два выхода либо создавать свой сервер либо использовать сторонние сервисы.

Описываемая система управления состоит из двух основных частей: сервера MQTT (он как правило один) и клиентов, которых может быть довольно много. В нашем случае в качестве клиентов будут выступать приложение на Android и сам модуль esp8266.

Алгоритм работы системы следующий. Клиенты подключаются к серверу и сразу после подключения каждый из них осуществляет подписку на и интересующие его топики. Всё общение между клиентами проходит транзитом через сервер, который перенаправляет данные другим клиентам с учетом их подписок.

Читайте также:  B стойка нар отремонтировать

В нашем случае мы будем использовать крайне удобный сервис www.cloudmqtt.com у которого есть бесплатный тарифный план (Cute Cat), который полностью покроет потребности для реализации небольшой собственной системы «умного дома».

Пройдём регистрацию на сайте и получаем необходимые данные для доступа к серверу. При настройке клиентов необходимо использовать обычный Порт ( без SSL и TLS).

Приложение на Android.

Наше приложение будет выступать в качестве пульта управления для микроконтроллера, а так же будет принимать и отображать всю получаемую информацию от esp8266.

Приложение называется IoT MQTT Dashboard и представляет собой готовый mqtt клиент с небольшим количеством очень удобных виджетов. Более подробно о работе с приложением можно посмотреть на видео.

Модуль прошивается в среде программирования Arduino, однако хочу заметить что у модуля проблемы с прошивкой в последних версиях Arduino, поэтому рекомендую использовать версию 1.6.4.
Для примера к esp8266 подключены светодиод (5 пин) и датчик температуры ds18b20 (2 пин).
Так как для управления светодиода необходимо получать данные, то esp после подключения должно оформить подписку на соответствующий топик «test/led» иначе все отправленные данные пройдут мимо нашего микроконтроллера.
Для отправки данных температуры подписка не нужно, но при передаче значений температуры необходимо указывать топик в который эти данные пойдут.

Ниже приведен скетч с подробными комментариями.

// Светодиод подлкючен к 5 пину
// Датчик температуры ds18b20 к 2 пину

#define ONE_WIRE_BUS 2
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);

const char *ssid = «AIRPORT»; // Имя вайфай точки доступа
const char *pass = «PASSWORD»; // Пароль от точки доступа

const char *mqtt_server = «server»; // Имя сервера MQTT
const int mqtt_port = 11140; // Порт для подключения к серверу MQTT
const char *mqtt_user = «Login»; // Логи от сервер
const char *mqtt_pass = «Pass»; // Пароль от сервера

#define BUFFER_SIZE 100

bool LedState = false;
int tm=300;
float temp=0;

// Функция получения данных от сервера

void callback(const MQTT::Publish& pub)
<
Serial.print(pub.topic()); // выводим в сериал порт название топика
Serial.print(» => «);
Serial.print(pub.payload_string()); // выводим в сериал порт значение полученных данных

String payload = pub.payload_string();

if(String(pub.topic()) == «test/led») // проверяем из нужного ли нам топика пришли данные
<
int stled = payload.toInt(); // преобразуем полученные данные в тип integer
digitalWrite(5,stled); // включаем или выключаем светодиод в зависимоти от полученных значений данных
>
>

WiFiClient wclient;
PubSubClient client(wclient, mqtt_server, mqtt_port);

sensors.begin();
Serial.begin(115200);
delay(10);
Serial.println();
Serial.println();
pinMode(5, OUTPUT);
>

void loop() <
// подключаемся к wi-fi
if (WiFi.status() != WL_CONNECTED) <
Serial.print(«Connecting to «);
Serial.print(ssid);
Serial.println(«. «);
WiFi.begin(ssid, pass);

if (WiFi.waitForConnectResult() != WL_CONNECTED)
return;
Serial.println(«WiFi connected»);
>

// подключаемся к MQTT серверу
if (WiFi.status() == WL_CONNECTED) <
if (!client.connected()) <
Serial.println(«Connecting to MQTT server»);
if (client.connect(MQTT::Connect(«arduinoClient2»)
.set_auth(mqtt_user, mqtt_pass))) <
Serial.println(«Connected to MQTT server»);
client.set_callback(callback);
client.subscribe(«test/led»); // подписывааемся по топик с данными для светодиода
> else <
Serial.println(«Could not connect to MQTT server»);
>
>

if (client.connected()) <
client.loop();
TempSend();
>

>
> // конец основного цикла

// Функция отправки показаний с термодатчика
void TempSend() <
if (tm==0)
<
sensors.requestTemperatures(); // от датчика получаем значение температуры
float temp = sensors.getTempCByIndex(0);
client.publish(«test/temp»,String(temp)); // отправляем в топик для термодатчика значение температуры
Serial.println(temp);
tm = 300; // пауза меду отправками значений температуры коло 3 секунд
>
tm—;
delay(10);
>

В результате мы получаем удобный инструмент для дистанционного управления и мониторинга данных, который довольно прост в освоении и будет по силу даже начинающим.

Видео с демонстрацией работы системы управления

Подробная видеоинструкция по настройке системы

Один из вариантов применения управления esp8266 через MQTT протокол

Управление светодиодной лентой через интернет

Если у вас возникли вопросы по данному материалу, то рекомендую посмотреть вторую часть видео, где материал изложен более наглядно.

В архиве находятся скетч и все необходимые библиотеки для прошивки микроконтроллера скетчем из примера.
Обращаю ваше внимание, что библиотека ESP8266WiFi.h не входит в данный архив, она устанавливается через Boards manager в среде Arduino.

Источник

Оцените статью