はじめに
電子工作のはじめの一歩と言えば「Lチカ」ですね。
ワイヤレススピーカーシステム Sonos でも「Lチカ」を試すことができます。
Sonos One にはステータスライトがついており、このステータスライトの色や点滅で状態を確認することができます。(白色点灯状態が正常です)
ただ、夜中暗い中でステータスライトが点灯していると眩しいことがあるので、Sonos アプリからステータスライトを OFF にすることができます。
プログラムから LED を操作する
Sonos は APIが公開されていますので、プログラムから LED を操作することが可能です。
- getLEDState() →現在の LED の状態を取得します
- setLEDState(desiredState) → LED の状態を変更します
JavaScript (node.js) の node-sonosモジュールを使用してスクリプトで LED を操作してみました。
インストール
node のバージョンを確認します。(nodebrew で node のバージョン管理を行っています。)
$ nodebrew list
v6.14.1
v8.14.0
v9.11.2
v12.14.1
current: v12.14.1
$ node -v
v12.14.1
node-sonos をインストールします。
$ npm install sonos
スクリプトの実行
Sonos の LED のステータスを確認して、On なら Off へ、Off なら On へ変更するスクリプトです。
$ node setLEDState.js
Got current LED state "Off"
Success LED: Off->On
$ node setLEDState.js
Got current LED state "On"
Success LED: On->Off
setLEDState.js
constSonos=require('sonos').Sonosconstsonos=newSonos(process.env.SONOS_HOST||'192.168.13.4',process.env.SONOS_PORT||1400)sonos.getLEDState().then(state=>{console.log('Got current LED state %j',state)if(state=="On"){sonos.setLEDState("Off").then(state=>{console.log('Success LED: On->Off')}).catch(err=>{console.log('Error occurred %j',err)})}if(state=="Off"){sonos.setLEDState("On").then(state=>{console.log('Success LED: Off->On')}).catch(err=>{console.log('Error occurred %j',err)})}}).catch(err=>{console.log('Error occurred %j',err)})