1 Star 1

dongeast / 修电脑的杂货店

 / 详情

Arduino IDE编程控制ESP01S上传温湿度传感器数据到Onenet服务器

待办的
拥有者
创建于  
2021-05-09 18:16

关注微信公众号“修电脑的杂货店”

评论 (7)

dongeast 创建了任务
展开全部操作日志
#include <PubSubClient.h>
#include <stdlib.h>
#include <ArduinoJson.h>
 
#include <ESP8266WiFi.h> 
#include <Ticker.h>
 
 
#define SENSOR_PIN 12 
 
#define WIFI_SSID "DONGEAST"
#define WIFI_PASSWD "123456789"
 

#define MQTT_SERVER "183.230.40.39"
#define MQTT_PORT 6002 
#define MQTT_USRNAME  "422718"
#define MQTT_PASSWD "6OH5tfrDTZ5BiW20KKyP3P=Nklo="
#define CLIENT_ID "712824243" 
 
 
#define ALINK_TOPIC_PROP_POST "$dp"
 
unsigned char TEM_STATE =  0;
unsigned char HUM_STATE =  0;

uint32_t x=0;
Ticker flipper;
 
WiFiClient espClient; 
 
PubSubClient client(espClient);

//温度传感器定义
#include <SimpleDHT.h>
int pinDHT11 = 2;                  //GPIO2
SimpleDHT11 dht11(pinDHT11);
 
void mqttCheckConnect() 
{
  while (!client.connected())
  {
    Serial.println("Connecting to MQTT Server ...");
 
       if (client.connect(CLIENT_ID,MQTT_USRNAME,MQTT_PASSWD))
      {
        Serial.println("MQTT Connected!");  
        Serial.println("subscribe done"); 
       }
      else 
      {
        Serial.print("MQTT Connect err:");
        Serial.println(client.state());
        delay(5000);
      }
  }
}
 
 
void flip() {
  if(!client.connected())
  {
    return;
  }

  char  json[256];
  char* jsonLedStr = "{\"datastreams\":[{\"id\":\"TemData\",\"datapoints\":[{\"value\":\"{\\\"type\\\":\\\"Tem\\\",\\\"value\\\":%d}\"}]}]}";
  sprintf(json, jsonLedStr, TEM_STATE);
 
  unsigned short outputStrLen = strlen(json);
  unsigned char t_payload[outputStrLen + 3];
  t_payload[0] =  '\x01';
  t_payload[1] =  outputStrLen >> 8;
  t_payload[2] =  outputStrLen;
  memcpy(t_payload + 3, json, outputStrLen);
  Serial.println(json);
  client.publish(ALINK_TOPIC_PROP_POST,t_payload,outputStrLen + 3);


  char  jsonone[256];
  char* jsonLedStrone = "{\"datastreams\":[{\"id\":\"HumData\",\"datapoints\":[{\"value\":\"{\\\"type\\\":\\\"Hum\\\",\\\"value\\\":%d}\"}]}]}";
  sprintf(jsonone, jsonLedStrone, HUM_STATE);
 
  unsigned short outputStrLenone = strlen(jsonone);
  unsigned char t_payloadone[outputStrLenone + 3];
  t_payloadone[0] =  '\x01';
  t_payloadone[1] =  outputStrLenone >> 8;
  t_payloadone[2] =  outputStrLenone;
  memcpy(t_payloadone + 3, jsonone, outputStrLenone);
  Serial.println(jsonone);
  client.publish(ALINK_TOPIC_PROP_POST,t_payloadone,outputStrLenone + 3);

}
 
 
 
void setup() {
  WiFi.mode(WIFI_STA);
  WiFi.begin(WIFI_SSID, WIFI_PASSWD);
  Serial.begin(115200);
  ESP.wdtEnable(WDTO_8S);
  pinMode(LED_BUILTIN, OUTPUT);

  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println(".");
  }
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());/*WiFi初始化*/
  client.setServer(MQTT_SERVER,MQTT_PORT); /*连接MQTT服务器*/
 
  flipper.attach(5, flip);
} 
 
 
void loop() {
  ESP.wdtFeed();
  
  byte temperature = 0;
  byte humidity = 0;
  int err = SimpleDHTErrSuccess;
  if ((err = dht11.read(&temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
    Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);
    return;
  }
  
  delay(1500);
  TEM_STATE = temperature;
  HUM_STATE = humidity;

  mqttCheckConnect();
  client.loop();
}

只需要将温湿度传感器的数据改为自己想上传的数据即可

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
开始日期   -   截止日期
-
置顶选项
优先级
参与者(1)
7642221 dongeast 1675076338
1
https://gitee.com/dongeast/a-computer-shop.git
git@gitee.com:dongeast/a-computer-shop.git
dongeast
a-computer-shop
修电脑的杂货店

搜索帮助