查看: 3036|回复: 0|关注: 0

[我分享] 物联网专题:如何用Thingspeak控制联网的硬件

[复制链接]

论坛优秀回答者

39

主题

1288

帖子

110

最佳答案
  • 关注者: 65
发表于 2016-10-28 23:42:22 | 显示全部楼层 |阅读模式
如何用Thingspeak控制联网的硬件
[size=1.05em]向硬件发送命令的最简单的方式当然是使用MQTT,该协议是一种发送和接受的模式(Subscribe and Publish)。除此之外Thingspeak还提供了一个服务,叫做Talkback,它把要向硬件发送的命令存在一个消息或命令队列中,并且由硬件自己主动地查询(Pull)要传递给自己的信息。比如:如果我们希望NodeMCU可以往不同的Channel中发送数据,而具体往哪一个Channel中发送,则由writeKey来决定(因为Channel和writeKey有一一对应的关系),这就要求在deploy了硬件之后我们必须可以修改writeKey,这就要求writeKey不能在程序中hard code,而必须从其它地方得到的。由于writeKey是一串随机的字符串,所以它不能当做double型的数据存在数据Channel中,于是,可以存贮任意字符的Talkback服务在这儿就派上用场了。下面是这个例子的架构图: 硬件先从Talkback的服务处得到writeKey,再把数据发送到writeKey对应的Channel。


Fullscreen capture 10282016 112141 AM.bmp.jpg
[size=1.05em]Talkback提供简单的HTTP接口,来存储和维护一个消息命令队列,如下所示: Example : Talkback ID(10060)
[td]
Position
Command ID
Command string
1
2687601
command_1
2
2687602
command_2
3
2687603
command_3
[size=1.05em]它支持往队列中添加,更新命令,还有从队列中取出(消耗)一个命令,当取出命令的时候,它遵循先进先出原则。每一个talkback服务都有一个ID,相当于消息队列的ID,而在一个队列中,每一个命令也有一个自己的ID,叫做Command ID,在更新command string时,即需要指定Talkback ID,还需要指定Command ID.

[size=1.05em]往队列中插入一个command的curl命令如下
  1. curl -X POST -H "Content-Type: application/json" -d '{"api_key":"writekey","command_string":"new_command"}'  https://api.thingspeak.com/talkbacks/10060/commands.json
复制代码


[size=1.05em]在NodeMCU上,往队列中插入command,可以通过NodeMCU的Net Library完成
  1. conn=net.createConnection(net.TCP, 0)

  2. conn:on("connection",function(conn, payload)
  3.       cmd ="POST  /talkbacks/10060/commands.json?api_key=R0BP3QV2NRPRVEJQ&command_string=3PGT8C4EBT5SRY4K"
  4.         .. " HTTP/1.1\r\n"
  5.         .. "Host: api.thingspeak.com\r\n"
  6.         .. "\r\n";
  7.             conn:send(cmd);
  8.             end)   

  9. conn:on("receive", function(conn, payload)
  10.     print("received");
  11.     conn:close()
  12.     end)
  13. conn:connect(80,'api.thingspeak.com')
复制代码
[size=1.05em]最后,先查询Talkback消息命令队列,然后决定哪一个channel中发送数据的NodeMCU Lua程序参见这篇的最后一段: A practical Example: https://lifeinplaintextblog.wordpress.com/queue-commands-to-nodemcu-via-thingspeak/




Ph.D, 软件工程师.  Email: oopmatlab@gmail.com
《MATLAB面向对象编程--从入门到设计模式》已经由北航出版社正式出版。
http://ilovematlab.cn/thread-313689-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /3 下一条

快速回复 返回顶部 返回列表