esp8266+dht11+arduino ide+阿里云-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 3610|回复: 5

[未解决] esp8266+dht11+arduino ide+阿里云

[复制链接]
发表于 2020-3-29 00:06 来自手机 | 显示全部楼层 |阅读模式
怎么用esp8266的板子和arduino ide编译环境来把温湿度上传到阿里云 求大佬们指点臭弟弟
发表于 2020-4-3 19:38 | 显示全部楼层
阿里云太麻烦了,大多数人不会去选择,为何不去试试blinker或者贝壳物联
发表于 2020-7-13 19:48 | 显示全部楼层
本帖最后由 Chengo_97 于 2020-7-13 19:50 编辑

#include <ESP8266WiFi.h>
#include <PubSubClient.h>
#include <ArduinoJson.h>

#include <DHT.h>//依赖 DHT sensor lib


/* 连接您的WIFI SSID和密码 */
#define WIFI_SSID         "dd-wrt"
#define WIFI_PASSWD       "1234012340"

/* 设备的三元组信息*/
#define PRODUCT_KEY       "xxxxxx"
#define DEVICE_NAME       "xxxx"
#define DEVICE_SECRET     "zxxxx"
#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         "xxxxxxxxx"
#define MQTT_PASSWD       "xxxxxxxxxxxxx"

#define ALINK_BODY_FORMAT         "{\"id\":\"1247126\",\"version\":\"1.0\",\"method\":\"/sys/" PRODUCT_KEY "/" DEVICE_NAME "/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);
DHT dht( 2, DHT11); //定义DHT的引脚号

void callback(char *topic, byte *payload, unsigned int length)
{
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  payload[length] = '\0';
  Serial.println((char *)payload);

}

void wifiInit()
{
  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASSWD);   //连接WiFi
  while (WiFi.status() != WL_CONNECTED)
  {
    delay(1000);
    Serial.println("WiFi not Connect");
  }
  Serial.println("Connected to AP");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  Serial.print("espClient [");
  client.setServer(MQTT_SERVER, MQTT_PORT);   /* 连接WiFi之后,连接MQTT服务器 */
  client.setCallback(callback);
}

void mqttCheckConnect()
{
  while (!client.connected())
  {
    Serial.println("Connecting to MQTT Server ...");
    if (client.connect(CLIENT_ID, MQTT_USRNAME, MQTT_PASSWD))

    {

      Serial.println("MQTT Connected!");

    }
    else
    {
      Serial.print("MQTT Connect err:");
      Serial.println(client.state());
      delay(5000);
    }
  }
}

void mqttIntervalPost()
{
  char param[32];
  char jsonBuf[128];
  sprintf(param, "{\"Temp\":%0.1f}", T);
  sprintf(jsonBuf, ALINK_BODY_FORMAT, param);
  Serial.println(jsonBuf);
  boolean d = client.publish(ALINK_TOPIC_PROP_POST, jsonBuf);
  if (d) {
    Serial.println("publish Temperature success");
  } else {
    Serial.println("publish Temperature fail");
  }
  sprintf(param, "{\"Humi\":%0.1f}", RH);
  sprintf(jsonBuf, ALINK_BODY_FORMAT, param);
  Serial.println(jsonBuf);
  d = client.publish(ALINK_TOPIC_PROP_POST, jsonBuf);
  if (d) {
    Serial.println("publish Humidity success");
  } else {
    Serial.println("publish Humidity fail");
  }
}

void setup()
{
  /* initialize serial for debugging */
  Serial.begin(115200);
  Serial.println("Demo Start");
  wifiInit();
  unsigned char i = 0;
  dht.begin();
}

void loop()
{
  delay(8000);                  //延时1000毫秒
  RH = dht.readHumidity();   //读取湿度数据
  T = dht.readTemperature();//读取温度数据

  Serial.print("Humidity:");  //向串口打印 Humidity:
  Serial.print(RH);           //向串口打印湿度数据
  Serial.print("%");
  Serial.print("  Temperature:");
  Serial.print(T);            //向串口打印温度数据
  Serial.println("C");

  mqttCheckConnect();
  mqttIntervalPost();

  client.loop();
}
发表于 2020-7-15 01:26 | 显示全部楼层
新手刷经验,请忽略
发表于 2020-7-27 13:54 | 显示全部楼层
贝壳物联 Blinker Onenet这几个是比较推荐的,其余的emmm。。。。
发表于 2020-12-19 21:41 | 显示全部楼层
巴法云也简单
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 17:41 , Processed in 0.076527 second(s), 17 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表