Wi-fi розетка на esp8266 Умный дом
В сети Интернет поискал и нашёл много разных исполнений умных радиоуправляемых wifi розеток, но все варианты мне неустраивали или по исполнению или по методу управления или ардуино или инфа какая-то есть, но скучно читать — ни одной картинки, безобразие!!!
В своём варианте исполнения релейной управляемой розетки использую модуль ESP-07(вы можете использовать ESP8266 сразу с UARTом на борту и NODEMCU вот такую напимер), Прошитый под LUA то есть nodemcu, соответственно напишу два скрипта LUA. О том как писать — вгружать скрипты писал в первой статье «Первая программа на LUA для ESP»
Использовать для написания и загрузки скриптов в модуль esp8266 буду программу
В первом скрипте будет реализована функция подключения к Wi-fi роутеру и 10 секундная задержка перед запуском второго скрипта основной программы.
Сделано именно с задержкой для того что-бы после перезагрузки модуля с помощью комманды tmr.stop остановки счётчика можно было остановить таймер и что-то подправить и вгрузить опятьиначе программа при выполнении вам не даст ничего вгрузить вновь(вобщем делайте так)!
Второй скрипт будет содержать саму программу с поднятым веб сервером на котором будет простецкий html интерфейс с кнопками.
Простенькая схемка
Использовать — тоесть дёргать ногами будем GPIO2 и GPIO0.
Обязательно с таким именем ибо nodemcu первым делом после старта загружает именно его.
Незабываем в скрипте поменять имя и пароль от сети вайфай!
Второй скрипт назовём его rrr.lua
Будет поднимать вебсервер и ждать нажатия на кнопки.
Лучше скачать эти скрипты отсюда, так как в коде потёрлись(фильтранулись движком сайта) некоторые теги.
rrr.lua
Код может и корявый но рабочий_) Проверйяте)
Не обращайте внимание если при включении релюхи будут передёргиваться, это нормально для GPIO2 и GPIO0. Можете использовать другие ноги.
Если всё без ошибок, то Вы сможете войти в устройство через браузер по выданному от wi-fi роутера паролю. Ож нже будет выдан в интерфейс если смотреть в com порт автоматически при выполнении в скрипте комманды print(wifi.sta.getip())…
Распиновка ESP для работы с ногами GPIO в среде LUA
Пускатель(реле) тож может пригореть, но время покажет и эффективность снаббера.
`
Представляю Вам Wifi розетку на модуле ESP8266.
В своём варианте исполнения релейной управляемой розетки использую модуль ESP-07(вы можете использовать ESP8266 сразу с UARTом на борту и NODEMCU вот такую напимер), Прошитый под LUA то есть nodemcu, соответственно напишу два скрипта LUA. О том как писать — вгружать скрипты писал в первой статье «Первая программа на LUA для ESP»
Использовать для написания и загрузки скриптов в модуль esp8266 буду программу
ESPlorer
созданную именно под эти цели.В первом скрипте будет реализована функция подключения к Wi-fi роутеру и 10 секундная задержка перед запуском второго скрипта основной программы.
Сделано именно с задержкой для того что-бы после перезагрузки модуля с помощью комманды tmr.stop остановки счётчика можно было остановить таймер и что-то подправить и вгрузить опять
Второй скрипт будет содержать саму программу с поднятым веб сервером на котором будет простецкий html интерфейс с кнопками.
Простенькая схемка
Использовать — тоесть дёргать ногами будем GPIO2 и GPIO0.
GO!
Первый скрипт
с именем init.luaОбязательно с таким именем ибо nodemcu первым делом после старта загружает именно его.
wifi.setmode(wifi.STATION)
print('set mode=STATION (mode='..wifi.getmode()..')')
print('MAC: ',wifi.sta.getmac())
wifi.sta.config("ИМЯ СЕТИ ВАЙФАЙ","ПАРОЛЬ")
FileToExecute="rrr.lua"
print("For stop have 10 sec")
tmr.alarm(0, 10000, 0, function()
print("Run".. FileToExecute)
dofile(FileToExecute)
--if wifi.sta.getip() == nil then
print(wifi.sta.getip())
end)
Незабываем в скрипте поменять имя и пароль от сети вайфай!
Второй скрипт назовём его rrr.lua
Будет поднимать вебсервер и ждать нажатия на кнопки.
print(wifi.sta.getip())
led1 = 3
led2 = 4
gpio.mode(led1, gpio.OUTPUT)
gpio.mode(led2, gpio.OUTPUT)
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
conn:on("receive", function(client,request)
local buf = "";
local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP");
if(method == nil)then
_, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP");
end
local _GET = {}
if (vars ~= nil)then
for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do
_GET[k] = v
end
end
buf = buf.."<html> <head><title>ESP 2ch</title>";
buf = buf.."<meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" /></head> <body><h1> ESP8266 2 channel Web Server</h1>";
buf = buf.."<h1> ESP8266 Web Server</h1>";
buf = buf.."<p>GPIO0 <a href=\"?pin=ON1\"><button>выкл</button></a> <a href=\"?pin=OFF1\"><button>Включить</button></a></p>";
buf = buf.."<p>GPIO2 <a href=\"?pin=ON2\"><button>выкл</button></a> <a href=\"?pin=OFF2\"><button>Включить</button></a></p>";
buf = buf.."
<hr>Made in RUSSIA version 29.06.2018 radio.obninskiy.net
";
buf = buf.."</body></html>";
local _on,_off = "",""
if(_GET.pin == "ON1")then
gpio.write(led1, gpio.HIGH);
elseif(_GET.pin == "OFF1")then
gpio.write(led1, gpio.LOW);
elseif(_GET.pin == "ON2")then
gpio.write(led2, gpio.HIGH);
elseif(_GET.pin == "OFF2")then
gpio.write(led2, gpio.LOW);
end
client:send(buf);
client:close();
collectgarbage();
end)
end)
Лучше скачать эти скрипты отсюда, так как в коде потёрлись(фильтранулись движком сайта) некоторые теги.
Скачать скрипты LUA для Умного дома реле.
init.luarrr.lua
Код может и корявый но рабочий_) Проверйяте)
Не обращайте внимание если при включении релюхи будут передёргиваться, это нормально для GPIO2 и GPIO0. Можете использовать другие ноги.
Если всё без ошибок, то Вы сможете войти в устройство через браузер по выданному от wi-fi роутера паролю. Ож нже будет выдан в интерфейс если смотреть в com порт автоматически при выполнении в скрипте комманды print(wifi.sta.getip())…
Распиновка ESP для работы с ногами GPIO в среде LUA
Добавлено 01.04.2020
Всвязи с распространением коронавируса по стране сидим дома и собираем очередную розетку для насоса малыша на обычном пускателе. Почему не твердотельное РЕЛЕ на симисторе? Да потому что китайцы суют в твердотелки 12 амперный 600вольт симистор и впаривают, а я в результате получу пробитый симистор от коммутации индуктивной нагрузки.Пускатель(реле) тож может пригореть, но время покажет и эффективность снаббера.
Вот что получается.
`
2 комментария
Использовал пины GPIO
led1 = 3 — жпио 0
led2 = 4 — жэпио 2
led5 = 1 — жэпио 5
led4 = 2 — жэпио 4
led13 = 7 — жпио 13
led12 = 6 — жэпио 12
led14 = 5 — жэпио 14
led16 = 0 — жэпио 16
Но глюки были у ESP с наводками на ноги и срабатыванием релюх, пришлось подтяжку делать как нестранно на плюс.