国内综合精彩aⅤ无码不卡_日本少妇做爰全过程_欧美性爱在线播放免费_午夜?V日韩一区二区_免费a级毛片无码免费播放_成在人线av无码喷水_亚洲精品网站色视频_国产婷婷精品成人_老师撩起裙子让我桶的视频_秋霞影院国产

esp01 relay代碼分享一下 smartconfig連網(wǎng) arduino版

作者:tengfei | 更新時間:2020-06-23 | 瀏覽量:1525

替換key和id后即可使用。 還有需要改進的地方, 高手路過的話給些建議。 斷電后通電自動連網(wǎng)比較慢,不能像官方的那么快。大神給點建議。

功能:

  1. smartconfig連網(wǎng)
  2. 下次自動連網(wǎng)
  3. 連wifi成功,閃一下
  4. 連貝殼物聯(lián)成功,閃兩下
  5. pay: 開
  6. stop: 關(guān)
  7. timer : 定時器。倒計時自動關(guān)閉

 

#include
#include

//=============  此處必須修該============
String DEVICEID = "xxx"; // 你的設(shè)備編號   ==
String  APIKEY = "xxxx"; // 設(shè)備密碼==
//=======================================
unsigned long lastCheckInTime = 0; //記錄上次報到時間
const unsigned long postingInterval = 40000; // 每隔40秒向服務(wù)器報到一次
unsigned long timerTime = 0; //定時器

const char* host = "m.placeboworld.cn";
const int httpPort = 8181;

int pins = 0;
unsigned char num = 0;
void smartConfig()
{
  WiFi.mode(WIFI_STA);
  Serial.println("Waitting SmartConfig!");
  WiFi.beginSmartConfig();          //開啟SmartConfig服務(wù)
  while (1)
  {
    delay(500);
    if (WiFi.smartConfigDone())       //連接成功標志
    {
      Serial.println("SmartConfig Success!");

      delay(500);
      Serial.println();
      Serial.printf("SSID:%s\t\n", WiFi.SSID().c_str());      //顯示W(wǎng)IFi名
      Serial.printf("PASSWORD:%s\t\n", WiFi.psk().c_str());   //顯示W(wǎng)IFi密碼
     
      //wifi通后 閃一下
      digitalWrite(pins, LOW);//開
      delay(500);
      digitalWrite(pins, HIGH);//先關(guān)閉
      
      Serial.printf("IP address: ");
      Serial.println(WiFi.localIP());
      break;
    }
    else {
      delay(500);
      Serial.print(".");
      num++;
      if (num >= 10)
      {
        Serial.print("\n");
        num = 0;
      }
    }
  }
}


WiFiClient client;

void setup() {

  Serial.begin(115200);

    pinMode(pins, OUTPUT);
    digitalWrite(pins, HIGH);//先關(guān)閉
    Serial.println("wifi SSID: ");
    Serial.println(WiFi.SSID());
    Serial.println("wifi PSK: ");
    Serial.println(WiFi.psk());
    WiFi.begin();

  unsigned long startTime = millis();//等20秒
  while (WiFi.status() != WL_CONNECTED && millis() - startTime < 20000)
  {
    Serial.println('.');
    delay(500);
  }
  
   if(WiFi.status() == WL_CONNECTED)  {
      Serial.println("WiFi connected");
      Serial.println("IP address: ");
      Serial.println(WiFi.localIP());

      //wifi通后 閃一下
      digitalWrite(pins, LOW);//開
      delay(500);
      digitalWrite(pins, HIGH);//關(guān)閉
    }else{
      //10秒后不閃,說明無wifi,進入配置模式
      Serial.println("WiFi not connected!");
      smartConfig();
    }

}


void loop() {

  if (!client.connected()) {
    if (!client.connect(host, httpPort)) {
      Serial.println("connection failed");
      delay(2000);
      return;
    }else{
      Serial.println("connection successd");
    }
  }

  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("}")) {
      char jsonString[len];
      inputString.toCharArray(jsonString, len);
      aJsonObject *msg = aJson.parse(jsonString);
      processMessage(msg);
      aJson.deleteItem(msg);
    }
  }
}

void processMessage(aJsonObject *msg) {
  aJsonObject* method = aJson.getObjectItem(msg, "M");
  aJsonObject* content = aJson.getObjectItem(msg, "C");
  aJsonObject* seconds = aJson.getObjectItem(msg, "sign");
  aJsonObject* client_id = aJson.getObjectItem(msg, "ID");
  if (!method) {
    return;
  }
  String M = method->valuestring;
  if (M == "checkinok") {
    //登陸成功通后閃2下
      digitalWrite(pins, LOW);//開
      delay(500);
      digitalWrite(pins, HIGH);//關(guān)閉
      delay(500);
      digitalWrite(pins, LOW);//開
      delay(500);
      digitalWrite(pins, HIGH);//關(guān)閉
  }
  if (M == "say") {
    String C = content->valuestring;
    String F_C_ID = client_id->valuestring;
    
    if (C == "timer") {//定時器 盡量不用,計時器,設(shè)備不能接收其它命令,且顯示不在線。
      String S = seconds->valuestring;
      timerTime = millis();
      digitalWrite(pins, LOW);//開
      sayToClient(F_C_ID, "timmer "+S+" sec");
      Serial.println("timmer "+S+" sec");
      S = S.toInt()*1000;
      while (millis() - timerTime < S.toInt())
      {
        Serial.write('.');
        delay(1000);
      }
      Serial.println("");
      Serial.println("timmer end!");
      digitalWrite(pins, HIGH);//關(guān)閉
      sayToClient(F_C_ID, "timmer end!");
     }else if (C == "play") {
      digitalWrite(pins, LOW);
      sayToClient(F_C_ID, "LED All on!");
     }else if (C == "stop") {
      digitalWrite(pins, HIGH);
      sayToClient(F_C_ID, "LED All off!");
    }
    else {
      int pin = C.toInt();//.toInt()
      pinMode(pin, OUTPUT);
      digitalWrite(pin, LOW);
      sayToClient(F_C_ID, "LED pin:" + C+" is LOW");
      delay(3000);
      digitalWrite(pin, HIGH);
      sayToClient(F_C_ID, "LED pin:" + C+" is HIGH");
    }
  }
}

void checkIn() {
  Serial.println("checkIn");
  String msg = "{\"M\":\"checkin\",\"ID\":\"" + DEVICEID + "\",\"K\":\"" + APIKEY + "\"}\n";
  client.print(msg);
  lastCheckInTime = millis();
}

void sayToClient(String client_id, String content) {
  Serial.println("sayToClient");
  String msg = "{\"M\":\"say\",\"ID\":\"" + client_id + "\",\"C\":\"" + content + "\"}\n";
  client.print(msg);
  lastCheckInTime = millis();
}


評論:共0條

返回頂部