search
LoginSignup
5

More than 1 year has passed since last update.

posted at

updated at

obniz/AzureIoTCentralハンズオン

obnizで取得したデータをIotCentralへ表示してみます

スクリーンショット 2021-07-31 12.13.19.png

アジェンダ

【obnizパート】

  • obnizOSを入れよう
  • node.jsでデータを出してみよう

【IoT Centralパート】

  • azure iot centralにデータを入れてみよう
  • ダッシュボードで可視化してみよう

【もくもくパート】

  • カスタマイズしよう

全体構成

Untitled Diagram (1).png

この記事ではESP32+センサとしてAlgyan6周年基板を使用していきます。

obnizOSを入れよう

obnizOSを使う方は、こちらの記事を参考にEsp32にbnizOSを入れましょう
https://qiita.com/wicket/items/b93c6dd009f76fe5dff0

obnizBoardを使う方はこちらの手順でWiFi設定が必要です。
https://obniz.com/ja/doc/reference/board-1y/quick-start/

node.jsでデータを出してみよう

repl.itを使っていきます(ローカルに環境を作れる人はそれでも大丈夫です)
https://replit.com/
スクリーンショット 2021-07-30 17.01.43.png

サインイン or サインアップし、新規replで登録します
スクリーンショット 2021-07-30 17.02.57.png

エディタがでてくるので、こちらで書いていきます。
スクリーンショット 2021-07-30 17.03.10.png

左側のpackagesを選び、obnizで検索してaddします

スクリーンショット 2021-07-30 17.03.23.png

コマンドが走り、Filesに戻るとpackage.jsonとpackage-lock.jsonができています。
スクリーンショット 2021-07-30 17.11.49.png

obnizのプログラムを書いていきます。

const Obniz = require("obniz");
const obniz = new Obniz("7877-4454");

obniz.onconnect = async ()=>{
    console.log("obniz connected");

    // algyan6周年基板参加者用
    let button = obniz.wired("Button",{signal:35});
    button.onchange = async (pressed)=>{
      const state = pressed ? "none" : "push" ; 
      console.log(`switch changed to ${state}`);
    }


    // obnizBoard参加者用
    // obniz.switch.onchange = async (state) => {
    //   //state = none / push / left / right
    //   console.log(`switch changed to ${state}`);
    // };

};

中央の上部のrunボタンを押して実行し、スイッチを押して見ます。
これでobnizが使えることがわかりました!

スクリーンショット 2021-07-31 12.04.12.png

azure iot centralにデータを入れてみよう

azureにログインし、IoT Centralと検索してメニューに行きます。
スクリーンショット 2021-07-30 17.33.42.png

新規ボタンを押してアプリを作成していきます。
※アカウントの種類によっては(?)、クレジットカード登録が必要です

項目をこちらのように適当に入れます。

スクリーンショット 2021-07-30 17.34.58.png

デプロイ完了まで待ちましょう。
デプロイが終わったらリソースに移動します。

スクリーンショット 2021-07-30 17.35.12.png

この画面ではやることがないので、そのままIoTCentralアプリケーションURLをクリックします。

スクリーンショット 2021-07-30 17.37.12.png

IoT Centralの画面までたどり着きました

スクリーンショット 2021-07-30 17.43.09.png

まず最初はデバイステンプレートを作成します。
デバイステンプレート>新規をクリックしていきます
スクリーンショット 2021-07-30 19.02.06.png

カスタムデバイステンプレートより、obnizDeviceを追加します

スクリーンショット 2021-07-30 19.02.21.png
スクリーンショット 2021-07-30 19.03.14.png

obnizDeviceが出来上がりました

スクリーンショット 2021-07-30 19.04.18.png

カスタムモデルで機能を追加します

switch / Telemetry / state

スクリーンショット 2021-07-30 19.04.28.png

展開ボタンを押したときのパラメーターも忘れずに登録します
スクリーンショット 2021-07-30 19.18.34.png

保存し、その後公開します。保存と公開の2段階あるので気をつけてください

スクリーンショット 2021-07-30 19.06.45.png

デバイスメニューでテンプレートが出てくるので、そこにデバイスを追加します
デバイス>新規よりデバイスを追加します。

スクリーンショット 2021-07-30 19.07.38.png

デバイスIDを控えます(①)※ここでコピーしないとめんどくさい
デバイス名は自由ですが、わかりやすいようにobnizIDにしました

スクリーンショット 2021-07-30 19.08.00.png

デバイスができました。
スクリーンショット 2021-07-30 19.08.09.png

管理>デバイス接続にてIDスコープを控えます(②)
スクリーンショット 2021-07-30 18.21.43.png

SAS-IoT-Devicesをクリックし、主キーを控えます(③)

スクリーンショット 2021-07-30 18.24.22.png

これで必要な情報は揃ったのでプログラムを書いていきます。

repl.itでpackagesでazure-iotcentral-device-clientを追加します。

ちょっと長いので一呼吸おいてお茶でも入れてきましょう🍵

スクリーンショット 2021-07-30 18.27.33.png

プログラムを書きます

const Obniz = require("obniz");

const iotCentral = require('azure-iotcentral-device-client');


const deviceId = '2l5m66k9lsm'; //①

const scopeId = '0ne00354744'; //②

const sasKey = '5EulYy/0jjBeSM/7sDI9h5iQ9TzBwZXd7C+5qvPjqpj/xPAvo+7UGZ9D9/L8PwOtr4DaUUk6ppLblCTbbdupKg==';//③


(async () => {

  const iotc = new iotCentral.IoTCClient(deviceId, scopeId, 'symm_key', sasKey);

  console.log("Connecting to IoT Central...");
  await iotc.connect();
  console.log("Connected");

  const obniz = new Obniz("7877-4454");

  obniz.onconnect = async () => {
    console.log("obniz connected");

    // algyan6周年基板参加者用
    let button = obniz.wired("Button", {signal: 35});
    button.onchange = async (pressed) => {
      const state = pressed ? "none" : "push";
      console.log(`switch changed to ${state}`);
      await iotc.sendTelemetry({
        "switch": state,
      });
    }

    // obnizBoard参加者用
    // obniz.switch.onchange = async (state) => {
    //   //state = none / push / left / right
    //   console.log(`switch changed to ${state}`);
    //   await iotc.sendTelemetry({
    //     "switch": state,
    //   });
    // };

  };
})();

送るとデバイス>生データにデータが溜まっていることがわかります。

スクリーンショット 2021-07-30 19.28.14.png

ダッシュボードで可視化してみよう

それではこれを可視化していきましょう

ダッシュボードへ行きます

スクリーンショット 2021-07-30 17.43.09.png

編集を押して、「最後の既知の値」を選んで下部のタイルの追加を押すと、右側に新しい枠が出てきます。

スクリーンショット 2021-07-30 19.28.50.png

設定ボタンを押してプロパティを設定します。

スクリーンショット 2021-07-30 19.28.43.png

保存後、プログラムを実行させて、表示させてみましょう。
30秒に1度更新?ぐらいです。

ダッシュボードをきれいにしたり、
状態の履歴にしてみたり、
状態グラフにしてみたりしてみましょう
スクリーンショット 2021-07-30 19.32.51.png

<モクモク>

  • stateだけだと悲しいので、数字も追加してみましょう。
    • algyan6周年基板の人は照度が取れます
   obniz.ad34.start( async (voltage)=>{
      console.log(`voltage changed to ${voltage}`);
      await iotc.sendTelemetry({
        "illuminance": voltage,
      });
    });
  • かっこいいダッシュボードを作ってみましょう
  • 分析を使ってみましょう
  • ルールをついかしてみましょう
  • コマンドを使ってブザーを鳴らしたり、ディスプレイに文字を表示したりしてみましょう

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
5