上海大学工程教育(高级)实战开发_多点温控[[Onenet]+[Esp8266]+[Stm32[F4/F1]+[Pyqt5]+[Flutter[App]]系列笔记。【一】
编者言
2020/04/20,在得知将要开学,而学校工程教育课程项目在这个寒假零零散散做了一部分,但是实际上Wifi那里一直都没有搞很懂,而且,自己的103板子自玄学让我很苦恼,中间的时间就去做其他几个项目去了,现在,这几天要磕磕试试,把之前学习的这几个模块重新码一下。同时,也是第一次像做笔记一样把这些部分给磕出来。
往期目录
Onenet部分(第一期):
https://blog.csdn.net/nja12/article/details/105648774.
Esp8266部分(第二期):
https://blog.csdn.net/nja12/article/details/105660222.
Stm32部分(第三期):
https://blog.csdn.net/nja12/article/details/105751015.
Stm32Wifi接收部分+++(第四期):
https://blog.csdn.net/nja12/article/details/105852408.
整体框架
写到第二天发现,往后写还是需要先建立一个框架的,来总述这部分是来做什么的,以及每个区域之间的接口。
一览
Stm32+Esp8266+Onenet
Onenet+Pyqt5+Mysql(⭐前端其实都一样)
Onenet+Flutter(⭐前端其实都一样)
第一天夜
Onenet平台开发
- 对于Onenet平台的开发,其实也是一个比较懒的方式吧。首先是因为自己写的Api接口真的可能出Bug,而且在初期用的时候真的走了很多的弯路。
一开始选的机智云平台,那个平台说实话,更像是傻瓜WiFi,感觉那样做真的不太像一个项目。因为我主要还是为了用Wifi模块,所以机智云那里其实是刷机智云固件的,而且我也真的中途就刷坏了一个Esp8266。哈哈哈,但是真好用。电灯大概花了1个多小时就调试好了,但是我感觉开放程度不高。
如果你想试试,下面是机智云的连接,具体操作我这里不介绍,请您移步机智云。- 机智云平台: http://www2.gizwits.com/.
- 然后回到这部分的一个主题是关于Onenet平台的开发,Onenet是移动的,用起来也真的很移动,(手动滑稽)
- 首先先附上官网地址
- Onenet: https://open.iot.10086.cn/.
- 在开发文档里找到多协议接入,我这里选的是MQTT协议,(其他协议真的也行,这些底层协议都是基于TCP和UDP在我这个小菜鸡面前根本不去搞它具体的通信协议,会用就完事了)
- 当然Onenet也是有可视化界面的,在开发者中心,不过我觉得既然学,我就直接学的是全用Post和Get请求做,而那个开发者中心我就只用来看数据对不对。
- 下面也不多流水话了,直接开始项目一些常用指令的学习和测试
- 具体结合开发者文档和 Postman 进行的。
具体流程
添加产品
- 首先我这里是先建立一个产品:
- 然后万里长征已经走完了第一步(在这里我没有选择添加设备,因为我打算用Postman)
当然我们需要知道一些参数
然后让我们试着添加第一个设备
新增设备
Post方式,参数很多都是选填的
Postman真的很好用.jpg
Postman
里面鉴权信息可以用户自定义的
在header添加api-key
结果:
这样就添加好第一个项目。这个产品id很重要,下面几乎每个请求都要用到这个id.还有api-key.
第二天
接着上面的继续。
注册设备
- 这写文档其实用着用着很快就会玩了。(注册码在开发者中心的产品下面还是很好找的)
Postman
返回0成功
1. 当然可能有疑问,注册和添加不都是弄了一个新设备吗。是的,不过有一点不一样的是,注册的设备有自己的Api-Key,这样就可以不用Master-Key。一个设备一个Api_key虽然麻烦,但是安全系数高,当然之前添加的设备也可以在设备详情里面添加Api-Key.
图示法表示是:
更新设备
除了你想改一些基本信息,用处不大。建议还是平台操作。
查询设备详情
Get方法,比较简单,也是常用到的,在前端实现显示的时候都需要套用。
Postman
批量查询设备状态
突然想起来还有这个。哈哈哈,对于多设备很好用。
新增数据流(⭐)
Post 请求,需要注明设备Id。
以设备1为例:
想想我们需要多少数据流?
大概我想了这几个
设备号 | 592808742 | |
---|---|---|
数据流 | 数据类型 | 注释 |
Led_switch | Bool | 测试用Led开关 |
Online | Bool | 远程控制上下线 |
Tec | Bool | TEC工作状态 |
Warning | Bool | ⚠状态 |
dev_num | int | 节点数量 |
Temp_s1 | Int | 主节点温度1数据(室温) |
Temp_s2 | Int | 主节点温度2数据 |
Temp_z3 | Int | 子节点温度3数据 |
Temp_z4 | Int | 子节点温度4数据 |
— | ---- | ----- |
Set_s2 | Int | 主节点温度2预设 |
Set_z3 | Int | 子节点温度3预设 |
Set_z4 | Int | 子节点温度4预设 |
— | ---- | ----- |
对于大多数关系型数据库,这些表以后还能加,而且也不是很麻烦。
以一个为例:(感觉好多咳咳咳,有的忙了)
Postman
ds_uuid:代表平台分配的数据流Id其实是内部存储用的,(咱们用不到)。
!@#¥%……&*()————+过了很久
好了,我加完了
平台上显示:
批量查询数据流信息
数据流那麽多当然批量更好,而且我们根本不可能记得数据流Id,那太麻烦了。
下面才是重点:
批量查询设备最新数据(⭐)
这才是跟我们前端交互最关键的地方
啥都没有说明是空的
用后台生成一些伪数据。
{
"errno": 0,
"data": {
"devices": [
{
"title": "device_001",
"id": "592808742",
"datastreams": [
{
"at": "2020-04-21 15:49:54",
"id": "dev_num",
"value": 1
},
{
"at": "2020-04-21 15:50:55",
"id": "Set_s2",
"value": 21
},
{
"at": "2020-04-21 15:50:24",
"id": "Temp_z3",
"value": 10
},
{
"at": "2020-04-21 15:49:34",
"id": "Warning",
"value": 1
},
{
"at": "2020-04-21 15:50:15",
"id": "Temp_s2",
"value": -1
},
{
"at": "2020-04-21 15:50:52",
"id": "Temp_z4",
"value": -1
},
{
"at": "2020-04-21 15:49:26",
"id": "Tec",
"value": 0
},
{
"at": "2020-04-21 15:48:53",
"id": "Led_switch",
"value": 0
},
{
"at": "2020-04-21 15:49:13",
"id": "Online",
"value": 0
},
{
"at": "2020-04-21 15:50:09",
"id": "Temp_s1",
"value": -4
},
{
"at": "2020-04-21 15:51:00",
"id": "Set_z3",
"value": 12
},
{
"at": "2020-04-21 15:51:05",
"id": "Set_z4",
"value": 1
}
]
}
]
},
"error": "succ"
}
关于这些Api的说明就到这里。之后一些订阅如果我用的到的话,我再加。不急。