<em id="ri2my"></em>
  • <em id="ri2my"></em>
    <em id="ri2my"><label id="ri2my"><nav id="ri2my"></nav></label></em>
  • <em id="ri2my"><label id="ri2my"></label></em>
    <div id="ri2my"></div>
    1. <em id="ri2my"><label id="ri2my"></label></em>
    2. <em id="ri2my"><ol id="ri2my"></ol></em>
      <em id="ri2my"></em>

      1. ESP8266 STA模式網頁顯示不在線

        作者:Spark | 更新時間:2017-12-23 | 瀏覽量:1565

        設備、接口ID、APIKEY數值無誤,且網絡已連接。用的是8181端口,現在懷疑是心跳包出的問題。但作為一個菜鳥小白,實在不知從何下手,求大神解救......


        評論:共3條

        Spark 評論于:2017-12-24 14:37:39
        代碼:
        #include <aJSON.h>
        #include <Wire.h>
        #include <LiquidCrystal.h>
        //============= 此處必須修改============
        String DEVICEID="4016"; // 你的設備ID=======
        String APIKEY="76b604c5d"; // 設備密碼==
        String INPUTID="3616";//接口ID==============
        //=======================================
        LiquidCrystal lcd(12,11,5,4,3,2);
        const int LM35 = 0;// LM35 Vout 接 A0
        unsigned long lastCheckInTime = 0; //記錄上次報到時間
        unsigned long lastUpdateTime = 0;//記錄上次上傳數據時間
        const unsigned long postingInterval = 40000; // 每隔40秒向服務器報到一次
        const unsigned long updateInterval = 5000; // 數據上傳間隔時間5秒
        String inputString = "";//串口讀取到的內容
        boolean stringComplete = false;//串口是否讀取完畢
        boolean CONNECT = true; //連接狀態
        boolean isCheckIn = false; //是否已經登錄服務器
        char* parseJson(char *jsonString);//定義aJson字符串
        void setup() {
        Serial.begin(115200);
        lcd.begin(16,2);
        lcd.print("Temperature:");
        delay(10000);
        }
        void loop() {
        if(millis() - lastCheckInTime > postingInterval || lastCheckInTime==0) {
        checkIn();
        }
        if(millis() - lastUpdateTime > updateInterval) {
        float val;//定義變量
        int dat;//定義變量
        dat=analogRead( LM35 );// 讀取傳感器的模擬值并賦值給dat
        //val=(125*dat)>>8;//溫度計算公式
        val = dat * (4.76 / 1023.0*100);
        update1(DEVICEID,INPUTID,val);
        lcd.setCursor(0,1);
        lcd.print(val);
        }
        serialEvent();
        if (stringComplete) {
        inputString.trim();
        //Serial.println(inputString);
        if(inputString=="CLOSED"){
        Serial.println("connect closed!");
        CONNECT=false;
        isCheckIn=false;
        }else{
        int len = inputString.length()+1;
        if(inputString.startsWith("{") && inputString.endsWith("}")){
        char jsonString[len];
        inputString.toCharArray(jsonString,len);
        aJsonObject *msg = aJson.parse(jsonString);
        processMessage(msg);//處理接收到的Json數據
        aJson.deleteItem(msg);
        }
        }
        inputString = "";
        stringComplete = false;
        }
        }
        void checkIn() {
        if (!CONNECT) {
        Serial.print("+++");
        delay(500);
        Serial.print("\r\n");
        delay(1000);
        Serial.print("AT+RST\r\n");
        delay(6000);
        CONNECT=true;
        lastCheckInTime==0;
        }
        else{
        Serial.print("{\"M\":\"checkin\",\"ID\":\"");
        Serial.print(DEVICEID);
        Serial.print("\",\"K\":\"");
        Serial.print(APIKEY);
        Serial.print("\"}\r\n");
        lastCheckInTime = millis();
        }
        }
        void processMessage(aJsonObject *msg){
        aJsonObject* method = aJson.getObjectItem(msg, "M");
        aJsonObject* content = aJson.getObjectItem(msg, "C");
        aJsonObject* client_id = aJson.getObjectItem(msg, "ID");
        //char* st = aJson.print(msg);
        if (!method) {
        return;
        }
        //Serial.println(st);
        //free(st);
        String M=method->valuestring;
        if(M=="checkinok"){
        isCheckIn = true;
        }
        }
        void update1(String did, String inputid, float value){
        Serial.print("{\"M\":\"update\",\"ID\":\"");
        Serial.print(did);
        Serial.print("\",\"V\":{\"");
        Serial.print(inputid);
        Serial.print("\":\"");
        Serial.print(value);
        Serial.println("\"}}");
        lastCheckInTime = millis();
        lastUpdateTime= millis();
        }
        void serialEvent() {
        while (Serial.available()) {
        char inChar = (char)Serial.read();
        inputString += inChar;
        if (inChar == '\n') {
        stringComplete = true;
        }
        }
        }
        //同時上傳兩個接口數據調用此函數
        void update2(String did, String inputid1, float value1, String inputid2, float value2){
        Serial.print("{\"M\":\"update\",\"ID\":\"");
        Serial.print(did);
        Serial.print("\",\"V\":{\"");
        Serial.print(inputid1);
        Serial.print("\":\"");
        Serial.print(value1);
        Serial.print("\",\"");
        Serial.print(inputid2);
        Serial.print("\":\"");
        Serial.print(value2);
        Serial.println("\"}}");
        lastCheckInTime = millis();
        lastUpdateTime= millis();
        }

        調試的時候是能連上網頁的,整合LCD和ESP8266后在網頁上就顯示不在線了。LCD顯示也都正常...

        懂的大神幫個忙
        貝殼物聯 評論于:2017-12-25 07:59:03
        估計是esp8266透傳模式沒設置好
        ericsma 評論于:2018-03-16 17:40:18
        刷個分?
        返回頂部

        <em id="ri2my"></em>
      2. <em id="ri2my"></em>
        <em id="ri2my"><label id="ri2my"><nav id="ri2my"></nav></label></em>
      3. <em id="ri2my"><label id="ri2my"></label></em>
        <div id="ri2my"></div>
        1. <em id="ri2my"><label id="ri2my"></label></em>
        2. <em id="ri2my"><ol id="ri2my"></ol></em>
          <em id="ri2my"></em>

          1. 免费高清视频