これはATOMCam/ATOMCam2/AtomSwingの機能を拡張するツールキットです。 標準的な機能に満足できないユーザーが、各自の責任において機能を拡張するためのツール・スクリプトをまとめたものです。 利用にあたって、当然のことながらカメラメーカへの問い合わせなどは厳に慎んでください。 それ以外、自由に利用できますが、仮に悪用し、他人へ迷惑をかけた場合の責任は、その設定を行った者が負うべきものであることを理解してください。 質問、動作不具合、機能のリクエストは Issues を立ててください。
Latest Verが表示されない問題が発生しています。
Latestが表示されていない場合、下記のいずれかの方法でupdateをお願いします。
- カスタム更新ZIPファイルをOnにしてURLに
https://github.com/mnakada/atomcam_tools/releases/latest/download/atomcam_tools.zip
を指定してから、1つ上のUpdateのLockを解除して[CustomUpdate]のボタンを押してください。
- ssh接続を有効にしている場合、最新のatomcam_tools.zipをダウンロードして
scp atomcam_tools.zip atomcam.local:/media/mmc/update
を実行後、リブートを実行してください。
- どちらもできない場合、SD-Cardを取り出し直接書き込んでください。
Ver.1.3.0以降は修正しています。
-
WebUI (Port: 80)
- ATOMCamのアプリから設定できない追加機能について設定します。
- アカウントとパスワードを設定可能です。
-
CIFS(Samba4.0)サーバー(Port:137,138,139,445)
- SD-Cardの保存されている映像のフォルダーをLAN内にguestアカウントで共有します。
-
Web経由でSD-Cardの記録映像を見ることができます。
-
NASへの保存
- CIFS(smb)プロトコルでNASへSD-Cardへ保存している映像と同じものを保存します。
- SMB1.0はSecurity的に非推奨のため対応しません。2.0以上に対応のNASを使用してください。
-
RTSPServer(Port:8554)
- RTSP streaming を送出します。
-
avahi(mDNS)機能(Port:5353)
- microSDカードのhostnameファイルを編集することでデバイス名を変更できます(WebUIからも変更可能)
- hostnameの命名規則は英数と-(hyphen)のみ(RFC952,1123で規定)です。_(underscore)は使用できません。defaultはatomcamになっています。
- mDNS対応しているOS(Windows10以降/MacOS/avahi入りlinux)からは[hostname].localでアクセスできるようになります。
-
sshd (Port:22)
- microSDカードのroot directoryにsshの公開鍵をauthorized_keysの名前のファイルで置いてください。rootアカウントなのでパスワードではloginできない設定になっています。
- ssh root@[ATOMCamのIPアドレス] or ssh root@[hsotname].local でloginできます。
-
webHook機能(experimental)
- 各種イベント発生時に指定したURLにpostで通知します。
-
動体検知アラームの不感知期間を短縮(experimental)
- Atomcamの動体検知は一度検知すると5分間検知しない仕様ですが、この検知しない期間を30秒に短縮します。
- メーカーへの迷惑防止のためCloudへの通知、video/jpegのuploadは5分以内の再送をブロックしています。このため、アプリへの通知も5分以内の再検知時は通知されません。
- SD-Card, NASには記録されます。(検知時の12秒間のファイル、検知時を含む1分間のファイル共)
- webHook機能もイベントごとに発生します。必要な場合はwebHook経由で通知を組んでください。RasberryPi上でNode-REDを動かすのがお手軽です。
-
atomcam_toolsのupdate機能
- GitHubのLatestイメージをダウンロードして更新する機能です。
- 回線状況にもよりますが、3分程度かかります。
- AtomCamのFWのupdateはできません。アプリからupdateをしてください。
-
AtomCamのFW update対応
- アプリからAtomCamのFW updateをするときにSD-Cardを抜かなくてもできるようになりました。
- 商品とのubootと同じシーケンスでflashメモリ内の領域の消去と書き込みが行われます。
- update途中で電源が落ちることがないよう気をつけてください。
-
AtomSwingのpan/tilt制御(experimental)
-
WebUIからのpan/tilt操作
但し自動追跡をonにしていると映像が動くことで物体認識して取り合いになります。
-
pan/tilt座標系の初期化のためのリセット動作をするボタンをメンテナンスに追加
-
-
AtomSwingのクルーズシーケンス制御(experimental)
- WebUIからのpan/tiltと待ち時間の登録
- 待ち時間中の動体検知、動体追尾の選択
上記項目に書いてある各ポートが利用可能となります。
現時点ではこのポートはセキュリティ上の懸念材料となりますので、
ネットワークのセキュリティーを各自十分に保つように心がけてください。
WebUI、video、jpegに関してはLAN内からは自由に見える設定になっています。
sshは物理的にSD-Cardへアクセスして公開鍵を書かないとloginできないようにしています。
ただし、ATOMCamはSSID,passwordを平文でカメラ内のフラッシュメモリ(SD-Cardではない)に保存しているのでカメラを盗難されて中を見られるとWiFiにアクセスされる可能性がありますのでご注意ください。
atomcam_toolsは以下のATOMCamのVersionで動作確認しています。更新した場合機能が使えなくなることもあるのでご注意ください。
ATOMCam Ver.4.33.3.64, 4.33.3.66, 4.33.3.68
ATOMCam2 Ver.4.58.0.65, 4.58.0.71, 4.58.0.73, 4.58.0.79, 4.58.0.86, 4.58.0.90
ATOMSwing Ver.4.37.1.85, 4.37.1.90, 4.37.1.93, 4.37.1.95
Qiitaに少し解説を書いています。
Qiita.com ATOMCam2を少し改造して導入してみた
Qiita.com AtomSwingを少し改造して遊んでみた
https://github.com/mnakada/atomcam_tools/releases/latest
からatomcam_tools.zipをダウンロードし、適当なツールで解凍します。
解凍されて出てきたすべてのファイルを、ATOMCamで使用可能なmicroSDカードのルートフォルダに保存します 。 保存したmicroSDカードをATOMCamに入れて電源を入れます。
SD-Cardはできるだけ高速なものをFAT-FSで使用してください。
AtomCamのu-bootがexFATに対応していないため、exFATだとhackが認識されず起動されません。
また、メモリ不足をSD-Card上のswapで補っているため、遅いメディアだと負荷が高くなりすぎてうまく動かない事があります。(Class10以上を推奨)
http://atomcam.local を開くと設定画面にアクセスできます。
mDNS未対応で開けない場合は、ATOMCam純正アプリや、IPアドレス確認ツールなどでATOMCamのIPアドレスを確認し、 ブラウザで http://[ATOMCamのIPアドレス] を開きます。
この設定画面で行った設定は microSDカード内、hack.ini に保存され、次回再起動後からは自動的に読み込まれます。
カメラのデバイス名を設定します。 ここで設定した名前はCIFS(Samba) / mDNS(avahi) / NASのフォルダー名に使用されます。
アカウントとパスワードを設定することでWebUIの簡易ログイン認証を行います。
md5によるdigest認証なので安全ではありません。LAN内での簡易認証として使用してください。
1文字以上の英数記号を使用できます。但し':'と'\'は使用できません。
特にエラーチェックはしてないので入れるとおかしくなるかもしれません。
1文字以上の英数記号を使用できます。但し':'と'\'は使用できません。
特にエラーチェックはしてないので入れるとおかしくなるかもしれません。
ATOMCamアプリで設定した検出時にクラウドサーバーに保存される12秒の映像をSD-Card/NASにも記録します。記録されるフォルダーは alarm_record です。
!!! 「録画ファイルの自動削除」で保存日数を指定しないと一杯になっても削除されません !!!
「SD-Card消去」を押すことによってもファイル削除が行えます。
スケジュールを選ぶと、曜日と時間帯を指定する項目が追加されます。
ATOMCamアプリの「録画およびストレージ管理」の「ローカル録画」で記録される映像の記録する時間帯を設定します。
右端のー/+で指定項目を削除/追加できます。複数の項目はor条件で効きます。
offにするとATOMCamアプリの「Micro SDへのローカル録画」がonでもSD-Cardに記録されなくなります。
NASへのみ記録する場合はここをoffにしてください。(ただしフォルダーだけできてしまいます※そのうち対応します)
onにするとSD-Cardの /record, /time_lapse, /alarm_record をSamba4.0でデバイス名のネットワークフォルダとしてLAN内に公開します。
※ 負荷が重いためストリーミングRTSPと同時使用は推奨しません。
SD-Cardのalarm_reocrdフォルダ以下のファイルのPATHを設定できます。書式はstrftimeの指定形式です。最後の/以降はファイル名として後ろに.mp4が付加されます。
recordフォルダ、time_lapseフォルダはアプリからアクセスされるためPATHの指定はできません。
例えば %Y%m%d/%H%M%S を指定すると/alarm_record/20211128/223000.mp4 というようなファイルが作られます。
フォルダがない場合は自動で作成します。
SD-Cardに録画しているファイルを自動削除する機能です。
自動で削除したくない場合はoffにしてください。
容量にご注意ください。
録画ファイルを保存しておく日数です。この日数経過すると自動的に削除されます。
SD Cardのボタンを押すとSD-Cardの録画ファイルのディレクトリ一覧が開きます。
ファイルをクリックすることでmp4, jpegファイルを開くことができます。
ATOMCamアプリの「Micro SDへのローカル録画」、この設定画面の「検出通知のローカル録画」の映像をNASにも記録します。
NASのホスト名+フォルダー名を//[ホスト名]/[フォルダー名] の形式で指定します。
NASにアクセスするためのアカウント(ユーザー名)を指定します。
NASにアクセスするためのパスワードを指定します。(このパスワードは生値でSD-Cardに保存されます)
NASのalarm_record, recordフォルダ以下のファイルのPATHを設定できます。書式はstrftimeの指定形式です。最後の/以降はファイル名として後ろに.mp4が付加されます。
例えば %Y%m%d/%H%M%S を指定するとNASのrecordフォルダの場合、 //NASname/atomcam/record/20211128/223000.mp4 というようなファイルが作られます。
フォルダがない場合は自動で作成します。
NASに録画しているファイルを自動削除する機能です。
自動で削除したくない場合はoffにしてください。
容量にご注意ください。
録画ファイルを保存しておく日数です。この日数経過すると自動的に削除されます。
チェックを入れると、RTSPストリーミングを行います。
特に、システムの安定性に関わるため、利用には十分なテストを行ってください。
※ 負荷が重いためSD-Cardのネットワークアクセスと同時使用は推奨しません。
RTSPの音声をon/offします。音声をonにすると負荷が大きくなるので、必要でなければoffにしておいてください。
RTSPをUDPでなくHTTP経由で送出します。
AtomCamからPCまでの経路でのパケット伝送が保障されますが、再送により遅延が発生する可能性があります。
VLC media playerの「ネットワークストリーミングを開く」で入力するURLが表示されます。
動体検知や録画ファイルの書き込み等のイベントのタイミングで指定のURLに通知します。
WebHookを受け取るURLを指定します。今のところ実験的な実装なのでLAN内のnon-secureなpostを想定しています。
{ type: 'event名', data: あれば何か }の形式でpostします。
動体検知が働いた時に通知URLに type: alarmEvent をpostします。
動体検知の認識情報取得時に通知URLに type: recognitionNotify, data: recognition data をpostします。
動体検知での録画が終了した時に通知URLに type: uploadVideoFinish をpostします。
動体検知での録画が終了した時に通知URLに mime:video/mp4で録画ファイル をpostします。
動体検知での静止画保存完了時に通知URLに type: uploadPictureFinishをpostします。
動体検知での静止画保存完了時に通知URLに mime:image/jpegで静止画ファイルをpostします。
1分間の定常録画が終了するたびに通知URLに type: recordEventをpostします。
タイムラプス記録のたびに通知URLに type: timelapseEvent, data: timelapse pathをpostします。
タイムラプス録画終了時に通知URLに type: timelapseFinish, data: timelapse pathをpostします。
動体検知アラームの不感知期間を5分から30秒に短縮します。
設定変更時には反映するために再起動されます。
動体検知時にAtomTechのawsサーバーに12秒間の録画データがuploadされますが、このuploadを停止します。これを停止するとAtomCamのアプリから録画データを見る事ができなくなります。
設定変更時には反映するために再起動されます。
クルーズ動作のOn/Offの設定とシーケンス登録
以下の項目を登録順に動作し、最後までいくと最初に戻って繰り返します。
シーケンスの1項目を選択中は薄緑の色がつきます。色がついてる項目を編集できます。
右端のー、+マークで項目の削除、追加ができます。
編集するときは、一旦クルーズをOffにして設定してからにしないとカメラの方向が動いてやりにくいです。
カメラを向ける方向を指定します。
数値を直接入力するか、Jpeg表示の左、下にあるスライダーで方向を制御しても入力できます。
カメラの移動が終わってから、次の移動までの待機時間を秒数で指定します。
待機時間中に動体検知すると、待機時間を延長します。
動体検知が終わってからの待機時間は下の項目の検知後待機時間になります。
待機時間中に動体検知すると、動体を追尾し、待機時間を延長します。
検知後待機時間は上記の検知と同様です。
検知後の待機時間中も動体検知は働いて、待機時間の間検知しないと次のシーケンスに進みます。
定期的な疎通確認を行います。
疎通確認をするURLを指定します。
ここで指定したURLにhttp getを1分毎に行います。
Swingのpan/tilt座標系を初期化します。
両側の端点に当てることでモーターの動作範囲をリセットさせるための動作をします。
カメラのシステムを指定したスケジュールで再起動します。
ネットワークの不調など、何らかの理由でATOMCamが連続稼働することができない場合の対応ですが、必ずしもこれによって問題が解決するとは限りません。
AtomCamを再起動します。
Lockスイッチを解除してRebootボタンを押してください。
再起動に60~80秒くらいかかります。
SD-Cardのrecord, alarm_record, time_lapseフォルダの中身を消去します。
SD-Cardにtoolが入っているため、アプリからのSD-Cardのフォーマットをdisableしています。
その代替手段として用意しています。
Lockスイッチを解除してからEraseボタンを押してください。
Updateの更新ZIPファイルを指定のURLから取得します。
独自のpackage buildをする場合の用途になります。
GitHubのLatest VersionにUpdate します。GitHubからLatest Versionをダウンロードして展開して書き込み再起動します。180秒くらいかかります。
現在のtoolのバージョン(タイトル部に表示されています)がLatest Versionより古い場合のみUpdateすることができます。
台数が多い場合や回線が細い場合、PCでGitHubのLatest Versionのatomcam_tools.zipをダウンロードし、展開せずにそのままSamba経由でSD-Cardのupdateフォルダに入れて、リブートすることでもUpdateできます。この場合はVerのチェックは行われません。
bug-fix
Latest Verが表示されない問題が発生しています。Latestが表示されていない場合、カスタム更新ZIPファイルをOnにしてURLに
https://github.com/mnakada/atomcam_tools/releases/latest/download/atomcam_tools.zip
を指定してから、1つ上のUpdateのLockを解除して**[CustomUpdate]**のボタンを押してください。
Ver.1.3.0以降は修正しています。
LICENSEファイルを参照してください
このアプリの使用条件は特にありませんが、以下のリンクから買い物をすると、売り上げの一部が大元のhackをしてくれたhoneylabさんに還元されます。 https://honeylab.hatenablog.jp/entry/2021/09/29/115855