我が家では、ATOM Camを使って、動体検知(ねこ検知)をしています。検知したときに動画ファイルがATOM Cam本体に保存されます。
その動画ファイルを自宅サーバから定期的にFTPで取得していました。
格安ネットワークカメラATOM Camで猫を撮影してみました。色々な使い方が出来そうで面白いです。
今回、その動画ファイルを外出先から簡単に見られるよう、FTPで取得後にNextcloud Talkに自動投稿させるようにしましたので、そのメモを残しておきます。
Nextcloudの投稿用ユーザの作成
Nextcloud Talkで自動投稿するユーザをWebで作成します。
私はATOM Camの動画を投稿させるので、ユーザをatomcam、パスワードを安全のため英数字ランダムなものとしました。
投稿用チャットルームの作成
作成したユーザで、Webにログインし、Talk画面に移動します。
ここで、新規グループ会話の作成をして、任意の名前と会話に追加するユーザ(普段使っているユーザなど)を選択します。
作成したグループ会話を選択して、グループ会話のIDをURLから確認しておきます。
以下のようなURLの最後の部分です。
https://example.com/nextcloud/talk/**********
シェルから投稿をする方法
curlコマンドで自動投稿が可能ですが、事前に投稿用ユーザのディレクトリにファイルを置く必要があります。
今回の例では、atomcamユーザのNextcloudデータディレクトリ内のTalkディレクトリに対象ファイル(test.mp4)を配置し、以下のcurlで投稿できます。
curl -k -d '{"path":"/Talk/test.mp4","permissions":"19","shareType":"10","shareWith":"グループ会話のID"}' -H 'Content-Type: application/json' -H 'OCS-APIRequest: true' -v -u atomcam:パスワード https://example.com/nextcloud/ocs/v2.php/apps/files_sharing/api/v1/shares
スクリプト作成
以下のスクリプトは、ATOM Camから動画ファイルをダウンロードして、Nextcloud Talkに投稿するまでを行っています。
使われる場合は環境に合わせて、変更ください。
# cat /etc/cron.hourly/atomcam_ftp_talk.sh #!/bin/sh HOSTNAME=192.168.0.100 USERNAME=root PASSWORD=atomcam2 SRC="media/mmc/record/" DEST="/home/samba/atomcam/ATOM_***********/record/" NCURL="https://example.com/nextcloud/" NCUSER=atomcam NSCPASS=************ TALK="/home/nextcloud/atomcam/files/Talk/" CHATROOM=************ FTPLOG=`mktemp` lftp -d -u $USERNAME,$PASSWORD $HOSTNAME -e "\ mirror \ --only-newer \ --verbose \ $SRC \ $DEST; \ exit" > $FTPLOG 2>&1 find $DEST -type d -empty -delete array=($(grep -Eo "[0-9]{8}/[0-9]{2}/[0-9]{2}\.mp4" $FTPLOG)) for i in ${array[@]} do SHAREFILENAME=`echo "$i" | sed "s/\//_/g"` cp ${DEST}$i ${TALK}${SHAREFILENAME} curl -k -o /dev/null -s -d "{\"path\":\"/Talk/"${SHAREFILENAME}"\",\"permissions\":19,\"shareType\":10,\"shareWith\":\""$CHATROOM"\"}" -H 'Content-Type: application/json' -H "OCS-APIRequest: true" -u "$NCUSER:$NSCPASS" "$NCURL"ocs/v2.php/apps/files_sharing/api/v1/shares done rm -f $FTPLOG
Nextcloud Talk アプリでの見え方
iOS版Nextcloud Talk見ると、以下のように、1時間に1回動画ファイルが投稿されます。
タップすると動画がダウンロードされ、再生ができます。
参考
https://help.nextcloud.com/t/help-with-nexttalk-chat-api/61610
https://github.com/reekol/nk-free-lab/blob/master/app/nextcloud_chat_bot.php
https://nextcloud-talk.readthedocs.io/en/latest/chat/