基于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();
}
```