はじめに
こんにちは!エンジニアのまるさんかくです。
LaMetricTimeというデジタル時計を買ったので、何かできないかと考えていました。
LaMetricTimeはwebAPIを通して任意のテキストやアイコンを表示・通知することができ、同時に音楽も流すことができます。
良い感じの音楽を流して良い感じのテキストを表示したら部屋内を良い感じの雰囲気にできるんじゃないかと思ったのがきっかけです。

やりたいこと
LaMetricTimeを使っていい雰囲気を演出したい!
実施内容
アレクサから指示を出すと下記3つを行う
・部屋を暗くする
・いい感じな音楽を流す
・口説き文句を表示する
機器構成
- アレクサ対応デバイス(役割:指示送信)
- ラズパイ(役割:アレクサから指示を受信&LametricTimeのwebAPI実行)
- LametricTime(役割:いい感じな音楽を流す&口説き文句を表示する)
- SwtitchBots(役割:電気を消す)
- FireTVStick(付いているTVを消す)
全体構成
アレクサの定型アクションを使用して、RaspberryPi、SwitchBots、FireStickに指示
準備
apacheのインストール
LaMetricTimeはhttp経由で音声ファイルを取得しないと音楽を流すことができない。
そこで、apacheをラズパイにインストールし、任意の音声ファイルをurlで参照できるようにする。
- apacheのインストール
$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo apt-get install apache2
- apacheの動作確認
ウェブ上で書きリンクにアクセスし、apacheのページが表示されることを確認する
http://<ラズパイのIPアドレス>

- apacheルートフォルダにファイルを保存
ラズパイの下記フォルダに音声ファイルを保存
/var/www/html
今回は下記サイトのフリー音源を使用
- 音声ファイルへのアクセス確認
ウェブ上で下記リンクにアクセスし、音声ファイルが再生されることを確認する。
http://<ラズパイのIPアドレス>/<音声ファイルのファイル名>
プロジェクト作成
- アレクサからRaspberryPiに指示を飛ばすためのNode-REDプロジェクト
- RaspberryPiからLaMetricTimeのWebAPIを実行するためのシェルスクリプト
- アレクサの定型アクション
NodeREDプロジェクト作成
アレクサから指示を受けて、シェルスクリプトを実行するNodeREDプロジェクトを作成する
アレクサ経由でラズパイのシェルスクリプトを実行する方法については下記参照
シェルスクリプト作成
NodeREDから実行するシェルスクリプトを作成する
- 内容
LaMetricTimeのWebAPIを実行し、音楽再生とテキスト表示をLaMetricTimeに指示する - メインスクリプト
#!/bin/bash
# SwtchBotsが電気を消すまで待つ
sleep 5
# JSONファイルのパス
json_file="/home/shun/my_project/GoodMoodMaker/data/sound_template.json"
# APIエンドポイント
api_endpoint="http://<LaMetricTimeのIPアドレス>:8080/api/v2/device/notifications"
# 認証情報
username="dev"
password="71174526036821fa22658ff0cbbc586d910e262a56ea24c2400058a35f901835"
# curlコマンドを実行
curl -X POST -u "$username:$password" -H "Content-Type: application/json" -d "@$json_file" $api_endpoint
- メインスクリプトで読み込むデータファイル
準備した音声ファイルのURLを"sound""url"に記載
{
"priority": "warning",
"icon_type": "info",
"model": {
"cycles": 1,
"frames": [
{
"icon": "i30960",
"text": "I LOVE YOU!"
}
],
"sound": {
"url":"http://<ラズパイのIPアドレス>/background-epic-piano-music-for-short-video-vlog-advertising-23-sec-189905.mp3",
"fallback": {
"category": "notifications",
"id": "cat"
}
}
}
}
LaMetricTimeに通知を送信する方法についての詳細は下記参照
アレクサ定型アクション作成
アレクサから各機器に指示を送信するための定型アクションを作成する
作成物
最後に
LaMetricTimeとラズパイを使用して、部屋をいい雰囲気にするシステムを作ってみました。
いい雰囲気というより若干引かれそうな感じですが、面白いものが作れたんじゃないかと思います。
LaMetricTimeは他にも色々な使い方ができると思うので、皆さんも作成してみてはいかがでしょうか。
リンク
- apacheによるhtml経由の音声ファイル参照