<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. 設備不在線

        作者:瀟瀟123 | 更新時間:2018-04-14 | 瀏覽量:1516

        弄了挺久的,一直搞不定…求幫忙看看是為什么

        串口助手一直顯示這個:

        {"M":"checkin","ID":"5438","K":"a3487a976"}
        {"M":"update","ID":"5438","V":{"4888":"76.77"}}
        {"M":"update","ID":"5438","V":{"4888":"106.55"}}
        {"M":"update","ID":"5438","V":{"4888":"63.75"}}
        {"M":"update","ID":"5438","V":{"4888":"72.59"}}

         

        這是燒錄在arduino的代碼:

        /*
         *注意 :Arduino IDE版本請使用1.6.5-1.8.2
         */
        #include <aJSON.h>
        #include <SoftwareSerial.h>
        SoftwareSerial mySerial(2, 3); //設置模擬串口針腳(RX, TX)
        //=============  此處必須修改============
        String DEVICEID="5438"; // 你的設備ID=======
        String APIKEY="a3487a976"; // 設備密碼==
        String INPUTID="4888";//接口ID==============
        //=======================================
        const int MQ2 = 0;// MQ-2 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);
          delay(10000);
        }
        void loop() {
          if(millis() - lastCheckInTime > postingInterval || lastCheckInTime==0) {
            checkIn();
          }
          if(millis() - lastUpdateTime > updateInterval) {
            float val;//定義變量
            int dat;//定義變量
            dat=analogRead( MQ2 );// 讀取傳感器的模擬值并賦值給dat
            //val=(125*dat)>>8;//溫度計算公式
            val = dat * (4.76 / 1023.0*100);  
            update1(DEVICEID,INPUTID,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(); 
        }
         


        評論:共10條

        超死亡 評論于:2018-04-17 19:52:39
        設備重啟
        瀟瀟123 回復于:2018-04-17 20:59:25
        回復 @超死亡:還是不行[哭]
        超死亡 回復于:2018-04-17 22:12:20
        回復 @瀟瀟123:沒道理呀
        ZQY 回復于:2018-04-20 18:38:23
        回復 @超死亡:我也是一樣不行,明明可以自動連接上了
        清風鈴動 回復于:2018-04-20 21:34:12
        回復 @超死亡設備要怎么重啟,我也是這個問題
        瀟瀟123 回復于:2018-04-26 02:34:40
        回復 @清風鈴動:
        瀟瀟123 回復于:2018-04-26 02:34:57
        回復 @ZQY:
        瀟瀟123 評論于:2018-04-26 02:33:14
        好了,原因是登陸指令之類的是寫在了串口,應該連接貝殼的服務器然后發送到服務端就可以了
        Y134 回復于:2018-05-01 12:00:16
        回復 @瀟瀟123:請問具體該怎么改呢
        JiYoo 回復于:2019-03-02 21:35:11
        回復 @瀟瀟123:同樣遇到了這個問題 怎么解決的呢
        返回頂部

        <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. 免费高清视频