2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

obniz/AzureIoTCentralハンズオン

Last updated at Posted at 2021-07-31

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,
      });
    });
  • かっこいいダッシュボードを作ってみましょう
  • 分析を使ってみましょう
  • ルールをついかしてみましょう
  • コマンドを使ってブザーを鳴らしたり、ディスプレイに文字を表示したりしてみましょう
2
5
0

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
  3. You can use dark theme
What you can do with signing up
2
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?