阿里云AIoT物联网平台Arduino环境监控开发实战

物联网
后台-插件-广告管理-内容页头部广告(手机)

简介: 室内温湿度监控

阿里云AIoT物联网平台Arduino环境监控开发实战


硬件准备
今天我们在只有20元预算前提下,带领大家完成一次IoT物联网开发之旅!
感谢万能的淘宝,让我们能采购到esp8266开发板,dht11温湿度传感器:

阿里云AIoT物联网平台Arduino环境监控开发实战


架构方案
我们通过DHT11采集温度,湿度数据,通过 MQTT 协议上报道阿里云 IoT 物联网平台,并通过规则引擎转发到表格存储OTS数据库中,整体技术方案如下:

阿里云AIoT物联网平台Arduino环境监控开发实战


创建产品和注册设备
我们登录阿里云IoT物联网平台控制台,创建产品温湿度计。

阿里云AIoT物联网平台Arduino环境监控开发实战


在温湿度计产品详情的Topic类列表可以看到系统默认创建的Topic,这就是我们用来上报温湿度数据的Topic。

阿里云AIoT物联网平台Arduino环境监控开发实战


接下来,我基于温湿度计产品注册一个设备hz9527,并获取到设备身份三元组。

阿里云AIoT物联网平台Arduino环境监控开发实战


配置数据流转 规则引擎
我们在表格存储控制台,预先创建数据库实例iotMsg和iot_thermometer_data表,如下图:

阿里云AIoT物联网平台Arduino环境监控开发实战


然后,我们回到IoT物联网平台控制台,配置数据流转规则,把设备上报数据存储到已有的表格存储数据库实例iotMsg中的iot_thermometer_data表中,规则引擎配置如下:

阿里云AIoT物联网平台Arduino环境监控开发实战


完整的数据处理SQL:

SELECT *,deviceName() as deviceName,timestamp() as time,timestamp('yyyy-MM-dd HH:mm:ss') as date_time FROM "/a1k3547Gr0v/+/user/update"


数据转发配置如下:

阿里云AIoT物联网平台Arduino环境监控开发实战


设备和云端通信Topic和Payload如下:

Topic:/a1k823sJ0v/hz9527/user/updatePayload:{    "temperature":23,    "humidity":65}


硬件 开发
Arduino开发依赖C库,如下:

阿里云AIoT物联网平台Arduino环境监控开发实战
/* 连接WiFi之后,连接MQTT服务器 */client.setServer(MQTT_SERVER, MQTT_PORT);client.setCallback(callback);client.connect(CLIENT_ID, MQTT_USRNAME, MQTT_PASSWD)


设备读取传感器数据,并通过 MQTT 通道发送到云端:

void loop() {  // 从传感器获取温度,湿度数据   float temperature = dht.readTemperature();  float humidity = dht.readHumidity();  char jsonBuf[128];  sprintf(jsonBuf, BODY_FORMAT, temperature, humidity);  // 通过 MQTT 发送数据上云  if (client.connected()) {    boolean d = client.publish(PROP_POST_TOPIC, jsonBuf);  }  client.loop();  // delay  delay(DELAY_TIME);}

使用 Arduino IDE 烧录程序到 esp8266 开发板:

阿里云AIoT物联网平台Arduino环境监控开发实战


联机运行
烧录完成后,程序启动,我们就可以在IoT控制台的日志服务中查看到上报的数据,如下图:

阿里云AIoT物联网平台Arduino环境监控开发实战 阿里云AIoT物联网平台Arduino环境监控开发实战 阿里云AIoT物联网平台Arduino环境监控开发实战 阿里云AIoT物联网平台Arduino环境监控开发实战 阿里云AIoT物联网平台Arduino环境监控开发实战 阿里云AIoT物联网平台Arduino环境监控开发实战


物模型开发
物模型指将物理空间中的实体数字化,并在云端构建该实体的数据模型。物模型描述产品是什么、能做什么、可以对外提供哪些服务。

阿里云AIoT物联网平台Arduino环境监控开发实战


我们在物联网平台控制台,产品详情页面的功能定义,添加温度和湿度两个属性,如下图:

阿里云AIoT物联网平台Arduino环境监控开发实战


物模型属性上报的通信Topic,如下图:

阿里云AIoT物联网平台Arduino环境监控开发实战


物模型通信Topic和Payload如下:

Topic:/sys/a1k823sJ0v/hz9527/thing/event/property/postPayload:{    "id":1596087445906,    "params":{        "temperature":23,        "humidity":65    },    "method":"thing.event.property.post"}

我们修改 Arduino 查询中Topic和Payload后,重新烧录,设备上报数据后,在控制台可以查看日志,如下图:

阿里云AIoT物联网平台Arduino环境监控开发实战 阿里云AIoT物联网平台Arduino环境监控开发实战

设备详情

阿里云AIoT物联网平台Arduino环境监控开发实战

物模型数据

阿里云AIoT物联网平台Arduino环境监控开发实战

运行状态

阿里云AIoT物联网平台Arduino环境监控开发实战 阿里云AIoT物联网平台Arduino环境监控开发实战
后台-插件-广告管理-内容页尾部广告(手机)
标签:

评论留言

我要留言

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。