347945801 发表于 2020-10-20 18:11:34

将数据上传到OneNET云平台

在了解了怎么用TinkerNode下发指令后,我们来学习如何上传数据到云平台
所需硬件TinkerNode物联网开发板CCS811空气质量传感器所需软件Arduino IDETinkerNode开发板驱动,具体安装方法参考TinkerNode Wiki
1、创建产品协议选择MQTT(旧版),然后点击右上角的 添加产品,在弹出页面中,按照提示填写产品的基本信息,进行产品创建。请您按照提示尽可能完整、全面地填写相应内容,这样更方便您后期对产品进行管理点击 确定,完成产品创建。
2、添加设备接下来点击我们新建的产品,进入产品详情点击左侧 设备列表,进入设备列表,点击右侧 添加设备我们选用的空气质量传感器是DFRobot出品的最新款CCS811空气质量传感器,它能准确的测量二氧化碳浓度和TVOC(Total Volatile Organic Compounds,总挥发性有机物),而且具有较短的加热时间,使用比较方便。在使用这个传感器之前,我们也需要阅读它的Wiki,并下载它的库到Arduino中
3、添加数据流点击左侧的数据流模板,再点击右侧的添加数据流模板分别添加两个数据流模板,名字分别为CO2和TVOC,单位分别为ppm和ppb4、编写代码1、修改参数在示例>DFRobot_NBIOT>BC20_MQTT>OneNET>Publish_Topic路径运行demo将代码中的参数修改为产品概况中的参数。WIFI_SSID和WIFI_PASSWORD分别是室内的wifi名和密码其中ProductID是产品概况中的产品ID,ApiKey是Master-APIkeyDeviceId是设备列表中的设备ID,pubTopic改为$dp,这是OneNET官方Topic。2、添加传感器代码接着,我们将CCS811读取数据的代码加进这个程序中#include "DFRobot_CCS811.h"这段代码加在开头DFRobot_CCS811 sensor;这段代码加在图中的位置while(sensor.begin() != 0){
      Serial.println("failed to init chip, please check if the chip connection is fine");
      delay(1000);
}
sensor.setMeasCycle(sensor.eCycle_250ms);这段代码加在void setup()中   while(sensor.checkDataReady() != true){delay(500);}Serial.print("CO2: ");
Serial.print(sensor.getCO2PPM());
Serial.print("ppm, TVOC: ");
Serial.print(sensor.getTVOCPPB());
Serial.println("ppb");这段代码加在void loop()中3、包装数据为了将代码上传到云端,我们需要对上传的数据进行一些处理我们上传的数据是一段Jason字符串,需要按照一定的格式上传,并且还有OneNET自身的协议的限制,因此我们需要将数据做一定的“包装”。String str = "";
String str2 = "";
str2 += "{\"CO2\":";
str2 += sensor.getCO2PPM();
str2 += ",\"TVOC\":";
str2 += sensor.getTVOCPPB();
str2 += "}";
str += (char)0x03;
str += (char)(str2.length()>>8);
str += (char)str2.length();
str += str2;将这段代码加入到上一段代码的后面
4、上传数据client.publish(pubTopic,(uint8_t *) str.c_str(),str.length());最后将上传的代码改为上方的代码上传代码到TinkerNode中,连接成功后设备显示为上线状态
5、应用开发和上一篇文章中的LED一样,在应用管理中选择添加应用,命名为空气质量监测点击进入应用详情,再点击编辑应用为应用添加两个折线图,分别命名为CO2和TVOC为两个折线图关联设备和数据流点击右侧的样式,还可以修改图表的颜色,参数等信息然后,我们可以点击预览查看数据最后点击保存>发布即可完成应用
这次的教程主要难点在于上传数据的封装,OneNET只能识别固定格式的上传数据,如果大家还想深入学习上传数据可以到OneNET的开发文档中查阅资料
感谢大家的阅读
页: [1]
查看完整版本: 将数据上传到OneNET云平台