学习开源IOT项目 The Thing System

TheThingSystem是一套用于实现物联网设备互联互通的软件组件和协议集合。通过安装核心组件管家(steward),用户能够连接和控制家庭中的各种智能设备,如媒体播放器、恒温控制器、智能灯泡等。本文详细介绍如何在Raspberry Pi上安装和配置steward,以及如何通过网页界面管理和控制发现的设备。

        目前的家庭已经从房里单纯一台电脑发展为遍地网络设备 ,这些设备很多都是面向用户的设备,如平板电脑、笔记本电脑、台式电脑。然而渐渐越来越多的家庭网络开始拥有一大批专用设备,这就使得家庭网络不仅只关乎用户,还关系这些设备,是事实上的设备网络。

        这些设备所面对的一个问题就是互相之间无法交谈,它们可以通知我们,衡量我们周围的世界,以允许我们作出更好的决定,但最终还是我们人去作出决策。越来越多的设备,需要越来越多的决策。物联网IOT不像其他网络的互联,目前来看还是很多专有孤岛(垂直产业)的组合,它们直接的交互还存在障碍。The Thing System就是这样一组软件组件和协议的集合,用来改变这样的现状。其中的管家(steward)软件使用node.js编写,移植和扩展都很方便,既可以在笔记本上运行,也可以安装到Raspberry Pi这样的单板上。

        The Thing System的设计理念就是IOT需要遵循这样的规则,设备观测事件并对其他设备执行的任务作出响应。不是所有的决策都需要用户干预,而且也不需要让用户知道。IOT需要对信息敏感,不仅反应信息而且能做出预测。

                                

        管家(steward)是这套系统的核心,连接家里的所有设备,并让它们可以互联互通。无论这些设备是类似Apple TV的媒体播放器,Nest的恒温控制器,Insteon家居控制系统,还是Philips的Hue灯泡,无论它们是通过Wifi,Zigbee, Z-Wave, USB还是BLE相连。Steward都能够发现它们,将它们组合到一起,互联互通,创造奇迹。


       物联网应该减少我们生活的麻烦,如果在我们和设备时间存在更多的按钮、开关、拨号盘或其他交互界面,当我们需要设备按我们设想的那样工作时,反倒会增加更多的麻烦,使设备用起来反倒不方便。比如回到家,开灯变得更复杂,你还需要考虑墙上开关按下之前的状态,那你就没有让生活变得更简便。


The Thing System正是为了实现这样的目标。

步骤

1) 安装Steward (Raspberry Pi, the Raspberry Pi B+ 和BeagleBone Black)

首先在板子上安装node.js并运行,接着下载Steward ,当然Raspberry Pi还有另一条路就是用SD卡安装带Steward的OS镜像
 

git clone https://github.com/TheThingSystem/steward.git
cd steward/steward
npm install -l


2)  运行Steward  

进入steward/steward目录

sudo ./run.sh
Steward会通过一系列的设备发现机制来寻找设备,比如SSDP,TCP端口扫描,MAC地址前缀,BLE设备查找,USB设备查找
当然Steward也不是万能的,它一开始并不知道自己的位置信息,也就无法确定比如日出时间等事件信息,所以还需要用户的初始设置。
run.sh主要完成了几项工作,添加steward访问/dev/bpf*的权限,根据nvm初始化脚本配置node.js环境,运行index.js

3)验证steward运行ok
从本网段其他机器上用浏览器访问 
https://XXX.XXX.XXX.XXX:8888     走SSH方式,需要确认证书
如从steward安装机上用浏览器访问
http://127.0.0.1:8887
客户端是通过Websocket跟steward进行通信,steward以mDSN(zero-configuration networking)方式发布自己,跟Apple的Bonjour类似。
出现login界面

这是由steward/steward/sandbox/d3下的login.js脚本实现的
初次使用先创建用户account
steward使用基于时间的一次性密码(TOTP)进行身份验证,属于双因子认证。


如上,提示创建account成功后,用手机二维码工具扫描屏幕右上方的QR code,获得6位数字密码,输入到下方的Login code栏框

然后验证通过,该用户admin即添加到用户列表,客户ID admin/1

4)连接steward
用新账户登录,成功后就可以显示steward发现的所有设备

注意,如果是philips的hue灯泡,这一阶段你需要按下hue hub的配对按键,以便steward发现它
点击某一设备图标,比如hue 灯泡,就可以进行控制了




Steward支持很多有云服务,包括Ecobee, Flower Power, Koubachi, MQTT, Nest, Netatmo, Prowl, Tesla, Wink, Xively

5)通过steward console获取更多信息
访问https://steward.local:8888/console.html或http://127.0.0.1:8887/console.html
对应页面脚本 steward/steward/sandbox/console.html
可以发现更多的设备信息

steward支持从外部网络的访问,比如steward位于NAT/Firewall后面,这些依靠node-rendezvous包


Steward对开发者提供三块开发范围,一是开发自己的Client客户端,用websocket跟steward通信,比如steward/clients/examples/arduino/mDNS/Lightbulb_on
就是用首先mDNS发现steward服务,然后将“perform: on”发给wss://X.X.X.X:8888/manage
第二块则是开发支持Simple Thing Protocol协议的设备
第三块就是为已有的第三方设备开发驱动,集成到steward中

怎么看怎么跟三星 intel去年一起推动的那个OIC殊途同归啊,笔者当时做的plugin就相当于这里的第三块开发
至于第二块,仔细看看Simple Thing Protocol协议,消息是json格式,基于websocket,消息类型分为pair配对,authentication认证,device prototype原型定义
registration注册某一具体设备,update更新设备的属性,observe和report event包,perform task执行指令
只是The Thing System针对sensor单独搞了一个基于组播UDP包的TSRP(Thing Sensor Reporting Protocol),是单向消息,只从things到steward
消息包的类型跟OIC也类似,但配对时的pairingCode思想和认证TOTP双重认证笔者觉得考虑得比OIC到位

我们最后看看你第三块驱动
steward/steward/core
具体的驱动模块的代码 位于目录steward/steward/devices,使用sqlite3来保存数据信息,比如设备,组,event事件,task任务
core下面有几块工作,steward模块相对复杂,以后再详细说,server则是steward服务,启动http和websocket两种侦听方式,http为了保证安全性,实际调用的
是steward/steward/sandbox目录下的静态html文件。steward用mDNS广播自己,针对设备的发现,支持4类发现协议:ssdp,BLE,指定TCP端口扫描和针对TSRP的发现

Web of Things是IoT的未来趋势,steward在很多方面确实考虑地不错,虽然主要开发人员仅有Alasdair Allan和 Marshall T. Rose两位大牛,但值得好好学习,而且The Thing System还在不断改进中,已有跟Node Red等可视化iot工具整合的趋势
 
 

个人介绍:

周明春 SamsungElectronics VD IoTPlatform高级工程师,在物联网,云计算,移动通讯,网络安全和消息传递基础构架领域拥有超过9年的专业知识和经验.拥有丰富的企业消息传递基础构架开发,物联网、云、设备联接解决方案开发,以及成熟的管理软件和解决方案,如敏捷和DevOpts的开发经验。在国内首次提出SDT(softwaredefinedThings)的IOT概念,拥有3项专利(一份正在评审).

是三星、英特尔、戴尔所成立智能家居设备标准联盟开放互联联盟(OIC)的代码贡献者(https://gerrit.iotivity.org/gerrit/p/iotivity.git)

https://www.iotivity.org/documentation/iotivity-services/protocol-plug-manager

经常参与云计算,物联网等开源社区(Openstack,Vmware,ECUG失效云计算用户组)交流讨论,关注开源社区技术动态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值