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

плохо работает датчик двери wifi

привет. по зарез нужен был вот такой датчик
$10 DIY Wifi Door Sensor | SimpleIOThings
купил вот такие платки
s-l1600(5).jpg s-l1600(6).jpg s-l1600(7).jpg
залил на них nodemcu с помощью ESP8266Flasher.exe (пробовал последний вот отсюда NodeMCU custom builds и тот что в программе встроен), для lua - LuaLoader0.91
и короче датчики работаают, но потом виснут. больше 12 часов не работают.
может кто-нибудь от нечего делать посмотреть в код и, может, найти в чём там проблема? мне кажется код рабочий, но то ли я его не так заливаю то ли nodemcu за это время сильно вперёд ушёл.
а тот сайт откуда инструкция - дохлый.
я пока правую платку подключил в режиме дебага, может что увижу.
 
Последнее редактирование:

Юрий Ботов

Moderator
Команда форума
1. Не греется ли стенка холодильника?
2. Отработан ли в коде дребезг контактов?
3. Хватает ли питания (чем питаете)?
 
спасибо за ответ.
1) я буду использовать датчик не для холодильника, лежит просто в комнате при комнатной температуре 24 градуса
2) без понятия ( но не думаю что сама отработка дребезга как-то повлияла бы на работу кода. ибо код считает количество нажатий и пишет их. 1 там раз или 5, но при этом извещение высылается одно за 10 минут. ну и кстати срабатывает от микрика мр-1 довольно чётко. всегда 1.
3) два от усб ноутов, один от зарядки для сотового 5в 1а. довольно хорошее питание, я считаю, с учётом того что дальше всё равно стоит линейный стаб на 3.3в. самая маленькая платка подключена через вот это
s-l1600(8).jpg
почему-то отваливатся от терминала. вот что выдаёт при этом в терминал. при этом пока не зависла. жду дальше
Снимок экрана (1259).GIF
последнее сообщение после нажатия кнопки и перехода в режим ожидания это net_socket_disconnected is called. всё что после него - не знаю что значит
 
Последнее редактирование:

nikolz

Well-known member
привет. по зарез нужен был вот такой датчик
$10 DIY Wifi Door Sensor | SimpleIOThings
купил вот такие платки
Посмотреть вложение 2364 Посмотреть вложение 2365 Посмотреть вложение 2366
залил на них nodemcu с помощью ESP8266Flasher.exe (пробовал последний вот отсюда NodeMCU custom builds и тот что в программе встроен), для lua - LuaLoader0.91
и короче датчики работаают, но потом виснут. больше 12 часов не работают.
может кто-нибудь от нечего делать посмотреть в код и, может, найти в чём там проблема? мне кажется код рабочий, но то ли я его не так заливаю то ли nodemcu за это время сильно вперёд ушёл.
а тот сайт откуда инструкция - дохлый.
я пока правую платку подключил в режиме дебага, может что увижу.
Может быть код выложите, который смотреть.
 

nikolz

Well-known member
ой правда что это я. всё сразу zipом сойдёт? а то там много
это Вы написали?
начнем с INIT.lua
----------------------------
Вы как бы перебираете каналы, но ничего с ними не делаете. Зачем?
if wifi.sta.getip() == nil then
cnt = cnt + 1
print("(" .. cnt .. ") Waiting for a Wifi Connection...")
-- function that counts each failed attempt to get an IP address from your router.
if cnt == 10 then
tmr.stop(1)
dofile("setwifi.lua")
end
---------------------
Вообще-то сначала надо написать Вашу задачу, так как то, что Вы где-то взяли содержит много лишнего.
 

nikolz

Well-known member
если у Вас как насайте всего один датчик, то код раз в 5 можно уменьшить.
Зачем у ESP открывается режим STA+AP?
 
это Вы написали?
конечно же это не я написал. я не умею кодить под ESP8266.
мне нужен был датчик который по нажатию кнопки отсылал бы мне письмо.
в инете нашёл этот проект через ifttt, он мне понравился тем что может отсылать смс, смс будет гораздо лучше.
ну и я как бы не ожидал что будут какие-то сложности, поэтому купил сразу три платы... я думал что если написана вот такая неплохая статья и человек вроде для себя делал то должно работать стабильно. и поэтому не исключаю что я что-то делаю не так. сайт давно не обновляется, комменты к теме если и были - модератор их не зааппрувил.
 
если у Вас как насайте всего один датчик, то код раз в 5 можно уменьшить.
Зачем у ESP открывается режим STA+AP?
мне бы хотелось конечно чтобы одна платка обрабатывала бы несколько своих входов, но я не знаю как это сделать. режим STA+AP открывается для того чтобы настроить доступ к роутеру. как это сделать я так и не понял. setwifi.lua автоматически при первом запуске не запускается, если запустить его вручную - не заходит ни на один из известных мне адресов типа 192.168.1.1. в статье как настроить доступ к роутеру не описано, что подозрительно. поэтому к роутеру привязывал кнопкой set ap в lualoader.
 

nikolz

Well-known member
мне бы хотелось конечно чтобы одна платка обрабатывала бы несколько своих входов, но я не знаю как это сделать. режим STA+AP открывается для того чтобы настроить доступ к роутеру. как это сделать я так и не понял. setwifi.lua автоматически при первом запуске не запускается, если запустить его вручную - не заходит ни на один из известных мне адресов типа 192.168.1.1. в статье как настроить доступ к роутеру не описано, что подозрительно.
Начните изучать луа и вот это:
net - NodeMCU Documentation
далее,
Для отладки не используйте файл INIT. lua
Этот файл запускается автоматом при рестарте и при отладке будет запускаться на каждой ошибке.
Поэтому сначала делайте один файл назовите его main.lua
В этом файле четыре секции
1) Настрйка wIFI и gpio,
2) колбек для GPIO
3) колбек функция таймера cd
4) tmr.alarm(1,1000,1,cb); -- это запуск таймера который с интервалом 1 секунда вызывает функцию cd
----------------------
Т е у Вас будут выполнятся действия по сигналам от датчиков и по заданному интервалу времени
Ну и т д
 

nikolz

Well-known member
а вообще-то сначала просто словами напишите то, что хотите сделать.
Например так,
на трех дверях стоят датчики
При открывании двери состояние датчика запоминается(или нет) передается на комп (или нет)
ну и т д
 
Начните изучать луа и вот это:
для меня это тёмный лес, извините. я могу ещё в чужом коде покопаться, но и то когда там "светодиодом помигать", как говорится. а тут вай-фай, https, json и ещё много страшных слов
а вообще-то сначала просто словами напишите
я хочу чтобы платка у которой на максимально возможном количестве gpio висят кнопки при нажатии на них отсылала мне смски с настраиваемыми названиями этих кнопок.
 

nikolz

Well-known member
для меня это тёмный лес, извините. я могу ещё в чужом коде покопаться, но и то когда там "светодиодом помигать", как говорится. а тут вай-фай, https, json и ещё много страшных слов

я хочу чтобы платка у которой на максимально возможном количестве gpio висят кнопки при нажатии на них отсылала мне смски с настраиваемыми названиями этих кнопок.
Если сами не будете разбираться, то лучше откажитесь от затеи.
Эта задача, как и любая другая реальная, стоит не мало времени или денег.
Так чтобы купил плату, залил и все работает без проблем - это лишь для помигать диодом.
 
Для отладки не используйте файл INIT. lua
Этот файл запускается автоматом при рестарте и при отладке будет запускаться на каждой ошибке.
да пусть хоть какая-то ошибка появится) "виснут" это я так сказал, в общих чертах. потому что я жму на кнопку а письмо не приходит и я вижу в вай-фай клиентах на роутере что платка не получает ip. у платки есть ip только некоторое время после подключения, потом она становится "получение ip-адреса". при нажатии на кнопку она снова получает ip. а вот когда "зависла" - уже не получает.

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

Если сами не будете разбираться, то лучше откажитесь от затеи.
спасибо за помощь)
 

nikolz

Well-known member
да пусть хоть какая-то ошибка появится) "виснут" это я так сказал, в общих чертах. потому что я жму на кнопку а письмо не приходит и я вижу в вай-фай клиентах на роутере что платка не получает ip. у платки есть ip только некоторое время после подключения, потом она становится "получение ip-адреса". при нажатии на кнопку она снова получает ip. а вот когда "зависла" - уже не получает.

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


спасибо за помощь)
В программе на луа пишите так:
T1=tmr.now() -- это текущее время в микросекундах
Там где хотите увидеть метку
пишите так
T2=tmr.now()-T1 -- это время прошедшее от T1 до T2
потом пишите так:
print("T2="..T2)
Запускаете ESPlorer и стартуете свою программу
На экране получите
T2=1000 --т е прошло 1000 мкс
Так и отлаживаете
 
В программе на луа пишите так:
T1=tmr.now() -- это текущее время в микросекундах
Там где хотите увидеть метку
пишите так
T2=tmr.now()-T1 -- это время прошедшее от T1 до T2
потом пишите так:
print("T2="..T2)
Запускаете ESPlorer и стартуете свою программу
На экране получите
T2=1000 --т е прошло 1000 мкс
Так и отлаживаете
вы сейчас мне предложили для поиска бага в программе поставить возле него команду print?) так я не знаю где он)) если бы я знал где баг - зачем мне его искать?))
 

nikolz

Well-known member
вы сейчас мне предложили для поиска бага в программе поставить возле него команду print?) так я не знаю где он)) если бы я знал где баг - зачем мне его искать?))
Если бы Вы знали, где он, то и искать не надо.
Ставите метки по ходу исполнения программы с выводом переменных состояния.
И получаете логику работы. Потом ищите, где логика исполнения не совпадает с логикой желаемого.
Вот там и будут они самые.
 
Если бы Вы знали, где он, то и искать не надо.
Ставите метки по ходу исполнения программы с выводом переменных состояния.
И получаете логику работы. Потом ищите, где логика исполнения не совпадает с логикой желаемого.
Вот там и будут они самые.
как я уже сказал для меня всё это тёмный лес. я не знаю что куда и как выводить. я просто надеюсь. надеюсь что когда платка зависнет она выдаст в терминал что-то что я смогу нагуглить. или по самой надписи понять, как когда lua выдает ошибку с номером строки, именем файла и стрингом возле которого случился сбой. или запостить сюда и получить помощь здесь. да я вообще не знаю как дебаг работает! я только примерно представляю что это такое.
 

Сергей_Ф

Moderator
Команда форума
@shinji2009 правильно ли я понял:
Вы хотите что бы кто-то потратил своё время и знание для решения Вашей проблемы.
Сами при этом разбираться не хотите.
Те кто будут Вам помогать - им "нечего делать". Потому оплатить работу Вы не предлагаете.
Я нигде не ошибся?
 
Сверху Снизу