zoukankan      html  css  js  c++  java
  • 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

    最后不断自己发粗心跳包

  • 相关阅读:
    小知识!
    命令级的python静态资源服务。
    自定义滚动条样式-transition无效
    css:a:visited限制
    react16 渲染流程
    virtual-dom
    用video标签流式加载
    golang 代码笔记
    position:fixed not work?
    go/node/python 多进程与多核cpu
  • 原文地址:https://www.cnblogs.com/kekeoutlook/p/9375351.html
Copyright © 2011-2022 走看看