Skip to content

Commit 6ed5bcc

Browse files
committed
first init and update
1 parent 2d786b4 commit 6ed5bcc

30 files changed

+1661
-119
lines changed

SSD1306_IP.lua

+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
function init_i2c_display()
2+
-- SDA and SCL can be assigned freely to available GPIOs
3+
sda = 5 -- GPIO14
4+
scl = 6 -- GPIO12
5+
sla = 0x3c
6+
i2c.setup(0, sda, scl, i2c.SLOW)
7+
disp = u8g.ssd1306_128x64_i2c(sla)
8+
end
9+
-- graphic test components
10+
function prepare()
11+
disp:setFont(u8g.font_6x10)
12+
disp:setFontRefHeightExtendedText()
13+
disp:setDefaultForegroundColor()
14+
disp:setFontPosTop()
15+
end
16+
function ip()
17+
disp:drawStr(10, 10, "IP Address:")
18+
disp:drawStr(30, 25, wifi.sta.getip().."")
19+
disp:drawStr(20, 47, "Power By NodeMCU")
20+
end
21+
function display()
22+
init_i2c_display()
23+
prepare()
24+
25+
disp:firstPage()
26+
repeat
27+
ip()
28+
until disp:nextPage() == false
29+
end
30+
31+
display()

ajax.lua

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
pin1=3
2+
pin2=4
3+
gpio.mode(pin1,gpio.OUTPUT)
4+
gpio.mode(pin2,gpio.OUTPUT)
5+
function split(s, delimiter)
6+
result = {};
7+
for match in (s..delimiter):gmatch("(.-)"..delimiter) do
8+
table.insert(result, match);
9+
end
10+
return result;
11+
end
12+
function urlencode(payload)
13+
result = {};
14+
list=split(payload,"\r\n")
15+
--print(list[1])
16+
list=split(list[1]," ")
17+
--print(list[2])
18+
list=split(list[2],"\/")
19+
20+
table.insert(result, list[1]);
21+
table.insert(result, list[2]);
22+
table.insert(result, list[3]);
23+
24+
return result;
25+
end
26+
27+
function sendHeader(conn)
28+
conn:send("HTTP/1.1 200 OK\r\n")
29+
conn:send("Access-Control-Allow-Origin: *\r\n")
30+
conn:send("Content-Type: application/json; charset=utf-8\r\n")
31+
conn:send("Server:NodeMCU\r\n")
32+
conn:send("Connection: close\r\n\r\n")
33+
end
34+
35+
function index(conn)
36+
conn:send('HTTP/1.1 200 OK\r\nConnection: keep-alive\r\nCache-Control: private, no-store\r\n\r\n\
37+
<!DOCTYPE HTML><html><head><style>input[type=button] {font-size:large;width:10em;height:5em;}</style>\
38+
<meta content="text/html;charset=utf-8"><title>ESP8266</title>\
39+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">\
40+
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>\
41+
<script>$(document).ready(function(){\
42+
$("#btn-4-on").click(function(){$.ajax({url:"/write/4/0",success:function(result){console.log(result)}});});\
43+
$("#btn-4-off").click(function(){$.ajax({url:"/write/4/1",success:function(result){console.log(result);}});});\
44+
$("#btn-3-on").click(function(){$.ajax({url:"/write/3/0",success:function(result){console.log(result);}});});\
45+
$("#btn-3-off").click(function(){$.ajax({url:"/write/3/1",success:function(result){console.log(result);}});});\
46+
});</script>\
47+
<body bgcolor="#ffe4c4">\
48+
<h2>GPIO3</h2><hr><div><input id="btn-3-on" type="button" value="ON" /> <input id="btn-3-off" type="button" value="OFF" /></div>\
49+
<h2>GPIO4</h2><hr><div><input id="btn-4-on" type="button" value="ON" /> <input id="btn-4-off" type="button" value="OFF" /></div>\
50+
</body></html>')
51+
end
52+
srv=net.createServer(net.TCP)
53+
srv:listen(80,function(conn)
54+
conn:on("receive",function(conn,payload)
55+
print("Http Request..")
56+
list=urlencode(payload)
57+
if (list[2]=="") then
58+
index(conn)
59+
elseif (list[2]=="write") then
60+
local pin = tonumber(list[3])
61+
local status = tonumber(list[4])
62+
gpio.write(pin, status)
63+
sendHeader(conn)
64+
conn:send("{\"result\":\"ok\",\"digitalPin\": "..pin..", \"status\": "..gpio.read(pin).."}")
65+
elseif (list[2]=="read") then
66+
sendHeader(conn)
67+
conn:send("{\"result\":\"ok\", \"digitalPins\": [{\"digitalPin\": "..pin1..", \"status\": "..gpio.read(pin1).."},{\"digitalPin\": "..pin2..", \"status\": "..gpio.read(pin2).."}]}")
68+
else
69+
sendHeader(conn)
70+
conn:send("{\"result\":\"error\",\"message\": \"command not found\"}")
71+
end
72+
conn:close()
73+
end)
74+
end)

app.lua

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
2+
function split(s, delimiter)
3+
result = {};
4+
for match in (s..delimiter):gmatch("(.-)"..delimiter) do
5+
table.insert(result, match);
6+
end
7+
return result;
8+
end
9+
function urlencode(payload)
10+
result = {};
11+
list=split(payload,"\r\n")
12+
--print(list[1])
13+
list=split(list[1]," ")
14+
--print(list[2])
15+
list=split(list[2],"\/")
16+
17+
table.insert(result, list[1]);
18+
table.insert(result, list[2]);
19+
table.insert(result, list[3]);
20+
21+
return result;
22+
end
23+
function sendHeader(conn)
24+
conn:send("HTTP/1.1 200 OK\r\n")
25+
conn:send("Access-Control-Allow-Origin: *\r\n")
26+
conn:send("Content-Type: application/json; charset=utf-8\r\n")
27+
conn:send("Server:NodeMCU\r\n")
28+
conn:send("Connection: close\r\n\r\n")
29+
end
30+
function index(conn)
31+
conn:send('HTTP/1.1 200 OK\r\nConnection: keep-alive\r\nCache-Control: private, no-store\r\n\r\n\
32+
<!DOCTYPE HTML><html><head>\
33+
<meta content="text/html;charset=utf-8"><title>ESP8266</title>\
34+
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">\
35+
</head>\
36+
<body bgcolor="#ffe4c4">\
37+
<H2>ESP8266 GOIP API</H2>\
38+
</body></html>')
39+
end
40+
srv=net.createServer(net.TCP)
41+
srv:listen(80,function(conn)
42+
conn:on("receive",function(conn,payload)
43+
list=urlencode(payload)
44+
if (list[2]=="") then
45+
index(conn)
46+
elseif (list[2]=="write") then
47+
local pin = tonumber(list[3])
48+
--print("Pin: "..pin)
49+
local status = tonumber(list[4])
50+
--print("State: "..status)
51+
gpio.write(pin, status)
52+
-- Response Header
53+
sendHeader(conn)
54+
-- Response Content
55+
conn:send('{"result":"ok","digitalPin": '..pin..', "status": '..gpio.read(pin)..'}')
56+
elseif (list[2]=="read") then
57+
-- Response Header
58+
sendHeader(conn)
59+
-- Response Content
60+
conn:send('{"result":"ok", "digitalPins":[\
61+
{"digitalPin": 4,"status": '..gpio.read(4)..'},\
62+
{"digitalPin": 5, "status": '..gpio.read(5)..'},\
63+
{"digitalPin": 6, "status": '..gpio.read(6)..'},\
64+
{"digitalPin": 7, "status": '..gpio.read(7)..'}\
65+
]}')
66+
else
67+
-- Response Header
68+
sendHeader(conn)
69+
-- Response Content
70+
conn:send('{"result":"error","message": "command not found"}')
71+
end
72+
conn:close()
73+
end)
74+
end)

ascii.lua

+71
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
ascii = {}
2+
3+
ascii[0] = {}
4+
ascii[0][0] = 0x3e
5+
ascii[0][1] = 0x51
6+
ascii[0][2] = 0x49
7+
ascii[0][3] = 0x45
8+
ascii[0][4] = 0x3e
9+
10+
ascii[1] = {}
11+
ascii[1][0] = 0x00
12+
ascii[1][1] = 0x42
13+
ascii[1][2] = 0x7f
14+
ascii[1][3] = 0x40
15+
ascii[1][4] = 0x00
16+
17+
ascii[2] = {}
18+
ascii[2][0] = 0x42
19+
ascii[2][1] = 0x61
20+
ascii[2][2] = 0x51
21+
ascii[2][3] = 0x49
22+
ascii[2][4] = 0x46
23+
24+
ascii[3] = {}
25+
ascii[3][0] = 0x21
26+
ascii[3][1] = 0x41
27+
ascii[3][2] = 0x45
28+
ascii[3][3] = 0x4b
29+
ascii[3][4] = 0x31
30+
31+
ascii[4] = {}
32+
ascii[4][0] = 0x18
33+
ascii[4][1] = 0x14
34+
ascii[4][2] = 0x12
35+
ascii[4][3] = 0x7f
36+
ascii[4][4] = 0x10
37+
38+
ascii[5] = {}
39+
ascii[5][0] = 0x27
40+
ascii[5][1] = 0x45
41+
ascii[5][2] = 0x45
42+
ascii[5][3] = 0x45
43+
ascii[5][4] = 0x39
44+
45+
ascii[6] = {}
46+
ascii[6][0] = 0x3c
47+
ascii[6][1] = 0x4a
48+
ascii[6][2] = 0x49
49+
ascii[6][3] = 0x49
50+
ascii[6][4] = 0x30
51+
52+
ascii[7] = {}
53+
ascii[7][0] = 0x01
54+
ascii[7][1] = 0x71
55+
ascii[7][2] = 0x09
56+
ascii[7][3] = 0x05
57+
ascii[7][4] = 0x03
58+
59+
ascii[8] = {}
60+
ascii[8][0] = 0x36
61+
ascii[8][1] = 0x49
62+
ascii[8][2] = 0x49
63+
ascii[8][3] = 0x49
64+
ascii[8][4] = 0x36
65+
66+
ascii[9] = {}
67+
ascii[9][0] = 0x06
68+
ascii[9][1] = 0x49
69+
ascii[9][2] = 0x49
70+
ascii[9][3] = 0x29
71+
ascii[9][4] = 0x1e

config.lua

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
gpio.mode(4,gpio.OUTPUT)
2+
gpio.mode(5,gpio.OUTPUT)
3+
gpio.mode(6,gpio.OUTPUT)
4+
gpio.mode(7,gpio.OUTPUT)
5+
gpio.write(4, 0)
6+
gpio.write(5, 0)
7+
gpio.write(6, 0)
8+
gpio.write(7, 0)
9+

0 commit comments

Comments
 (0)