Raspberry Piで今日の月齢と六曜六輝を知らせてくれるにしてみました Google Home + LINE Notify + Node-RED
“Google HomeのIPアドレスが変わったことをLINEで知らせてくれるようにしました LINE Notify + Node-RED“の続きです。
前回のTALKで、久しぶりに”Raspberry Pi“と”Node-RED“ネタを扱ったので、その勢いを借りて、以前から実現してみたかった今日の”六曜六輝“を”LINE”と”Google Home“で知らせてもらう仕組みにトライしてみようと思います。
今回は、自分でロジックを組むのではなく、”旧暦や六曜など日付に関する情報を取得できるAPI“と利用させてもらうことにします。そういう意味では、”Node-RED”でRestfulなアプローチにトライっていう感じになりますね。
今回作成した”Node-RED”フローのプロトタイプです。プロトタイプでは、”LINE”や”Google Home”に渡す文言を作成するまでのプロセスを実行します。左から順に説明しておきます。
フローのスタートポイントは、”inject”ノードです。毎日 7:30にフローを実行するように設定します。
次に”function”ノードを配置しました。
今回使わせてもらうAPIでは、
https://dateinfoapi.appspot.com/v1?date=yyyy-MM-dd
という具合に、日付をエンドポイントに渡す必要があるので、今日の日付を指定された形式に仕立て、後続のノードに送るようにしています。
var dd = new Date();
msg.payload = formatdate(dd);
return msg;
function formatdate(dd) {
return dd.getFullYear()+"-"+(("0"+(dd.getMonth()+1)).slice(-2))+"-"+(("0"+dd.getDate()).slice(-2));
}
次に”http request”ノードを配置しました。このノードが”旧暦や六曜など日付に関する情報を取得できるAPI“を発行する部分です。
直前の”function”ノードから送られてきた日付をAPIの構文にセットしてリクエストしています。レスポンスはJSON形式になるので、”JSONオブジェクト”で出力するよう設定しました。
https://dateinfoapi.appspot.com/v1?date={{payload}}
最後に”function”ノードを配置しました。直前の”http request”ノードから送られてきたAPIのレスポンスから、月齢と六曜六輝を抽出して、”LINE”や”Google Home”に渡す文言を作成しています。
var new_msg;
if (msg.payload.moon_ja === null)
{
new_msg = { payload: ‘今日の六曜六輝は’ + msg.payload.rokuyo + ‘です。’ };
} else {
new_msg = { payload: ‘今日の月齢は’ + msg.payload.moon_ja + ‘、’ + ‘今日の六曜六輝は’ + msg.payload.rokuyo + ‘です。’ };
}
return new_msg;
完成したプロトタイプのフローを”デプロイ”して実行すると、こんな感じの文言が出来上がります。
それでは、プロトタイプを拡張して、”LINE”や”Google Home”で、今日の月齢と六曜六輝を知らせてくれるにしてみましょう。
プロトタイプに通知機能を追加したフローです。
“LINE”の処理は、”node-red-contrib-line-notify“というノードを利用しています。詳しい内容は、以前のTALK (“新しいラズパイ4で動体検知カメラ motion + LINE Notify + Node-RED を試してみる (2)”)をご覧下さい。
”node-red-contrib-line-notify“ノードのプロパティ画面のメッセージ欄は空白にします。こうすることで、直近の”function”ノードから渡されたpayloadの内容を”LINE”に送信することができます。
“Google Home”の処理は、”google-home-notify“ノードというノードを利用しています。詳しい内容は、以前のTALK (“Raspberry Pi + Node-RED + Google Home で明日の天気を定刻にアナウンス”)をご覧下さい。
“google-home-notify”ノードのプロパティ画面では、”Google Home”のIPアドレスを設定するだけです。
フローを”デプロイ”後、指定した時間になると、”LINE”にこんな感じでメッセージが届きます。勿論、”Google Home”で同じ文言を喋ってくれます。ただ、”Google Home”は漢字の読み方が苦手なので、ひらがなとの組み合わせで”Google Home”に伝えた方が良いのかも。
こちらが本稼働したところの様子。iPhoneの待受画面で欲しい情報をコンパクトに見れるのがいいよね。
|
|
|
ホームページ “THE POOH FILES”にも是非お立ち寄り下さい。
“Adobe Stock“でベストショットな写真素材を販売中です。是非ご覧下さい。