IOTについて(2) JavascriptでのBLEの活用(bluejely)

機械学習技術 人工知能技術 自然言語処理技術 セマンティックウェブ技術 オントロジー技術 検索技術 データベース技術 アルゴリズム デジタルトランスフォーメーション技術 Visualization & UX ワークフロー&サービス ITインフラ技術 確率的生成モデル 時系列データ解析技術 ストリームデータ制御技術 IOT&センサー技術 コンピュータのハードウェア 本ブログのナビ

IOTについて(2) JavascriptでのBLEの活用(bluejely)

前回に続き、今回は実際のBLEの通信について述べてみたい。まずは最もシンプルなものとして、bluejellyというjavascriptのライブラリを利用してBLEと通信してみる。

bluejellyはWeb Bluetooth APIというlavascriptのライブラリのラッパーで、htmlファイルとbluejelly.jsとstyle.cssの3つのファイルだけで動作し、htmlファイルを書くことで様々なBLEとの接続が可能になるものとなる。例えばサンプルの中で最もシンプルな外部のBLEデバイスをscanするコードは以下のようになる。(bluejelly.jsのサンプルコードの抜粋)

<!doctype html>
<!--Copyright 2017-2020 JellyWare Inc. All Rights Reserved.-->
<html>
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="description" content="BlueJelly">
    <meta name="viewport" content="width=640, maximum-scale=1.0, user-scalable=yes">
    <title>BlueJelly</title>
    <link href="https://fonts.googleapis.com/css?family=Lato:100,300,400,700,900" rel="stylesheet" type="text/css">
    <link rel="stylesheet" href="style.css">
    <script type="text/javascript" src="bluejelly.js"></script>   
<h1></h1>
<div class="container">
    <div class="title margin">
        <p id="title">BlueJelly Sample</p>
        <p id="subtitle">Hello, BLE</p>
    </div>
    <div class="contents margin">
        <button id="scan" class="button">Scan</button>
        <hr>
        <div id="device_name"> </div>
    </div>
</div>
<script>
//--------------------------------------------------
//Global変数
//--------------------------------------------------
//BlueJellyのインスタンス生成
const ble = new BlueJelly();
//--------------------------------------------------
//ロード時の処理
//--------------------------------------------------
window.onload = function () {
  //UUIDの設定
  ble.setUUID("UUID1",   "00000000-0000-0000-0000-000000000000", "00000000-0000-0000-0000-000000000000");
}
//--------------------------------------------------
//Scan後の処理
//--------------------------------------------------
ble.onScan = function (deviceName) {
  document.getElementById('device_name').innerHTML = deviceName;
}

//-------------------------------------------------
//ボタンが押された時のイベント登録
//--------------------------------------------------
document.getElementById('scan').addEventListener('click', function() {
      ble.scan('UUID1');
});
</script>
</body>
</html>

このhtmlをブラウザで開けば動作する。ブラウザに「scan」のボタンが現れ、それを押すと周囲にあるBluetoothデバイスを検知して表示する。ただしブラウザのバージョンより動作するものとしないものがあり、macのSAFARI最新版で動作せず、chromeでは動作を確認した。このコードの中でBLEとのやり取りの部分はble.scanの関数くらいで、残りはほぼ表示に関するものとなる非常にシンプルなものとなる。

もう少しフレキシビリティのあるライブラリとしてはnode上で動作するnobleがある。次回はそれらを紹介したい。

コメント

  1. […] 前回はBLEとの接続のライブリの中で、最もシンプルに構築できるbluejelly.hsについて紹介した。今回はこれまで述べたサーバーサイドのアプリケーションと組み合わせることが可能なnode.js上で動作するnobleについて紹介したい。 […]

  2. […] 次回は具体的な通信のやりとりをHTMLとJavascriptを使って行う例を示す。 […]

  3. […] 機械学習技術サマリー 確率的生成モデルサマリー 時系列データ解析技術サマリー ストリームデータ制御技術サマリー 人工知能技術サマリー デジタルトランスフォーメーション技術サマリー センサー情報の活用はIOT技術の中心的な要素となる。センサーのデータとしては様々なものがあるがここでは1次元の時間的に変化する情報を対象として述べる。 IOTのアプローチとしては、特定の測定対象に対して個別にセンサーを設定し、その測定対象の特性を詳細に解析するタイプののものと、「異常検知へのスパースモデルの適用」にも述べられているように複数のセンサーを複数の対象に向けて設置し、得られたデータの中から特定のデータを選択して、特定の対象に対して異常検知を行う等の判定を実施するものに分けられる。 前者のアプローチの基本的なステップとしては下図で示すように、まず対象となる自然現象(アナログ情報)があり、それらをセンサーデバイスで観察して情報を取得し、「一次元データ(音声)からの特徴量の抽出」にて述べているように、A/D変換と対象とする自然現象の特性に合わせたウィンドウを設定して特徴量を抽出し、さらに「時系列データの統計的分析」に述べているような統計手法等を行ってノイズを除去する。それらのデータを「隠れマルコフモデルの一次元データへの適用」や「動的計画法の一次元データへの適用」に述べられているように教師データから生成された標準データとの類似性を判定する。 さらに「データストリーム(時系列データ)の機械学習とシステムアーキテクチャ」に述べられているように、それらの判定されたデータをさらにオントロジー等のデータと組み合わせてリアルタイムの推論を行なわせたり、「グローバルマッチングでのsimilarity(類似性)(5)確率的アプローチ」に述べによあな確率的な推論(マルコフロジックネットワーク)を行うこともできる。 これらのアプローチにより、「プラントエンジニアリングオントロジーISO15926」や「故障リスク解析とオントロジーについて(FEMA、HAZID)」、「企業内データへのオントロジーの適用」に述べられているようなプラント、故障解析、エンタープライズの知識表現(オントロジー)と組み合わせることで、インダストリー4.0、スマートシティ、スマートビルディング等のリアルタイムのセンサーアプリケーションを構築することができる。 また、センサーの物理的な配置は「センサ配置の最適化に用いられる劣モジュラ最適化」で述べられているような離散データの最適化手法を用いて最適化するとこができる。 本ブログでは以下の項目について述べる。 […]

  4. […] IOTについて(2) JavascriptでのBLEの活用(bluejely) […]

タイトルとURLをコピーしました