基于阿里云物联网平台,用20元体验物联网开发( 自制 Arduino 环境监测仪)

基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


   硬件准备   


今天我们在只有20元预算前提下,带领大家完成一次IoT物联网开发之旅!


感谢万能的淘宝,让我们能采购到esp8266开发板,dht11温湿度传感器:
基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


  架构方案  


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


基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


  创建产品和注册设备  


我们登录阿里云IoT物联网平台控制台,创建产品温湿度计。
基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


在温湿度计产品详情的Topic类列表可以看到系统默认创建的Topic,这就是我们用来上报温湿度数据的Topic。
基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


接下来,我基于温湿度计产品注册一个设备hz9527,并获取到设备身份三元组。基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)
  配置数据流转 规则引擎  


我们在表格存储控制台,预先创建数据库实例iotMsg和iot_thermometer_data表,如下图:
基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


然后,我们回到IoT物联网平台控制台,配置数据流转规则,把设备上报数据存储到已有的表格存储数据库实例iotMsg中的iot_thermometer_data表中,规则引擎配置如下:
基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


完整的数据处理SQL:

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


数据转发配置如下:

基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


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

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


  硬件 开发  


Arduino开发依赖C库,如下:
基于阿里云物联网平台,用20元体验物联网开发(  自制 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 开发板:
基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


  联机运行  


烧录完成后,程序启动,我们就可以在IoT控制台的日志服务中查看到上报的数据,如下图:
基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)
基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)




基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)
基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)
基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


  物模型开发  


物模型指将物理空间中的实体数字化,并在云端构建该实体的数据模型。物模型描述产品是什么、能做什么、可以对外提供哪些服务。
基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


我们在物联网平台控制台,产品详情页面的功能定义,添加温度和湿度两个属性,如下图:
基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


物模型属性上报的通信Topic,如下图:
基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


物模型通信Topic和Payload如下:

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

我们修改 Arduino 查询中Topic和Payload后,重新烧录,设备上报数据后,在控制台可以查看日志,如下图:
基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)设备详情基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)物模型数据基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)运行状态基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)
基于阿里云物联网平台,用20元体验物联网开发(  自制 Arduino 环境监测仪)


【往期回顾】
1、39张IoT传感器工作原理GIF图汇总
2、IoT 设备发送 MQTT 请求的曲折经历
3、智能手持测温枪开发实践
4、JMeter 压测 MQTT 服务性能实战
5、IoT物联网平台日志服务详解

上一篇:好程序员Python教程系列-第6讲:循环结构


下一篇:Java Date Time 教程-时间测量