6. SIoT¶
物联网(Internet of Things,简称IoT)是借助互联网、传统电信网等信息承载体,让所有能行使独立功能的普通物体实现互联互通的网络。常用的物联网应用层协议包括MQTT、HTTP、XMPP、CoAP等,其中MQTT协议是轻量、简单、开放和易于实现的,使用范围最为广泛。SIoT是一款标准的MQTT服务器(代理Broker)。
6.1. 什么是SIoT¶
SIoT是一款为中小学STEM教育定制的开源MQTT服务器程序,S指科学(Science)、简单(Simple)的意思。SIoT支持Win10、Win7、Mac和Linux等操作系统,一键启动,无需注册和设置即可使用。
SIoT是“虚谷计划”旗下“虚谷物联”项目的核心软件。虚谷号上内置了SIoT,可以将虚谷号看作是一个标准的MQTT服务器。
SIoT使用文档地址:https://siot.readthedocs.io/
6.2. SIoT的基本功能¶
默认情况下,虚谷号在连接Wi-Fi后就自动启动SIoT服务。请确保物联网终端(如掌控板)和虚谷号所处的局域网可以相互访问,最简单的方式是连接同一个无线路由器。
虽然已经安装了SIoT,但是并没有python的siot库,当执行的python代码中有import siot这个语句时,要确保执行过pip install siot,安装过siot库。(一台虚谷号只要执行一次即可)
可以将虚谷号上的SIoT看成是一个公用的MQTT服务器,默认的用户名和密码都是“scope”。设定标准的TopicID为“项目名/设备名”即可,如“mpythonx/001”,表示项目名称为“mpythonx”,设备名称为“001”。
** 注 :QoS的级别为0。**
打开网址:http://虚谷号ip:8080,将看到SIoT的管理页面。
输入用户名“scope”和密码“scope”,就可以看到项目列表中的设备了。注意:如果还没有给这个TopicID发送过消息,这个项目和设备不会建立。
6.3. SIoT的高级设置¶
为了方便中小学的老师们在课堂上教学和应用物联网技术,SIoT采取了一种最简单的方式,即采用了统一的用户名和密码,加自定义Topic的方式使用物联网平台。设置简单并不等于不安全,哪怕在多人使用的情况下,SIoT也有一定的机制确保数据的安全。
密码设置
修改config.json中的,可以设置用户名和密码。:
{
"User": "scope",
"Password": "scope",
"WebServerAdrr": "0.0.0.0:8080",
"MqttAdrr": "0.0.0.0:1883",
"OnlyLocalURD": false
}
Web管理端口修改
通过修改”WebServerAdrr”,可以修改Web管理的地址和端口。
“0.0.0.0:8080”,表示所有可用的IP地址。 “127.0.0.1:8080”,表示只有本机访问才能登录Web管理页面,可以确保数据安全。
权限隔离
OnlyLocalURD值默认是false,表示对项目和设备的管理不需要限制在“本地访问”。在多人使用的情况下,如果担心数据被恶意篡改或者设备被删除,可以将这个值设置为true。当OnlyLocalURD值为true,将不能看到任何项目和设备,只能通过网页给Topic发送消息。除非使用主机模式,通过127.0.0.1的地址登录Web管理页面,才能管理所有的项目。
6.4. SIoT的WebAPI¶
SIoT提供了一系列的WebAPI,供用户调用。一些不支持MQTT的编程语言,如VB、S4A等,可以通过HTTP的形式和SIoT进行互动。
1)发布消息
Http://[虚谷号IP]:8080/publish?topic=xzr/001&msg=on&iname=scope&ipwd=scope
说明:向topicid(主题)“xzr/001”发送内容为“on”的消息,其中“xzr”是项目id,“001”是设备id。
返回数据:{“code”:1,”msg”:”数据已发送”}
2)获取最新数据
Http://[虚谷号IP]:8080/lastmessage?topic=xzr/001&iname=scope&ipwd=scope
说明:获取topicid(主题)“xzr/001”的最新一条消息
返回数据:{“code”:1,”data”:[{“ID”:27,”Topic”:”xzr/001”,”Content”:”11”,”Created”:”2019-06-06 11:55:39”}],”msg”:”成功”}
更多的WebAPI请参考SIoT使用文档。