【arduino】nodemcu连接阿里云上传温湿度

本博客是使用nodemcu连接温湿度传感器,并上传数据到阿里云。


#include "DHT.h"   //导入别人封装好的DHT包,在arduino就可下载
#include <ESP8266WiFi.h>//wifi功能包
#include <ArduinoJson.h>//json包
#include <AliyunIoTSDK.h>//GitHub上一个封装好的阿里云数据传输包,特别好用
AliyunIoTSDK iot;
static WiFiClient espClient;

//阿里云设备三元组,能够唯一确定设备
#define PRODUCT_KEY "xxxxxxxxxxx"
#define DEVICE_NAME "xxxxxxxxxxxx"
#define DEVICE_SECRET "xxxxxxxxxxxxxxxxxxxxxxxx"
//地区
#define REGION_ID "cn-shanghai"
//wifi信息
#define WIFI_SSID "xxxxx"
#define WIFI_PASSWD "xxxxxxxxxxx"

//定义接入的引脚为Gpio5
#define DHTPIN 5
//定义传感器类型为DHT11,因为DHT.h中封装了多种温湿度传感器的功能
#define DHTTYPE DHT11
//定义对象
DHT dht(DHTPIN, DHTTYPE);

//初始化wifi信息
void wifiInit(const char *ssid, const char *passphrase)
{
    WiFi.mode(WIFI_STA);
    WiFi.begin(ssid, passphrase);
    WiFi.setAutoConnect (true);
    WiFi.setAutoReconnect (true);
    while (WiFi.status() != WL_CONNECTED)
    {
        delay(1000);
        Serial.println("WiFi not Connect");
    }
    Serial.println("Connected to AP");
}


void setup()
{
    Serial.begin(115200);
    dht.begin(); //DHT开始工作
    //连接网络
    wifiInit(WIFI_SSID, WIFI_PASSWD);
	
	//连接阿里云
    AliyunIoTSDK::begin(espClient, PRODUCT_KEY, DEVICE_NAME, DEVICE_SECRET, REGION_ID);

    // 绑定属性回调,即确定从阿里云向设备发送信息后触发的方法
    AliyunIoTSDK::bindData("temp", powerCallback);
}

unsigned long lastMsMain = 0;
//StaticJsonBuffer<200> jsonBuffer;
//JsonObject& object = jsonBuffer.createObject();
DynamicJsonDocument doc(1024);
void loop()
{
    AliyunIoTSDK::loop();
    if (millis() - lastMsMain >= 3000)
    {
        lastMsMain = millis();
        doc["humi"] = dht.readHumidity();//读湿度
        doc["temp"] = dht.readTemperature();//读温度,默认为摄氏度
        String output;
        //这里需要将数据json序列化,因为send方法的参数是const char*类型。
        //具体可参考文章末尾<AliyunIoTSDK.h>源码链接
        serializeJson(doc, output);
        const char *str = output.c_str(); 
        //将数据发送至阿里云,使用的topic类列表中的物模型通信topic中的
        //  /sys/a1pjDXR6L0q/${deviceName}/thing/event/property/post
        // 这个是阿里云自带的topic。
        AliyunIoTSDK::send(str); 
        
    }
    
}

//回调函数
void powerCallback(JsonVariant p)
{
    int PowerSwitch = p["PowerSwitch"];
    if (PowerSwitch == 1)
    {
        Serial.println("11111111111111111111");
    }
    else
    {
        Serial.println("000000000000000000");
    }
}

源码链接:
<AliyunIoTSDK.h>

不懂得地方可以留言或私信。

  • 2
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值