Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- my_id = 3
- root_id = 0
- wifi.setmode(wifi.STATIONAP)
- wifi.sta.config("wifi_"..string.format("%03d", root_id))
- wifi.sta.setip({ip="192.168.0."..string.format("%03d", my_id),netmask="255.255.255.0",gateway="192.168.0.1"})
- print("STA config")
- cfgap={}
- cfgap.ssid="wifi_"..string.format("%03d", my_id)
- wifi.ap.config(cfgap)
- cfgip={}
- cfgip.ip="192.168.0.1"
- cfgip.netmask="255.255.255.0"
- cfgip.gateway="192.168.0.1"
- wifi.ap.setip(cfgip)
- print("AP config")
- led = 4
- gpio.mode(led, gpio.OUTPUT)
- relais1 = 2
- gpio.mode(relais1, gpio.OUTPUT)
- relais2 = 7
- gpio.mode(relais2, gpio.OUTPUT)
- print("GPIO config")
- last_id = -1;
- tmr.register(0, 5000, tmr.ALARM_AUTO, function() --send keepalive with rssi
- rssi = wifi.sta.getrssi();
- if(rssi ~= nil) then
- conn1 = net.createConnection(net.UDP, 0);
- conn1:connect(9999, "192.168.0.255");
- conn1:send("00 00 "..string.format("%02d", my_id).." 05 fb "..(-1*wifi.sta.getrssi()));
- conn1:close();
- gpio.write(led, (gpio.read(led)+1)%2);
- end
- end)
- tmr.start(0)
- srv=net.createServer(net.UDP)
- srv:on("receive", function(srv, msg)
- print("Command Reveived -> "..msg)
- pps = string.gmatch(msg, "%S+")
- if(pps(1) == nil or pps(2) == nil or pps(3) == nil or pps(4) == nil or pps(5) == nil or pps(6) == nil) then print("nil1"); return end
- pps = string.gmatch(msg, "%S+")
- pps_1 = pps(1) --ID
- pps_2 = pps(2) --DEST
- pps_3 = pps(3) --FROM
- pps_4 = pps(4) --TTL
- pps_5 = pps(5) --CMD (01=swap, 02=blink, fa=ack, fb=keepalive)
- pps_6 = pps(6) --PORT
- pp_id = tonumber(pps_1, 16)
- pp_dest = tonumber(pps_2, 16)
- pp_from = tonumber(pps_3, 16)
- pp_ttl = tonumber(pps_4, 16)
- pp_cmd = tonumber(pps_5, 16)
- pp_port = pps_6
- if(pp_id == nil or pp_dest == nil or pp_from == nil or pp_ttl == nil or pp_cmd == nil or pp_port == nil) then print("nil2"); return end
- if (pp_id == last_id and pp_id ~= 0) then return end
- if (pp_id ~= 0) then last_id = pp_id end
- if (pp_dest == my_id) then
- pp_port = tonumber(pp_port, 16)
- print("i got a msg")
- if(pp_cmd == 1) then --swap
- print("swap port "..pp_port)
- gpio.write(pp_port, (gpio.read(pp_port)+1)%2)
- elseif(pp_cmd == 2) then --blink
- print("blink port "..pp_port)
- gpio.write(pp_port, gpio.HIGH)
- tmr.delay(150 * 1000)
- gpio.write(pp_port, gpio.LOW)
- end
- --ack
- conn2 = net.createConnection(net.UDP, 0);
- conn2:connect(9999, "192.168.0.255");
- conn2:send("00 00 "..string.format("%02d", my_id).." 05 fa "..string.format("%02d", pp_id));
- conn2:close();
- elseif (pp_ttl ~= 0) then
- --forward msg
- pp_ttl = pp_ttl -1;
- print("forward, new ttl: "..pp_ttl)
- conn2 = net.createConnection(net.UDP, 0);
- conn2:connect(9999, "192.168.0.255");
- conn2:send(pps_1.." "..pps_2.." "..pps_3.." "..string.format("%02d", pp_ttl).." "..pps_5.." "..pps_6);
- conn2:close();
- end
- end)
- srv:listen(9999)
Advertisement
Add Comment
Please, Sign In to add comment