国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Ruff 上的 ZigBee 應用

miracledan / 2077人閱讀

摘要:組包解包和解析以開關燈的控制協議來看的組包過程包的首尾是開始和結束標志。前三個字段分別是之后就是具體的控制數據。由于要在包內容里避免使用開頭或者結尾的標志字段,所以需要對源包內容進行轉義,轉義示意如下。我們就可以接入上面展示的燈和開關了。

原理簡介

這個智能控制系統采用 ZigBee 作為無線通信協議。
在支持 OpenWRT 系統的路由器上刷入 Ruff,利用 ZigBee-USB dongle 模塊,和其他 ZigBee 終端設備通信,實現遙控功能。

物件清單
主控平臺

極路由3 ,已刷入 Ruff。

傳感器和執行元件

ZigBee-USB dongle 模塊

ZigBee 燈

小米 ZigBee 開關

開發步驟

初始化 APP
$ rap init

添加 zigbee 驅動,id 為 zigbee ,型號選擇 jn5168a
$ rap device add zigbee (jn5168a)

編寫 src/index.js代碼

"use strict";

var zigbee;

$.ready(function (error) {
 if (error) {
     console.log(error);
     return;
 }
 zigbee = $("#zigbee");
 zigbee.startup();

 zigbee.setTurnLightOn();
 zigbee.setTurnLightOff();
 zigbee.setToggleLight();
});

$.end(function () {
});

改寫板卡描述 board.json

由于路由器上沒有 GPIO 之類的接口,所以我們要改寫板卡描述文件 ruff_modules/ruff-mbd-v1/board.json

     {
     "version": "2.0",
     "id": "ruff-mbd-v1",
     "model": "ruff-mbd-v1",
     "preloads": {
         "uart-0": "uart-0/uart"
     },
     "outputs": {
         "uart-0": "uart-0/uart",
         "gnd-0": "ground/gnd-0",
         "vdd-0": "power/vdd-0"
     },
     "devices": [
         {
             "id": "ground",
             "outputs": {
                 "gnd-0": {
                     "type": "ground"
                 }
             }
         },
         {
             "id": "power",
             "outputs": {
                 "vdd-0": {
                     "type": "power",
                     "args": {
                         "voltage": "3.3v"
                     }
                 }
             }
         },
         {
             "id": "uart-0",
             "model": "ruff-sys-uart",
             "driver": "sys-uart",
             "inputs": {
                 "device": {
                     "type": "string",
                     "args": {
                         "path": "/dev/ttyUSB0"
                     }
                 }
             },
             "outputs": {
                 "uart" : {
                     "type":"uart"
                 }
             }
         }
     ]
 }

5.部署代碼

`$ rap deploy your-router-ip -s`
ZigBee 驅動解析

以下三個部分分別從

ZigBee 網絡包的組成

ZigBee 網絡的組建

開關燈控制

三個方面,來介紹 ZigBee 驅動模塊。

ZigBee 組包、解包和解析

以開關燈的控制協議來看 ZigBee 的組包過程:

 start = 0x1
 end = 0x3
 data = [0x2, 0x44, 0xa6, 0x1, 0x1, 0x1]
 msgType = 146 = 0x92 (OnOff)
 msgLen = 0x6
 crc = 0x92 ^ 0x6 ^ 0x2 ^ 0x44 ^ 0xa6 ^ 0x1 ^ 0x1 ^ 0x1 = 0x75

 -----------------------------------------------------------------------------------
 |  0x1  |   0x92   |   0x6   |  0x75 |   0x2, 0x44, 0xa6, 0x1, 0x1, 0x1   |  0x3  |
 -----------------------------------------------------------------------------------
 | start | msgType  |  msgLen |  crc  |              Data                  |  stop |
 -----------------------------------------------------------------------------------

包的首尾是開始和結束標志。前三個字段分別是message type, message length, CRC checksum, 之后就是具體的控制數據。
由于要在包內容里避免使用開頭或者結尾的標志字段,所以需要對源包內容進行轉義,轉義示意如下。

0x00 0x92 -> 0x2 0x10^0x00 0x92

 ------------------------------------------------------------------------------------------------------------
 |  0x1  | 0x2 0x10 0x92 | 0x2 0x10 0x2 0x16 | 0x75 | 0x2 0x12 0x44 0xa6 0x2 0x11 0x2 0x11 0x2 0x11 |  0x3  |
 ------------------------------------------------------------------------------------------------------------
 | start |     msgType   |      msgLen       | crc  |                  Data                         |  stop |
 ------------------------------------------------------------------------------------------------------------

解包是組包的逆過程。
解析而是依據ZigBee協議的數據手冊(JN-AN-1194-ZigBee-IoT-Gateway-Control-Bridge pdf),一一對照著解析包的內容。

ZigBee網絡組建代碼

根據數據手冊,ZigBee初始化組建網絡需要經過以下幾個步驟:

  this.getVersion();
  this.setExtendedPANID();
  this.setChannelMask();
  this.setSecurityStateAndKey();
  this.setDeviceType();
  this.startNetwork();
  this.permitJoiningRequest();

在這之后,ZigBee 網絡處于開放狀態,可以接受連接請求。我們就可以接入上面展示的 ZigBee 燈和開關了。

ZigBee 開關燈代碼

ZigBee 協議里有直接控制開關的通信類型,通過查找 ZigBee 數據手冊,可以找到如下信息:

利用這個通信類型,我們寫的開關燈的代碼是這樣的。

ZigBee.prototype.turnLightOn = function () {
  console.log("turn light on");
  var devices = interpreter.getDeviceList();
  var msg = new Buffer([0x2, 0xff, 0xff, 0x1, 0x1, 0x1]);
  if (devices.length !== 0) {
    msg.writeUInt16BE(devices[0].shortAddress, 1);
  }
  this._writeCmd(0x92, msg);
}

ZigBee.prototype.turnLightOff = function () {
  console.log("turn light off");
  var devices = interpreter.getDeviceList();
  var msg = new Buffer([0x2, 0xff, 0xff, 0x1, 0x1, 0x0]);
  if (devices.length !== 0) {
    msg.writeUInt16BE(devices[0].shortAddress, 1);
  }
  this._writeCmd(0x92, msg);
}

ZigBee.prototype.toggleLight = function () {
  console.log("toggle light");
  var devices = interpreter.getDeviceList();
  var msg = new Buffer([0x2, 0xff, 0xff, 0x1, 0x1, 0x2]);
  if (devices.length !== 0) {
    msg.writeUInt16BE(devices[0].shortAddress, 1);
  }
  this._writeCmd(0x92, msg);
}
演示視頻

演示(騰訊)

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/81155.html

相關文章

  • JavaScript在物聯網中的應用

    摘要:定律在那篇最流行的編程語言能做什么里,我們列舉了在不同領域的使用情況,今天讓我們來詳解一下在物聯網中的應用。這個硬件層決定了物聯網應用比應用更加復雜。這時,我開始關注實現物聯網應用的可能性。 凡是能用JavaScript寫出來的,最終都會用JavaScript寫出來。 —— Atwood定律 在那篇《最流行的編程語言JavaScript能做什么?》里,我們列舉了JavaScript在不...

    aaron 評論0 收藏0
  • JavaScript在物聯網中的應用

    摘要:定律在那篇最流行的編程語言能做什么里,我們列舉了在不同領域的使用情況,今天讓我們來詳解一下在物聯網中的應用。這個硬件層決定了物聯網應用比應用更加復雜。這時,我開始關注實現物聯網應用的可能性。 凡是能用JavaScript寫出來的,最終都會用JavaScript寫出來。 —— Atwood定律 在那篇《最流行的編程語言JavaScript能做什么?》里,我們列舉了JavaScript在不...

    Barrior 評論0 收藏0
  • 【物聯網】JavaScript快速開發智能硬件應用ruff開箱篇(一)

    摘要:前言最近聽到有小伙伴們對感興趣,我也跟著加入了大軍中,本篇文章展示了的開發套件,以及入手后的小,后續持續更新參考文獻官網思否首頁開箱如同官網展示的配件如下上手官方我開發時使用的是系統,所以下載安裝包創建項目文件,在當前目錄執行下面命令查看 前言 最近聽到有小伙伴們對ruff感興趣,我也跟著加入了大軍中,本篇文章展示了ruff的開發套件,以及入手后的小demo,后續持續更新參考文獻ruf...

    NeverSayNever 評論0 收藏0
  • 斜杠青年Ruff:區塊鏈只是分內事

    摘要:物聯網操作系統落地工業物聯網定制化解決方案實施上線上天并不像一個正經的創業公司,更不像一個掙扎在生死邊緣的創業者,反而像一個時下流行叫法斜杠青年。所以,對于而言,區塊鏈只是份內的事。 showImg(https://segmentfault.com/img/bV9xuY?w=1182&h=591); 物聯網操作系統落地工業物聯網、定制化解決方案實施、Ruff Chain 上線、Ruff...

    zhisheng 評論0 收藏0
  • Ruff Chain 創始人 Roy Li:具有價值流轉和價值流通的數據才值得上鏈

    摘要:雖然表現層的數據占到,甚至可能更多,但價值網絡的數據在物聯網中則更能產生價值。因此,采取的是在末端使用無人化的方式運作,利用邊緣節點采取數據,然后把其他最有價值的需要保證絕對的一致性的可以用于價值流轉和價值流通的數據進行上鏈。 showImg(https://segmentfault.com/img/bV64yb?w=2160&h=1440); 2018年3月27日,人民網創投?區塊鏈...

    zhaochunqi 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<