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

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

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

Сообщение Anydy »

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

После прошивки контроллера в мониторе порта должно появится :
[scroll]
..
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

[/scroll]
Последние три строки - это ESP получил данные от брокера


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

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

Пример проекта для проверки коннекта на FLProg:
Test_mqtt_ESP_ver2.flp
Блоки версии 2_1
MQTT_ESP_v2.zip
Версия 2_2
Убран вывод данных в СОМ порт, если нужно будет - сделаю в виде отдельного блока.
MQTT_ESP_v_2_2.zip
Update 29.07.18
Небольшая доработка блока Main.
Добавлено автоматическое переподключение к сети WiFi при потери связи.
MQTT_ESP_Main_2_3_(CODE).ubi
Update 30.07.18
Изменил способ переподключения к сети WiFi - так вроде правильнее)))
Проверил, после отключения роутера - модуль сам переподключается к сети и к брокеру.
Убрал автогенерацию ID - например сервис народмон требует МАС адрес в ID - теперь ID вынесен в настройки.
MQTT_ESP_Main_2_4_(CODE).ubi
У вас нет необходимых прав для просмотра вложений в этом сообщении.
fsergei70
Капитан
Сообщения: 860
Зарегистрирован: 17 ноя 2015, 20:36
Имя: Сергей
Благодарил (а): 40 раз
Поблагодарили: 8 раз

Блок для ESP8266, MQTT.

Сообщение fsergei70 »

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

Блок для ESP8266, MQTT.

Сообщение Anydy »

В общем я так и планирую сделать, разделить блок на части - основной, подписка, публикация. Сделать версию для корректной работы со штатным блоком WEB сервера.
keeper1978
Сержант
Сообщения: 129
Зарегистрирован: 26 сен 2015, 19:57

Блок для ESP8266, MQTT.

Сообщение keeper1978 »

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

Блок для ESP8266, MQTT.

Сообщение Golan »

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

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

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

Блок для ESP8266, MQTT.

Сообщение Anydy »

Golan писал(а): 16 июл 2018, 05:33inTopic - Имя топика, в который будут приходить все входящие сообщения - входящие ОТКУДА?
InTopic == название топика на который подписывается ESP на брокере.
Все сообщения, приходящие в этот топик брокер перенаправляет в ESP.
В блоке пока реализована подписка только на один топик и реализуется при подключении к брокеру.
Golan писал(а): 16 июл 2018, 05:33КТО публикует
Публикует сама ESP ту строку, которую подадите на вход.
Golan писал(а): 16 июл 2018, 05:33Если у меня в приложении идет публикация например svet, то как MCU понимает, если смотреть в программу, что эта публикация для него или он всегда на подписке?
ESP всегда на подписке на топик указанный в настройках (InTopic), и любые данные которые придут в этот топик - они появятся на выходе блока.
CraCk
Лейтенант
Сообщения: 674
Зарегистрирован: 10 сен 2015, 21:51
Благодарил (а): 1 раз
Поблагодарили: 1 раз

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

Сообщение CraCk »

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

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

Сообщение Anydy »

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

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

Сообщение Anydy »

Сделал новую версию блоков, теперь их три.
Можно создавать несколько блоков публикаций и подписок.
Смотрите обновления в первом посте.
И конечно же тестируйте на ошибки....советы, пожелания?
Аватара пользователя
Golan
Капитан
Сообщения: 827
Зарегистрирован: 26 ноя 2017, 23:18
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

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

Сообщение Golan »

Спасибо Андрей.
Все подключил, все проходит нормально в СОМ порту и в брокере, не пойму почему дисплей не показывает.

[spoiler]
1.jpg
[/spoiler]

Вопрос, это так задумано у тебя?
{
Serial.begin(9600);
Serial.begin(115200);

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

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

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

Сообщение Anydy »

В блоке уже прописан вывод в СОМ порт для отладки, потом уберу, так что если еще добавить в программе вывод в UART то они будут дублироваться...
Теперь надо все это дело подружить с веб сервером для изменения настроек через сеть...
Аватара пользователя
Golan
Капитан
Сообщения: 827
Зарегистрирован: 26 ноя 2017, 23:18
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

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

Сообщение Golan »

Понял.
Индикатором помигать получилось с мобилы :yahoo: , НО. имей ввиду если в проект куда нибудь влепить дисплей 44780, все летит к чертям, в СОМе иероглифы (на приеме), на отправке чуть позже гляну
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Добро не ценится в современном мире, люди от него наглеют!
CraCk
Лейтенант
Сообщения: 674
Зарегистрирован: 10 сен 2015, 21:51
Благодарил (а): 1 раз
Поблагодарили: 1 раз

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

Сообщение CraCk »

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

Отправлено спустя 25 минут 2 секунды:
P/S
Пожелание: добавить возможность отображение уровня rssi сигнала в dB. Конечно если возможно. Но скорее всего, наверное вопрос нужно адресовать Сергею.
pipapsix
Лейтенант
Сообщения: 438
Зарегистрирован: 25 окт 2016, 21:26
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр
Благодарил (а): 1 раз
Поблагодарили: 4 раза

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

Сообщение pipapsix »

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

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

Сообщение Anydy »

Вы не показали проект, какие там у вас настройки блока непонятно....
Проверить входящие данные можно открыв монитор порта.
Пробуйте последнюю версию блока - 2_1 ....там все должно работать!
pipapsix
Лейтенант
Сообщения: 438
Зарегистрирован: 25 окт 2016, 21:26
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр
Благодарил (а): 1 раз
Поблагодарили: 4 раза

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

Сообщение pipapsix »

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

Отправлено спустя 5 минут 43 секунды:
АГА. заработало с cloudmqtt.com.
А с флайхабом не хочет
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Anydy

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

Сообщение Anydy »

Читайте внимательно первый пост.
В вашем проекте нет основного блока.
Для получения данных нужен блок ....Sub....
pipapsix
Лейтенант
Сообщения: 438
Зарегистрирован: 25 окт 2016, 21:26
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр
Благодарил (а): 1 раз
Поблагодарили: 4 раза

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

Сообщение pipapsix »

НЕт , нет, это я понял, я на сайте флай хаб данных не вижу, и самого устройства тоже.
При подключении к флайхабу вот что порт выдает.
[spoiler]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

[/spoiler]

Отправлено спустя 4 минуты 38 секунд:
или я туплю? щас проверю.
Anydy

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

Сообщение Anydy »

Я с Флайхаб не проверял, у меня свой брокер...но не важно какой брокер...
Message arrived [sonin_e@mail.ru/OtradaPogr/rssi] -65
Значит контроллер получил это сообщение
Попрбуйте имя топика сделать попроще, и не понятно откуда у вас эти строки?
[spoiler]
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
[/spoiler]
pipapsix
Лейтенант
Сообщения: 438
Зарегистрирован: 25 окт 2016, 21:26
Откуда: Волгоградская обл.
Имя: СашкаСаняАлександр
Благодарил (а): 1 раз
Поблагодарили: 4 раза

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

Сообщение pipapsix »

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

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

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость