Zigbee Study

7,729 views
7,502 views

Published on

2011/5/29 #zbstudy

Published in: Education
0 Comments
13 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
7,729
On SlideShare
0
From Embeds
0
Number of Embeds
59
Actions
Shares
0
Downloads
0
Comments
0
Likes
13
Embeds 0
No embeds

No notes for slide

Zigbee Study

  1. 1. ZigBeeをマジメに考える
  2. 2. 1. まずはおさらいから
  3. 3. ZigBeeっていうと... <ul><li>無線...だよね?
  4. 4. 省電力?低価格?...だったっけ?
  5. 5. えーっと...メッシュネットワークが組める?
  6. 6. スピードはそんなに出なかったかなあ?
  7. 7. プロファイルがあるんだよね...?でも使った事ないなあ...?
  8. 8. あれ、ZigBeeってXBeeのことだっけ...? </li></ul>
  9. 9. 実はよくわかってないなあ...
  10. 10. 貴方の使ってる「ZigBee」 本当に「ZigBee」ですか?
  11. 11. ZigBeeってこうなってます
  12. 12. IEEE802.15.4 <ul><li>PAN用の標準
  13. 13. Bluetooth(802.15.1)はセンサーネットワークにはちょっと向かないゾ
  14. 14. 2.4GHz – ISM
  15. 15. O-QPSK
  16. 16. DSSS
  17. 17. オープンです </li></ul>
  18. 18. IEEE802.15.4の特徴 <ul><li>もちろん無線のお話です
  19. 19. 省電力、低価格
  20. 20. スピードはそんな出ません 250Kbps
  21. 21. センサーネットワーク向け </li></ul>
  22. 22. あれ?これって「ZigBee」じゃないの?
  23. 23. なぜ誤解を生むか <ul><li>Digi社のXBeeが世界的にも普及している
  24. 24. XBeeは当初ZigBeeではなくIEEE802.15.4-2003搭載だった(いわゆるS1)
  25. 25. 実際個人が趣味で使う分にはZigBeeは不要であるケースが多い
  26. 26. ZigBeeが壮大すぎる
  27. 27. ZigBeeはプロプライエタリである </li></ul>
  28. 28. 2. みんなの知らない本当のZigBee
  29. 29. ZigBeeってなんだ <ul><li>ZigZag + Bee = ZigBee
  30. 30. センサ情報がぶーんぶんしゃかぶぶんぶん
  31. 31. センサをばらまいたら勝手に情報が上がってくるようにしたい </li></ul>
  32. 32. 既存のインフラは? <ul><li>802.11(無線LAN) </li><ul><li>重い
  33. 33. オーバースペック、ありえない </li><ul><li>IPスタックの問題もあり </li></ul></ul><li>802.15.1(Bluetooth) </li><ul><li>やっぱ重い
  34. 34. Bluetoothのプロファイル縛りがヤバい
  35. 35. メッシュとかできない </li></ul></ul>
  36. 36.  ZigBee Alliance <ul><li>世の中に蔓延るどうしようもない規格に一石を投じるべく立ち上がった人達
  37. 37. 主にやってる事 </li><ul><li>ZigBeeっていう標準を作ってます
  38. 38. ZigBeeっていうブランドを維持してます
  39. 39. ZigBeeの認定を行っています </li><ul><li>認定製品の相互接続を保証 </li></ul></ul><li>WiFi Allianceと似ている </li></ul>
  40. 40. ZigBeeとWiFi どちらも認定を受けなければ「 ZigBee/WiFi 」を名乗れない。 IEEEが策定 Alliance が策定 Alliance が策定 一般的にはIPスタックが使われる
  41. 41. NWKとかAPSとか そんなの使ってないんだけど... もしかしてZigBeeって言っちゃダメ...?
  42. 42. 隠蔽されてます <ul><li>XBeeはZigBeeを隠蔽して知らない人でも使えるようにしてあります </li><ul><li>ZigBeeを名乗る以上、ちゃんと認定を受けています </li></ul><li>ようするに「サボって」使える
  43. 43. XBeeも「マジメ」に使う事ができます(後述
  44. 44. 「サボる」といろんな恩恵を受けれません </li></ul>
  45. 45. 3. NWK Layer
  46. 46. NWK Layer <ul><li>その名の通り「ネットワーク」を管理します
  47. 47. いわゆるメッシュネットワークを実現している
  48. 48. 組めるネットワークの種類 </li></ul>
  49. 49. NWK Layer <ul><li>NLDEとNLME
  50. 50. NLDE </li><ul><li>データ転送の役目
  51. 51. レイヤ間のデータ受け渡し </li></ul><li>NLME </li><ul><li>ネットワーク管理 </li></ul></ul>NLDE-SAP NLME-SAP MCPS-SAP MLME-SAP
  52. 52. NLME <ul><li>設定全般:ノードの立ち上げやらCoordinatorの起動等
  53. 53. ネットワーク立ち上げ:Coordinatorのみ
  54. 54. ネットワークへの参加、再参加、離脱
  55. 55. 小ノードへのアドレス割当
  56. 56. 近隣ノードの探索
  57. 57. ルート探索、ルーティング
  58. 58. MAC層との同期 </li></ul>
  59. 59. NLME <ul><li>XBeeを始めとする多くのモジュールはNLMEまで実装されていることが多い
  60. 60. 実際に開発者がその内部を理解する必要はほとんどない </li></ul>
  61. 61. ZigBee Network <ul><li>XBeeを使ってる人なら何となく使ってる... </li><ul><li>Coordinator: 一家に一台、ネットワークに一台必須
  62. 62. Router: ルーティングします、Router ≦ Coordinator
  63. 63. EndDevice: 末端、特殊 </li></ul><li>でも違いがよくわからない... </li></ul>
  64. 64. Coordinator <ul><li>ネットワークを作成する->必須
  65. 65. 802.11インフラにおけるAPのような存在
  66. 66. 後述のセキュリティに置いても重要な存在
  67. 67. 常にONである->スリープできない
  68. 68. 普通はゲートウェイに設置される
  69. 69. 普通はハンドルするために多くのリソースが必要 </li></ul>
  70. 70. Router <ul><li>Coordinatorと機能は似ているが...
  71. 71. ネットワークを作成できない
  72. 72. 常にON </li></ul>
  73. 73. EndDevice <ul><li>特殊
  74. 74. ネットワークを作成できない
  75. 75. 小ノードが参加できない->末端
  76. 76. 常にONである必要がない->スリープ可能 </li><ul><li>一般的に消費電力云々の話をしているのはEDのことが多い </li></ul></ul>
  77. 77. PANIDが二つ? <ul><li>16-bit PANID </li><ul><li>MAC層で使われるネットワーク識別用ID
  78. 78. 16-bitしかないので衝突する可能性が高い </li></ul><li>Extended PANID (64-bit PANID) </li><ul><li>NWK層で使われるPANID
  79. 79. 前述の衝突を回避するために拡張した </li></ul><li>二つとも一致していないといけない </li></ul>
  80. 80. アドレスが2つ? <ul><li>IEEE Address (64-bit Address) </li><ul><li>いわゆるMACアドレス
  81. 81. ユニークでありチップごとに振り当てられている </li></ul><li>Network Address (16-bit Address) </li><ul><li>IPスタックにおけるIPアドレスのような存在
  82. 82. 動的に割当てられる事が多い </li></ul><li>基本的に Network Address だけで通信できる </li></ul>
  83. 83. 4. APS Layer
  84. 84. APS Layer <ul><li>おそらく最も知られていない・理解されていない層
  85. 85. 最上位に存在するApplication Objectとの繋ぎ
  86. 86. モジュールに最低限の機能しか実装していないことがある </li><ul><li>->開発者が理解して必要に応じて実装する必要がある </li></ul><li>プロファイルによってM/Oが違ったりする </li></ul>
  87. 87. APS Layer <ul><li>APSDEとAPSME
  88. 88. バインディング
  89. 89. グループ管理
  90. 90. APS ACK
  91. 91. フラグメント </li></ul>APSDE-SAP APSME-SAP NLDE-SAP NLME-SAP
  92. 92. APSとApplicationの関係 ...... Endpoint毎にユーザーのアプリケーションが格納される。 Application Object EPa Application Object EPb Application Object EPn
  93. 93. あれ...?これどっかで見た事が...
  94. 94. これ、 進研ゼミ でやった問題だ!
  95. 95. USBのおさらい Configuration 0 Interface 0 Interface 1 ...... ...... 実は他にも共通点がある(後述 EPa EPb EPn EPi EPj EPx
  96. 96. Binding <ul><li>あるApplication Objectと別のApplication Objectをリンクする
  97. 97. 単一方向
  98. 98. 多重バインディングができる
  99. 99. APSバインディングとZDOバインディングがある </li></ul>
  100. 100. Binding
  101. 101. Binding Light A Addr: 0x1234 Light B Addr: 0x6464 Light C 0x3333 Switch A Addr: 0x0666 Switch B Addr: 0x5555 Source Destination 0x0666:EP7 0x1234:EP1 0x0666:EP7 0x6464:EP5 0x0666:EP7 0x6464:EP12 0x5555:EP7 0x3333:EP1 Binding Table
  102. 102. Group Addressing <ul><li>複数のApplication Objectに対して一括送信したい
  103. 103. 基本的にブロードキャストである
  104. 104. 受信側が責任もってフィルタする
  105. 105. オプションである(HAを除く)
  106. 106. Binding先としてGroupを指定することも可能 </li></ul>
  107. 107. Group Addressing Group:0x8888 Group:0x6413
  108. 108. Group Addressing Light D Addr: 0x5678 Group Endpoint 0x8888 EP1 0x7777 EP2 Group Table フレームのアドレスモードで判断 Destination Group 0x8888
  109. 109. APS ACK <ul><li>APS層でACKを有効にすることができる
  110. 110. 信頼性を高める
  111. 111. 一定時間にACKが来ない場合再送
  112. 112. オプション </li></ul>
  113. 113. Fragmentation <ul><li>その名の通りフラグメント化
  114. 114. ウィンドウサイズがあったりと、TCPに似てる
  115. 115. たぶんモジュールに実装されている事が多い </li></ul>
  116. 116. 5. Security
  117. 117. Why Security ? <ul><li>変なデバイスがネットワークに参加するのを防ぐ
  118. 118. 変なデータが飛んだり盗聴されたりするのを防ぐ
  119. 119. 特定のデバイス間でもセキュリティをかけることが可能
  120. 120. こいつ信用できねえと思ったら強制認証解除
  121. 121. Standard SecurityとHigh Security </li></ul>
  122. 122. Standard Security <ul><li>Trust Center </li><ul><li>認証局
  123. 123. 普通はCoordinatorが役目を負う </li></ul><li>Link Key </li><ul><li>APS層のセキュリティ用の鍵
  124. 124. 各デバイス間に個別の鍵、さらにTrust Center Link Keyと呼ばれる特殊鍵 </li></ul><li>Network Key </li><ul><li>NWK層のセキュリティ用の鍵 </li></ul></ul>
  125. 125. High Security <ul><li>Master Key
  126. 126. SKKE
  127. 127. EA
  128. 128. 後述の公式プロファイルで使われる
  129. 129. 個人が使う事はまずない->商用製品向け </li></ul>
  130. 130. 6. ZigBee Application Framework
  131. 131. ZigBee Device Object <ul><li>Endpoint 0に存在する特殊なApplication Object
  132. 132. USBのEndpoint 0によく似ている
  133. 133. セキュリティサービス
  134. 134. ネットワーク管理
  135. 135. バインディング
  136. 136. ノード管理、ノード探索 </li></ul>
  137. 137. ZigBee Cluster Library <ul><li>Application Objectの「中身」
  138. 138. 抽象化したインターフェース群
  139. 139. Public Profileに関わってくる
  140. 140. 大体必要な機能はここから取ってくれば良い
  141. 141. ZCLに沿って実装すれば相互接続性が保てる </li></ul>
  142. 142. Cluster <ul><li>各クラスタはAttributeを持っている
  143. 143. 外部からReadしたりWriteしたりできる
  144. 144. Read OnlyだったりWrite Onlyだったりすることもある
  145. 145. クラスタ毎にCommand IDがある
  146. 146. つまりオブジェクト指向 </li></ul>
  147. 147. On/Off Cluster On/Off +OnOff : Boolean +Off() +On() +Toggle() <ul><li>UMLっぽく書くとこんなイメージ
  148. 148. On/Off AttributeはOnのときTrue (Read Only)
  149. 149. 外部からOnしたりOffしたりできる </li></ul>
  150. 150. Profile <ul><li>ざっくり言えば「どのClusterを使うか」
  151. 151. ZCLから必要な機能を選ぶ
  152. 152. デバイス毎にM/OのClusterを定義する
  153. 153. 俺プロファイルの完成
  154. 154. 誰でも簡単にプロファイルが作れる
  155. 155. 必要に応じて独自Clusterを作る
  156. 156. 全てのデバイスは同じProfile IDを持たなければならない </li></ul>
  157. 157. Public Application Profile <ul><li>ZigBee Allianceお墨付き公式プロファイル
  158. 158. 勝手プロファイルと違ってかなり 余計な事 まで厳密に定義してる
  159. 159. 現在9(+1)存在、が、実質2(+1)
  160. 160. Allianceメンバーしか開発しちゃダメだよ☆
  161. 161. 認定取らないと売っちゃダメだよ☆
  162. 162. 多くはビジネスがないので放置されてる </li></ul>
  163. 163. Home Automation <ul><li>家庭内のいろんな物をつないでいろんなことをするプロファイル
  164. 164. が、実際は照明をパチパチさせる程度の製品しか無い
  165. 165. 照明がコアなので、Group Addressingが必須用件になっていたりする
  166. 166. セキュリティが緩い </li></ul>
  167. 167. Smart Energy 1.0 <ul><li>本命
  168. 168. ていうかこれくらいしかまともなプロファイル無いんじゃないの?
  169. 169. 電力を計るよ!
  170. 170. 大人の事情によりセキュリティがとても厳しいです
  171. 171. 製品のインストール方法やらシリアルナンバー的なものまで定義されています
  172. 172. 認定とは別にデバイス毎に Cert 必須 </li></ul>
  173. 173. ん?1.0?
  174. 174. Smart Energy 2.0 大人の事情により、 ZigBee を使いません
  175. 175. 7. XBeeを使ってマジメにZigBeeする
  176. 176. XBee <ul><li>在りし日のMaxStream社が作ったモジュール
  177. 177. 現在Digi社により日々グレードアップ
  178. 178. MAKERに人気がある </li><ul><li>シリアルで簡単接続
  179. 179. ATモードとAPIモードがあるので、初心者から上級者まで使い易い </li></ul><li>あまり知られていないがEmber EM250の開発キットとして使える </li></ul>
  180. 180. XBeeでできること <ul><li>APS層を使った通信 </li><ul><li>Endpointを指定したりZCLを使ったり </li></ul><li>Standard Security
  181. 181. Smart Energy製品開発 </li><ul><li>ただし特殊ファーム使用、これに限りHigh Security </li></ul></ul>
  182. 182. XBeeでできないこと <ul><li>Group Addressing
  183. 183. Home Automation製品開発 </li><ul><li>Group Addressingができないので </li></ul><li>デバイス間のLink Key </li></ul>
  184. 184. XBeeでできなくはないこと <ul><li>Binding </li><ul><li>Binding Tableを自分で管理が必要
  185. 185. 昔のファームウェアはサポートしてた </li></ul><li>間接アドレス指定 </li><ul><li>XBeeは送信時にIEEE Addressの使用を強制される
  186. 186. 自前でAddress Tableを用意が必要 </li></ul><li>各種ZDOコマンド </li><ul><li>動いたり動かなかったり... </li></ul></ul>
  187. 187. XBee Standard Security <ul><li>Securityを有効にすると、基本的にNWK層でセキュアな通信が行われる
  188. 188. しかしデバイスが最初に参加する時には平文でNetwork Keyを送るためあまりよろしくない
  189. 189. そこでTrust Center Link Keyを使ってNetwork Keyをセキュアに送る必要がある </li></ul>
  190. 190. XBee Standard Security Trust Center Joining Device 参加したいんだが はい、このNetwork Key使ってね☆ “classnominnaniwanaishodayo” Without Pre-configured TC Link Key Trust Center Joining Device 参加したいんだが はい、このNetwork Key使ってね☆ “xxxxxxxxxxxxxxxxxxxxxxxxxxxxx” Witt Pre-configured TC Link Key
  191. 191. XBee APSDE <ul><li>Explicit Addressing ZigBee Command Frame
  192. 192. ZigBee Explicit Rx Indicator
  193. 193. EOオプション </li></ul>
  194. 194. XBeeのNWK層で遊ぶ <ul><li>Create Source Route
  195. 195. Many-to-One Routing (AR) </li></ul>
  196. 196. Appendix. ZigBee IP
  197. 197. 6LowPAN
  198. 198. ZigBee IP <ul><li>大人の事情により今までのZigBee全部やめます
  199. 199. 大人の事情によりTCP/IP(v6)にします
  200. 200. 6LowPAN使います </li></ul>
  201. 201. Smart Energy 2.0 <ul><li>HTTP+XMLでRESTベースだゾ☆
  202. 202. TCP/IPだからみんな繋がるよ☆
  203. 203. WiFi Allianceやその他大勢のお友達と一緒に作ったよ☆ </li></ul>
  204. 204. Control your world... Thanks! Shotaro Uchida

×