1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- -- test transfer files over mqtt.
- m_dis={}
- function dispatch(m,t,pl)
- if pl~=nil and m_dis[t] then
- m_dis[t](m,pl)
- end
- end
- function pubfile(m,filename)
- file.close()
- file.open(filename)
- repeat
- local pl=file.read(1024)
- if pl then m:publish("/topic2",pl,0,0) end
- until not pl
- file.close()
- end
- -- payload(json): {"cmd":xxx,"content":xxx}
- function topic1func(m,pl)
- print("get1: "..pl)
- local pack = sjson.decode(pl)
- if pack.content then
- if pack.cmd == "open" then file.open(pack.content,"w+")
- elseif pack.cmd == "write" then file.write(pack.content)
- elseif pack.cmd == "close" then file.close()
- elseif pack.cmd == "remove" then file.remove(pack.content)
- elseif pack.cmd == "run" then dofile(pack.content)
- elseif pack.cmd == "read" then pubfile(m, pack.content)
- end
- end
- end
- m_dis["/topic1"]=topic1func
- -- Lua: mqtt.Client(clientid, keepalive, user, pass)
- m=mqtt.Client()
- m:on("connect",function(m)
- print("connection "..node.heap())
- m:subscribe("/topic1",0,function(m) print("sub done") end)
- end )
- m:on("offline", function(conn)
- print("disconnect to broker...")
- print(node.heap())
- end)
- m:on("message",dispatch )
- -- Lua: mqtt:connect( host, port, secure, auto_reconnect, function(client) )
- m:connect(192.168.18.88,1883,0,1)
- -- usage:
- -- another client(pc) subscribe to /topic2, will receive the test.lua content.
- -- and publish below message to /topic1
- -- {"cmd":"open","content":"test.lua"}
- -- {"cmd":"write","content":"print([[hello world]])\n"}
- -- {"cmd":"write","content":"print(\"hello2 world2\")\n"}
- -- {"cmd":"write","content":"test.lua"}
- -- {"cmd":"run","content":"test.lua"}
- -- {"cmd":"read","content":"test.lua"}
|