firefox os for embedded system

31
関東 Firefox OS 勉強会 9th 組み込み向けの Firefox OS Web API

Upload: honma-masashi

Post on 18-Jul-2015

1.119 views

Category:

Technology


2 download

TRANSCRIPT

関東 Firefox OS 勉強会 9th

組み込み向けの Firefox OS と Web API

2/31

自己紹介

Twitter: @masap 職業: 組み込みプログラマ(主に Wi-Fi)

3/31

目次

WoTとは WoT における Firefox OS のポジション Fireox OS に Web API を追加する Web API の標準化

4/31

WoT とは

5/31

おさらい

今日のタイトルは「攻めるぞ WoT!」 まず、そもそも WoT って何?を、おさらい。

6/31

IoT (Internet of Things)

様々なモノをインターネットに接続 クラウド上のコンピュータで

情報を集計 デバイスの制御

クラウド

モノ

新宿区で交通事故発生信号、ディジタル標識

の制御

7/31

WoT (Web of Things)

Web = HTTP ? IoT = IP、Web = HTTP → 大差ない

アプリ

HTTP

IP

モノ

アプリ

モノ

IP

IoT WoT

8/31

WoT (Web of Things)

Web = ブラウザ? 全て JavaScript で書けるようになる

ブラウザ

HTTP

IP

モノ

WoT

アプリアプリ

IP

モノ

IoT

CC/Java

JavaScript

9/31

プラットフォームとしてのブラウザ

Web = ブラウザの方がしっくりくる モノへのアクセスやネットワーク接続もブラウザ経由で

行う モノの制御もHTTPもJavaScriptでできる IoTの場合はモノの制御はC言語等で行う必要がある

⇒ブラウザ自体がプラットフォームになる これが WoT ではないか

10/31

WoT における Firefox OS のポジション

11/31

全てのモノにブラウザが必要?

Smart Endpoint vs Dumb Endpoint IoTにおいて議論になる問題

クラウドにつながる「モノ」は優秀であるべきか?

Smart と Dumb の両極で考えるのではなく中間層を設 けてはどうか ⇒ フォグコンピューティング

Smart Endpoint Dumb Endpoint

単純な動作しかできない - 取得したデータを上に伝える - 指示された動作を行う

複雑な動作ができる - データの集計/分析結果を上に伝える - 自律動作ができる

12/31

フォグコンピューティングとは

クラウド層とモノ層の間にフォグ層を置く

クラウド

モノ

クラウド

モノ

フォグ

データ受信サーバ、データベース、統計分析サーバ等

温度、加速度、放射線等各種センサークラウド

コンピューティングフォグ

コンピューティング

データの集計、フォーマット変換等

13/31

フォグ層の例

クラウド

モノ

フォグ

AI により最適な都市計画を提案

フォグ

モノ

新宿区で交通事故発生信号、ディジタル標識

の制御

近隣地区への通知事故統計情報

14/31

フォグコンピューティング製品

Cisco フォグコンピューティングはそもそも Cisco が提唱 Cisco IOx というフォグ開発プラットフォームがある 高価なため世界的な大企業以外は導入が困難

15/31

Firefox OS でフォグ

Firefox OS Firefox OS でフォグという手もあるのでは?

Chrome、Safari、IE と比較してハードウェアにアクセスするWeb API が最も充実しているため

16/31

フォグのために必要なもの

Firefox OS からのハードウェア制御が必要 Firefox OS は全てが Web

Android の NDK のような仕組みは無い ネイティブ言語は使用できない

JavaScript でハードウェアを制御しなければならない

17/31

Web からモノを制御する方法 その1

ネットワーク経由で制御 HTTP, nodejs, WebSocket, WebRTC こちらは既にできている

センサーFirefox OS

ネットワーク

18/31

Web からモノを制御する方法 その2

ローカルで制御 ネットワークを介さず制御 この方法はまだできない ⇒ 無いなら作る

⇒Web API 新設

センサー

直接接続Firefox OS

19/31

Fireox OS に Web API を追加する

20/31

Web API とは

二種類のWeb API Web 上のサービスとして提供

Twitter API、Youtube API、... ブラウザ上のJavaScript API (今日扱うのはこちら)

navigator.getUserMedia, navigator.geolocation, ...

21/31

ハードウェアを制御するWeb API

何を作るのか navigator.getusermedia のように

navigator.hardwareaccessxxx のような API を作る

どうやって新しい Web API を作るのか Firefox を修正する

22/31

Firefox を修正する

Firefox では Gecko が Web API を実装している なので Gecko にコードを追加することで新しい Web API を作

ることができる gecko/dom/geolocation 等

Gecko

Web アプリ

Web API

23/31

必要な Web API は

IoTでよく使うハードウェア 入力側: センサー 出力側: モーター どちらもインターフェイスは GPIO や I2C が多い GPIO 及び I2C を扱う Web API を作れば良い

24/31

GPIO とは

GPIOとは General Purpose Input/Output(汎用入出力)の略。 コンピュータと周辺機器を接続するためのピン。 ピン番号を指定して、 on/off を設定したり、 on/off を読み取ったりできる。

LED やモーターの on/off を制御できる。

25/31

I2C とは

I2Cバスとは シリアル通信のためのバス GPIO では on/off しか制御できないのに対し、値を読

み書きする等、細かく制御できる センサーやモーター等、このバスで接続するモノは多い

26/31

Web GPIO API

Web GPIO API (抜粋) navigator.requestGPIOAccess()

GPIO アクセスオブジェクトを取得する

gpio.ports.get(GPIOピン番号) GPIO ポートオブジェクトを取得する

port.write(value) ポートへの書き込み

port.read() ポートからの値の読み出し

27/31

Web I2C API

Web I2C API (検討中) navigator.requestI2CAccess(デバイス名,アドレス)

I2c デバイスの取得

i2c_device.write/read(レジスタアドレス, 値); レジスタへの書き込み、レジスタの読み取り

例 DRV8830 を用いたモーター制御

var i2c_device =

navigator.requestI2CAccess("/dev/i2c-1", 0x64);

i2c_device.write(0x00, 0xfd);

28/31

Web API の標準化

29/31

標準化

WoT=Gecko だけとは限らない V8 や Trident でも WoT

標準化が必要 Web GPIO は W3C Browsers and Robotics

Community Groupにて標準化検討中

http://www.w3.org/community/browserobo/

30/31

議論の例

Promise vs 戻り値 Promise

長所: 非同期処理ができる 短所: ネストが深くなる

戻り値 長所: ネスト無く書ける 短所: 非同期処理ができない

31/31

以上