Ардуино - WiFi мост на ESP8266 : ESP-LINK

Контроллеры на основе ESP8266
Аватара пользователя
ivanpost
Сержант
Сообщения: 138
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#81

Сообщение ivanpost » 13.07.2018{, 09:32}

Здравствуйте! Вы не смогли исправить блок для версии Esp-Link 3.014 ? Интересует публикация. Примеры из ElClient в ней работают нормально.
Огромный сорри! На второй странице указано, что 2.2.3 - стабильная версия. С ней - работает.

Аватара пользователя
ivanpost
Сержант
Сообщения: 138
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

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

#82

Сообщение ivanpost » 08.08.2018{, 22:13}

Все таки в блоке el-client publish_0.1 чего то не хватает...
После загрузки не может найти какую то синхронизацию... требуется ресетить Esp и слегка танцевать бубном.
С библиотечным примером такого нет...

0 23:5 0
ELC: got 128 @407: A0D 4A207374 6520 61 6E 20 20 38 20 32 30 31 33 2C 72 73 74 20 63 61 75 73 65 3A 31 2C 20 62 6F 6F 74 20 6D 6F 64 65 3A 28 33 2C 37 29 D A D A 6C 6F 61 64 20 30 78 34 30 31 30 30 30 30 30 2C 20 6C 65 6E 20 32 35 39 32 2C 20 72 6F 6F 6D 20 31 36 20 D A 74 61 69 6C 20 30 D A 63 68 6B 73 75 6D 20 30 78 66 33 D A 6C 6F 61 64 20 30 78 33 66 66 65 38 30 30 30 2C 20 6C 65
ELC: Invalid CRC
ELC: got 10 @407: 1 0 0 BF 81
NEED_SYNC!

starshoy81
Лейтенант
Сообщения: 518
Зарегистрирован: 05.04.2016{, 23:30}
Репутация: 29
Откуда: Санкт-Петербург
Имя: Илья

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#83

Сообщение starshoy81 » 09.08.2018{, 16:52}

ivanpost, подробнее напишите - что вы делаете и что из этого получается

Аватара пользователя
ivanpost
Сержант
Сообщения: 138
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#84

Сообщение ivanpost » 09.08.2018{, 19:14}

Использую стандартный блок Setup и стандартные блоки el-client publish_0.1.
Север - Москито на OpenWrt. На прошивке Esp-Link - 2.2.3 - работает устойчиво. Но сама эта прошивка имеет глюк когда "пропадает" точка доступа и вместо перехода в AP бесконечно ищет пропавшую точку доступа. Ну не бесконечно, можно вклинится, но трудно.
Однако есть еще проблема - при включении питания нужно перегружать Esp, иначе MQTT тоже "висит" без синхронизации.

На прошивке Esp-Link 3.2.47 иногда зацепляется и потом работает, но в основном шлет NEED_SYNC. А в других аспектах эта прошивка лучше - она хорошо подбирает скорость при avrflash и нормально становится AP.

С библиотечным примером этих проблем нету, возможно из за блочка в Setup:

bool ok;
do {
ok = esp.Sync(); // sync up with esp-link, blocks for up to 2 seconds
if (!ok) Serial.println("EL-Client sync failed!");
} while(!ok);
Serial.println("EL-Client synced!");

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

Отправлено спустя 27 минут 27 секунд:
starshoy81, вы вообще с ESP-LINK и EL-Client нормально разобрались? Там какие REST запросы есть? Может можно ресет esp делать после загрузки? (не ножкой).

Аватара пользователя
Sancho
Полковник
Сообщения: 3999
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 571
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#85

Сообщение Sancho » 09.08.2018{, 20:04}

ivanpost,
Часть кода из секции setup, приведённая Вами - это задержка для перехода к основной части программы, loop, только после получения сообщения о синхронизации, наверно с сервером. Вещь нужная.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

starshoy81
Лейтенант
Сообщения: 518
Зарегистрирован: 05.04.2016{, 23:30}
Репутация: 29
Откуда: Санкт-Петербург
Имя: Илья

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#86

Сообщение starshoy81 » 09.08.2018{, 20:58}

ivanpost, судя по странице гитхаба, версия 2.2.3 до сих пор основная, более новые это беты, поэтому поручиться за их работу нельзя. Вопрос прошивки через есп, у меня не был на первом месте, хотя я и пробовал так делать - прошивалось не каждый раз. У меня устройство на этой прошивке в аптайме 24/7 с марта 2018, был один раз когда батарея разрядилась и всё выключилось (и роутер с брокером и есп), после подачи питания всё восстановилось без ресетов и продолжает работать дальше.

Попробуйте этот кусок кода вставить в setup своего кода - может получиться синхронизация с ардуиной.

REST запросы только исходящие.

Аватара пользователя
ivanpost
Сержант
Сообщения: 138
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#87

Сообщение ivanpost » 09.08.2018{, 21:32}

Rest входящие есть при перепрошивке через HTTP POST. В этом случае ардуина прошивается практически гарантированно и очень быстро. Так же как через arduinoOTA.
Я два месяца танцевал с бубном при прошивке через Tibbo и com-порты. Мне надо прошивать довольно далекие esp. Стабильность прошивки была неуверенная для больших прошивок.

Теперь прошивается даже через интернет, само назначает скорость порта (на 2.2.3 не очень уверенно), не трогает EEPROM и другие прелести! Всем кому нужно - настоятельно рекомендую! avrflash.cmd у меня такой:

@echo off
curl -m 10 -s -XPOST http://192.168.31.23/pgm/sync
ping -n 1 -w 1500 10.10.254.254 >nul
curl -m 10 -s http://192.168.31.23/pgm/sync
echo.
curl -m 10 -s -g -d "@mysketh.hex" "http://192.168.31.23/pgm/upload"
pause

192.168.31.23 - адрес моего Esp. Можно использовать подстановку адреса и файла в cmd.

starshoy81
Лейтенант
Сообщения: 518
Зарегистрирован: 05.04.2016{, 23:30}
Репутация: 29
Откуда: Санкт-Петербург
Имя: Илья

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#88

Сообщение starshoy81 » 10.08.2018{, 11:15}

ivanpost, по идее это служебные rest, зашитые в прошивке есплинк, для сброса загрузчика optiboot ардуины и приведение его в состояние ожидания загрузки прошивки.

Аватара пользователя
ivanpost
Сержант
Сообщения: 138
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#89

Сообщение ivanpost » 18.08.2018{, 11:52}

Друзья! Может все же поможет кто-то понять в чем дело?

На базе библиотеки ELClient сделал новый блок инициализации. Теперь он кроме MQTT еще и TCP клиент. Можно подключаться к серверу по ip или hostname и получать от него ответ на запрос.
Слегка изменил блок уважаемого starshoy81, el-client publish_01, чтобы можно было указывать имя топика для отправки данных (у меня много топиков).
Все работает как часы - система отлично стартует, принимаются и отправляются данные топиков, производится запрос у другого ESP и получается нужный ответ (мини-модбас :) между двумя). Есть определение всех ошибок - сети, не ответа и тп.
Проблема в одном - не могу отключить лог ESP в консоли. Не понимаю, откуда он берется, вроде бы лог на off стоит.
Вероятно, из самой библиотеки.
Версия Esp-Link 3.2.47 на 2.2.3 не коннектится, вероятно, там не все функции поддерживаются.
Помогите или посоветуйте, где покопать.
Окно консоли
Изображение

Отправлено спустя 8 часов 36 минут 34 секунды:
Да, в прошивке 3.2.47 не нужно переносить команды на подписку на топик! Вставляешь блоки и сразу все работает!
Вложения
TopicName_el-client_publish_0.1_(CODE).ubi
(22.98 КБ) 93 скачивания
TCP_Client_Response_(CODE).ubi
(20.79 КБ) 95 скачиваний
ELClient_Setup_(CODE).ubi
(59.21 КБ) 94 скачивания

Аватара пользователя
ivanpost
Сержант
Сообщения: 138
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#90

Сообщение ivanpost » 18.08.2018{, 22:05}

Итак, успех достгнут!
Галка с дебагом наверно залипла! :smile171:
Закомментировал куски кода про

Код: Выделить всё

if (_debugEn)
непосредственно в файле ELClient.cpp
Всё работает, в консоли только то что надо.
"Исправленный" файл - прилагаю.
Итого: Esp-link 3.2.47 + ELClient 3.0. Альфа0
1. MQTT работает на прием и передачу без перетаскивания функций. Правда я не фильтровал подписки (#) - нет необходимости.
2. Можно осуществить TCP запрос к серверу (если он его понимает) и получить пакет данных в ответ.
3. Можно передать TCP серверу свои данные (опять же, если ждет их).
4. Отображение всех ошибок подключения, передачи и приема.
5. OTA или cURL прошивка Atmega "по воздуху" с автоматическим подбором скорости.
Вложения
ELClient.cpp
(15.98 КБ) 87 скачиваний

Аватара пользователя
ivanpost
Сержант
Сообщения: 138
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#91

Сообщение ivanpost » 18.08.2018{, 22:18}

Кому нужны TCP запросы - имейте в виду, что отправляете их из одного блока TCP_Client_Response, а ответ получаете в ELClient_Setup.
Пока так работает.

User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12.06.2017{, 14:44}
Репутация: 100
Имя: Евгений

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#92

Сообщение User8 » 18.08.2018{, 22:38}

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

Аватара пользователя
ivanpost
Сержант
Сообщения: 138
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#93

Сообщение ivanpost » 18.08.2018{, 23:41}

User8, Пора уже... Или на 32.
Не очень лестно отзываются о них в плане стабильности. Якобы ошибки в кристалле. Мало выходов, еще меньше аналоговых. Городить расширения.
Другая схемотехника плат. Другая инфраструктура.
Как сделать чтобы сразу был клиент и сервер?
Затормозить можно что угодно. Быстродействие мало отличается. Память - да.
А может я просто не умею их готовить. :smile38:

Аватара пользователя
ivanpost
Сержант
Сообщения: 138
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#94

Сообщение ivanpost » 19.08.2018{, 14:07}

Обновил блок Setup. Добавлен выход оповещающий об ответе TCP сервера.
Добавил блок получения Unix Time. Очень удобно отсчитывать интервалы. Получает время с роутера по переднему фронту соответствующего входа. Можно пересчитать в реальное время, кому надо.
Блок TCP Client Response получил вход с текстом запроса (мой сервер понимает разные).
Обновил библиотеку.
Остальные работающие блоки из связки - за компанию.
Вложения
TCP_Client_Response_(CODE).ubi
(26.21 КБ) 92 скачивания
GetUnixTime_V1_(CODE).ubi
(8.28 КБ) 102 скачивания
TopicName_ELClient_publish_V1_(CODE).ubi
(23.05 КБ) 105 скачиваний
el-client_subscribe_0.3_(CODE).ubi
(23.52 КБ) 96 скачиваний
ELClient_Setup_V2_(CODE).ubi
(774.31 КБ) 97 скачиваний

Аватара пользователя
ivanpost
Сержант
Сообщения: 138
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#95

Сообщение ivanpost » 19.08.2018{, 14:10}

Библиотека ELClient.cpp с закоментированными строками.
Вложения
ELClient.cpp
(15.99 КБ) 97 скачиваний

User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12.06.2017{, 14:44}
Репутация: 100
Имя: Евгений

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#96

Сообщение User8 » 19.08.2018{, 15:53}

ivanpost писал(а):
19.08.2018{, 14:10}
Итого: Esp-link 3.2.47 + ELClient 3.0. Альфа0
как обновить прошивку до 3.2.47? На гитхабе нет user2.bin для этой версии.

Аватара пользователя
ivanpost
Сержант
Сообщения: 138
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#97

Сообщение ivanpost » 19.08.2018{, 16:09}

User8, user1 переименовать но важно чтобы ваша прошивка была 3.0.14, 2.2.3 - не обновит. Прошивать заново. ( у меня - не заработало) вероятно потому что нету файла с настройками.

Отправлено спустя 7 минут :
Поразбирался с блоком Subscribe. Предлагаю свою версию. Подразумевается подписка на все топики, а эти блоки просто ждут данных в своем топике.
Если блоков несколько, то желательно чтобы переменные на выходе были уникальны, потому что транслятор их сливает в одну сам. Ну или использовать данные сразу после блока.
Вложения
TopicName_ELClient_Subscribe_V2_(CODE).ubi
(38.24 КБ) 86 скачиваний

User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12.06.2017{, 14:44}
Репутация: 100
Имя: Евгений

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#98

Сообщение User8 » 19.08.2018{, 17:09}

ivanpost писал(а):
19.08.2018{, 16:16}
user1 переименовать но важно чтобы ваша прошивка была 3.0.14
я вообще не вижу там файлов для прошивки на версию 3.2.47, где их взять?

Аватара пользователя
ivanpost
Сержант
Сообщения: 138
Зарегистрирован: 24.09.2016{, 22:26}
Репутация: 4
Откуда: Тольятти
Имя: Иван
Контактная информация:

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#99

Сообщение ivanpost » 19.08.2018{, 20:31}

https://github.com/jeelabs/esp-link/releases
Гитхаб - страшная сила! Надо смотреть релизы! Они их не всегда на главную выносят. :smile38:

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

После добавления пары триггеров и && все полетело как надо. В свою очередь и запросы рекомендуется начинать когда уже что-то важное свершилось. Думаю для Esp это тоже актуально. Я это прошел еще на Симатиках в 90-е годы :smile38:

Отправлено спустя 51 минуту 48 секунд:
ЕЩЕ ВАЖНО!
Друг-друга эти запросы тоже не больно жалуют. Очевидно, "быстрая" Esp не справляется. Нужно разносить по времени. Иначе:

ELC: Invalid CRC

User8
Лейтенант
Сообщения: 341
Зарегистрирован: 12.06.2017{, 14:44}
Репутация: 100
Имя: Евгений

Ардуино - WiFi мост на ESP8266 : ESP-LINK

#100

Сообщение User8 » 19.08.2018{, 22:02}

ivanpost писал(а):
19.08.2018{, 21:23}
Гитхаб - страшная сила!
Там в архиве в последней версии нет файлов для прошивки.
ivanpost писал(а):
19.08.2018{, 21:23}
Очевидно, "быстрая" Esp не справляется
Это не esp, я на nodemcu esp 12e написал большой проект, с отправкой множества длинных строк на mqtt, все отрабатывает как часы, без всяких триггеров.

Ответить

Вернуться в «ESP8266»