Вот и пришел мне модуль 1117. Выкладываю свой проектик:
Схема:
Прошивка ESP-01 - nodemcu, взял отсюда.
Код:
Как работает на макетке (видео):
Управление через Винду:
1) качаем wget
2) создаем два батника в папке wget
on.bat со строкой: wget http://192.168.4.1/?pin=ON1 -O-
off.bat со строкой: wget http://192.168.4.1/?pin=OFF1 -O-
3) устанавливаем связь с розеткой, через внешний wifi адаптер, например, если нет встроенного.
4) и включаем/включаем запуская on.bat/off.bat или прописываем их выполнение в планировщике.
В линуксах та же утилитка и запуск по времени через крон.
На сайтах я думаю можно встроить через фрейм или другими способами.
Дальше буду паять.
Схема:
Прошивка ESP-01 - nodemcu, взял отсюда.
Код:
wifi.setmode(wifi.SOFTAP)
cf={}
cf.ip="192.168.4.1"
cf.netmask="255.255.255.0"
cf.gateway="192.168.4.1"
wifi.ap.setip(cf)
cfg = {}
cfg.ssid = "test"
cfg.pwd = "12345678"
wifi.ap.config(cfg)
gpio.mode(3,gpiUTPUT)
gpio.mode(4,gpiUTPUT)
cf={}
cf.ip="192.168.4.1"
cf.netmask="255.255.255.0"
cf.gateway="192.168.4.1"
wifi.ap.setip(cf)
cfg = {}
cfg.ssid = "test"
cfg.pwd = "12345678"
wifi.ap.config(cfg)
gpio.mode(3,gpiUTPUT)
gpio.mode(4,gpiUTPUT)
dofile("wifiap.lua")
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
connn("receive", function(client,request)
local buf = "";
buf = [[
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<title>WIFI выключатель</title>
<style type="text/css">
body {background:[HASHTAG]#eee[/HASHTAG];}
.i1Style{
font:bold 36px Arial, Monaco, monospace;
font-style:normal;
color:[HASHTAG]#FFF9D0[/HASHTAG];
background:[HASHTAG]#32CD32[/HASHTAG];
border:6px inset [HASHTAG]#cccccc[/HASHTAG];
text-shadow:0px -1px 10px [HASHTAG]#222222[/HASHTAG];
box-shadow:1px 1px 9px [HASHTAG]#000000[/HASHTAG];
-moz-box-shadow:1px 1px 9px [HASHTAG]#000000[/HASHTAG];
-webkit-box-shadow:1px 1px 9px [HASHTAG]#000000[/HASHTAG];
border-radius:83px 0px 90px 40px;
-moz-border-radius:83px 0px 90px 40px;
-webkit-border-radius:83px 0px 90px 40px;
width:30%;
padding:20px 43px;
cursorointer;
margin:0 auto;
}
.i1Style:active{
cursorointer;
position:relative;
top:2px;
}
.i2Style{
font:bold 36px Arial, Monaco, monospace;
font-style:normal;
color:[HASHTAG]#FCDD76[/HASHTAG];
background:[HASHTAG]#FF0000[/HASHTAG];
border:6px inset [HASHTAG]#cccccc[/HASHTAG];
text-shadow:0px -1px 10px [HASHTAG]#222222[/HASHTAG];
box-shadow:1px 1px 9px [HASHTAG]#000000[/HASHTAG];
-moz-box-shadow:1px 1px 9px [HASHTAG]#000000[/HASHTAG];
-webkit-box-shadow:1px 1px 9px [HASHTAG]#000000[/HASHTAG];
border-radius:83px 40px 90px 0px;
-moz-border-radius:83px 40px 90px 0px;
-webkit-border-radius:83px 40px 90px 0px;
width:30%;
padding:20px 43px;
cursorointer;
margin:0 auto;
}
.i2Style:active{
cursorointer;
position:relative;
top:2px;
}
</style></head><body> ]]
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
local _on,_off = "",""
if(_GET.pin == "ON1")then
gpio.write(3, gpio.LOW);
a = 1;
elseif(_GET.pin == "OFF1")then
gpio.write(3, gpio.HIGH);
a= 0;
end
if(_GET.pin == "ON2")then
gpio.write(4, gpio.LOW);
b=1;
elseif(_GET.pin == "OFF2")then
gpio.write(4, gpio.HIGH);
b=0;
end
if(a == 0 or a == nil)then
buf = buf.."<br><p><a href=\"?pin=ON1\"><button class=\"i1Style\">ВКЛ</button></a></p>";
else
buf = buf.."<br><p><a href=\"?pin=OFF1\"><button class=\"i2Style\">ВЫКЛ</button></a></p>";
end
if(b == 0 or b == nil)then
buf = buf.."<br><p><a href=\"?pin=ON2\"><button class=\"i1Style\">ВКЛ</button></a></p>";
else
buf = buf.."<br><p><a href=\"?pin=OFF2\"><button class=\"i2Style\">ВЫКЛ</button></a></p>";
end
buf=buf.."</body></html>";
client:send(buf);
client:close();
collectgarbage();
end)
end)
srv=net.createServer(net.TCP)
srv:listen(80,function(conn)
connn("receive", function(client,request)
local buf = "";
buf = [[
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1251">
<title>WIFI выключатель</title>
<style type="text/css">
body {background:[HASHTAG]#eee[/HASHTAG];}
.i1Style{
font:bold 36px Arial, Monaco, monospace;
font-style:normal;
color:[HASHTAG]#FFF9D0[/HASHTAG];
background:[HASHTAG]#32CD32[/HASHTAG];
border:6px inset [HASHTAG]#cccccc[/HASHTAG];
text-shadow:0px -1px 10px [HASHTAG]#222222[/HASHTAG];
box-shadow:1px 1px 9px [HASHTAG]#000000[/HASHTAG];
-moz-box-shadow:1px 1px 9px [HASHTAG]#000000[/HASHTAG];
-webkit-box-shadow:1px 1px 9px [HASHTAG]#000000[/HASHTAG];
border-radius:83px 0px 90px 40px;
-moz-border-radius:83px 0px 90px 40px;
-webkit-border-radius:83px 0px 90px 40px;
width:30%;
padding:20px 43px;
cursorointer;
margin:0 auto;
}
.i1Style:active{
cursorointer;
position:relative;
top:2px;
}
.i2Style{
font:bold 36px Arial, Monaco, monospace;
font-style:normal;
color:[HASHTAG]#FCDD76[/HASHTAG];
background:[HASHTAG]#FF0000[/HASHTAG];
border:6px inset [HASHTAG]#cccccc[/HASHTAG];
text-shadow:0px -1px 10px [HASHTAG]#222222[/HASHTAG];
box-shadow:1px 1px 9px [HASHTAG]#000000[/HASHTAG];
-moz-box-shadow:1px 1px 9px [HASHTAG]#000000[/HASHTAG];
-webkit-box-shadow:1px 1px 9px [HASHTAG]#000000[/HASHTAG];
border-radius:83px 40px 90px 0px;
-moz-border-radius:83px 40px 90px 0px;
-webkit-border-radius:83px 40px 90px 0px;
width:30%;
padding:20px 43px;
cursorointer;
margin:0 auto;
}
.i2Style:active{
cursorointer;
position:relative;
top:2px;
}
</style></head><body> ]]
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
local _on,_off = "",""
if(_GET.pin == "ON1")then
gpio.write(3, gpio.LOW);
a = 1;
elseif(_GET.pin == "OFF1")then
gpio.write(3, gpio.HIGH);
a= 0;
end
if(_GET.pin == "ON2")then
gpio.write(4, gpio.LOW);
b=1;
elseif(_GET.pin == "OFF2")then
gpio.write(4, gpio.HIGH);
b=0;
end
if(a == 0 or a == nil)then
buf = buf.."<br><p><a href=\"?pin=ON1\"><button class=\"i1Style\">ВКЛ</button></a></p>";
else
buf = buf.."<br><p><a href=\"?pin=OFF1\"><button class=\"i2Style\">ВЫКЛ</button></a></p>";
end
if(b == 0 or b == nil)then
buf = buf.."<br><p><a href=\"?pin=ON2\"><button class=\"i1Style\">ВКЛ</button></a></p>";
else
buf = buf.."<br><p><a href=\"?pin=OFF2\"><button class=\"i2Style\">ВЫКЛ</button></a></p>";
end
buf=buf.."</body></html>";
client:send(buf);
client:close();
collectgarbage();
end)
end)
Как работает на макетке (видео):
Управление через Винду:
1) качаем wget
2) создаем два батника в папке wget
on.bat со строкой: wget http://192.168.4.1/?pin=ON1 -O-
off.bat со строкой: wget http://192.168.4.1/?pin=OFF1 -O-
3) устанавливаем связь с розеткой, через внешний wifi адаптер, например, если нет встроенного.
4) и включаем/включаем запуская on.bat/off.bat или прописываем их выполнение в планировщике.
В линуксах та же утилитка и запуск по времени через крон.
На сайтах я думаю можно встроить через фрейм или другими способами.
Дальше буду паять.
Последнее редактирование: