ファームウェアエンジニアの井田です。今回はファームウェアから少し離れて Node-RED でNature Cloud APIを触るお話です。
背景
Remo nanoの発売の少し前から、NatureではDiscord上で開発者コミュニティを運営しています。 このDiscordサーバーでは、NatureのAPIサービスや今はやりの Matter に関する様々な話をしていますが、この中で Node-RED からNature Cloud APIにアクセスして家電の制御を行いたい という話題がありました。
私自身、Node-REDというものの存在はいくつかのIT系の勉強会・展示会などで見かけて、「データフロー型のビジュアルプログラミング環境」くらいの認識で知ってはいたのですが、毎度触ろうとおもって早数年経つという状態でした。
そこで、これを期にすこし触ってみようということで、さっそくNode-REDを開発用PCにインストールしてNature Cloud APIを使った処理を書いてみることにしました。
環境構築:Node-REDのインストール
普段はNature Remoのファームウェア開発をUbuntu上で行っているため、Node-REDの環境もこの開発用PC上に構築しました。
Node-REDの公式サイト Getting Startedから Run Locally を選ぶと、ローカルのLinux環境上での動かし方の手順が出てきます。
これによると、既に npm
が入っている環境であれば、 npm install --unsafe-perm node-red
を実行するだけで入れられるとありました。
sudo npm install -g --unsafe-perm node-red
公式の手順では上記のように npm
の -g
オプションを付けてシステム全体用にいれる方法になっていましたが、今のところ常時運用するつもりはないので、ローカルに入れて起動しました。
mkdir -p ~/node-red cd ~/node-red npm install --unsafe-perm node-red npx node-red
起動するといくつかのメッセージが表示され、 127.0.0.1:1880
でNode-REDのWebサーバーが起動するのを確認できたので、ブラウザで開きます。
17 Aug 20:13:23 - [info] Welcome to Node-RED =================== 17 Aug 20:13:23 - [info] Node-RED バージョン: v3.0.2 ... 17 Aug 20:13:24 - [info] サーバは http://127.0.0.1:1880/ で実行中です
正常に起動できたようなので、さっそくノードを追加したりして遊んでました。
Node-REDのフローのデータ
本記事で使用しているNode-REDのフローのデータはこちらのリポジトリに置いてありますので、適宜参照してください。
練習:Cloud API経由でアプライアンス一覧を取得する
Nature Cloud API経由で家電を制御するには、 https://api.nature.global/1/appliances
から制御対象のアプライアンスのIDを取得する必要があります。
そこでまずはアプライアンスの一覧の取得をNode-REDからやってみることにします。
まずは Nature Cloud APIの説明ページ に記載のとおり、APIを使用するための OAuth2
のアクセストークンを生成・取得します。
APIのアクセストークンは、 https://home.nature.global/ から行えます。
左下の Generate access token を押すと、画面上部の緑色のブロックが表示され、その中に アクセストークン が表示されます。このアクセストークンはこの画面を閉じると二度と表示されないので、人に見られない場所に保存します。 (忘れたり人に見せてしまったりした場合はRevokeして再生成してください)
次に、Node-REDのフロー編集画面上で http request ノードを置きます。
その後、置いた http requestノードをダブルクリックして編集画面を開き、ノードのプロパティを設定します。
次に、手動でフローを実行するための injectノード を置きます。
ダブルクリックしてinjectノードを編集します。
最後に debugノード を置いて、各ノードの入出力を接続します。
これでアプライアンス一覧を取得する準備が整ったので、フローをデプロイして実行できるようにします。
デプロイが成功すると、injectノードの左側の角丸の四角いボタンが押せるので、押します。
画面右上のメニューからたどって「サイドバーを表示する」を押して、サイドバーを表示します。
表示されたサイドバーで虫のアイコンのボタンを押すと、デバッグタブが表示されます。ここに debugノードに入力された値、すなわちhttp requestノードの実行結果が表示されます。
内容を確認すると、 https://api.nature.global/1/appliances
からのレスポンスであることが分かります。
(なお、図では要素数が 31
になっていますが、一般のユーザーはこんなに多くないと思います)
つづく
ここまででNode-REDのhttp requestノードを設定して、Nature Remo Cloud APIにアクセスできることがわかりました。 次回は取得したアプライアンス情報を使って、照明のon/offをNode-RED上から行ってみようと思います。 つづきはこちら
Nature開発者Community
Natureのプロダクトに関する開発者向けの情報を交換する場として、 Nature開発者コミュニティ をDiscord上に立ち上げています。 今回の話題であるNature Cloud APIに関する話をする apiチャネル もありますので、ご興味がある方はぜひご確認いただければと思います。