Блок для ESP8266, Связь с миром по MQTT.

Разработка блока MQTT. FLProg 3.1.2

Создаем свой блок. Вопросы, помощь знатоков.
Anydy

Блок для ESP8266, Связь с миром по MQTT.

#1

Сообщение Anydy » 14.07.2018{, 19:42}

Блок для связи ESP8266 с внешним миром по протоколу MQTT.
Позволяет публиковать сообщения и подписываться на топики.
Это первая версия, тестируем!
Для работы необходим MQTT брокер, можно зарегистрироваться на бесплатном тарифе http://cloudmqtt.com
или установить свой брокер например на одноплатном компьютере или даже роутере.
В случае брокера в локальной сети необходимо в роутере пробросить порт брокера.
В настройках блока необходимо заполнить все поля.
inTopic - Имя топика, в который будут приходить все входящие сообщения
При публикации сообщений в топик указанный в настройках - на выходе блока будет пришедшая в топик строка.
ssid - имя вашего роутера (AP Name)
password - пароль на вашу сеть.
mqtt_server - IP адрес или доменное имя вашего брокера.
cluser, clpass - соответственно имя и пароль учетной записи на вашем брокере
OutTopic1, 2, 3 - названия топиков, в которые будут публиковаться данные с трех входов, при подаче лог. 1 на соответствующий вход.

После прошивки контроллера в мониторе порта должно появится :
..
WiFi connected
IP address:
192.168.0.101
Attempting MQTT connection...connected
Message arrived [Vhod_cmc] Lampa Gorit
Message arrived [Vhod_cmc] Kuxna_svet_on
Message arrived [Vhod_cmc] Temperatura 29.48
Последние три строки - это ESP получил данные от брокера


Первый пост буду дополнять и редактировать....
MQTT_ESP_1_1_(CODE).ubi
(289.59 КБ) 176 скачиваний
Добавлена настройка порта для брокера.
Некоторые сервера (как и cloudmqtt.com) используют не стандартный порт.
MQTT_ESP_1_2_(CODE).ubi
(290.72 КБ) 160 скачиваний
На всякий случай библиотека используемая в проекте
pubsubclient.zip
(36.84 КБ) 209 скачиваний
Update: Сделал новую версию блоков.
В комплекте три блока - Основной со всеми настройками, публикация и подписка.
Основной должен быть всегда.
Блоков публикация и подписка - может быть несколько в проекте.
Настройки этих блоков выведены на входы блока.
Публикация:
En - При положительном импульсе происходит отправка сообщения (используйте RTrig)
msg - текст сообщения
outTopic - имя топика в который будет публиковаться сообщение

Подписка:
NameTopic - имя топика который программа будет "прослушивать"
OutData - Данные которые пришли в этот топик
Заметьте, Программа слушает абсолютно все входящие сообщения, не стоит перегружать количеством.
Все входящие сообщения для проверки отправляются в COM порт.

Пример проекта для проверки коннекта на FLProg:
Test_mqtt_ESP_ver2.flp
(359.47 КБ) 251 скачивание
Блоки версии 2_1
MQTT_ESP_v2.zip
(30.25 КБ) 201 скачивание
Версия 2_2
Убран вывод данных в СОМ порт, если нужно будет - сделаю в виде отдельного блока.
MQTT_ESP_v_2_2.zip
(30.07 КБ) 239 скачиваний
Update 29.07.18
Небольшая доработка блока Main.
Добавлено автоматическое переподключение к сети WiFi при потери связи.
MQTT_ESP_Main_2_3_(CODE).ubi
(726.9 КБ) 167 скачиваний
Update 30.07.18
Изменил способ переподключения к сети WiFi - так вроде правильнее)))
Проверил, после отключения роутера - модуль сам переподключается к сети и к брокеру.
Убрал автогенерацию ID - например сервис народмон требует МАС адрес в ID - теперь ID вынесен в настройки.
MQTT_ESP_Main_2_4_(CODE).ubi
(728.41 КБ) 338 скачиваний

fsergei70
Капитан
Сообщения: 786
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 54
Имя: Сергей

Блок для ESP8266, MQTT.

#2

Сообщение fsergei70 » 15.07.2018{, 09:05}

Спасибо за блок, Переделать бы только настройки блока в виде входов, или в виде отдельного блока с входами, чтоб можно было их через веб сервер вводить, или через uart а не перешивать каждый раз контроллер. Ну и чтоб топиков можно было добавлять сколько хочешь.

Anydy

Блок для ESP8266, MQTT.

#3

Сообщение Anydy » 15.07.2018{, 11:51}

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

keeper1978
Сержант
Сообщения: 129
Зарегистрирован: 26.09.2015{, 19:57}
Репутация: 2

Блок для ESP8266, MQTT.

#4

Сообщение keeper1978 » 15.07.2018{, 19:29}

Тоже жду

Аватара пользователя
Golan
Капитан
Сообщения: 827
Зарегистрирован: 26.11.2017{, 23:18}
Репутация: 77
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

Блок для ESP8266, MQTT.

#5

Сообщение Golan » 16.07.2018{, 04:51}

Андрей, вопрос.

inTopic - Имя топика, в который будут приходить все входящие сообщения - входящие ОТКУДА?
.......
.......
OutTopic1, 2, 3 - названия топиков, в которые будут публиковаться данные с трех входов, при подаче лог. 1 на соответствующий вход.
При публикации сообщений - КТО публикует - в топик указанный в настройках - на выходе блока будет пришедшая в топик строка.

Если у меня в приложении идет публикация например svet, то как MCU понимает, если смотреть в программу, что эта публикация для него или он всегда на подписке?
Добро не ценится в современном мире, люди от него наглеют!

Anydy

Блок для ESP8266, MQTT.

#6

Сообщение Anydy » 16.07.2018{, 08:23}

Golan писал(а):
16.07.2018{, 05:33}
inTopic - Имя топика, в который будут приходить все входящие сообщения - входящие ОТКУДА?
InTopic == название топика на который подписывается ESP на брокере.
Все сообщения, приходящие в этот топик брокер перенаправляет в ESP.
В блоке пока реализована подписка только на один топик и реализуется при подключении к брокеру.
Golan писал(а):
16.07.2018{, 05:33}
КТО публикует
Публикует сама ESP ту строку, которую подадите на вход.
Golan писал(а):
16.07.2018{, 05:33}
Если у меня в приложении идет публикация например svet, то как MCU понимает, если смотреть в программу, что эта публикация для него или он всегда на подписке?
ESP всегда на подписке на топик указанный в настройках (InTopic), и любые данные которые придут в этот топик - они появятся на выходе блока.

CraCk
Лейтенант
Сообщения: 634
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 10

Блок для ESP8266, Связь с миром по MQTT.

#7

Сообщение CraCk » 16.07.2018{, 16:11}

Anydy писал(а):
14.07.2018{, 19:42}
В случае брокера в локальной сети необходимо в роутере пробросить порт
За чем ето делать? На esp-link работает без этого.
Фильтрацию данных можно позаимствовать здесь:
http://www.iobroker.net/docu/?page_id=4643&lang=ru

Anydy

Блок для ESP8266, Связь с миром по MQTT.

#8

Сообщение Anydy » 16.07.2018{, 19:15}

CraCk писал(а):
16.07.2018{, 16:11}
За чем ето делать? На esp-link работает без этого.
Как зачем? Если например у вас внутри локальной сети сервер на линуксе с брокером mosquitto, то из вне через роутер не достучаться до вашего брокера. Например с мобильного телефона не подключитесь без проброса портов на роутере.
А ESP-LINK это отдельная тема, кроме этой прошивки вы на ESP свой код не зальете.

Anydy

Блок для ESP8266, Связь с миром по MQTT.

#9

Сообщение Anydy » 16.07.2018{, 20:14}

Сделал новую версию блоков, теперь их три.
Можно создавать несколько блоков публикаций и подписок.
Смотрите обновления в первом посте.
И конечно же тестируйте на ошибки....советы, пожелания?

Аватара пользователя
Golan
Капитан
Сообщения: 827
Зарегистрирован: 26.11.2017{, 23:18}
Репутация: 77
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

Блок для ESP8266, Связь с миром по MQTT.

#10

Сообщение Golan » 17.07.2018{, 11:23}

Спасибо Андрей.
Все подключил, все проходит нормально в СОМ порту и в брокере, не пойму почему дисплей не показывает.
СпойлерПоказать
1.jpg
Вопрос, это так задумано у тебя?
{
Serial.begin(9600);
Serial.begin(115200);

setup_wifi();
client.setServer("m11.cloudmqtt.com", 14568);
client.setCallback(callback);

Забыл в СОМ сменить 9600 на 115200 с иероглифами полчаса шаманил
Добро не ценится в современном мире, люди от него наглеют!

Anydy

Блок для ESP8266, Связь с миром по MQTT.

#11

Сообщение Anydy » 17.07.2018{, 12:03}

В блоке уже прописан вывод в СОМ порт для отладки, потом уберу, так что если еще добавить в программе вывод в UART то они будут дублироваться...
Теперь надо все это дело подружить с веб сервером для изменения настроек через сеть...

Аватара пользователя
Golan
Капитан
Сообщения: 827
Зарегистрирован: 26.11.2017{, 23:18}
Репутация: 77
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

Блок для ESP8266, Связь с миром по MQTT.

#12

Сообщение Golan » 17.07.2018{, 12:11}

Понял.
Индикатором помигать получилось с мобилы :yahoo: , НО. имей ввиду если в проект куда нибудь влепить дисплей 44780, все летит к чертям, в СОМе иероглифы (на приеме), на отправке чуть позже гляну
Вложения
1.jpg
Добро не ценится в современном мире, люди от него наглеют!

CraCk
Лейтенант
Сообщения: 634
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 10

Блок для ESP8266, Связь с миром по MQTT.

#13

Сообщение CraCk » 17.07.2018{, 23:53}

Anydy писал(а):
16.07.2018{, 20:13}
. то из вне через роутер не достучаться до вашего брокера
С этим согласен. Поправте тогда первый пост. Что порты пробрасивать нужно в случае если есп находится за локальной сетью. А то я подумал что в локальной сети нужно пробрасивать порты.
А в esp-link надобность отпадает. Если не нужно большой надежности в работе мк. Если например использовать сам есп то при потере wi-fi соединения основная программа останавливается, до тех пор пока не востановится соединение. Для какого нибуть датчика ето допустимо. Но а если идет управление хлеборезкой тогда все остановится.В таком случае лучше использовать esp-link в паре с ардуиной.

Отправлено спустя 25 минут 2 секунды:
P/S
Пожелание: добавить возможность отображение уровня rssi сигнала в dB. Конечно если возможно. Но скорее всего, наверное вопрос нужно адресовать Сергею.

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 436
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 15
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

Блок для ESP8266, Связь с миром по MQTT.

#14

Сообщение pipapsix » 18.07.2018{, 12:26}

Уважаемые, помогите.
Прошил версией 1,2, конектится, но в подключениях не вижу, данных нет, где я косячу??
Вложения
Новый точечный рисунок.jpg

Anydy

Блок для ESP8266, Связь с миром по MQTT.

#15

Сообщение Anydy » 18.07.2018{, 12:38}

Вы не показали проект, какие там у вас настройки блока непонятно....
Проверить входящие данные можно открыв монитор порта.
Пробуйте последнюю версию блока - 2_1 ....там все должно работать!

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 436
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 15
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

Блок для ESP8266, Связь с миром по MQTT.

#16

Сообщение pipapsix » 18.07.2018{, 12:44}

Проверил и последнюю. В мониоторе порта список данных много.
А вот на сайте в списке устройств нет. А где название можно установить??

Отправлено спустя 5 минут 43 секунды:
АГА. заработало с cloudmqtt.com.
А с флайхабом не хочет
Вложения
novii.flp
(319.66 КБ) 102 скачивания

Anydy

Блок для ESP8266, Связь с миром по MQTT.

#17

Сообщение Anydy » 18.07.2018{, 12:55}

Читайте внимательно первый пост.
В вашем проекте нет основного блока.
Для получения данных нужен блок ....Sub....

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 436
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 15
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

Блок для ESP8266, Связь с миром по MQTT.

#18

Сообщение pipapsix » 18.07.2018{, 12:58}

НЕт , нет, это я понял, я на сайте флай хаб данных не вижу, и самого устройства тоже.
При подключении к флайхабу вот что порт выдает.
СпойлерПоказать
WiFi connected
IP address:
192.168.10.102
Attempting MQTT connection...connected
Message arrived [sonin_e@mail.ru/ESP008EFEEC/mac] 5CCF7F8EFEEC
Message arrived [sonin_e@mail.ru/ESP008EFEEC/wanip] 192.168.0.171
Message arrived [sonin_e@mail.ru/ESP008EFEEC/ver] 0.1.1_18:25:32_22.04.2018
Message arrived [sonin_e@mail.ru/ESP008EFEEC/dhtt1] 20.8
Message arrived [sonin_e@mail.ru/ESP008EFEEC/dhth1] 98.3
Message arrived [sonin_e@mail.ru/ESP008EFEEC/rssi] -70
Message arrived [sonin_e@mail.ru/ESP008EFEEC/freemem] 35960
Message arrived [sonin_e@mail.ru/ESP008EFEEC/uptime] 68940
Message arrived [sonin_e@mail.ru/ESP008EFEEC/timestamp] 1531907821
Message arrived [sonin_e@mail.ru/ESP0040E3AB/mac] 60019440E3AB
Message arrived [sonin_e@mail.ru/ESP0040E3AB/wanip] 172.16.2.172
Message arrived [sonin_e@mail.ru/ESP0040E3AB/ver] 0.1.1_11:10:30_25.04.2018
Message arrived [sonin_e@mail.ru/ESP0040E3AB/rssi] -79
Message arrived [sonin_e@mail.ru/ESP0040E3AB/freemem] 33288
Message arrived [sonin_e@mail.ru/ESP0040E3AB/uptime] 49800
Message arrived [sonin_e@mail.ru/ESP0040E3AB/timestamp] 1526294882
Message arrived [sonin_e@mail.ru/OtradaPogr/dhtt1] 19.7
Message arrived [sonin_e@mail.ru/OtradaPogr/dhth1] 47.3
Message arrived [sonin_e@mail.ru/OtradaPogr/rssi] -65


Exception (28):
epc1=0x4020326a epc2=0x00000000 epc3=0x00000000 excvaddr=0x1aff1516 depc=0x00000000

ctx: sys
sp: 3ffef4e0 end: 3fffffb0 offset: 01a0

>>>stack>>>
3ffef680: d43fffda d8000039 f83ffee4 01402031
3ffef690: 0e3ffee6 0e000001 0c000001 04401002
3ffef6a0: db000000 353ffee4 8c000000 3c401006
Отправлено спустя 4 минуты 38 секунд:
или я туплю? щас проверю.

Anydy

Блок для ESP8266, Связь с миром по MQTT.

#19

Сообщение Anydy » 18.07.2018{, 13:09}

Я с Флайхаб не проверял, у меня свой брокер...но не важно какой брокер...
Message arrived [sonin_e@mail.ru/OtradaPogr/rssi] -65
Значит контроллер получил это сообщение
Попрбуйте имя топика сделать попроще, и не понятно откуда у вас эти строки?
СпойлерПоказать
Exception (28):
epc1=0x4020326a epc2=0x00000000 epc3=0x00000000 excvaddr=0x1aff1516 depc=0x00000000

ctx: sys
sp: 3ffef4e0 end: 3fffffb0 offset: 01a0

>>>stack>>>
3ffef680: d43fffda d8000039 f83ffee4 01402031
3ffef690: 0e3ffee6 0e000001 0c000001 04401002
3ffef6a0: db000000 353ffee4 8c000000 3c401006

Аватара пользователя
pipapsix
Лейтенант
Сообщения: 436
Зарегистрирован: 25.10.2016{, 21:26}
Репутация: 15
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр

Блок для ESP8266, Связь с миром по MQTT.

#20

Сообщение pipapsix » 18.07.2018{, 13:19}

Вот и мне не ясно, как буд то он их тупо с брокера собирает, много разных топиков и мне шлет, только каким образом??
там их еще много, я не все скопировал и в конце тоже много адресов дописывает.
Ну это можно решить уходом с флай хаба.
А вот есть возможность как то отключить ком порт? что бы рх тх не были заняты, а то НЕКСТИОН экран не работает. Просто плата уже вытравлена. Спасибо заранее.

Ответить

Вернуться в «Разработка пользовательских блоков»