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

sonosをMQTTで扱えるようにする

sonosとは

なんかめっちゃいいスピーカーである
image.png

複数台置いて部屋の環境に合わせて音量を調整してくれたり、
Alexaとかgoogleアシスタントが入っていたりする最高なやつなのである。そして色々APIとかが出ててHackもできちゃう。
IoTしやすくするためにMQTTで扱えるようにしちゃいます。

サーバーを立てる

本来ならばdockerとかAWSとか使うのが正しいのですが、面倒なのでローカルに立ててしまいます。

$brew install mosquitto

でmosquittoというmqttプロトコルを扱うための環境をインストールします

sudo nano ~./bash_profile

でbash_profileを開き、以下の記述を追加してパスを通します

export PATH=$PATH:/usr/local/opt/mosquitto/sbin

bash_profileの再読み込みをし

source ~/.bash_profile
$mosquitto
1577197240: mosquitto version 1.6.4 starting
1577197240: Using default config.
1577197240: Opening ipv6 listen socket on port 1883.
1577197240: Opening ipv4 listen socket on port 1883.

サーバーが立ちました!

sonosとmqttサーバーをつなげる

sonos2mqtt
https://github.com/svrooij/sonos2mqtt
これを使います

インストールしてサーバーを指定して起動するだけです。

$sudo npm install -g sonos2mqtt
$sonos2mqtt --mqtt mqtt:/127.0.0.1:1883
$sonos2mqtt

繋がりました!!
スクリーンショット 2019-12-24 23.34.35.png

subscribeしてみる

sonos/status/{部屋の名前}/{購読したいtopic}
をsubscribeしちゃえば色々取得できるみたいです。

/title
/artist
/album
/albumart
/trackUri
/volume
/muted
/volume
/muted
/state

が取得できます

$mosquito_sub -h 127.0.0.1 -t sonos/status/Bedroom/title
{"ts":1577200749792,"name":"Bedroom","val":"雪が降る町 -UC30 若返る勤労 Remastered-"}
{"ts":1577200751754,"name":"Bedroom","val":"星降る夜のクリスマス"}

subscribeできました!!

曲の時刻がほしい・・・・

https://github.com/svrooij/sonos2mqtt/blob/master/src/bridge.js
の中の

function publishCurrentTrack (device, track) 

という関数を見てみると、trackのデータ取得してるからとれんじゃねと思い

publishData(`${config.name}/status/${cleanName(device.Name)}/duration`, track.Duration, device.Name)

を追加してみた

とれた!!!
スクリーンショット 2019-12-25 0.40.21.png

まとめ

mqttサーバーを通すとデバイス通すのが楽なのでこの方式をたてました。
ESPでこれらのトピックをサブスクしたりして色々できるぞ〜!

notitle420
IoTとかプロジェクションマッピングとか農業とか
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
ユーザーは見つかりませんでした