<noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • ESP8266 STA模式網頁顯示不在線

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

    設備、接口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
    刷個分?
    返回頂部
    <noscript id="mmkmi"><source id="mmkmi"></source></noscript>
  • <noscript id="mmkmi"><kbd id="mmkmi"></kbd></noscript>
  • <table id="mmkmi"><source id="mmkmi"></source></table>
  • 三上悠亚在线观看