obniz BoardをEnOceanに繋げてみた

obniz Boardの初期設定

まずは、obniz BoardのWi-Fi設定をしてください。(下記URL参照)
https://docs.obniz.com/ja/reference/board-1y/quick-start/

Wi-Fiの設定ができると、obniz Boardの画面にQRコードとobnizIDが表示されます。
この画面になれが設定は完了です。

obnizプログラムの変更

初めに、obniz Boardの画面に表示されているQRコードを読み取ると、下図のようにプログラムの中身を開くことができます。

ここで変更することも可能です。

次に遠隔からの変更です。これにはクラウドの登録が必要になります。
obnizにアカウント登録をしてください(下記URL)

https://console.obniz.com/ja/users/signin

ログインすると、下図のような画面になりますので、デバイスの登録・管理をクリックします。

デバイスを追加をクリックし、デバイス登録を行います。

今回はobniz Boardを選択し、Wi-Fiは「準備できました」を選択します。

するとobnizIDを入力と出てきますので、ここでデバイスに表示されているIDを打ちます。

あとは次へ、確認、完了と進んでいただくと登録が完了します。登録が完了すると、オンライン状態や、繋がっているWi-Fiなどが見れるようになります。

右側タブの開発をクリックし、HTMLプログラムをクリックします。

すると、obnizIDを聞かれるので入力し開くをクリックします。すると、携帯で見たプログラムと同じプログラムが出てきます。

右側のobniz Boardをクリックし、下の方に行くと「動かしてみよう」がありますのでクリックします。

この中にサンプルプログラムがありますので、ぜひ試してみてください。

EnOceanとの接続

まずは下記のコードをコピーしてください。

<html>
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
    <script src="https://obniz.io/js/jquery-3.2.1.min.js"></script>
    <script src="https://unpkg.com/obniz@3.7.0/obniz.js" crossorigin="anonymous"></script>
  </head>
  <body>
 
    <!-- <div id="obniz-debug"></div> -->
 
    <div class="container">
      <div>
        <h2>EnOcean STM 550B マルチセンサーモジュール(BLE)</h2>
      </div>
      <div>
        <h3>[raw advertise data]</h3>
        <div id="valueSTM550B">--</div>
        <h3>[raw advertise data 16進数]</h3>
        <div id="valueSTM550B2">--</div>
        <h3>[Temperature]</h3>
        <div id="temperature">--</div>
        <h3>[Illumination_Sensor]</h3>
        <div id="illumination">--</div>
        <h3>[Humidity]</h3>
        <div id="humidity">--</div>
        <h3>[Magnet]</h3>
        <div id="magnet">--</div>
        <h3>[Battery]</h3>
        <div id="battery">--</div>
      </div>
    </div>
 
    <script>
 
let loopCount = 0;
 
const settings = {
  duration: null
}
 
const obniz = new Obniz("4093-0779");
obniz.onconnect = async function () {
 
  obniz.display.print("obniz BLE");
  obniz.display.print(" ↑ ↓");
  obniz.display.print("EnOcean");
 
  await obniz.ble.initWait();
 
  obniz.ble.scan.onfind = async function(peripheral){
    if( peripheral.address === "e500100020ed"){  // 取得したいEnOcean STM 550B マルチセンサーモジュールのアドレスを記述
      console.log("EnOcean STM 550B connect!" + new Date().getTime());
 
      // 通常のアドバタイズデータ
      const adv_data = peripheral.adv_data;
       
      // 読解用。アドバタイズデータを16進法で表記することで Manufacturer ID の 0x03DA といった値が分かりやすくなります。
      const adv_data16 = adv_data.map(
        function(value){
          return value.toString(16);
        }
      );
 
      $('#valueSTM550B').text(adv_data.toString());
      $('#valueSTM550B2').text(adv_data16.toString());
 
      // 温度センサー
      const temperature = ( adv_data[9] + adv_data[10] * 256 ) * 0.01;
      $('#temperature').text(temperature);
      // 湿度センサー
      const humidity = adv_data[12] * 0.5;
      $('#humidity').text(humidity);
      // 照度センサー
      const illumination = adv_data[14] + adv_data[15] * 256;
      $('#illumination').text(illumination+"lux");
      // 磁気センサー
      const magnet = adv_data[22];
      if( magnet === 1 ){
        $('#magnet').text("OPEN");
      } else if( magnet === 2 ){
        $('#magnet').text("CLOSE");
      } 

      // バッテリー容量
      const battery = adv_data[24] * 0.5;
      $('#battery').text(battery);

      // データを受信するたびに再スキャン
      // 再スキャンは endWait を走らせると onfinish が発動するのでそこで再開させる
      await obniz.ble.scan.clearAdvertisementFilter();
      await obniz.ble.scan.endWait();
    }
  };
 
  obniz.ble.scan.onfinish = async function(peripherals, error){
    loopCount++;
    console.log("scan timeout! [" + loopCount + "]");
    // 再スキャンは endWait を走らせると onfinish が発動するのでそこで再開させる
    await obniz.ble.scan.startWait(settings);
  };
 
  // 初回スタート
  await obniz.ble.scan.startWait(settings);
}
    </script>
  </body>
</html>

こちらがEnOceanとの接続コードになります。
変更点は1カ所あり、
if( peripheral.address === “e500100020ed”){ // 取得したいEnOcean STM 550B マルチセンサーモジュールのアドレスを記述
の部分のアドレスを変更してください。アドレスはEnOceanの裏にあるIDという部分になります。
さらに、obnizではBluetoothの接続になるため、EnOceanもBluetoothのものを使用してください。

ここまで設定出来たら、最後に実行を押します。

初めはEnOceanの情報が入っていませんが、しばらくすると情報が更新されます。