查看: 753|回复: 4

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

[复制链接]

该用户从未签到

发表于 2020-3-29 00:06 来自手机 | 显示全部楼层 |阅读模式
怎么用esp8266的板子和arduino ide编译环境来把温湿度上传到阿里云 求大佬们指点臭弟弟
  • TA的每日心情
    奋斗
    2020-4-5 15:52
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2020-4-3 19:38 | 显示全部楼层
    阿里云太麻烦了,大多数人不会去选择,为何不去试试blinker或者贝壳物联
  • TA的每日心情
    开心
    2020-6-16 11:18
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 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 | 显示全部楼层
    新手刷经验,请忽略
  • TA的每日心情
    无聊
    2020-8-6 01:20
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2020-7-27 13:54 | 显示全部楼层
    贝壳物联 Blinker Onenet这几个是比较推荐的,其余的emmm。。。。
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    热门推荐

    5分钟带你快速了解新一代开发板:M5STACK
    5分钟带你快速了解新一代
    一、什么是M5Stack M5Stack是一种模块化、可堆叠扩展的开发板,每个模块
    创客火首发无人机编队套装,开启不一样的人工智能教育
    创客火首发无人机编队套装
    2017年国务院发布《新一代人工智能发展规划》,提出要广泛开展人工智能科普活动,在中
    [2019-4-20]RPG无人世界
    [2019-4-20]RPG无人世界
    剧情:主角玄影,为了逃避██的追杀迫不得已发动████在濒死状态来到█
    Arduino串口监视器出现乱码
    Arduino串口监视器出现乱
    我用Arduinio Due将GNRMC数据Serial.prinln出来,通过串口监视器,我们可以发现有时GN
    为什么单击开关按键后会调用其他控件的函数
    为什么单击开关按键后会调
    BlinkerButton Kelvinator_power("btn-pwr"); BlinkerButton Kelvinator_Light("btn-d
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   
    快速回复 返回顶部 返回列表