LoginSignup
13
19

ATOM Cam 2 / ATOM Cam Swing で atomcam_tools を試してみたメモ

Last updated at Posted at 2023-01-02

はじめに

いまさらですが、ATOM Cam 2と ATOM Cam Swingを買ってみました。
atomcam_toolsを試したメモを残しておきます。

iOSアプリ「ATOM - スマートライフ」をインストールする

メールアドレスを入力しても認証コードが届かないなー、と思っていたら、操作が足りていませんでした。
メールアドレスを入力し、ライセンスに同意して、「認証コード取得」を押す必要がありました。
同じように悩まれている方の参考になれば幸いです。

iOSアプリへATOM Cam 2 / ATOM Cam Swingの登録

画面の指示に従って操作すればカメラの登録、Wi-Fiの設定は難しくありませんでした。

  • RESETボタンの長押しでカメラを待機状態(Bluetooth ON)にし、アプリからカメラを発見
  • スマホに表示されるQRコードをカメラに見せることでWi-Fiの接続情報を設定

消費電力

ATOMアプリでカメラをOFFにしていても、消費電力はあまり変わりませんでした。
(常に組み込みLinuxが動作している状態。起動時:0.28A 〜 停止時:0.23A)

atomcam_tools

ATOM Camを拡張するツールキットを導入します。

使用法に記載のとおり、zipファイルを解凍して、SDカードへコピーします。
リモートからSSHログインできるようにするため、解凍したファイルの中のauthorized_keysファイルにSSHの公開鍵を追記します。

例. macOSの場合

id_rsa.pubの内容をauthorized_keysファイルへコピー&ペーストします。

$ cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDN6gNVKw2XBsk/uF5Gv...
(以下、省略)

SSHログイン

ATOM CamのIPアドレスを確認し、sshコマンドでリモートログインできることを確認します。

例. masOSの場合

$ ssh root@192.168.3.7
[root@atomcam:~]# 

2024.1.20 追記

Sonoma 14.2.1でTerminalからATOM CamへSSHログインしたところエラーになりました。
sshクライアントのssh-rsaを有効化する必要があることがわかりました。

$ ssh -o PubkeyAcceptedKeyTypes=ssh-rsa root@192.168.3.7

(参考)
https://pakapaka.jp/no-mutual-signature-algorithm/

ウェブ管理画面

ブラウザからATOM CamのIPアドレスへアクセスすると、ウェブ管理画面が表示されます。

web_01.jpg

RTSPストリーミング表示

ATOM Cam2は公式でRTSPストリーミング機能がサポートされましたが、ATOM Cam Swingは未サポートのため、atomcam_toolsの機能を利用するメリットがあります。(ATOM Cam2は公式、atomcam_toolsのどちらも利用できました)

公式の場合(ATOM Cam2のみ)

ATOMアプリを操作してRTSP機能を有効にします。

対象のデバイスを選択します。

右上の歯車マークを選択します。

「その他」を選択します。

「PCで再生」を選択します。

URLが表示されます。

ATOM Cam Swingの場合、「PCで再生」メニューが表示されません。

atomcam_toolsの場合

ウェブ管理画面からRTSP(Main)を有効(スライドボタンを右へ移動)にすると、URLが表示されます。

VLC Playerでの表示

URLを入力すると画面が表示されます。

例. atomcam_toolsのURLを入力した場合

rtsp_01.jpg

静止画の保存

ffmpegコマンドで静止画を保存する方法です。output.jpgというファイル名で保存されます。

スクリーンショット 2023-01-02 22.13.01.png

例. 公式のURLを指定した場合

$ ffmpeg -loglevel error -i rtsp://1781:9015@192.168.3.7/live -f image2 -frames:v 1 output.jpg

image.jpg

YouTubeLive配信

ffmpegコマンドでYouTubeLiveへ配信する方法です。

スクリーンショット 2023-01-02 22.10.00.png

例. 公式のURLを指定した場合

$ ffmpeg -loglevel error -i rtsp://1781:9015@192.168.3.7/live -ar 44100 -f flv rtmp://a.rtmp.youtube.com/live2/[ストリームキー]

youtube_01.jpg

音声を再生する方法

こちらの方法でWAVファイルをATOM Camのスピーカーから再生することが可能です。
ただし、対応しているWAVファイルのフォーマットはサンプリングレート(16bit, 8kHz)のモノラルWAV形式である必要があります。

WAVファイルを用意する

効果音ラボの「ラッパのファンファーレ」を使用させていただきました。

ffmpegコマンドでフォーマットを変換します。

$ ffmpeg -i trumpet1.mp3 -acodec pcm_s16le -ac 1 -ar 8000 trumpet1.wav

trumpet1.wavをSDカードに保存します。

SSHログインしてコマンドで実行

$ /scripts/cmd aplay [WAVファイル] [ボリューム]

例.

$ /scripts/cmd aplay /media/mmc/trumpet1.wav 10

リモートからウェブ管理画面経由で実行

$ curl -X POST -H 'Content-Type: application/json' -d '{"exec":"aplay /media/mmc/test.wav 10"}' --output - 'http://[ATOM CamのIPアドレス]/cgi-bin/cmd.cgi?port=socket'

動体検知画像をLINE Notifyで送る方法

Webhookでイベントを通知する機能があるので、ATOM CamからNode-REDへ画像を送信し、LINE Notifyで画像を送ることができる。

68747470733a2f2f71696974612d696d6167652d73746f72652e73332e61702d6e6f727468656173742d312e616d617a6f6e6177732e636f6d2f302f37323437392f31323631373363302d353034652d626562362d306538652d3661373131303166323334632e706e67_1.png

Node-REDのフロー(ATOM Camから送信された画像を表示)

スクリーンショット 2023-01-03 1.33.00.png

flows.json
[{"id":"daba8f567e987ac1","type":"http in","z":"17cb3ce7696216ca","name":"","url":"/atomcam","method":"post","upload":true,"swaggerDoc":"","x":200,"y":320,"wires":[["0681bd467aae2df4","e607bdd4be4b3037","6d6ddcb72bca1522"]]},{"id":"0681bd467aae2df4","type":"http response","z":"17cb3ce7696216ca","name":"","statusCode":"200","headers":{},"x":460,"y":320,"wires":[]},{"id":"e607bdd4be4b3037","type":"debug","z":"17cb3ce7696216ca","name":"debug 10","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":460,"y":360,"wires":[]},{"id":"21fb53b45bba9fa8","type":"image viewer","z":"17cb3ce7696216ca","name":"","width":160,"data":"payload","dataType":"msg","active":true,"x":710,"y":500,"wires":[[]]},{"id":"6d6ddcb72bca1522","type":"switch","z":"17cb3ce7696216ca","name":"","property":"payload.type","propertyType":"msg","rules":[{"t":"eq","v":"alarmEvent","vt":"str"},{"t":"eq","v":"recognitionNotify","vt":"str"},{"t":"eq","v":"image/jpeg","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":4,"x":370,"y":440,"wires":[["9083b5f7c1b5b442"],[],["1bc984d6d3b88fa0","864f0262b3bff090"],[]]},{"id":"1bc984d6d3b88fa0","type":"debug","z":"17cb3ce7696216ca","name":"debug 11","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":520,"y":460,"wires":[]},{"id":"864f0262b3bff090","type":"change","z":"17cb3ce7696216ca","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"req.files[0].buffer","tot":"msg","dc":true}],"action":"","property":"","from":"","to":"","reg":false,"x":540,"y":500,"wires":[["21fb53b45bba9fa8"]]},{"id":"9083b5f7c1b5b442","type":"debug","z":"17cb3ce7696216ca","name":"debug 12","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":520,"y":400,"wires":[]}]

Node-REDフロー(LINE Notifyで通知)

スクリーンショット 2023-01-03 2.56.29.png

(参考)

13
19
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
13
19