소스 검색

add more mqtt example, add a mqtt subfolder

funshine 9 년 전
부모
커밋
450b79dbde
3개의 변경된 파일68개의 추가작업 그리고 5개의 파일을 삭제
  1. 4 0
      examples/fragment.lua
  2. 8 5
      lua_examples/mqtt/mqtt2cloud.lua
  3. 56 0
      lua_examples/mqtt/mqtt_file.lua

+ 4 - 0
examples/fragment.lua

@@ -515,3 +515,7 @@ end)
 m:on("message",dispatch )
 m:connect("m11.cloudmqtt.com",11214,0,1)
 -- Lua: mqtt:connect( host, port, secure, auto_reconnect, function(client) )
+
+tmr.alarm(0,10000,1,function() local pl = "time: "..tmr.time() 
+	m:publish("/topic1",pl,0,0)
+	end)

+ 8 - 5
lua_examples/mqtt_test.lua → lua_examples/mqtt/mqtt2cloud.lua

@@ -1,19 +1,19 @@
--- Lua: mqtt.Client(clientid, keepalive, user, pass)
 -- test with cloudmqtt.com
 m_dis={}
 function dispatch(m,t,pl)
 	if pl~=nil and m_dis[t] then
-		m_dis[t](pl)
+		m_dis[t](m,pl)
 	end
 end
-function topic1func(pl)
+function topic1func(m,pl)
 	print("get1: "..pl)
 end
-function topic2func(pl)
+function topic2func(m,pl)
 	print("get2: "..pl)
 end
 m_dis["/topic1"]=topic1func
 m_dis["/topic2"]=topic2func
+-- Lua: mqtt.Client(clientid, keepalive, user, pass)
 m=mqtt.Client("nodemcu1",60,"test","test123")
 m:on("connect",function(m) 
 	print("connection "..node.heap()) 
@@ -26,5 +26,8 @@ m:on("offline", function(conn)
     print(node.heap())
 end)
 m:on("message",dispatch )
-m:connect("m11.cloudmqtt.com",11214,0,1)
 -- Lua: mqtt:connect( host, port, secure, auto_reconnect, function(client) )
+m:connect("m11.cloudmqtt.com",11214,0,1)
+tmr.alarm(0,10000,1,function() local pl = "time: "..tmr.time() 
+	m:publish("/topic1",pl,0,0)
+	end)

+ 56 - 0
lua_examples/mqtt/mqtt_file.lua

@@ -0,0 +1,56 @@
+-- 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 = cjson.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"}