IO-DATA TS-WLCEで郵便物投函を検出してみる

line notifyの代替としてDiscordのbotを使う

前記事ではline notifyを使ってpush通知をしていましたが、これがあと一ヶ月程度で使えなくなるということで皆様色々と検討ないし研究されているようですが、Discordのbotさんを使うことにしました。前記事は、

でした。まずDiscordのbotさんの準備をしないといけません、line notifyの終了に伴って関連の記事も多いのですが、わかりやすいところで、

ここに従って準備をしました。一点だけ、

”チャンネルIDをコピー ID”とのメニューが欠落していたので、

上から3番目のリンクをコピーからurlを得て、最後の数字列からIDを拾いました。リンクの例は、

https://discord.com/channels/なんとかかんとか数字列/なんとかかんとか数字列

というようになっていますが、最後の数字列がテキストチャンネルのIDで、その前の数字列がサーバIDではないかという推察ですが、これでうまくいっているようです。以上でアプリケーションのトークンテキストチャンネルのIDが準備できましたら、メッセージを送る準備ができています。前記事と同じようにpythonではなくてcurlから投稿するので、基本的なスクリプトは、ちょうどそのものズバリの下記の記事があり、

ここでのスクリプトは、

curl \
-X POST https://discord.com/api/v10/channels/<channel_id>/messages \
-H "Authorization:Bot <DISCORD_BOT_TOKEN>" \
-H "Content-Type:multipart/form-data" \
-F "file=@\"/path/to/image/file.png"" \
-F "payload_json={\"content\":\"Hello, world!\"}"

ですが、<channel_id>と<DISCORD_BOT_TOKEN>と、さらに/patch/to/image/file.pngと、contentの中身を少しだけ置き換えて、下記のようなスクリプトになります。(もちろんidとtokenは変えてあります)

curl -X POST https://discord.com/api/v10/channels/あなたのch_id/messages -H "Authorization:Bot あなたのBOT_TOKEN" -H "Content-Type:multipart/form-data" -F "file=@\"/home/qwatch/snapshot.jpg\"" -F "payload_json={\"content\":\"Detected something\"}"

スクリプトを起動して画像付きでメッセージが届けばおけです。

いいみたいですね。上はPCのDiscord applで見た場合です。iPhoneのDiscord applからだと、

こんな感じですね。iPhoneでのline notifyだと、

なので、ほぼ同様です。通知音でメッセージ到来もわかりますので、ほぼ代替になっています。これで一件落着と思いきや、筆者の環境では独自スクリプトでTS-WLCEをモニターしていましたので、そこでのトリガーも拾わないといけません。もう少しだけスクリプトの書き換えが必要です。元のスクリプト(再掲)は、

に記述がありますが、

#!/bin/bash
thresh=9500
tthresh=43200
ymd=`date +%s`
ymd2=`date +%s -r /mnt/nas/images/last.jpg`
timediff=$(expr $ymd - $ymd2)
if [ $timediff -gt $tthresh ]; then
        echo "older file"
        curl --digest -o /mnt/nas/images/now.jpg -u id:password http://192.168.0.112/snapshot.jpg
        mv /mnt/nas/images/now.jpg /mnt/nas/images/last.jpg
else

curl --digest -o /mnt/nas/images/now.jpg -u id:password http://192.168.0.112/snapshot.jpg
cp /mnt/nas/images/now.jpg /mnt/nas/images/`date +"%I-%M-%S"`.jpg
composite -compose difference /mnt/nas/images/last.jpg /mnt/nas/images/now.jpg /mnt/nas/images/diff.jpg
cp /mnt/nas/images/diff.jpg /mnt/nas/images/diff-`date +"%d-%I-%M-%S"`.jpg
(date +"%m/%d %p %I:%M:%S"; identify -format "%[mean]" /mnt/nas/images/diff.jpg | awk '{printf("%d\n",$1 + 0.5)}') | paste - -
RETCODE=`identify -format "%[mean]" /mnt/nas/images/diff.jpg | awk '{printf("%d\n",$1 + 0.5)}'`
#echo $RETCODE
if [ $RETCODE -gt $thresh ]; then
        curl -X POST -H "Authorization: Bearer line_token" -F "message=Alt: Detected something" -F "imageFile=@/mnt/nas/images/last.jpg" https://notify-api.line.me/api/notify  1> /dev/null 2> /dev/null
        echo "trig'd"
fi
mv /mnt/nas/images/now.jpg /mnt/nas/images/last.jpg
fi

ここのlineへのPOSTDiscordへのPOSTに置き換えます。

curl -X POST https://discord.com/api/v10/channels/あなたのch_id/messages -H "Authorization:Bot あなたのBOT_TOKEN" -H "Content-Type:multipart/form-data" -F "file=@\"/mnt/nas/images/last.jpg\"" -F "payload_json={\"content\":\"Detected something\"}" 1> /dev/null 2> /dev/null

Line Notofyが生きてる間は、併用して比較検討してもいいかもしれません。

次はWebHook?

コメント

  1. […] […]