Sonosとは?
米国サンタバーバラ生まれのワイヤレスホームサウンドシステムです。
https://www.sonos.com/ja-jp/home
Sonos One?
Alexa / Google両対応の高音質スマートスピーカーです。
Sonos App?
iPhoneアプリとMacデスクトップアプリを試してみました。どちらも迷うことなく利用できました。同じネットワークにつながっていれば、どのデバイスからも操作できるのは良いですね。接続方式にBluetoothではなくWi-Fiを使用している利点ですね。
Sonos公式(開発者向け情報)
Sonos Developer
https://developer.sonos.com/build/
Sonos Labs
https://musicpartners.sonos.com/?q=docs
Node-REDから操作する
同じネットワークにつながっていればどのデバイスからも操作できるということは、プログラムからも操作できるということです。Node-REDから操作するために「メニュー」→「パレット管理」→「ノードを追加」から「sonos」で検索するといくつかリストアップされます。
- node-red-contrib-sonos
https://www.npmjs.com/package/node-red-contrib-sonos
→最近、queue functionが更新されていますが、他のほとんどは2年以上更新されていません。
node-sonos (https://github.com/bencevans/node-sonos) を利用しています。 - node-red-contrib-better-sonos
https://www.npmjs.com/package/node-red-contrib-better-sonos
→1年以上更新されていません。 - node-red-contrib-sonos-plus
https://www.npmjs.com/package/node-red-contrib-sonos-plus
→node-red-contrib-better-sonosが1年以上更新されていないので、コードを利用して新しくパッケージを作成したとのことです。 - node-red-contrib-sonos-http-api
https://www.npmjs.com/package/node-red-contrib-sonos-http-api
→HTTP APIブリッジツール。
Sonosと同じネットワークにいなくてもHTTP API経由でSonosを操作できるのが特徴です。
別途、node-sonos-http-api (https://github.com/jishi/node-sonos-http-api) が必要です。 - node-red-contrib-sonospollytts
https://www.npmjs.com/package/node-red-contrib-sonospollytts
→Amazon Polly(テキスト読み上げサービス)を利用してSonosから音声を再生します。
node-red-contrib-better-sonos
サンプルフローが掲載されているので、「メニュー」→「読み込み」→「クリップボード」から貼り付けます。Dashboard機能を利用しているので、ブラウザから操作します。
https://proknx.com/nodered/sound-ui-sonos/
node-red-contrib-sonos-plus
WiKiのページにサンプルフローが掲載されているので、「メニュー」→「読み込み」→「クリップボード」から貼り付けて試してみると理解し易いです。
https://github.com/hklages/node-red-contrib-sonos-plus/wiki/A.-Nodes-and-Commands
https://github.com/hklages/node-red-contrib-sonos-plus/wiki/B.-How-To-and-Examples
Config Nodeの設定は新規に追加する際にSonosのSerial NumberとIPアドレスの情報が必要ですが、虫眼鏡ボタンを押して暫く待つと、同じネットワーク内に存在するSonosをディスカバリーしてくれるので、目的のSonos情報を選択します。
https://github.com/hklages/node-red-contrib-sonos-plus/wiki/C.-SONOS-Concept
現在再生している音楽を一時中断して割り込み再生できるNotificationの機能が面白いと思いました。
node-red-contrib-sonospollytts
https://aws.amazon.com/jp/polly/
AWSアカウントでログインし、IAM Management ConsoleでAmazonPollyFullAccessポリシーを適用したユーザーを登録します。登録した際に作成されるアクセスキーとシークレットキーをsonospollyttyノードのプロパティで設定します。Pollyの日本語音声は女性(Mizuki)と男性(Takumi)から選べますが、ノードのプロパティで選択できるのは女性(Mizuki)のみでした。
コマンドラインツール
- node-sonos - node.jsモジュール
https://github.com/bencevans/node-sonos - sonos-cli - node.jsモジュール
https://github.com/bencevans/sonos-cli - Sonos HTTP API - シンプルなHTTP APIを提供
https://github.com/jishi/node-sonos-http-api - SoCo(Sonos Controller) - Pythonライブラリ
http://python-soco.com/
https://github.com/labero/SoCo-Tk
その他のツール
IoTでおなじみのMQTT経由でSonosをコントロールするブリッジツールやブラウザからSonosをコントロールするツールもありました。
- sonos2mqtt
https://github.com/svrooij/sonos2mqtt
→node-sonosを利用している - sonos-web
https://github.com/Villarrealized/sonos-web
→node-sonosを利用している - zenmusic
SlackからSonosを操作するツール
https://github.com/htilly/zenmusic - gladys-sonos
Gladys (open-source home assistant)のSonosプラグイン
https://github.com/GladysAssistant/gladys-sonos
sonos2mqtt
# sonos2mqttモジュールのインストール
$ npm install -g sonos2mqtt
# 起動
# 例. mqtt://<ユーザー名>:<パスワード>@broker.shiftr.io
$ sonos2mqtt -v debug -u <MQTTブローカーサーバ>
https://github.com/svrooij/sonos2mqtt#usage
使用方法はトピックで制御する仕様のようです。(メッセージペイロードは空でOK)
sonos-web
# sonos-web-cliモジュールのインストール
$ npm install -g sonos-web-cli
# インストール(インストール後に起動される)
$ sonos-web install
Installing Sonos Web
✔ downloading installation files
✔ installing front-end dependencies
✔ build front-end application
✔ install back-end dependencies
✔ cleaning up installation files
✔ Starting Sonos Web
success Open a web browser on this computer to http://localhost:5050 to start!
You can access Sonos Web network-wide by going to http://192.168.13.4:5050
# 起動
$ sonos-web start
✔ Starting Sonos Web
success Open a web browser on this computer to http://localhost:5050 to start!
You can access Sonos Web network-wide by going to http://192.168.13.4:5050
# 停止
$ sonos-web stop
✔ Stopping Sonos Web
ブラウザから http://localhost:5050 へアクセスします。
Arduino から Sonos を操作するライブラリ
-
ESP8266 用ライブラリ
https://github.com/antonmeyer/sonos -
ESP8266 用ライブラリをフォークした ESP32 用ライブラリ、M5Stack 用サンプルコード
https://github.com/joeybab3/sonos
- Wemos D1 mini(ESP8266)からMQTT経由(node-redを使用)でSonosを操作する事例
https://github.com/ebartz/esp8266-rfid-sonos
まとめ
Sonosとの音楽ライフがさらに充実すれば幸いです。