概述
简介
本文章使用NodeMCU(ESP8266)开发板和SHTC3温湿度传感器接入阿里云物联网(IoT)平台,并上传读取到的温湿度数据。每秒读取一次温湿度数据,每30秒上传一次30秒内的温湿度的平均值。可以自己修改一下程序使用其他温湿度传感器。本文程序使用Arduino IDE开发。
DHT11和DHT22温湿度传感器数据读取的程序:https://blog.zeruns.tech/archives/527.html
ESP8266开发环境搭建教程:https://blog.zeruns.tech/archives/526.html
SHTC3的SDA引脚接NodeMCU的D5引脚,SCL引脚接NodeMCU的D6引脚。
设置物联网平台
首先注册阿里云账号并开通物联网平台:https://www.aliyun.com/product/iot?source=5176.11533457&userCode=jdjc69nf&type=copy
然后打开物联网平台的控制台:https://iot.console.aliyun.com/product
接着按照图片提示创建产品
按照图片提示添加设备
程序源码
需先安装PubSubClient
、ArduinoJson
、SparkFun SHTC3
这三个库。
然后按照下面的教程修改PubSubClient.h
按照代码中文字提示修改参数即可。
#include <ESP8266WiFi.h>
/* 依赖 PubSubClient 2.4.0 */
#include <PubSubClient.h>
/* 依赖 ArduinoJson 5.13.4 */
#include <ArduinoJson.h>
#include <SparkFun_SHTC3.h>
/* 连接您的WIFI SSID和密码 */
#define WIFI_SSID
"路由器SSID"
#define WIFI_PASSWD
"密码"
/* 设备的三元组信息*/
#define PRODUCT_KEY
"设备PRODUCT_KEY"
#define DEVICE_NAME
"替换DEVICE_NAME"
#define DEVICE_SECRET
"替换DEVICE_SECRET"
#define REGION_ID
"cn-shanghai"
/* 线上环境域名和端口号,不需要改 */
#define MQTT_SERVER
PRODUCT_KEY ".iot-as-mqtt." REGION_ID ".aliyuncs.com"
#define MQTT_PORT
1883
#define MQTT_USRNAME
DEVICE_NAME "&" PRODUCT_KEY
#define CLIENT_ID
"ESP8266|securemode=3,timestamp=1234567890,signmethod=hmacsha1|"
// 算法工具: http://iot-face.oss-cn-shanghai.aliyuncs.com/tools.htm 进行加密生成password
// password教程 https://www.yuque.com/cloud-dev/iot-tech/mebm5g
#define MQTT_PASSWD
"参考上面password教程,算法工具生成,如果上面的教程看不懂就看文章下面"
#define ALINK_BODY_FORMAT
"{"id":"ESP8266","version":"1.0","method":"thing.event.property.post","params":%s}"
#define ALINK_TOPIC_PROP_POST
"/sys/" PRODUCT_KEY "/" DEVICE_NAME "/thing/event/property/post"
unsigned long lastMs = 0;
float RH,T,RH_sum,T_sum;
unsigned char count=0;
WiFiClient espClient;
PubSubClient
client(espClient);
SHTC3 mySHTC3;
void callback(char *topic, byte *payload, unsigned int length)
{
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
payload[length] = '