MixIO¶
MQTT是一个基于客户端-服务器的消息发布/订阅传输协议。MQTT协议是轻量、简单、开放和易于实现的,这些特点使它适用范围非常广泛。在很多情况下,包括受限的环境中,如:机器与机器(M2M)通信和物联网(IoT)。更多信息自行网搜。 Mixio中包含了众多MQTT操作指令,其中较为常用的有:wifi连接、使用Mixly Key连接至MixIO平台、使用授权码连接至MixIO平台、创建MQTT客户端并连接、订阅主题、发送消息、循环接收订阅、函数方法等等。
1. 连接WIFI¶
该指令用于连接无线网络,其中参数名称为无线网账号,密码为无线网密码,该条指令的正常执行是物联网编程的重要编程步骤之一。
- 注意wifi账号密码尽量简洁,以英文数字为主,同时避免使用需要二次验证的网络和5G网络。
2. 三种方式连接到 MixIO平台¶
推荐使用谷歌浏览器打开该网址:mixio.mixly.org
2.1使用 Mixly Key¶
每台安装Mixly软件的电脑会有独立的Mixly Key,借助Mixly Key即可无需注册账号快速登录MixIO平台。
- 这里需要注意的是,Mixly Key登录后对应的是独立的单物联网项目工程,与2.3账号密码登录相区别。
2.3使用账号密码¶
- 参数1服务器地址:mixio.mixly.org 无需修改,复制该网址至浏览器打开即可
- 参数2代理网口:1883 无需修改
- 参数3用户名:需要至上述网址用邮箱注册一个账号填到这里
- 参数4密码:此处密码非注册账号时所填写的密码,需要在以账号密码登录后至下图左侧①箭头处,点击小眼睛获取
- 参数5项目:项目名称需要根据实际情况,填入在以账号密码登录后至下图②箭头处,新建项目时自定义的名称
- 账号密码登录可创建多个不同的物联网项目工程,同时还支持项目工程的共享及导入等操作。
3. MQTT发送数据¶
该指令用于将字符串数据上传至物联网云端,主要包含两个参数,分别为主题和消息,其中主题一般推荐用英文命名,消息内容需自行转化为字符串以免出错,上传至云端后查看方式,可以在数据视图下(组件视图见后面范例),点击左上角监听主题进行切换查看上传内容。
- 该指令只能在wifi连接和mixio平台连接成功之后正常运行。
关于主题更多信息,参见:https://blog.csdn.net/weixin_43025071/article/details/82464661
4. MQTT订阅主题¶
该指令用于获取物联网云端下发的数据,主要包含两个参数,分别为主题和消息,其中主题填入物联网端发送数据所定义的名称,设置回调函数见5.,“method”需根据具体情况自定义,当所订阅的主题有数据下发时,会调用该函数执行相关功能。
5. MQTT回调函数¶
该方法函数每次被调用都会传过来三个参数,分别对应于client(客户端)、topic(主题)、msg(下发的内容,字符串格式),在变量区块可找到对应变量名图形代码块。关于函数及其参数相关概念,自行网搜了解。
6. MQTT循环接收订阅超时¶
若想让4.中订阅的主题内容可以正常调用回调函数,就需在编写的程序主循环中加入这句指令,每次执行该句指令都会询查所订阅的主题是否有数据发送过来。
- 超时1秒,会在这里耗时较长导致程序运行卡顿,通常改为0.3秒较为适宜。
7. 范例1——Mixly Key的使用¶
通过Mixly Key连接至MixIO平台,每隔1秒上传随机数至MixIO平台,通过数据视图查看。
7.2 浏览器端数据效果:¶
- 注意①点击数据视图,②在MixGo CE端代码正常运行且点阵屏显示了Mok,基本上浏览器②箭头处会显示有设备连接平台,③选择对应的主题即可看到上传的数据。
注意
上述范例中,需要注意上传的数据格式为字符串格式,同时注意加延时,否则浏览器端会出现响应卡顿现象。
8. 范例2——Mixly账号密码登录¶
根据2.3中步骤,登录mixio平台后,将账号及平台生成的密码填至MQTT创建客户端指令中相应位置,并点击Mixio平台的右上角新建一个工程项目,将名称填至项目处。
下面将通过在数据页面定义一个主题下发数据至MixGo CE端,CE端将收到的数据打印出来。
8.1 Mixly 软件端图形代码:¶
Python代码略。
当MixGo CE点阵屏上显示MOK,即表示wifi和云端均正常连接,若未正常出现MOK,自行检查wifi信息、mixio平台账号、密码及项目名等,所填信息避免出现空格。
正常情况下,云端发送数据后,本地mixly软件端即可看到打印出的数据内容。
注意
上述范例中,需要注意收到的数据格式为字符串格式,在做逻辑判断时尤其需要注意。
- 根据以上两个示例可知,物联网基础编程步骤大致为:①连接平台、②数据上传、③数据下发,关于云端组件和逻辑的使用案例见以往培训视频及PPT。
9. 使用授权码的登录方式待完善¶
10. 格式化位置信息¶
该指令可以用于组件中地图组件位置标定,例如,圆明园的坐标大致为(116.3100,40.0156),通过该指令进行定位并标记“圆明园”。因此三个参数分别对应为“116.3100、40.0156、圆明园”
10.1 组件使用范例¶
组件的使用大致分四步,先点击组件按钮、 然后点击加号、之后点击数据地图加号,注意此时会出现新的弹窗,组件名称可命名为地图定位,消息主题这里直接默认为“map”不修改,点击对号确认,最后点击右上角的三角按钮运行该工程!!!!这点很重要,否则看不到效果。
10.2新建组件后效果¶
10.3程序示例¶
10.4程序上传后,云端定位效果¶
11. 格式化字符串JSON¶
将字符串格式化为json格式,然后进行上传至云端,可通过串口直接打印该指令格式后的内容,关于json数据格式内容见网络。
- 以下指令增加了物联网编程的灵活性,学有余力可多多尝试。