多点温控[stm32+esp8266]+[Onenet]+[Pyqt5]+[flutter+dart] 实战开发(日更)

编者言

2020/04/20,在得知将要开学,而学校工程教育课程项目在这个寒假零零散散做了一部分,但是实际上Wifi那里一直都没有搞很懂,而且,自己的103板子自玄学让我很苦恼,中间的时间就去做其他几个项目去了,现在,这几天要磕磕试试,把之前学习的这几个模块重新码一下。同时,也是第一次像做笔记一样把这些部分给磕出来。

整体框架

写到第二天发现,往后写还是需要先建立一个框架的,来总述这部分是来做什么的,以及每个区域之间的接口。

一览

用户指令
反馈
数据分析/用户验证
数据存储
待下发命令
数据收集
本节点数据
下节点数据/平台命令
上传
心跳检测
待下发命令
数据收集
数据分析/用户验证
数据存储
用户指令
反馈
用户
前端
Mysql
Onenet平台
MCU
Esp8266
app
sql

Stm32+Esp8266+Onenet

本节点数据
下节点数据/平台命令
上传
心跳检测
MCU
Esp8266
Onenet平台

Onenet+Pyqt5+Mysql(⭐前端其实都一样)

用户指令
反馈
待下发命令
数据收集
数据存储
数据分析/用户验证
用户
前端
Onenet平台
Mysql

Onenet+Flutter(⭐前端其实都一样)

用户指令
反馈
待下发命令
数据收集
数据存储
数据分析/用户验证
用户
app
Onenet平台
sql

第一天夜

Onenet平台开发

  • 对于Onenet平台的开发,其实也是一个比较懒的方式吧。首先是因为自己写的Api接口真的可能出Bug,而且在初期用的时候真的走了很多的弯路。
    一开始选的机智云平台,那个平台说实话,更像是傻瓜WiFi,感觉那样做真的不太像一个项目。因为我主要还是为了用Wifi模块,所以机智云那里其实是刷机智云固件的,而且我也真的中途就刷坏了一个Esp8266。哈哈哈,但是真好用。电灯大概花了1个多小时就调试好了,但是我感觉开放程度不高。
    如果你想试试,下面是机智云的连接,具体操作我这里不介绍,请您移步机智云。
  • 然后回到这部分的一个主题是关于Onenet平台的开发,Onenet是移动的,用起来也真的很移动,(手动滑稽)
    • 开发文档里找到多协议接入,我这里选的是MQTT协议,(其他协议真的也行,这些底层协议都是基于TCP和UDP在我这个小菜鸡面前根本不去搞它具体的通信协议,会用就完事了)
    • 在这里插入图片描述
  • 当然Onenet也是有可视化界面的,在开发者中心,不过我觉得既然学,我就直接学的是全用Post和Get请求做,而那个开发者中心我就只用来看数据对不对。
    • 下面也不多流水话了,直接开始项目一些常用指令的学习和测试
    • 具体结合开发者文档和 Postman 进行的。

具体流程

添加产品

  1. 首先我这里是先建立一个产品:
    在这里插入图片描述
  2. 然后万里长征已经走完了第一步(在这里我没有选择添加设备,因为我打算用Postman在这里插入图片描述
    当然我们需要知道一些参数
    然后让我们试着添加第一个设备

新增设备

在这里插入图片描述
Post方式,参数很多都是选填的
Postman真的很好用.jpg
在这里插入图片描述

Postman

里面鉴权信息可以用户自定义的
在header添加api-key在这里插入图片描述
结果:
在这里插入图片描述
这样就添加好第一个项目。这个产品id很重要,下面几乎每个请求都要用到这个id.还有api-key.

第二天

接着上面的继续。

注册设备

在这里插入图片描述

  1. 这写文档其实用着用着很快就会玩了。(注册码在开发者中心的产品下面还是很好找的)

Postman

在这里插入图片描述
返回0成功
在这里插入图片描述
1. 当然可能有疑问,注册和添加不都是弄了一个新设备吗。是的,不过有一点不一样的是,注册的设备有自己的Api-Key,这样就可以不用Master-Key。一个设备一个Api_key虽然麻烦,但是安全系数高,当然之前添加的设备也可以在设备详情里面添加Api-Key.
图示法表示是:

关联
关联
关联
关联
关联
关联
关联
关联
关联
Master-Key
设备一
设备二
设备三
Api-key1
Api-key2
Api-key3

更新设备

除了你想改一些基本信息,用处不大。建议还是平台操作。

查询设备详情

在这里插入图片描述
Get方法,比较简单,也是常用到的,在前端实现显示的时候都需要套用。

扫描二维码关注公众号,回复: 11034878 查看本文章

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的说明就到这里。之后一些订阅如果我用的到的话,我再加。不急。

发布了2 篇原创文章 · 获赞 0 · 访问量 32

猜你喜欢

转载自blog.csdn.net/nja12/article/details/105648774
今日推荐