Jason
тогда поясни еще раз, что надо вообще
Jason
у тебя я смотрю опять delay какой-то зачем-то
Jason
намешано все в кучу
Jason
давай по порядку с описания общей логики
Sneg.
Задача: нужно на пульте включать кнопки по движению либо его отсутствию
Jason
на какое-то время, как я понимаю?
Sneg.
логика: если сработал датчик движения, то включаем реле (к которому подключена кнопка от пульта) на 1 секунду (держим кнопку нажатой одну секунду), т.е. отключаем режим экономии
Sneg.
далее ждем 3 минуты допустим и снова проверяем движение, если его нет, то включаем другое реле не 1 секунду (другую кнопку), тем самым включаем режим экономии
Sneg.
после этого не ждем
Sneg.
все
Jason
pir - это датчик движения?
Sneg.
да
Jason
HIGH - движение есть
Jason
LOW - нет
Sneg.
да
Jason
ок
Jason
ща посморим повнимательней
Sneg.
второй раз разобраться не могу, вытяжку в туалете делал что бы включалась только если находишься в туалете более 50 секунд. Пока не разобрался, принцип тот же
Jason
я с датчиком движения не работал - когда перестает в HIGH возводить pir ? сразу как только движения нет? или через какое-то время? или что-то принудительно нужно сделать?
Sneg.
сразу
Sneg.
это на датчике регулируется
Jason
да чота сложно прочитать - я бы по-другому сделал
Jason
для понятности вынес бы реальные переключения в отедльную функцию
Jason
при объявлении явно инициализировал бы все переменные
Jason
у тебя timerActivated не инициализирован
Jason
в сработавшей функции таймера не просто flag_eco выставлял, а реально бы включал/отключал реле
Jason
гораздо легче потом было бы все это дело сопровождать
Jason
а так краем глаза сложно всю логику проследить
Jason
как переделаешь, если не сработает, кинь на pastebin полный текст
Jason
я гляну как освобожусь
Jason
и я чота не верю, что твоем варианте срабатывает только digitalWrite (rele_dvig_panika, LOW);
Jason
если кратко в уме потрассировать, то самым первым у тебя пойдет digitalWrite (rele_no_dvig_econom, LOW); — > digitalWrite (rele_no_dvig_econom, HIGH);
Jason
а дальше при наличии движения уже пойдет digitalWrite (rele_dvig_panika, LOW); —> digitalWrite (rele_dvig_panika, HIGH);
Jason
а.. ну это только в том случае, если timerActivated у тебя инициализирован в 0
Jason
короче явно инициализируй timerActivated
Jason
дальше смотри
Jason
компайлер разве не выдает варнинг по ипользованию неициализированной переменной?
Sneg.
только пришел
Sneg.
спасибо, сейчас попробую переделать
Petr
это наверно Наташка+ из ютуба фанатка электронники ))
есть сильное подозрение что она только фронтенд там
Sneg.
Jason Kinyaev спасибо за помощь. Разобрался, но кстати если в отдельную функцию это все поместить, то перестает работать. Думаю millis.
Anonymous
Коллеги, поднял на плате http+ модуль подключился по wifi к моему роутеру. Пинг до неё идёт, а 80 порт закрыт.
Anonymous
Какие могут быть проблемы? Чаще всего
Anonymous
В esplorer вижу адрес и гейтвей, то есть dhcp отработал, плата в сети. Веб не поднялся)
Anonymous
прошивку лил вроде со всем нужным
Anonymous
This was built against the master branch and includes the following modules: file, gpio, http, mqtt, net, node, tmr, uart, wifi.
В esplorer вижу адрес и гейтвей, то есть dhcp отработал, плата в сети. Веб не поднялся)
Если бы это был комп я бы сказал что порт закрыт, а тут. Там в переменных нет настройки порта?
Может попробовать не 80 а какой нибудь 81
Anonymous
ну я и ставлю 80
Anonymous
код наисростейший. подключение по wifi и открытие 80 порта
Anonymous
wifi.setmode(wifi.STATION) wifi.sta.config("mmmmmGuest","mmmmmmguest") print(wifi.sta.getip()) srv=net.createServer(net.TCP) srv:listen(80,function(conn) conn:on("receive",function(conn,payload) print(payload) conn:send("<h1> Hello everyone!</h1>") end) conn:on("sent",function(conn) conn:close() end) end)
Null
Лично мне кажется, что чего то не хватает
Что нужно для начала поставить АР mode
И посмотреть подрубиться напрямую
80й будет входить или нет
Null
wifi.setmode(wifi.STATION) wifi.sta.config("YOUR_NETWORK_NAME","YOUR_NETWORK_PASSWORD") print(wifi.sta.getip()) srv=net.createServer(net.TCP) srv:listen(80,function(conn) conn:on("receive", function(client,request) local buf = ""; buf = buf.."<h1> ESP8266 Web Server</h1>"; client:send(buf); client:close(); collectgarbage(); end) end)
Null
И запустить не забудьте
Null
Кстати, может вы банально не запустили и поэтому не работало
Anonymous
А запустить это как? 😳
Null
Потому и не работает
Anonymous
Ран делаю
Null
dofile("webSrv.lua")
Anonymous
Ну я итак делаю dofile("init.lua")
Null
Инит как бы для другого предназначен
Null
Если вы сделаете ошибку, то потом будет очень тяжело восстановить модуль
Null
Потому что, инит запускается сразу же после загрузки модуля
Null
Если будет ошибка и модуль будет уходить в ребут, то так и будет по кругу
Null
Пишите в файл с другим названием
Null
И запускайте вручную
Null
То что модуль пишет, что не нашел инит файл, это ничего
Anonymous
легче не стало
Anonymous
> dofile('script2.lua') script2.lua:2: only one tcp server allowed
Null
Ну ошибка ж понятна
Null
инит пустой?
Null
Удален?
Anonymous
Вот содержимое Init.lua
Anonymous
wifi.setmode(wifi.STATION) wifi.sta.config("EastarGuest","eastarguest") print(wifi.sta.getip()) dofile("script2.lua")