Help us understand the problem. What is going on with this article?

Node-RED Sonos ノードについて調べてみた。

はじめに

こんにちは。野良ハックチーム ざっきー と申します。
この記事は 2019 年 11 月 29 日に開催された「Node-RED UG 勉強会 2019 年末 LT パーティ」で LT 登壇した Node-RED Sonos ノードに関する詳細メモです。

※ LT 登壇資料はこちら

Sonos とは?

米国サンタバーバラ生まれのワイヤレスホームサウンドシステムです。
https://www.sonos.com/ja-jp/home

Wi-Fi (有線接続も可) でネットワークに接続され、自由な組み合わせが可能なスピーカーシステムです。
スクリーンショット 2019-12-12 15.25.12.png

UPnP 対応で API が公開されていますので、ハックすることが可能です。
Sonos Labs
スクリーンショット 2019-12-12 15.25.30.png

Sonos ノードの追加

※ 画面は enebular editor を使用して操作方法の説明をしますが、Node-RED での操作も同様です。

Node-RED の「メニュー」から「パレットの管理」を選択すると「ユーザ設定」画面が表示される。
スクリーンショット 2019-12-14 23.00.41.png
スクリーンショット 2019-12-14 23.01.05.png

「ノードを追加」タブを選択し、検索フォームで「Sonos」と入力して検索するといくつかリストアップされます。

node-red-contrib-sonos

リストアップされた中から「ノードを追加」を選択するとパレットに新しいノードが追加されます。
スクリーンショット 2019-12-15 10.32.36 2.png
スクリーンショット 2019-12-15 10.33.21.png
スクリーンショット 2019-12-15 9.54.34.png
ホームページにサンプルフローが掲載されていますので、ホームページからフローをコピーして Node-RED の「メニュー」→「読み込み」→「クリップボード」に貼り付けてフローを追加します。

スクリーンショット 2019-12-15 10.46.56.png
スクリーンショット 2019-12-15 10.18.49.png
スクリーンショット 2019-12-15 10.48.14.png
スクリーンショット 2019-12-15 10.50.16.png
スクリーンショット 2019-12-15 10.19.29.png
次に Control Sonos ノードの設定を行います。Control Sonos ノードをダブルクリックして「Control ノードを編集」メニューを表示します。
スクリーンショット 2019-12-15 11.28.55 2.png
スクリーンショット 2019-12-15 11.29.28.png
「SONOS Play Node」の編集ボタンを押して Sonos システムの設定を追加します。
スクリーンショット 2019-12-15 11.29.28 2.png
「sonos-config ノードを編集」メニューでネットワークに接続された Sonos システムの IP アドレスを入力して更新ボタンを押します。
スクリーンショット 2019-12-15 14.42.38.png
inject ノードの左側のボタンを押して Sonos を操作します。
スクリーンショット 2019-12-15 14.47.59.png

node-red-contrib-sonos-http-api

まず、node-sonos-http-api を導入する必要があります。コマンドラインで行います。

$ git clone https://github.com/jishi/node-sonos-http-api
$ cd node-sonos-http-api
$ npm install --production
$ npm start

ブラウザから http://localhost:5005 へアクセスして下記の画面が表示されれば正常です。
スクリーンショット 2019-12-15 15.37.05.png
次に Node-RED の「メニュー」から「パレットの管理」→「ノードを追加」タブ→検索フォームで「Sonos」と入力して検索します。リストアップされた中から「ノードを追加」を選択するとパレットに新しいノードが追加されます。
スクリーンショット 2019-12-15 10.32.36 2.png
スクリーンショット 2019-12-15 15.41.14.png
ホームページからサンプルフローをコピーして Node-RED の「メニュー」→「読み込み」→「クリップボード」に貼り付けてフローを追加します。
スクリーンショット 2019-12-15 15.56.42.png
Control Sonos ノードの設定を行います。Control Sonos ノードをダブルクリックして「Control ノードを編集」メニューを表示します。「Sonos Config Node」の編集ボタンを押して Sonos システムの設定を変更します。
スクリーンショット 2019-12-15 15.56.42 2.png
スクリーンショット 2019-12-15 15.57.48 2.png
「sonos-http-api-config ノードを編集」メニューで「「IP Address / hostname of SONOS HTTP Api」項目に http://localhost:5005 を入力して更新ボタンを押します。
スクリーンショット 2019-12-15 16.11.33.png
「Player」項目に「ルーム名」を入力して完了ボタンを押します。
「ルーム名」は node-sonos-http-api のブラウザ表示画面から確認することができます。
「Info」欄の「GET /zones」項目をクリックして「roomName」項目の値を確認します。
68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f37323437392f37396133346536302d616161332d356639642d396332342d6139393263656264666162342e706e67 2.png
スクリーンショット 2019-12-15 16.00.16.png
スクリーンショット 2019-12-15 15.57.48 3.png
inject ノードの左側のボタンを押して Sonos を操作します。
スクリーンショット 2019-12-15 15.56.42 2.png

まとめ

Sonos One 1 台でも Node-RED Sonos ノードを試すことができますが、2 台を組み合わせてステレオペアとして設定すると高音質な音楽スピーカーに変身します。
音質は然ることながら、拡張性 (1 台〜複数台 )、柔軟性 (組み合わせ自由) に優れ、オープン (UPnP 対応)、ハッカブル (API 公開) な Sonos を是非試してみてください。
Listen Better!
みなさまにも良き音を!

iotlt
IoT縛りの勉強会です。 毎月イベントを実施しているので是非遊びに来てください! 登壇者を中心にQiitaでも情報発信していきます。 https://iotlt.connpass.com
https://iotlt.connpass.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした