• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

В чем может быть причина потери связи с устройством?

axillent

New member
я новичек в esp
сделал датчики температуры с отправкой измерений в mqtt раз в минуту
сделал 7 датчиков и прикрутил их к openhab с мониторингом их работы

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

что это может быть? если потерялась wifi по каким то причинам, то будет ли автоматический реконнект или мне надо что то в свой код ниже добавить?

Спасибо

Код:
print("Setting up WIFI...")
wifi.setmode(wifi.STATION)
wifi.sta.config("sid","pass")
wifi.sta.connect()
tmr.alarm(1, 1000, 1, function()
if wifi.sta.getip()== nil then
print("Waiting IP...")
else
tmr.stop(1)
print("IP is "..wifi.sta.getip())
end
end)
 

nikolz

Well-known member
я новичек в esp
сделал датчики температуры с отправкой измерений в mqtt раз в минуту
сделал 7 датчиков и прикрутил их к openhab с мониторингом их работы

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

что это может быть? если потерялась wifi по каким то причинам, то будет ли автоматический реконнект или мне надо что то в свой код ниже добавить?

Спасибо

Код:
print("Setting up WIFI...")
wifi.setmode(wifi.STATION)
wifi.sta.config("sid","pass")
wifi.sta.connect()
tmr.alarm(1, 1000, 1, function()
if wifi.sta.getip()== nil then
print("Waiting IP...")
else
tmr.stop(1)
print("IP is "..wifi.sta.getip())
end
end)
одна из причин может быть смена ip адреса ESP роутером.
Посмотрите адрес при работе и потом при потере связи.
Попробуйте включить CИ функцию SDK
wifi_station_set_reconnect_policy(true)
 

axillent

New member
Спасибо за ответ

Я тут для себя понял, что у меня в коде не предусмотрен реконнект даже если wifi восстановится не факт, что восстановится mqtt
Думаю переписать код так, чтобы перед каждой отправкой данных при обнаружении потери связи с mqtt сначала проверялся wifi и пересоединялся и потом пересоединялся mqtt

Хотя что забавно датчики через несколько часов таки снова присоединяются даже с текущей прошивкой
Может по какой то причине они перезапускаются?
 

nikolz

Well-known member
Спасибо за ответ

Хотя что забавно датчики через несколько часов таки снова присоединяются даже с текущей прошивкой
Может по какой то причине они перезапускаются?
Могу предположить , что у Вас происходит соединение при смене IP адреса роутером.
У роутера есть время, через которое он сбрасывает IP адреса не отвечающих устройств .
После чего Ваш ESP получает новый адрес и снова работает пока не потеряет связь.
Потом снова ждет когда ему дадут новый адрес.
Это можно проверить проследив адреса ESP.
 

axillent

New member
Смена адреса исключена, я всем датчикам прописал статические адреса. Да даже динамические у меня смена для них настроена не чаще чем раз в 48 часов
 

nikolz

Well-known member
Смена адреса исключена, я всем датчикам прописал статические адреса. Да даже динамические у меня смена для них настроена не чаще чем раз в 48 часов
Вы учли что возможна такая ситуация,
что выделенный Вами адрес ESP будет занять другим устройством , например компом.
для исключения этого надо чтобы выделенные статические адреса на роутере должны быть вне области адресов динамических.
 

axillent

New member
Адреса раздаются роутором через dhcp, но в настройке роутера есть жесткая привязка ip к mac моих esp. Так что адрес не может быть никем другим использован и не может быть изменен роутером
 

nikolz

Well-known member
Адреса раздаются роутором через dhcp, но в настройке роутера есть жесткая привязка ip к mac моих esp. Так что адрес не может быть никем другим использован и не может быть изменен роутером
Это хорошо, что Вы в этом уверены, но я бы проверил что же происходит в реальности.
И еще поставьте Wireshark и логгируйте пакеты. В результате найдете причину "почему"
 

pvvx

Активный участник сообщества
Это хорошо, что Вы в этом уверены, но я бы проверил что же происходит в реальности.
И еще поставьте Wireshark и логгируйте пакеты. В результате найдете причину "почему"
DHCP не даст занятый адрес другому.
Смена внешнего IP обычно не распространяется на локальную подсеть.
Wireshark не сканирует чужие пакеты, проходящие по другим проводам свича или радиоэфиру WiFi...
Хотя что забавно датчики через несколько часов таки снова присоединяются даже с текущей прошивкой
Может по какой то причине они перезапускаются?
Впишите периодический вывод времени работы модуля и возможно узнаете, перезагружались ли они...
 
Последнее редактирование:

axillent

New member
Что мне пакеты дадут? Когда датчик отсылает пакет то это mqtt я его и так вижу на openhab
Точнее когда openhab два раза не получает пакет от mqtt мне приходит оповещение о потере датчика

Я могу посмотреть есть ли ping на esp после пропади, есть ли wifi клиентское соединение с точкой доступа. Для этого сниффер не нужен
 
Сверху Снизу