Guest User

Untitled

a guest
Jul 6th, 2016
267
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.82 KB | None | 0 0
  1. my_id = 3
  2. root_id = 0
  3.  
  4. wifi.setmode(wifi.STATIONAP)
  5. wifi.sta.config("wifi_"..string.format("%03d", root_id))
  6. wifi.sta.setip({ip="192.168.0."..string.format("%03d", my_id),netmask="255.255.255.0",gateway="192.168.0.1"})
  7. print("STA config")
  8.  
  9. cfgap={}
  10. cfgap.ssid="wifi_"..string.format("%03d", my_id)
  11. wifi.ap.config(cfgap)
  12.  
  13. cfgip={}
  14. cfgip.ip="192.168.0.1"
  15. cfgip.netmask="255.255.255.0"
  16. cfgip.gateway="192.168.0.1"
  17. wifi.ap.setip(cfgip)
  18. print("AP config")
  19.  
  20. led = 4
  21. gpio.mode(led, gpio.OUTPUT)
  22. relais1 = 2
  23. gpio.mode(relais1, gpio.OUTPUT)
  24. relais2 = 7
  25. gpio.mode(relais2, gpio.OUTPUT)
  26. print("GPIO config")
  27.  
  28. last_id = -1;
  29.  
  30. tmr.register(0, 5000, tmr.ALARM_AUTO, function() --send keepalive with rssi
  31.         rssi = wifi.sta.getrssi();
  32.         if(rssi ~= nil) then
  33.             conn1 = net.createConnection(net.UDP, 0);
  34.             conn1:connect(9999, "192.168.0.255");
  35.             conn1:send("00 00 "..string.format("%02d", my_id).." 05 fb "..(-1*wifi.sta.getrssi()));
  36.             conn1:close();
  37.             gpio.write(led, (gpio.read(led)+1)%2);
  38.         end    
  39. end)
  40. tmr.start(0)
  41.  
  42. srv=net.createServer(net.UDP)
  43. srv:on("receive", function(srv, msg)
  44.     print("Command Reveived -> "..msg)
  45.  
  46.     pps = string.gmatch(msg, "%S+")
  47.     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
  48.     pps = string.gmatch(msg, "%S+")
  49.     pps_1 = pps(1) --ID
  50.     pps_2 = pps(2) --DEST
  51.     pps_3 = pps(3) --FROM
  52.     pps_4 = pps(4) --TTL
  53.     pps_5 = pps(5) --CMD (01=swap, 02=blink, fa=ack, fb=keepalive)
  54.     pps_6 = pps(6) --PORT
  55.     pp_id = tonumber(pps_1, 16)
  56.     pp_dest = tonumber(pps_2, 16)
  57.     pp_from = tonumber(pps_3, 16)
  58.     pp_ttl = tonumber(pps_4, 16)
  59.     pp_cmd = tonumber(pps_5, 16)
  60.     pp_port = pps_6
  61.     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
  62.  
  63.     if (pp_id == last_id and pp_id ~= 0) then return end
  64.     if (pp_id ~= 0) then last_id = pp_id end
  65.     if (pp_dest == my_id) then
  66.         pp_port = tonumber(pp_port, 16)
  67.         print("i got a msg")
  68.         if(pp_cmd == 1) then --swap
  69.             print("swap port "..pp_port)
  70.             gpio.write(pp_port, (gpio.read(pp_port)+1)%2)
  71.         elseif(pp_cmd == 2) then --blink
  72.             print("blink port "..pp_port)
  73.             gpio.write(pp_port, gpio.HIGH)
  74.             tmr.delay(150 * 1000)
  75.             gpio.write(pp_port, gpio.LOW)
  76.         end
  77.         --ack
  78.         conn2 = net.createConnection(net.UDP, 0);
  79.         conn2:connect(9999, "192.168.0.255");
  80.         conn2:send("00 00 "..string.format("%02d", my_id).." 05 fa "..string.format("%02d", pp_id));
  81.         conn2:close();
  82.     elseif (pp_ttl ~= 0) then
  83.         --forward msg
  84.         pp_ttl = pp_ttl -1;
  85.         print("forward, new ttl: "..pp_ttl)
  86.  
  87.         conn2 = net.createConnection(net.UDP, 0);
  88.         conn2:connect(9999, "192.168.0.255");
  89.         conn2:send(pps_1.." "..pps_2.." "..pps_3.." "..string.format("%02d", pp_ttl).." "..pps_5.." "..pps_6);
  90.         conn2:close();
  91.     end
  92. end)
  93. srv:listen(9999)
Advertisement
Add Comment
Please, Sign In to add comment