Nature Remo E lite の消費電力に応じて blink(1) で通知する

Hitoshi Arakawa | 2024/02/09 Fri 04:05

Nature Remo E lite のデータを API で取得する方法について書いた。

Nature Remo E lite のデータを API で取得する
https://www.hitoshiarakawa.com/blogs/2024/2024-02-05_nature-remo-api/

さらに Mac で blink(1) が使えるようにした。

Mac で blink(1) を動作させる
https://www.hitoshiarakawa.com/blogs/2024/2024-02-08_blink1-on-mac/

僕がやりたかったのは、Nature Remo E lite で取得した現在の消費電力が一定以上になると blink(1) で通知させることだ。

環境:Mac mini Late 2014、macOS Monterey Version 12.7.3(英語環境)

(1)jq コマンドをインストールしておく。

Toggl Track の記録を FileMaker に取り込む
https://note.com/hitoshiarakawa/n/n0812e8c25eed

(2)以下のようなシェルスクリプトを作成する。ファイル名を power-blink1-notifier.sh としておこう。

#!/bin/sh

result=`curl -X GET "https://api.nature.global/1/appliances" -k --header "Authorization: Bearer {アクセストークン}" | jq -r '.[].smart_meter | .echonetlite_properties | .[5].val'`

if [ $? -gt 0 ]; then
    exit 1;
fi

if [ `echo "$result > 3500" | bc` == 1 ]; then
    /{blink1-tool へのパス}/blink1-tool --yellow --blink 5
fi

(3)2のシェルスクリプトに実行権限を与える。

$ sudo chmod 755 power-blink1-notifier.sh

(4)2のシェルスクリプトを実行するには以下のコマンド。

$ ./power-blink1-notifier.sh

これで cron に登録すれば定期的に実行できるし、さらに例えば VOICEVOX と組み合わせると音声での通知もできるようになる。

ただし cron に登録する際に注意する点は、シェルスクリプト内の jq コマンドは絶対パスで指定する必要があることだ(cron 内のコマンドは、OS デフォルトのコマンド以外は絶対パスで指定する必要があるようだ)。以下のコマンドで jq コマンドのパスを調べる。

$ which jq
/usr/local/bin/jq

よって、シェルスクリプト内の jq の部分を /usr/local/bin/jq に書き換える。

参考:
Mac で VOICEVOX を使う|荒川仁志
https://note.com/hitoshiarakawa/n/n46b954cd5564

cronでシェルスクリプトが動作しない時に確認すべきこと #ShellScript - Qiita
https://qiita.com/halpas/items/74e8c2ed2b94588cb362

Efficient Linuxコマンドライン ―開発と自分に磨きをかけるLinuxのテクノロジー | Daniel J. Barrett, 大嶋 真一, 原 隆文 |本 | 通販 | Amazon
https://amzn.to/3HUnodA