Skip to content

Commit 932565f

Browse files
committed
Swingのpan/tilt制御追加
- WebUI - camera view windowに操作用のslider追加 - WebUIのメンテナンスに座標系がずれた時に初期化するためのボタン追加 - command I/F - posrec : 現在位置を/atom/config/.user_configのslider_x,yに設定するコマンドを追加 - moveinit: pan/tiltの座標系を初期化するコマンドを追加 - cgiを整理 - get_latest_ver.cgi, get_time.cgi, exec.cgiをcmd.cgiに集約
1 parent ffb18c7 commit 932565f

File tree

10 files changed

+207
-54
lines changed

10 files changed

+207
-54
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ rootfs_hack.ext2
44
atomcam_tools.zip
55
*.xcodeproj/project.xcworkspace/
66
*.xcodeproj/xcuserdata/
7+
*.xcodeproj/xcshareddata/
78
bin/
89

README.md

+31
Original file line numberDiff line numberDiff line change
@@ -9,36 +9,53 @@
99
## 実現される機能
1010
- WebUI (Port: 80)
1111
- ATOMCamのアプリから設定できない追加機能について設定します。
12+
1213
- CIFS(Samba4.0)サーバー(Port:137,138,139,445)
1314
- SD-Cardの保存されている映像のフォルダーをLAN内にguestアカウントで共有します。
15+
1416
- NASへの保存
1517
- CIFS(smb)プロトコルでNASへSD-Cardへ保存している映像と同じものを保存します。
1618
- SMB1.0はSecurity的に非推奨のため対応しません。2.0以上に対応のNASを使用してください。
19+
1720
- RTSPServer(Port:8554)
1821
- RTSP streaming を送出します。
22+
1923
- avahi(mDNS)機能(Port:5353)
2024
- microSDカードのhostnameファイルを編集することでデバイス名を変更できます(WebUIからも変更可能)
2125
- hostnameの命名規則は英数と-(hyphen)のみ(RFC952,1123で規定)です。\_(underscore)は使用できません。defaultはatomcamになっています。
2226
- mDNS対応しているOS(Windows10以降/MacOS/avahi入りlinux)からは[hostname].localでアクセスできるようになります。
27+
2328
- sshd (Port:22)
2429
- microSDカードのroot directoryにsshの公開鍵をauthorized\_keysの名前のファイルで置いてください。rootアカウントなのでパスワードではloginできない設定になっています。
2530
- ssh root@[ATOMCamのIPアドレス] or ssh root@[hsotname].local でloginできます。
31+
2632
- webHook機能(experimental)
2733
- 各種イベント発生時に指定したURLにpostで通知します。
34+
2835
- 動体検知アラームの不感知期間を短縮(experimental)
2936

3037
- Atomcamの動体検知は一度検知すると5分間検知しない仕様ですが、この検知しない期間を30秒に短縮します。
3138
- メーカーへの迷惑防止のためCloudへの通知、video/jpegのuploadは5分以内の再送をブロックしています。このため、アプリへの通知も5分以内の再検知時は通知されません。
3239
- SD-Card, NASには記録されます。(検知時の12秒間のファイル、検知時を含む1分間のファイル共)
3340
- webHook機能もイベントごとに発生します。必要な場合はwebHook経由で通知を組んでください。RasberryPi上でNode-REDを動かすのがお手軽です。
41+
3442
- atomcam_toolsのupdate機能
3543
- GitHubのLatestイメージをダウンロードして更新する機能です。
3644
- 回線状況にもよりますが、3分程度かかります。
3745
- AtomCamのFWのupdateはできません。アプリからupdateをしてください。
46+
3847
- AtomCamのFW update対応
3948
- アプリからAtomCamのFW updateをするときにSD-Cardを抜かなくてもできるようになりました。
4049
- 商品とのubootと同じシーケンスでflashメモリ内の領域の消去と書き込みが行われます。
4150
- update途中で電源が落ちることがないよう気をつけてください。
51+
52+
- AtomSwingのpan/tilt制御(experimental)
53+
54+
- WebUIからのpan/tilt操作
55+
56+
但し自動追跡をonにしていると映像が動くことで物体認識して取り合いになります。
57+
58+
- pan/tilt座標系の初期化のためのリセット動作をするボタンをメンテナンスに追加
4259
## セキュリティに関わる重要事項
4360
上記項目に書いてある各ポートが利用可能となります。
4461
現時点ではこのポートはセキュリティ上の懸念材料となりますので、
@@ -61,6 +78,14 @@ ATOMSwing Ver.4.37.1.85, 4.37.1.90, 4.37.1.93
6178

6279

6380

81+
## 関連記事
82+
83+
Qiitaに少し解説を書いています。
84+
85+
[Qiita.com ATOMCam2を少し改造して導入してみた](https://qiita.com/mnakada/items/7d0fbcb6e629e1ddbd0c)
86+
87+
[Qiita.com AtomSwingを少し改造して遊んでみた](https://qiita.com/mnakada/items/5da19a302b0f7521f225)
88+
6489
## 使用法
6590

6691
https://github.com/mnakada/atomcam_tools/releases/latest
@@ -261,6 +286,12 @@ WebHookを受け取るURLを指定します。今のところ実験的な実装
261286

262287
### メンテナンス
263288

289+
#### Swing座標初期化
290+
291+
Swingのpan/tilt座標系を初期化します。
292+
293+
両側の端点に当てることでモーターの動作範囲をリセットさせるための動作をします。
294+
264295
#### 定期リスタート
265296

266297
カメラのシステムを指定したスケジュールで再起動します。

configs/overlay_rootfs/scripts/webcmd.sh

+24
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,30 @@ EOF
9595
reboot
9696
cmd=""
9797
fi
98+
if [ "$cmd" = "posrec" ]; then
99+
pos=`/scripts/cmd move`;
100+
awk '
101+
/slide_x/ {
102+
pan=POS;
103+
gsub(/ .*$/, "", pan);
104+
printf("slide_x=%d\n", int(pan * 100 + 0.5));
105+
next;
106+
}
107+
/slide_y/ {
108+
tilt=POS;
109+
gsub(/^.* /, "", tilt);
110+
printf("slide_y=%d\n", int(tilt * 100 + 0.5));
111+
next;
112+
}
113+
{
114+
print;
115+
}
116+
' POS="$pos" /atom/configs/.user_config > /atom/configs/.user_config_new
117+
mv -f /atom/configs/.user_config_new /atom/configs/.user_config
118+
fi
119+
if [ "$cmd" = "moveinit" ]; then
120+
/scripts/motor_init
121+
fi
98122
if [ "$cmd" != "" ]; then
99123
echo "$cmd $param : syntax error" >> /var/run/webres
100124
fi
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/bin/sh
2+
3+
echo "Cache-Control: no-cache"
4+
echo "Content-Type: plain/text"
5+
echo ""
6+
7+
if [ "$REQUEST_METHOD" = "GET" ]; then
8+
NAME=${QUERY_STRING##name=}
9+
if [ "$NAME" = "" -o "$NAME" = "latest-ver" ] ; then
10+
latest=`curl -o - https://github.com/mnakada/atomcam_tools/releases/latest`
11+
latest=${latest##*Ver.}
12+
latest=${latest%%\"*}
13+
echo LATESTVER=${latest}
14+
fi
15+
if [ "$NAME" = "" -o "$NAME" = "time" ] ; then
16+
echo TIMESTAMP=`TZ=JST-9 date +"%Y/%m/%d %X"`
17+
fi
18+
if [ "$NAME" = "" -o "$NAME" = "move" ] ; then
19+
echo MOTORPOS=`echo move | nc localhost:4000`
20+
fi
21+
fi
22+
23+
if [ "$REQUEST_METHOD" = "POST" ]; then
24+
PORT=${QUERY_STRING##port=}
25+
awk '
26+
BEGIN {
27+
RS="[{},]";
28+
}
29+
/^$/ { next; }
30+
/\"exec\":\"/ {
31+
gsub(/^[ \t]*\"exec\":\"/, "");
32+
gsub(/\"[ \t]*$/, "");
33+
print $0;
34+
fflush();
35+
}
36+
' | (
37+
if [ "$PORT" = "socket" ]; then
38+
/usr/bin/nc localhost:4000
39+
else
40+
cat >> /var/run/webcmd
41+
read ack < /var/run/webres
42+
echo $ack
43+
fi
44+
)
45+
fi

configs/overlay_rootfs/var/www/cgi-bin/exec.cgi

-22
This file was deleted.

configs/overlay_rootfs/var/www/cgi-bin/get_latest_ver.cgi

-10
This file was deleted.

configs/overlay_rootfs/var/www/cgi-bin/get_time.cgi

-6
This file was deleted.

images/local_web.png

40 KB
Loading

libcallback/motor.c

+6-2
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,13 @@ extern int local_sdk_motor_move_abs_angle(float pan, float tilt, int speed, void
88
extern void CommandResponse(int fd, const char *res);
99

1010
static int motorFd = 0;
11-
static void motor_move_done(float a, float b) {
11+
static void motor_move_done(float pan, float tilt) {
1212

13-
if(motorFd) CommandResponse(motorFd, "ok");
13+
if(motorFd) {
14+
static char motorResBuf[256];
15+
sprintf(motorResBuf, "%f %f\n", pan, tilt);
16+
CommandResponse(motorFd, motorResBuf);
17+
}
1418
motorFd = 0;
1519
}
1620

0 commit comments

Comments
 (0)