Страница 1 из 1
плохо работает датчик двери wifi на esp8266 lua nodemcu
Добавлено: Пн окт 31, 2016 04:48:10
shinji2009
привет. собрал вот такой датчик
http://www.simpleiothings.com/10-diy-door-sensor/
и он короче не работает долго. виснет. после 12 часов примерно.
понял примерно что виснет sensor.lua. я расставил в нём команды вывода на печать текста lolNN чтобы понять где он виснет. но когда он зависает, в лог терминала ни один lol не выводится. дебаг выдаёт что да, контакт к земле притянули. а скрипт на месте стоит. как будто зависает всё на одной команде
gpio.trig(buttonPin,"down", debounce(onChange))
я нашёл вот такой баг на гитхабе
https://github.com/nodemcu/nodemcu-firmware/issues/874 по описанию очень походит на то что имею я. решением написано использовать команду ICACHE_RAM_ATTR для работы с gpio. но я не знаю как её вставить в скрипт, не могу найти примеров её применения в lua скрипте.
пытался спрашивать на вроде бы специализированном форуме, там как-то глухо
https://esp8266.ru/forum/threads/ploxo- ... wifi.1714/
помогите?
скрипты
Re: плохо работает датчик двери wifi на esp8266 lua nodemcu
Добавлено: Вт ноя 01, 2016 16:01:09
shinji2009
короче мне на гитхабе пояснили что это только если на сях писать тогда этот атрибут можно вставлять. в луа скриптах он не используется. и посоветовали спросить на форуме. лол
Re: плохо работает датчик двери wifi на esp8266 lua nodemcu
Добавлено: Ср ноя 02, 2016 10:31:43
Igor3
Вы к wifi(!) прикручиваете охранный датчик, причём не на нанотехнологиях, а на сермяжном герконе, задайте себе вопрос:”зачем?”- и всё встанет на свои места

. Микроскопом тоже можно забивать гвозди, но неудобно, причём электронным – только втроём!
Re: плохо работает датчик двери wifi на esp8266 lua nodemcu
Добавлено: Чт ноя 03, 2016 14:03:05
Foton-4n
Wi-Fi и датчики охраны

.
Микроскоп гвозди зачем? Лучше ДУ через 4G сделать звонить девайсу и работать через голосовое меню будет аналог.
Но геркон то что в нём плохого? По надёжности он превосходит все нанотехно, вариант с тем что кто то магнитом может подмагнитить его при открывании маловероятен. Хотя датчик всё же надо юзать более надёжный в плане воздействий.
Re: плохо работает датчик двери wifi на esp8266 lua nodemcu
Добавлено: Сб ноя 05, 2016 10:44:20
Igor3
Foton-4n писал(а):Но геркон то что в нём плохого? По надёжности он превосходит все нанотехно,
Я ровно это и сказал – единственное, что сделано правильно – это геркон – он единственный здесь на месте

. А про нанотехнологи – это шутка ( в смысле, что можно было здесь использовать мп, да еще с левой библиотекой на библиотеке, если бы он давал хоть какой-то выигрыш, ради которого можно поступиться надёжностью – например, определял количество входящих, либо детектировал их намерения, путём считывания мыслей

, а ТС не понял...и заминусовал (Галелея, помницца тоже сначала много минусовали...)
Re: плохо работает датчик двери wifi на esp8266 lua nodemcu
Добавлено: Пн фев 06, 2017 12:25:26
DX168B
Соберите свежую прошивку NodeMCU
тут (ссылка)
Там предлагают выбрать сборку прошивки от любого из двух авторов (master или dev).
Выбирайте от автора
dev (NodeMCU версии 2.0)
Не забудьте указать корректный e-mail, так как на него придет ссылка на готовую свежесобранную прошивку.
Ниже можно выбрать модули, которые Вы хотите включить в прошивку. GPIO уже включен по умолчанию.
Я пользуюсь именно этой версией. Девайс у меня опрашивает датчик DHT-22 (AM2302),
модуль поддержки которого активно работает с GPIO. Девайс работает уже месяц без единого зависания и перезапуска.
Re: плохо работает датчик двери wifi на esp8266 lua nodemcu
Добавлено: Пн фев 06, 2017 13:49:13
shinji2009
мне почему-то всегда казалось что мастер это стабильная версия а дев это версия дла разработчиков, с неотловленными багами
тем не менее я уже разобрался. не сказать что я нашёл в чём был глюк, потому что программа написана правильно. просто видимо эту программу никто не тестил на новых прошивках, а на старых она может и не глючила. я нашёл вариант который не виснет. спасибо)
Re: плохо работает датчик двери wifi на esp8266 lua nodemcu
Добавлено: Вт фев 07, 2017 01:20:44
DX168B
Не знаю. Я на последнней прошивке от master поймал какой-то странный глюк с GPIO, который не проявляется на прошивке dev.
Re: плохо работает датчик двери wifi на esp8266 lua nodemcu
Добавлено: Вт фев 07, 2017 03:39:14
shinji2009
оу. ну тогда большое спасибо. надо будет потестить. ибо
https://esp8266.ru/forum/threads/ne-rab ... jmer.1795/
Re: плохо работает датчик двери wifi на esp8266 lua nodemcu
Добавлено: Чт фев 23, 2017 11:03:23
shinji2009
не, с dev вообще не работает. пишет PANIC: unprotected error in call to Lua API (ifttt.lua:66: already connected)
там у меня conn:connect(80,ip)
всё что находил по этой ошибке - пишут таймер мол какой-то не остановлен. какой таймер? хз
они что-то поменяли в обоих ветках, теперь моя программа не работает на новых билдах. прекрасно, просто прекрасно
убрал команды которые не нравились lua, добился работы на новой прошивке с dev ветки. всё равно gpio глючит :3
Re: плохо работает датчик двери wifi на esp8266 lua nodemcu
Добавлено: Чт фев 23, 2017 23:28:55
DX168B
А какой GPIO пин используется для опроса датчика СМК? Я, к примеру, старался не трогать пины, на которых имеется какая-нибудь периферия, вроде SPI или UART, если их поддержка добавлена в билд. Дома на этой штуке у меня работает датчик DHT-22, подключенный к GPIO5.
На GPIO5 (ножка D1 на девборде NodeMCU v2. она же под номером 1 в Lua) нет никакой периферии, потому этой ноге ничто не мешает.
И еще. Старайтесь подальше держаться от анонимных функций в качестве аргумента. Тут используется старый движок Lua, у которого ингода наблюдаются глюки при парсинге скрипта.
Код: Выделить всё
function onChange()
if gpio.read(buttonPin) == 0
then
count = count + 1
tmr.alarm(6,timerThreshold,0,function()
resetCounter()
print("Time limit reached. Restarting Counter...")
end)
if count == sensorThreshold
then
print("(" .. count .. ") sensor inputs counted! Sending Alert!")
dofile("ifttt.lua")
else
print("(" .. count .. ") sensor inputs counted...")
end
end
end
можно переделать так:
Код: Выделить всё
exceptionExec =
{
function()
resetCounter();
print("Time limit reached. Restarting Counter...");
end,
function()
print("bla-bla-bla occured");
end,
};
function onChange()
if(gpio.read(buttonPin) == 0) then
count = count + 1;
tmr.alarm(6,timerThreshold,0,exceptionExec[1]);
if(count == sensorThreshold) then
print("(" .. count .. ") sensor inputs counted! Sending Alert!");
dofile("ifttt.lua");
else
print("(" .. count .. ") sensor inputs counted...");
end
end
end
Re: плохо работает датчик двери wifi на esp8266 lua nodemcu
Добавлено: Пт фев 24, 2017 05:15:08
shinji2009
используется buttonPin = 2 ( GPIO4 )
да у esp на всех контактах что-то висит)
в билде вообще ничего нет кроме стандартных 7 модулей но uart среди них есть. его же нельзя отключить? или если отключу то модуль перешиваться перестанет?
спасибо, попробую другие пины. попробую ваш скрипт.
Re: плохо работает датчик двери wifi на esp8266 lua nodemcu
Добавлено: Пт фев 24, 2017 19:45:38
DX168B
Прошивкой ПЗУ занимется загрузчик. Потому, если не будет поддержки UART в прошивке, то возможно (не проверял просто),
невозможно будет залить только скрипты в память, но возможность прошить сам чип всегда есть.
Ну а GPIO4 - это вроде свободная нога. Чуть попозже попробую залить ваши скрипты на свою плату и проверить.
UPD: Нашел небольшое несоответствие с API в коде.
Код: Выделить всё
function debounce (func)
local last = 0
local delay = 10000
return function (bounceCheck) -- Конкретно эта функция
local now = tmr.now()
if now - last < delay
then return
end
last = now
return func(bounceCheck)
end
end
Дело в том, что Callback функция для gpio.trig должна иметь следующий вид:
Код: Выделить всё
function GpioXIntCallback(pinLevel, intTimestamp)
-- где
-- pinLevel - состояние ноги на момент прерывания
-- intTimestamp - это по сути значение из tmr.now. То есть, значение таймера на момент возникновения прерывания
end