基于ESP8266的物联网小制作-远程控制空调开关以及温度监控

基于ESP8266的物联网小制作

=====================相关网址===================================

贝壳物联 用于将8266连上网:www.bigiot.net  https://www.bigiot.net/help.html 以及相关教程 https://www.bilibili.com/video/av24471558

开发工具 arduino 参考视频 :https://www.bilibili.com/video/av50750945

红外遥控开发参考视频:https://www.bilibili.com/video/av31659175

==============================================================

```

#include

#include

#include

DS18B20 ds(2);//==pin==

//===============红外头文件======================

    #ifndef UNIT_TEST

    #include

    #endif

    #include

    #include

    const uint16_t kIrLed = 4;  // ESP8266 GPIO pin to use. Recommended: 4 (D2).

    IRsend irsend(kIrLed);  // Set the GPIO to be used to sending the message.

    WiFiClient client;

//=============  此处必须修该============

    String DEVICEID="12170"; // 你的设备编号  ==

    String  APIKEY = "ab79460af"; // 设备密码==

//=======================================

    unsigned long lastCheckInTime = 0; //记录上次报到时间

    const unsigned long postingInterval = 5000; // 每隔5秒向服务器报到一次


    const char* ssid    = "TP-LINK_9";//无线名称

    const char* password = "lcx18921013568";//无线密码


    const char* host = "www.bigiot.net";

    const int httpPort = 8181;

//==============================红外代码======================================================================

//开机

uint16_t rawDataON[439] = {3552, 1696,  482, 388,  482, 1248,  480, 388,  480, 388,  482, 388,  480, 388,  482, 386,  480, 392,  480, 388,  480, 388,  480, 388,  480, 388,  480, 388,  480, 1250,  482, 388,  480, 392,  480, 388,  480, 388,  480, 388,  480, 388,  480, 388,  480, 1250,  482, 1250,  480, 1254,  482, 388,  480, 386,  482, 1248,  482, 388,  480, 388,  482, 386,  482, 388,  480, 392,  482, 388,  480, 388,  480, 388,  480, 388,  480, 388,  480, 388,  480, 388,  480, 392,  482, 388,  480, 388,  482, 388,  482, 386,  480, 388,  480, 388,  482, 388,  480, 392,  482, 388,  480, 386,  482, 388,  480, 388,  482, 386,  482, 388,  480, 388,  480, 392,  480, 388,  480, 1248,  482, 1250,  480, 388,  480, 388,  482, 388,  480, 388,  480, 390,  480, 9952,  3538, 1712,  480, 386,  480, 1250,  480, 388,  482, 386,  480, 388,  480, 388,  478, 390,  456, 416,  480, 388,  482, 388,  480, 388,  480, 388,  480, 388,  480, 1250,  480, 388,  482, 392,  458, 412,  480, 388,  480, 388,  482, 386,  480, 388,  480, 1248,  482, 1250,  480, 1256,  480, 388,  480, 388,  480, 1250,  480, 388,  482, 388,  480, 386,  480, 388,  482, 392,  480, 388,  480, 390,  480, 388,  482, 386,  482, 386,  482, 388,  480, 388,  482, 392,  480, 1250,  482, 388,  480, 388,  482, 386,  482, 1248,  482, 1248,  482, 388,  480, 394,  480, 388,  480, 388,  480, 1250,  480, 388,  482, 1250,  480, 1248,  482, 388,  480, 392,  482, 388,  480, 386,  482, 388,  480, 388,  480, 388,  482, 386,  482, 388,  480, 1268,  480, 1250,  482, 1250,  480, 1250,  468, 1262,  482, 388,  480, 1248,  482, 386,  482, 1254,  482, 386,  480, 388,  482, 388,  482, 386,  480, 388,  480, 388,  480, 388,  484, 388,  482, 388,  480, 388,  480, 388,  480, 388,  478, 388,  480, 388,  480, 388,  480, 394,  480, 388,  482, 1248,  480, 1250,  480, 388,  482, 388,  480, 386,  482, 386,  482, 392,  480, 388,  480, 388,  480, 388,  480, 388,  480, 388,  482, 1248,  482, 1250,  480, 394,  480, 386,  482, 388,  480, 388,  478, 388,  480, 388,  480, 388,  480, 388,  482, 392,  480, 388,  480, 388,  480, 388,  482, 388,  480, 388,  480, 386,  482, 388,  480, 392,  482, 386,  480, 388,  458, 410,  480, 388,  480, 388,  480, 388,  482, 388,  480, 1254,  482, 386,  482, 386,  480, 388,  480, 388,  480, 388,  480, 388,  480, 388,  482, 392,  482, 386,  480, 1250,  482, 1248,  480, 388,  482, 388,  480, 388,  480, 388,  480, 392,  482, 388,  480, 1250,  482, 1248,  482, 388,  480, 388,  480, 388,  482, 388,  480, 1252,  480};  // PANASONIC_AC

//关机

uint16_t rawDataOFF[439] = {3552, 1698,  480, 386,  482, 1250,  458, 410,  458, 410,  482, 386,  460, 410,  482, 386,  458, 416,  480, 388,  482, 388,  456, 412,  458, 412,  480, 386,  458, 1274,  456, 412,  458, 416,  480, 388,  480, 386,  458, 410,  458, 412,  482, 386,  480, 1250,  482, 1248,  458, 1280,  456, 410,  458, 412,  480, 1248,  458, 412,  482, 386,  466, 404,  480, 388,  456, 416,  480, 388,  482, 388,  480, 388,  478, 390,  458, 410,  482, 388,  480, 390,  480, 392,  480, 388,  482, 388,  456, 412,  458, 410,  480, 388,  480, 388,  480, 388,  480, 390,  482, 386,  482, 386,  458, 412,  480, 386,  482, 388,  480, 388,  458, 410,  482, 392,  456, 412,  480, 1250,  480, 1250,  482, 386,  482, 388,  480, 386,  482, 388,  480, 390,  478, 9952,  3552, 1696,  474, 396,  456, 1274,  456, 412,  482, 388,  480, 388,  480, 386,  458, 412,  458, 416,  458, 412,  480, 386,  458, 410,  458, 412,  456, 410,  482, 1248,  482, 388,  480, 392,  482, 386,  480, 388,  482, 388,  480, 386,  482, 388,  480, 1248,  482, 1250,  456, 1276,  458, 412,  482, 388,  482, 1248,  458, 412,  480, 388,  480, 388,  480, 386,  458, 416,  482, 388,  480, 386,  460, 408,  482, 388,  456, 412,  480, 388,  482, 388,  480, 392,  458, 412,  482, 386,  480, 386,  482, 388,  480, 1250,  480, 1248,  480, 390,  480, 392,  482, 386,  482, 388,  456, 1274,  482, 388,  482, 1248,  480, 1248,  458, 412,  482, 392,  458, 412,  480, 388,  482, 386,  480, 388,  458, 410,  482, 388,  480, 388,  456, 1292,  482, 1248,  482, 1250,  480, 1248,  458, 1272,  468, 402,  480, 1250,  466, 402,  480, 1254,  482, 386,  458, 410,  482, 388,  456, 412,  482, 386,  476, 394,  480, 388,  482, 390,  482, 386,  480, 388,  458, 412,  458, 410,  480, 390,  482, 386,  480, 388,  458, 416,  482, 388,  482, 1248,  482, 1248,  458, 412,  458, 412,  480, 386,  482, 386,  480, 394,  480, 386,  482, 386,  482, 388,  480, 388,  480, 388,  480, 1250,  458, 1272,  458, 416,  480, 388,  480, 386,  482, 388,  458, 410,  480, 388,  482, 386,  458, 410,  482, 392,  458, 412,  456, 412,  482, 386,  482, 386,  482, 388,  480, 386,  458, 412,  482, 392,  480, 388,  456, 410,  466, 402,  456, 412,  456, 412,  458, 412,  480, 388,  482, 1254,  458, 410,  480, 388,  482, 388,  480, 388,  458, 412,  480, 388,  480, 388,  480, 392,  458, 410,  458, 1272,  458, 1274,  478, 390,  456, 412,  480, 388,  458, 412,  480, 392,  458, 1272,  482, 386,  480, 1250,  458, 410,  482, 386,  456, 412,  480, 388,  456, 1276,  482};  // PANASONIC_AC

//========================================================================================================

void setup() {

  Serial.begin(115200);

  irsend.begin();


  Serial.print("Devices: ");

  Serial.println(ds.getNumberOfDevices());

  delay(1000);


  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {//等待连接WiFi

    delay(1000);

    Serial.print(".");

  }


  // Use WiFiClient class to create TCP connections

  if (!client.connected()) {//等待连接服务器

    if (!client.connect(host, httpPort)) {

    Serial.println("connection failed");

    delay(5000);

    return;

    } 

  }     

    String msg4 = "{\"M\":\"checkout\",\"ID\":\"" + DEVICEID + "\",\"K\":\"" + APIKEY + "\"}\n";

    client.print(msg4);

    Serial.println("1");


    String msg5 = "{\"M\":\"checkin\",\"ID\":\"" + DEVICEID + "\",\"K\":\"" + APIKEY + "\"}\n"; 

    client.print(msg5);

    Serial.println("2");


}

void loop() {

if(millis() - lastCheckInTime > postingInterval || lastCheckInTime==0) {

  checkIn();

}

// Read all the lines of the reply from server and print them to Serial

if (client.available()) {


  String inputString = client.readStringUntil('\n');

  inputString.trim();

  Serial.println(inputString);

  int len = inputString.length()+1;

  if(inputString.startsWith("{") && inputString.endsWith("}")){   

//====================================================================================================================================

    int i=inputString.indexOf("\"C\":");

    Serial.println(i);

    if(i>5)

    {

      String rec;

      int key;

      rec=inputString.substring(i+5,i+7);

      Serial.println(rec);


      key=rec.toInt();


      if(rec.charAt(0)=='o')

      {

        Serial.println("打开空调");

        key=1;

      }else if(rec.charAt(0)=='c')

      {

        Serial.println("关闭空调");

        key=0;

      }

      switch(key)

      {

        case 0:

          Serial.println("关机");

          irsend.sendRaw(rawDataOFF, 439, 38);  // Send a raw data capture at 38kHz.

          break;

        case 1:

          Serial.println("开机");

          irsend.sendRaw(rawDataON, 439, 38);  // Send a raw data capture at 38kHz.

          break;         

        }

      }


//========================================================================================================================/

    } 


  }             

}

void checkIn() {

  String msg3 = "{{\"M\":\"beat\"}\n}\n";

  client.print(msg3);

  String msg1 = "{\"M\":\"update\",\"ID\":\"12170\",\"V\":{\"11173\":\""+String(ds.getTempC())+"\"}}\n";

  if(ds.selectNext()){

    Serial.print("DS18B20 OK: ");

    Serial.print(ds.getTempC()); Serial.println(" *C, ");

    client.print(msg1);

    lastCheckInTime = millis();

  } 

//==========回应===


}

void sayToClient(String client_id, String content){

String msg = "{\"M\":\"say\",\"ID\":\"" + client_id + "\",\"C\":\"" + content + "\"}\n";

client.print(msg);

lastCheckInTime = millis();

}

```

你可能感兴趣的:(基于ESP8266的物联网小制作-远程控制空调开关以及温度监控)