SIoT
一个为教育定制的跨平台的MQTT服务器程序,S指科学(Science)、简单(simple)的意思。SIoT支持Win10、Win7、Mac、Linux等操作系统,一键启动,无需注册即可使用。SIoT针对学校场景的开源免费的MQTT服务器软件,可一键创建本地物联网服务器,摆脱联网困扰。SIoT重点关注物联网数据的收集和导出,是采集科学数据的最好选择之一。
那什么是物联网?什么又是MQTT呢?
物联网(Internet of Things,缩写IoT)是互联网的一个延伸,互联网的终端是计算机(PC、服务器),而物联网的终端是硬件设备,无论是家电、工业设备、汽车、监测仪器,所有这些终端都可以互联,可以总结为万物互联。
MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。
SIoT为“虚谷物联”项目的核心软件,是为了帮助中小学生理解物联网原理,并且能够基于物联网技术开发各种创意应用。
本帖最后由 eagler8 于 2020-6-5 11:21 编辑1、SIoT采用GO语言编写
具有如下特点:
(1)跨平台。支持Win10、Win7、Mac、Linux等操作系统。只要启动这一程序,普通计算机(包括拿铁熊猫、虚谷号和树莓派等微型计算机)就可以成为标准的MQTT服务器。
(2)一键运行。纯绿色软件,不需要安装,下载后解压就可以使用,对中小学的物联网技术教学尤其适合。
(3)使用简单。软件运行后,不需要任何设置就可以使用。利用特定的“Topic”的名称(“项目名称/设备名称”),就能自动在数据库中添加项目和设备的名称,并将消息数据存入数据库。
(4)支持数据导出。所有的物联网消息数据都可以在线导出,系统采用SQLite数据库,同时支持Mysql数据库。
(5)支持标准的MQTT协议。QoS级别为0。
(6)支持WebAPI。系统系统了完善的WebAPI,方便各种软件以HTTP的方式调用,支持App inventor、Scratch、VB等默认不支持MQTT的中小学生常用编程软件调用。
(7)支持插件开发。
(8)SIoT的资源 GitHub:https://github.com/vvlink/SIoT/ 提供文档、案例、课程。
SIoT软件开发团队
核心人员:苏宇、谢作如、夏青
技术支持:张路、叶琛、李冬冬
系统测试:李亮、林淼焱、张喻
注:SIoT软件的开发得到温州市科技局2019年科技创新项目的资助,为《物联网与科学探究创意实验课程开发》项目的成果之一,软件采用MIT协议开源。
2、SIoT使用手册
简介
介绍物联网、MQTT和SIoT软件。
下载和安装
介绍SIoT软件的下载、安装、运行以及软件操作界面。
客户端连接范例
介绍各种客户端和SIoT软件的连接。SIoT为标准的MQTT服务器,支持绝大多数的客户端程序连接。
典型应用案例
介绍各种利用物联网技术实现的典型应用案例,重点关注如何利用物联网技术进行科学探究。
高级操作技巧
介绍SIoT的一些高级操作,如安全设置、WebAPI和数据导出等。
《SIoT使用手册》在线版
https://siot.readthedocs.io/zh_CN/latest/index.html
SIoT文档开发团队
负责人:谢作如
参与人员:
谢作如(温州中学)
林淼焱(温州大学)
郑祥(温州四中)
郝晴(天津师大)
张喻(温州大学)
邱奕盛(温州中学)
许靖宇(天津师大)
宋达(天津师大)
毛雁(天津师大)
夏青(上海蘑菇云)
陆雅楠(上海师范大学)
……
目录清单
MicroPython动手做(01)——春节后入手了一块K210芯片AI开发板
https://bbs.eeworld.com.cn/thread-1115786-1-1.html
MicroPython动手做(02)——尝试搭建K210开发板的IDE环境
https://bbs.eeworld.com.cn/thread-1115831-1-1.html
MicroPython动手做(03)——零基础学MaixPy之开机运行
https://bbs.eeworld.com.cn/thread-1116184-1-1.html
MicroPython动手做(04)——零基础学MaixPy之基本示例
https://bbs.eeworld.com.cn/thread-1116438-1-1.html
MicroPython动手做(05)——零基础学MaixPy之LCD液晶屏
https://bbs.eeworld.com.cn/thread-1116577-1-1.html
MicroPython动手做(06)——零基础学MaixPy之单目摄像头
https://bbs.eeworld.com.cn/thread-1116591-1-1.html
MicroPython动手做(07)——零基础学MaixPy之机器视觉
https://bbs.eeworld.com.cn/thread-1116617-1-1.html
MicroPython动手做(08)——零基础学MaixPy之识别颜色
https://bbs.eeworld.com.cn/thread-1116662-1-1.html
MicroPython动手做(09)——零基础学MaixPy之人脸识别
https://bbs.eeworld.com.cn/thread-1116720-1-1.html
MicroPython动手做(10)——零基础学MaixPy之神经网络KPU
https://bbs.eeworld.com.cn/thread-1116925-1-1.html
MicroPython动手做(11)——搭建掌控板IDE环境
https://bbs.eeworld.com.cn/thread-1117964-1-1.html
MicroPython动手做(12)——掌控板之Hello World
https://bbs.eeworld.com.cn/thread-1118180-1-1.html
MicroPython动手做(13)——掌控板之RGB三色灯
https://bbs.eeworld.com.cn/thread-1118275-1-1.html
MicroPython动手做(14)——掌控板之OLED屏幕
https://bbs.eeworld.com.cn/thread-1118389-1-1.html
MicroPython动手做(15)——掌控板之AB按键
https://bbs.eeworld.com.cn/thread-1118496-1-1.html
MicroPython动手做(16)——掌控板之图片图像显示
https://bbs.eeworld.com.cn/thread-1118945-1-1.html
MicroPython动手做(17)——掌控板之触摸引脚
https://bbs.eeworld.com.cn/thread-1119462-1-1.html
MicroPython动手做(18)——掌控板之声光传感器
https://bbs.eeworld.com.cn/thread-1119583-1-1.html
MicroPython动手做(19)——掌控板之蜂鸣器与音乐
https://bbs.eeworld.com.cn/thread-1119668-1-1.html
MicroPython动手做(20)——掌控板之三轴加速度
https://bbs.eeworld.com.cn/thread-1119998-1-1.html
MicroPython动手做(21)——掌控板之磁场传感器
https://bbs.eeworld.com.cn/thread-1120188-1-1.html
MicroPython动手做(22)——掌控板之无线广播
https://bbs.eeworld.com.cn/thread-1120835-1-1.html
MicroPython动手做(23)——掌控板之WiFi与蓝牙
https://bbs.eeworld.com.cn/thread-1120934-1-1.html
MicroPython动手做(24)——掌控板之拓展掌控宝
https://bbs.eeworld.com.cn/thread-1121208-1-1.html
MicroPython动手做(25)——语音合成与语音识别
https://bbs.eeworld.com.cn/thread-1123752-1-1.html
MicroPython动手做(26)——物联网之OneNET
https://bbs.eeworld.com.cn/thread-1125172-1-1.html
MicroPython动手做(27)——物联网之微信小程序
https://bbs.eeworld.com.cn/thread-1125520-1-1.html
MicroPython动手做(28)——物联网之Yeelight
https://bbs.eeworld.com.cn/thread-1125939-1-1.html
MicroPython动手做(29)——物联网之SIoT
https://bbs.eeworld.com.cn/thread-1126090-1-1.html
6、尝试在SIoT平台输入消息,控制点亮或熄灭板载LED灯
#MicroPython动手做(29)——物联网之SIoT
#尝试在SIoT平台输入消息,控制点亮或熄灭板载LED灯
from umqtt.simple import MQTTClient
from machine import Timer
from mpython import *
import ubinascii
import network
import music
_mqtt_topic_list = []
def timer14_tick(_):
global mqtt
mqtt.ping()
def mqtt_callback(topic, msg):
try:
topic = topic.decode('utf-8', 'ignore')
_msg = msg.decode('utf-8', 'ignore')
eval('mqtt_topic_' + bytes.decode(ubinascii.hexlify(topic)) + '("' + _msg + '")')
except:
print((topic, msg))
brightness=9
# 事件回调函数
def mqtt_topic_6561676c6572382f7a6b6231(_msg):
global g_my_variable
if (_msg == on):
music.pitch(196, 50)
rgb.fill((255*brightness//9, 255*brightness//9, 153*brightness//9))
rgb.write()
if (_msg == off):
music.pitch(784, 50)
rgb.fill( (0, 0, 0) )
rgb.write()
my_wifi = wifi()
tim14 = Timer(14)
my_wifi.connectWiFi("zh","zy1567")
mqtt = MQTTClient("", "192.168.31.248", 1883, "siot", "dfrobot")
try:
mqtt.connect()
print('Connected')
except:
print('Disconnected')
mqtt.set_callback(mqtt_callback)
tim14.init(period=20000, mode=Timer.PERIODIC, callback=timer14_tick)
mqtt.subscribe("eagler8/zkb1")
rgb[1] = (0*brightness//9, 102*brightness//9, 0*brightness//9)
rgb.write()
music.pitch(392, 50)
mqtt.publish("eagler8/zkb1","on")
运行后出错,信息如下:
reader: read tcp 192.168.31.248:1883->192.168.31.221:53734: wsarecv: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.
读取器:读取tcp 192.168.31.24:1883->192.168.31.221:53734:wsarecv:连接尝试失败,因为一段时间后被连接方未正确响应,或者由于连接的主机未能响应而建立连接失败。
7、发布“hello”至主题“eagler8/zkb1”
#MicroPython动手做(29)——物联网之SIoT
#发布“hello”至主题“eagler8/zkb1”
# MindPlus
# mpython
from umqtt.simple import MQTTClient
from mpython import *
import network
import music
brightness=9
my_wifi = wifi()
my_wifi.connectWiFi("zh","zy1567")
while not (my_wifi.sta.isconnected()):
pass
oled.invert(0)
oled.DispChar(" Wifi连接成功", 0, (2-1)*16, 1)
mqtt = MQTTClient("", "192.168.31.248", 1883, "siot", "dfrobot")
try:
mqtt.connect()
print('Connected')
except:
print('Disconnected')
rgb[1] = (0*brightness//9, 102*brightness//9, 0*brightness//9)
rgb.write()
music.pitch(392, 50)
mqtt.publish("eagler8/zkb1","hello")
oled.invert(0)
oled.DispChar(" SIoT连接成功", 0, (2-1)*16, 1)
oled.show()
本帖最后由 eagler8 于 2020-6-10 18:26 编辑
8、读取环境光强度发送至SIoT网页端
#MicroPython动手做(29)——物联网之SIoT
#读取环境光强度发送至SIoT网页端
from umqtt.simple import MQTTClient
from mpython import *
import network
import music
import time
brightness=9
# 事件回调函数
def on_button_a_down(_):
global g_my_variable
time.sleep_ms(10)
if button_a.value() == 1: return
oled.DispChar(" 采集光线值", 0, (3-1)*16, 1)
oled.show()
while True:
mqtt.publish("eagler8/zkb1",(str(light.read())))
time.sleep(2)
my_wifi = wifi()
button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)
my_wifi.connectWiFi("zh","zy1567")
while not (my_wifi.sta.isconnected()):
pass
mqtt = MQTTClient("", "192.168.31.248", 1883, "siot", "dfrobot")
try:
mqtt.connect()
print('Connected')
except:
print('Disconnected')
rgb[1] = (0*brightness//9, 102*brightness//9, 0*brightness//9)
rgb.write()
music.pitch(392, 50)
mqtt.publish("eagler8/zkb1","hello")
oled.invert(0)
oled.DispChar(" SIoT连接成功", 0, (2-1)*16, 1)
oled.show()