Blinker 后台數據分析


如何解析出后台服務器認證信息,供自己的設備連接。

測試程序 天氣 增加了 Debug輸出信息功能

1手機APP添加控件信息

 

 

 

2硬件燒錄程序

#define BLINKER_PRINT Serial
#define BLINKER_MQTT
#define BLINKER_DEBUG_ALL
#include <Blinker.h>

char auth[] = "9a02fc93f6cf";
char ssid[] = "dongdong";
char pswd[] = "ldd123456";

#define BUTTON_1 "btn-qc4"

void setup()
{
    Serial.begin(115200);

    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, LOW);

    Blinker.begin(auth, ssid, pswd);
    Blinker.wInit(BUTTON_1, W_BUTTON);
}

void loop()
{
    Blinker.run();

    if (Blinker.available()) {
        BLINKER_LOG2("Blinker.readString(): ", Blinker.readString());

        uint32_t BlinkerTime = millis();

        Blinker.beginFormat();
        Blinker.vibrate();        
        Blinker.print("millis", BlinkerTime);
        Blinker.endFormat();
    }

    if (Blinker.button(BUTTON_1)) {
        digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
        String get_weather = Blinker.weather();

        BLINKER_LOG2("weather: ", get_weather);

        Blinker.delay(60000);
    }
}

 最重要在 #define BLINKER_DEBUG_ALL  可以打印出服務器返回數據,里面有認證賬號和密碼

 

3返回的消息

[50] Blinker v0.1.5
[50] Connecting to dongdong
[605] Connected
[605] Your IP is: 192.168.1.102
[605] authkey: 9a02fc93f6cf
[605] HTTPS begin: https://iotdev.clz.me/api/v1/user/device/diy/auth?authKey=9a02fc93f6cf
[1374] [HTTP] GET... code: 200
[1378] reply was:
[1378] ==============================
[1378] {"detail": {"broker": "aliyun", "deviceName": "67DEBCDA4YFZURWW9H5KOLTW", "iotId": "qAQieJeIJ64YqEM8Bze60010c40400", "iotToken": "27c0df1e500b43f39c7b750f6f09604e", "productKey": "JgCGbHlndgz", "uuid": "67c3698830d0482a6b96256526e01ecf"}, "message": 1000}
[1395] ==============================
[1400] ====================
[1401] DEVICE_NAME: 67DEBCDA4YFZURWW9H5KOLTW
[1405] MQTT_PRODUCTINFO: JgCGbHlndgz
[1408] MQTT_ID: 67DEBCDA4YFZURWW9H5KOLTW
[1412] MQTT_NAME: qAQieJeIJ64YqEM8Bze60010c40400
[1416] MQTT_KEY: 27c0df1e500b43f39c7b750f6f09604e
[1421] MQTT_BROKER: aliyun
[1423] HOST: public.iot-as-mqtt.cn-shanghai.aliyuncs.com
[1428] PORT: 1883
[1430] UUID: 67c3698830d0482a6b96256526e01ecf
[1434] ====================
[1437] BLINKER_PUB_TOPIC: /JgCGbHlndgz/67DEBCDA4YFZURWW9H5KOLTW/s
[1442] BLINKER_SUB_TOPIC: /JgCGbHlndgz/67DEBCDA4YFZURWW9H5KOLTW/r
[1451] mDNS responder started
[1452] webSocket server started
[1454] ws://67DEBCDA4YFZURWW9H5KOLTW.local:81
[1458] ESP8266_MQTT Initialled...
[2462] Current time: Fri Jul 27 03:59:57 2018

[6448] Connecting to MQTT... 

 

只需要知道6個信息

服務器端口[1428] PORT: 1883

服務器域名 [1423] HOST: public.iot-as-mqtt.cn-shanghai.aliyuncs.com

分配用戶賬號[1412] MQTT_NAME: qAQieJeIJ64YqEM8Bze60010c40400
分配用戶密碼[1416] MQTT_KEY: 27c0df1e500b43f39c7b750f6f09604e

在服務器上的消息

[1437] BLINKER_PUB_TOPIC: /JgCGbHlndgz/67DEBCDA4YFZURWW9H5KOLTW/s
[1442] BLINKER_SUB_TOPIC: /JgCGbHlndgz/67DEBCDA4YFZURWW9H5KOLTW/r

 

測試

打開手機MQTT調試助手

設置信息  域名+端口+賬號+密碼

設置接受話題和發送話題

打開blinker app  每次在 blinker app上按下按鈕(鍵值 btn-qc4)

就會接收到消息

 

剛開始成功了

 

過會就掉了,不知道為什么    

 (中間不小心重啟了ESP8266)

牛逼 竟然是動態密碼

1每次刷了官方的固件ESP8266重啟發送HTTP請求,域名端口 賬號不變 密碼重新生成。

  由於調試助手每次只連接MQTT服務器而不發起HTTP請求,所以不會修改密碼,關閉打開仍然可用。

2 睡了一早上,打開手機調試助手怎么也連不上,重新用ESP發起請求一次獲得新密碼,看樣子隔段時間密碼還會變的,只能從服務器從新獲取。

如下圖 在新設備里自定義一個按鍵,兩個滑塊,一個開關,分別按下

 

 

 收到的消息如下圖,

JSON數據格式    {1設備類型   2數據 {控件鍵值(按鍵)+數據  3從哪來  4 到哪去  }(下面是話題名)

 

至此,全部搞明白

 

Blinker 的流程是這樣的

0手機注冊一個新設備,設備里面有很多操作控件(按鍵,滑塊)。分配一個KEY

1 ESPP8266終端利用手機的設備分配的KEY,當唯一HTTP用戶認證名,向HTTP服務發起請求,獲取分配的服務器+端口+認證賬戶+動態認證密碼+接收和發送消息話題,每次程序重啟就會發起一次,每次就會修改一次認證密碼,其余不變。

--

2 ESP8266終端獲取到認證消息后,利用這些消息連接MQTT服務器,進行數據交互

每一個設備分配一個大話題,在此之下,每個控件(按鍵,滑塊)在手機端設置的鍵值,就是區分消息源的關鍵。

 

蹭的很開心!

 

后續深入

認證使用的是阿里物聯網套件

https://www.alibabacloud.com/help/zh/doc-detail/73742.htm

 

 

 

應該是第二種  使用HTTPS認證再連接模式

 

 

 

 

 

MQTT認證模式

http://emqtt.com/docs/v2/plugins.html

 

推測是HTTP解析認證

1ESP訪問

 HTTPS begin: https://iotdev.clz.me/api/v1/user/device/diy/auth?authKey=9a02fc93f6cf

得到回應

{"detail": {"broker": "aliyun", "deviceName": "67DEBCDA4YFZURWW9H5KOLTW", "iotId": "qAQieJeIJ64YqEM8Bze60010c40400", "iotToken": "27c0df1e500b43f39c7b750f6f09604e", "productKey": "JgCGbHlndgz", "

 

服務器網站和端口

[1423] HOST: public.iot-as-mqtt.cn-shanghai.aliyuncs.com
[1428] PORT: 1883

 

MQTT信息

[1401] DEVICE_NAME: 67DEBCDA4YFZURWW9H5KOLTW
[1405] MQTT_PRODUCTINFO: JgCGbHlndgz
[1408] MQTT_ID: 67DEBCDA4YFZURWW9H5KOLTW
[1412] MQTT_NAME: qAQieJeIJ64YqEM8Bze60010c40400
[1416] MQTT_KEY: 27c0df1e500b43f39c7b750f6f09604e
[1421] MQTT_BROKER: aliyun
[1423] HOST: public.iot-as-mqtt.cn-shanghai.aliyuncs.com
[1428] PORT: 1883
[1430] UUID: 67c3698830d0482a6b96256526e01ecf

 

發布和接受的話題

[1437] BLINKER_PUB_TOPIC: /JgCGbHlndgz/67DEBCDA4YFZURWW9H5KOLTW/s
[1442] BLINKER_SUB_TOPIC: /JgCGbHlndgz/67DEBCDA4YFZURWW9H5KOLTW/r

 

 

最后不斷自己發粗心跳包

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM