8398| 27
|
[MP动手做] MicroPython动手做(29)——物联网之SIoT |
SIoT 一个为教育定制的跨平台的MQTT服务器程序,S指科学(Science)、简单(simple)的意思。SIoT支持Win10、Win7、Mac、Linux等操作系统,一键启动,无需注册即可使用。SIoT针对学校场景的开源免费的MQTT服务器软件,可一键创建本地物联网服务器,摆脱联网困扰。SIoT重点关注物联网数据的收集和导出,是采集科学数据的最好选择之一。 那什么是物联网?什么又是MQTT呢? 物联网(Internet of Things,缩写IoT)是互联网的一个延伸,互联网的终端是计算机(PC、服务器),而物联网的终端是硬件设备,无论是家电、工业设备、汽车、监测仪器,所有这些终端都可以互联,可以总结为万物互联。 MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。 SIoT为“虚谷物联”项目的核心软件,是为了帮助中小学生理解物联网原理,并且能够基于物联网技术开发各种创意应用。 |
10、通过主题消息“on”和“off”开关LED灯 [mw_shl_code=python,false]#MicroPython动手做(29)——物联网之SIoT #通过主题消息“on”和“off”开关LED灯 from mpython import * import network from umqtt.simple import MQTTClient import music import time from machine import Timer import ubinascii my_wifi = wifi() my_wifi.connectWiFi("zh", "zy1567") mqtt = MQTTClient("ok", "192.168.31.248", 1883, "siot", "dfrobot", keepalive=30) try: mqtt.connect() print('Connected') except: print('Disconnected') def mqtt_topic_6561676c6572382f7a6b6231(_msg): global i if str(_msg) == "on": rgb.fill((int(255), int(0), int(0))) rgb.write() time.sleep_ms(1) oled.DispChar(" 开灯", 0, 32, 1) oled.show() if str(_msg) == "off": rgb.fill( (0, 0, 0) ) rgb.write() time.sleep_ms(1) oled.DispChar(" 关灯", 0, 32, 1) oled.show() def on_button_a_down(_): global i time.sleep_ms(10) if button_a.value() == 1: return mqtt.publish("eagler8/zkb1", "on") music.play('E5:1') def on_button_b_down(_): global i time.sleep_ms(10) if button_b.value() == 1: return mqtt.publish("eagler8/zkb1", "off") music.play('D5:1') 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)) mqtt.set_callback(mqtt_callback) mqtt.subscribe("eagler8/zkb1") def timer14_tick(_): mqtt.ping() tim14 = Timer(14) tim14.init(period=20000, mode=Timer.PERIODIC, callback=timer14_tick) button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down) button_b.irq(trigger=Pin.IRQ_FALLING, handler=on_button_b_down) mqtt.publish("eagler8/zkb1", "hello") music.play('G5:1') oled.fill(0) oled.DispChar(" 连接SIoT成功", 0, 16, 1) oled.show() rgb[1] = (int(0), int(51), int(0)) rgb.write() time.sleep_ms(1) while True: mqtt.wait_msg()[/mw_shl_code] |
6、尝试在SIoT平台输入消息,控制点亮或熄灭板载LED灯 [mw_shl_code=python,false]#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")[/mw_shl_code] |
8、读取环境光强度发送至SIoT网页端 [mw_shl_code=python,false]#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()[/mw_shl_code] |
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文档开发团队 负责人:谢作如 参与人员: 谢作如(温州中学) 林淼焱(温州大学) 郑祥(温州四中) 郝晴(天津师大) 张喻(温州大学) 邱奕盛(温州中学) 许靖宇(天津师大) 宋达(天津师大) 毛雁(天津师大) 夏青(上海蘑菇云) 陆雅楠(上海师范大学) …… |
运行后出错,信息如下: 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:连接尝试失败,因为一段时间后被连接方未正确响应,或者由于连接的主机未能响应而建立连接失败。 |
本帖最后由 驴友花雕 于 2020-6-10 18:28 编辑 7、发布“hello”至主题“eagler8/zkb1” [mw_shl_code=python,false]#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()[/mw_shl_code] |
© 2013-2025 Comsenz Inc. Powered by Discuz! X3.4 Licensed