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

Контроллеры на основе ESP8266
monah-k
Рядовой
Сообщения: 9
Зарегистрирован: 08.06.2017{, 15:10}
Репутация: 0
Откуда: Tomskay obl

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

#61

Сообщение monah-k » 25.03.2018{, 07:55}

Добрый день. Не как не могу запустить ESP-LINK на плате Мега + WiFi R3 ATmega2560 + ESP8266 (32 МБ памяти), USB-TTL CH340G от RobotDyn, хотя на nodemcu Lua WI-FI всё нормально прошло.
подскажите может есть какие-то тонкости прошивки Меги?
Последний раз редактировалось monah-k 25.03.2018{, 14:45}, всего редактировалось 1 раз.

Аватара пользователя
CraCk
Лейтенант
Сообщения: 600
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 9

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

#62

Сообщение CraCk » 25.03.2018{, 12:53}

Нужно проверить правильно ли подключен rx- tx. Так как не меге несколько uart портов. У меня еще плохо работало пока я неубрал делитель напряжения на rx пине esp

Отправлено спустя 3 часа 41 секунду:
Продолжаю эксперименты по надежности работы mqtt. Нашел новую проблему.
Если во время работы mqtt-клиента и mqtt-брокера, отключить сетевое соединение на роутере.
И в это время пока потерянное wi-fi соединение изменить состояние кнопки например включить true.
Безымянный.jpg
После чего восстановить соединение на роутере, я не получил изменение состояние кнопки на брокере с false на true. То есть не получаем изменения статуса после обрыва сети. В это время клиент и сервер от питания не отключались. Здесь как раз нужно включать режим Qos1 или Qos2.
В библиотеках ELClient есть описание этих режимов но как их задействовать?

Отправлено спустя 7 часов 34 минуты 11 секунд:
CraCk писал(а):
25.03.2018{, 15:54}
В библиотеках ELClient есть описание этих режимов но как их задействовать?
Отредактировал библиотеку
ELClientMqtt.h
В разделе // publish a message to a topic где нашел слово qos=0 заменил на qos=1
Почему столько qos и разные публикации не знаю. Но после этого подтверждение статуса обновляется при разрыве соединения.
Посоветуйте как эти значения можно изменять не ковыряя все время библиотеку, конечно если вообще возможно?
СпойлерПоказать
/*! \file ELClientMqtt.h
\brief Definitions for ELClientMqtt
\author B. Runnels
\author T. von Eicken
\date 2016
*/
// Copyright (c) 2016 by B. Runnels and T. von Eicken

#ifndef _EL_CLIENT_MQTT_H_
#define _EL_CLIENT_MQTT_H_

#include <stdint.h>
#include "FP.h"
#include "ELClient.h"

// Class to send and receive MQTT messages. This class should be used with a singleton object
// because the esp-link implementation currently only supports a single MQTT server, so there is
// no value in instantiating multiple ELClientMqtt objects (although it's possible).
// All the server settings are made in esp-link and esp-link takes care to automatically
// reconnect and retry if the connection is lost. This means that on the arduino side the only
// code that is necessary is to send and receive messsages.
class ELClientMqtt {
public:
// Initialize with an ELClient object
ELClientMqtt(ELClient* elc);

// setup transmits the set of callbacks to esp-link. It assumes that the desired callbacks
// have previously been attached using something like mqtt->connectedCb.attach(myCallbackFun).
// After setup is called either the connectedCb or the disconnectedCb is invoked to provide
// information about the initial connection status.
void setup(void);

// callbacks that can be attached prior to calling setup
FP<void, void*> connectedCb; /**< callback with no args when MQTT is connected */
FP<void, void*> disconnectedCb; /**< callback with no args when MQTT is disconnected */
FP<void, void*> publishedCb; /**< not yet implemented */
FP<void, void*> dataCb; /**< callback when a message is received, called with two arguments: the topic and the message (max ~110 bytes for both) */

// subscribe to a topic, the default qos is 0. When messages are recevied for the topic the
// data callback is invoked.
void subscribe(const char* topic, uint8_t qos=0);
void subscribe(const __FlashStringHelper* topic, uint8_t qos=0);

// publish a message to a topic
void publish(const char* topic, const uint8_t* data,
const uint16_t len, uint8_t qos=1, uint8_t retain=0);
void publish(const char* topic, const char* data,
uint8_t qos=1, uint8_t retain=0);
void publish(const __FlashStringHelper* topic, const __FlashStringHelper* data,
const uint16_t len, uint8_t qos=1, uint8_t retain=0);
void publish(const char* topic, const __FlashStringHelper* data,
const uint16_t len, uint8_t qos=1, uint8_t retain=0);
void publish(const __FlashStringHelper* topic, const uint8_t* data,
const uint16_t len, uint8_t qos=1, uint8_t retain=0);

// set a last-will topic & message
void lwt(const char* topic, const char* message, uint8_t qos=1, uint8_t retain=0);
void lwt(const __FlashStringHelper* topic, const __FlashStringHelper* message,
uint8_t qos=1, uint8_t retain=0);

private:
ELClient* _elc; /**< ELClient instance */
};

#endif // _EL_CLIENT_MQTT_H_
Когда включил qos=1 заметил недостаток/преимущество зависит от задачи. Если подключение разорвано, и в это время по нажимать кнопку на клиенте несколько раз, и когда восстановить соединение мы получаем на сервере true/false столько раз сколько была нажата кнопка на клиенте во время разрыва соединения.
Преимущество: будет например когда нужно знать сколько произошло нажатий вовремя потери соединения.
Недостаток: когда такой статус будет активировать например свет. Получим мерцания света в зависимости от количества нажатий кнопки.

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

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

#63

Сообщение starshoy81 » 26.03.2018{, 10:08}

monah-k, это где на меге распаяна еспшка? На такой плате есть определённая комбинация переключателей, пр которой будет нормально работать, почитайте вопросы и проблемы на гитхабовской странице esp-link ссылка

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

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

#64

Сообщение starshoy81 » 26.03.2018{, 10:46}

CraCk, надо в блоке публикации отредактировать строчку публикации, после передаваемых данных в топик, поставить запятую и через пробел число qos. Если нужен ещё и retain, то после числа qos ставим запятую и через пробел ставим число retain.

в скетче выглядит так
qos публикации.PNG
qos публикации.PNG (7.19 КБ) 2561 просмотр
в блоке пользователя так
qos публикации в блоке.PNG
qos публикации в блоке.PNG (5.6 КБ) 2561 просмотр
qos retain публикации в блоке.PNG
qos retain публикации в блоке.PNG (7.09 КБ) 2561 просмотр

Аватара пользователя
CraCk
Лейтенант
Сообщения: 600
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 9

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

#65

Сообщение CraCk » 27.03.2018{, 00:22}

starshoy81 писал(а):
26.03.2018{, 10:46}
qos публикации в блоке.PNG (5.6 КБ) 46 просмотров
Здесь только включено qos=1?
starshoy81 писал(а):
26.03.2018{, 10:46}
qos retain публикации в блоке.PNG (7.09 КБ) 46 просмотров
Здесь только включено qos=2 retain=1?
Если я все правильно понял:
Тогда qos работает. Только в режиме qos=2 подписчик телефон перестал вообще реагировать на изменение, но сервер принимал изменения. Возможно есть несовместимость.
retain у меня не заработал. Возможно сервер не поддерживает такую опцию.
Интересно знать для подписчиков есть такая функция qos?
starshoy81, Если несложно пожалуйста добавите qos и retain в параметры блока.

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

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

#66

Сообщение starshoy81 » 27.03.2018{, 11:54}

CraCk, почитайте про qos.
Да, вы всё правильно поняли, qos и retain так и включаются.
Попробуйте новые варианты блоков подписки и публикации с добавленными параметрами qos и retain. IDE их компилирует без ошибок, а мне сейчас негде протестировать.
Вложения
el-client_publish_0.1_(CODE).ubi
(15.44 КБ) 127 скачиваний
el-client_subscribe_0.2_(CODE).ubi
(20.22 КБ) 116 скачиваний

Аватара пользователя
CraCk
Лейтенант
Сообщения: 600
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 9

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

#67

Сообщение CraCk » 27.03.2018{, 18:40}

starshoy81 писал(а):
27.03.2018{, 11:54}
Попробуйте новые варианты блоков подписки и публикации с добавленными параметрами qos и retain. IDE их компилирует без ошибок, а мне сейчас негде протестировать.
Проверил как бы работает. Только в блоках где прописано qos и retain стоит по два пробела. Это случайность?
Безымянный.jpg

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

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

#68

Сообщение starshoy81 » 27.03.2018{, 20:38}

CraCk, это редактор блоков так вставляет параметры в код. В принципе, не должно влиять на работоспособность.

Аватара пользователя
CraCk
Лейтенант
Сообщения: 600
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 9

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

#69

Сообщение CraCk » 27.03.2018{, 22:50}

Спасибо за доработки. Осталось еще немного недостатков. Жду новых блоков тестов. ;)
Еще вопрос за что отвечают два параметра в разделе MQTT, как влияют на работу?
Безымянный.png
Безымянный.png (10.17 КБ) 2443 просмотра

Аватара пользователя
CraCk
Лейтенант
Сообщения: 600
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 9

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

#70

Сообщение CraCk » 07.04.2018{, 11:22}

Еще пожелание в блоке подписка добавить параметр принимаемых данных. По умолчанию стоит on, off для срабатывания диск. выхода. Но иногда нужно true, false или 0,1. По этому неплохо будет иметь редактируемый параметр с принимаемым значением.

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

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

#71

Сообщение starshoy81 » 09.04.2018{, 11:40}

CraCk писал(а):
27.03.2018{, 22:50}
Еще вопрос за что отвечают два параметра в разделе MQTT, как влияют на работу?
Первый показывает, через какое время будет закрыто соединение при отсутствии активности клиента, второй показывает, через какое время будет закрыта сессия связи с брокером при отсутствии связи с брокером.
Вы когда пишете кому то сообщение, нажимайте на ник, иначе уведомление о сообщении не приходит.

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

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

#72

Сообщение Sancho » 09.04.2018{, 11:43}

CraCk писал(а):
07.04.2018{, 11:22}
По умолчанию стоит on, off для срабатывания диск. выхода. Но иногда нужно true, false или 0,1
Это всё одно и тоже - смело используйте.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

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

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

#73

Сообщение starshoy81 » 09.04.2018{, 13:25}

Sancho писал(а):
09.04.2018{, 11:43}
Это всё одно и тоже - смело используйте.
Это да, но в коде блока происходит сравнение с полученными данными, а они чаще всего строкового типа. Поэтому если из топика получено OFF, то сравнение с булеан 0 не даст ожидаемого результата. А, к примеру, домотикз все состояния выключателей выдаёт именно ON-OFF.
CraCk, добавил новую версию блока подписки, компилируется без ошибок. Тестируйте работу.
Вложения
el-client_subscribe_0.3_(CODE).ubi
(23.57 КБ) 111 скачиваний

LKV
Рядовой
Сообщения: 3
Зарегистрирован: 30.03.2018{, 16:30}
Репутация: 0
Имя: Кирилл

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

#74

Сообщение LKV » 09.04.2018{, 22:13}

Доброго времени суток! Не пинайте с ходу) не первый день пытаюсь подружить тактовую кнопку с majordomo, для управления скажем светом. Реализовать все через брокер не составила проблем, а вот реализовать раздельную схему пока не получилось (если вдруг лег брокер можно было-бы управлять светом с кнопки). Может кто-нибудь поделится наработками в данной ситуации?
Заранее спасибо!

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

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

#75

Сообщение starshoy81 » 09.04.2018{, 22:43}

LKV, вам лучше в соответствующей теме задать вопрос.

LKV
Рядовой
Сообщения: 3
Зарегистрирован: 30.03.2018{, 16:30}
Репутация: 0
Имя: Кирилл

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

#76

Сообщение LKV » 09.04.2018{, 22:53}

А подскажите тогда, если я использую блоки с данной темы, эт мне куда(к какой теме отнести) вопрос задать ?

Аватара пользователя
CraCk
Лейтенант
Сообщения: 600
Зарегистрирован: 10.09.2015{, 21:51}
Репутация: 9

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

#77

Сообщение CraCk » 09.04.2018{, 23:30}

starshoy81 писал(а):
09.04.2018{, 13:25}
А, к примеру, домотикз все состояния выключателей выдаёт именно ON-OFF.
У меня как раз в IObroker при использовании true и false. Появляется возможность изменять состояние переменной ставя галочку.
екг.jpg
А если использовать ON-OFF тогда чтоб изменить состояние переменной нужно писать команду руками.
екг2.jpg
starshoy81 писал(а):
09.04.2018{, 13:25}
добавил новую версию блока подписки, компилируется без ошибок. Тестируйте работу.
Работает. Плюсую. :tease:
LKV писал(а):
09.04.2018{, 22:13}
для управления скажем светом. Реализовать все через брокер не составила проблем, а вот реализовать раздельную схему пока не получилось
Вот как раз такое делаю. Хочу чтоб отслеживание состояния и управление ардуиной происходило с помощью одного топика и подписки esplink/garage/light.
екг3.jpg
Когда управляю из брокера релюшкой все норм. Но если нажму локально кнопку на ардуино вкл/выкл тогда статус и управление получаю инверсное. Жму на брокере true реле откл., false реле включается. Проблема в ТТ тригере. Пока что завис как правильно реализовать логику когда используется локальная кнопка на ардуине.
На форуме IObroker есть описание как это сделать. Но пока что не могу реализовать в flprog.
https://forum.iobroker.net/viewtopic.ph ... t=40#p5220
Mqtt+esp8266+pro mini on_off v0.3.flp
(868.16 КБ) 107 скачиваний

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

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

#78

Сообщение starshoy81 » 09.04.2018{, 23:51}

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

Отправлено спустя 21 минуту 5 секунд:
CraCk писал(а):
09.04.2018{, 23:30}
У меня как раз в IObroker при использовании true и false. Появляется возможность изменять состояние переменной ставя галочку.
Ну так это вы используете переменную, а в домотикзе сделано так:
на брокер выдается топик switchIDX/state со значением ON-OFF
параллельно работает управление по http в виде json запроса к адресу исполнительного устройства "/json.htm?type=command&param=switchlight&idx=99&switchcmd=On" опять же ON-OFF
Не по теме
CraCk писал(а):
09.04.2018{, 23:30}
Пока что завис как правильно реализовать логику когда используется локальная кнопка на ардуине.
тут только с записью переменной и проверкой её состояния при следующей команде на сработку. Да и потом, пользуйтесь строковым выходом, необязательно в релейную логику сразу выходить. Если уж приняли с выхода true, то и лампе светить однозначно, а кнопка работает параллельно, сбрасывая состояние от подписки.

LKV
Рядовой
Сообщения: 3
Зарегистрирован: 30.03.2018{, 16:30}
Репутация: 0
Имя: Кирилл

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

#79

Сообщение LKV » 30.04.2018{, 21:40}

И так вроде получилась простенькая задача, а именно реализация управление освещением через кнопку+majordomo.
Использую связку ArduinoUno R3 c ESP8266(прошита esplink v.2.2.3) на борту + mqtt broker (mosquitto) + majordomo.
Выкладываю на ваш суд, может кто-нибудь что-то подправит или еще что подскажет.
Еще хочу добавить генератор+публикация состояния реле, на случай обрыва связи с majordomo.
Flprog v.3.0.3
svet_mqtt_mjdm.flp
(853.05 КБ) 115 скачиваний

slon-genia
Сержант
Сообщения: 101
Зарегистрирован: 21.11.2016{, 11:05}
Репутация: 2

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

#80

Сообщение slon-genia » 17.06.2018{, 13:29}

Ребята, помогите пожалуйста. Использую ESP8266 ( прошивка ESP-LINK) в связке с ардуино. Можно ли в данной связке пользоваться сервисом народного мониторинга используя блок narodmon программы FLprog. В том блоке можно только выбрать шилд W5100. Выбираю этот шилд, ввожу IP адрес ESP и MAC адрес ESP, ввожу адрес сервера narodmon, но при попытке добавить датчик на сервисе, пишет что устройсво не отправило данных. В чом может быть проблема. Может на роутере порты пробросить?

Ответить

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