aoiro’s blog

勉強を兼ねて記事を書きます

DiskStationを使って寝る時間になったらGoogle Homeから音楽を流す

Google Homeでお家ハックをしたいが、ラズパイ買うほどじゃないなーということで、DiskStationを使って遊ぶ(どうせ1ヶ月したらラズパイ買ってそうだけど)


最近朝が早いので、7.5時間睡眠確保のために22時位には寝る準備をしないといけない。 ということで、22時になったら音楽を流してお布団への移動を促す

準備

  • Diskstaionにsshで入れるようにしておく
    • f:id:aoirohn:20180422170621p:plain
  • DiskStationにNode.js v8を入れる
    • DiskStationのパッケージマネージャから、Node.js v8をインストールする
    • f:id:aoirohn:20180422170729p:plain
  • DiskStationにWeb Stationを入れる
    • f:id:aoirohn:20180422170755p:plain

流す音楽をWebサーバーで公開する

今回はドヴォルザーク交響曲第9番ホ短調新世界より」 Op.95 B.178を流す。「遠き山に日は落ちて」で有名である。*1

著作権切れ音楽なので下のサイトでダウンロードできる。ここではとりあえず一番上のカラヤンのやつを使う*2

ドヴォルザーク 交響曲第9番ホ短調「新世界より」 Op.95 B.178 - クラシック音楽mp3無料ダウンロード 著作権切れ、パブリックドメインの歴史的音源

「遠き山に日は落ちて」のメロディは02.mp3の部分。適当にFromTheNewWorld-Largo.mp3とかに名前を変えてwebディレクトリに入れておく。 f:id:aoirohn:20180422170924p:plain

google-home-notifierを入れる

ネットに大量にある記事を参考にNASgoogle-home-notifierを入れようとしたら詰まった。どうもDiskStationにはmakeコマンドがないのでgoogle-home-notifierが依存しているmdnsモジュールがインストール出来ないらしい。

なので、下の記事を参考にmdns-jsを使ったgoogle-home-notifierを入れる

qiita.com

音楽再生スクリプトを書く

google-home-notifier.jsの編集ができたら、音楽を鳴らすスクリプトを書く。

// main.js

const googlehome = require('../google-home-notifier');
const language = 'ja';

googlehome.device('Google-Home', language);

googlehome.play('http://192.168.0.5/music/FromTheNewWorld-Largo.mp3', function (res) {
    console.log(res);
});

音楽ファイルのurlのIPアドレス部分は適切に変更すること。 加えて、DiskStationで実行するためのshell scriptを作る

# trigger.sh

cd `dirname $0`
node main.js

作ったら、適当にディレクトリに入れる。 今回は下のようなディレクトリ構成にしている

  • google_home
    • google-home-notifier
    • sleep_inducer
      • main.js
      • trigger.sh

最後に、sshでDiskStationに繋いでtrigger.shに実行権限を付与しておく

ssh aoiro.hn@192.168.0.5

cd google_home/sleep_inducer
chmod 775 trigger.sh

DiskStationで繰り返しタスクを設定

DiskStationのコントロールパネル→タスクスケジューラーから繰り返しタスクを設定する

  • [全般]タブのユーザを自分にする
  • [スケジュール]タブで流したい時間を設定
  • [タスク設定]のユーザ指定のスクリプト欄に、trigger.shのパスを絶対パスで指定する
    • /var/services/homes/aoiro.hn/google_home/sleep_inducer/trigger.sh
    • f:id:aoirohn:20180422171305p:plain

完成!


そこそこ高性能なNASがあればラズパイ使わなくてもある程度Google Homeで遊べる。 とは言えAmazon Dash Buttonで遊びたいと思っているのでそのうちラズパイ買う。

*1:この前同期と話したら「新世界より」も「遠き山に日は落ちて」も通じなくて悲しかった

*2:クラシックに詳しいわけではないので何がどうとか分からない