アドベントカレンダー 9日目
投稿されないようなので、先ほど作成したも物をご紹介します。
何をするの?
ラズパイを使ってGoogle-Homeに、艦娘たちの声で時報を行なってもらいます。
どうやる?
ラズパイ上のcronを使って、Google-homeからMP3を再生。
前提条件として、Google-Home-Notifierのインストールと
ApacheなどのWebサーバが動いている事が条件となります。
環境
- Raspberry Pi
- Apache (Webサーバとして)
- Node.js
- Google-Home-Notifier
- Node-Cron
- PM2
- FTP (MP3アップロードにあったほうがいい)
- 艦娘たちのボイスMP3
- 録音を頑張って。
ボイスMP3の準備
艦娘の時報MP3ファイルの名前規則を以下としました。
金剛 → kongo_00.mp3 , kongo_01.mp3 ...
名前をローマ字に、その後に時刻を24hで表記、これで起動の際に数字を指定します。
これらをWebサーバが参照できる場所にFTPなどで保存します。
発信スクリプト
Cron用のスクリプトが以下です。
cron.js
require('date-utils');
const googlehome = require('./google-home-notifier');
const language = 'ja';
googlehome.device('Google-Home', language);
// 艦娘のリスト現在は4人だけ収集しました。
var kanmusu = [
'kongo_',
'fubuki_',
'akatsuki_',
'hiei_',
'iku_'];
let cron = require('node-cron');
cron.schedule('0 0 18-23,0,1 * * *', () => {
var dt = new Date();
var H_word = dt.toFormat("HH24"); //24時間表記で取得
var date_word = dt.toFormat("DD"); //いずれは日によって振り分けしたい。
time_word = H_word;
date_word = "4"; //現在は伊19限定、0にすれば金剛、1にすれば吹雪となる。
//URLの組み立て。
sp_text='http://192.168.1.207/~pi/jiho/'+ kanmusu[date_word] + time_word + '.mp3'
//アクション
googlehome.play(sp_text, function(res) {
console.log(res);
});
});
Cronの時間表記で喋らせたい時間も変更可能。
応用編として艦これだけでなく、定期連絡のアナウンスに使えるかも。
この後、PM2でスタートすればデーモン化して常駐する。
pm2 start cron.js