第3贴中通过调用BlueZ协议栈中的gatttool等命令通过BLE将数据从KW41Z中读了出来。但是最终需要实现程序的自动运行,并且,需要对读到的HEX数据进行解析,然后推送给手机。因此,还有2步要做,解析命令,以及找到一个合适的远程通知推送服务。
1. 解析命令,计划使用一个script来做,可以使用bash shell,也可以使用python来写。考虑到还需要在script中调用BlueZ的命令,可以使用bash来调用或者Python来直接通过os.system函数运行其他程序。而BlueZ还有用python封装好的协议栈,可以方便地使用python调用。因此决定使用Python来做。
Python需要现学现用,找到了几个网站,有Python教程,觉得还挺好的几个:
然后,对于Python这个工具有了一点认识之后,需要知道怎么使用Bluepy的API,找遍了网上,发现最有用,最详细的,还是官方文档:
整个文档没有多长,半个小时就能看完,发现里面有两段示例代码,网上能找到的示例代码也就是从这两个示例代码来的。
另外一个是设置为listen模式,接收BLE Central发送的数据。
最终,两种数据都可以读出来。我的两个Python的代码见附件。
用Python解析后的数据可以通过SSH打印出来:
2. 需要找一个云端服务提供商,以便我的Pi3B可以将报警推送到手机上。目前有两种方案:1,使用专门的推送服务,比如InstaPush,或则GAE,SAE等,2,使用微信的公众号测试接口。
看了下网上的资料,认为InstaPush更容易实现,微信公众号比较麻烦,可能需要和SAE配合使用才行,因为数据不能直接推送到Tencent的服务器上,还需要一个服务器,而且,还需要Pi3B有一个公网IP。决定用InstaPush先上。
后续有时间可以试试微信公众号的方法,有几个网页可以参考:
我在Python脚本中设置了,当温度 >30 deg C 或者湿度 >70%的时候,发送推送到手机上,最终实现的效果如下:
SSH终端:
手机:
本文来自论坛,点击查看完整帖子内容。