はじめに
以前に、AliExpressの「3点でUS $5.99」でたくさん買ってみたのでレビューでA9カメラというのを紹介しました。今回はそれをHTTP経由で見て、更にHomeBridgeに接続します。
使用するツール
色々な機能が入っていて全部入りです。自動接続・Liveストリーミング機能・スナップショットの取得・WiFiへの接続などなどができます。
手順
大まかな手順としては
A9用のフェイクサーバの立ち上げ
↓
HomeBridgeのプラグインCamera FFmpegで設定
↓
自動起動の設定
って感じです。
フェイクサーバの立ち上げ
事前準備としてMQTT broker(mosquitto)とPython3をインストールしてください。MQTT brokerは立ち上げておいてください。必要なライブラリは、pil、opencv、netifaces、xmltodict、tqdmでした。git cloneで先ほどのツールをコピーします。
git clone https://github.com/intx82/a9-v720.git
あとは、ディレクトリを移動した後、
sudo python3 src/a9_naxclow.py -s
で実行するだけです。
DNSサーバの設定が必要で、OpenWRTを使用している場合は、ネットワーク→DHCPおよびDNS→一般設定→アドレス一覧でnaxclow.comにサーバのIPアドレスを設定します。こんな感じになると思います。
OpenWRTでなくて、ルータにカスタムDNSの設定が存在しない場合は、A9専用のネットワークを建てたり、ローカルDNSサーバを立てたりして頑張ってください。
フェイクサーバの使い方
A9カメラが同じネットワークに接続されると自動的に実行している画面にカメラにアクセスした旨が表示されます。あとは、ブラウザで表示されたURLのlocalhost(127.0.0.1:80)の部分をサーバのIPアドレスに置き換えてアクセスすれば、Liveストリーミングやスナップショットが見れます。
Homebridge側の設定
HomebridgeにはCamera FFmpegをインストールします。サーバ本体にffmpegもインストールしたください。configのplatforms以下を追加します。
"platforms": [
{
"platform": "Camera-ffmpeg",
"name": "Camera FFmpeg",
"cameras": [
{
"name": "A9カメラ",
"unbridge": true,
"videoConfig": {
"source": "-re -i http://172.0.0.1/dev/フェイクサーバに出てきたID/live",
"stillImageSource": "-i http://172.0.0.1/dev/フェイクサーバに出てきたID/snapshot",
"maxFPS": 30,
"maxWidth": 640,
"maxHeight": 480
}
}
]
},
これで、Homebridgeからの設定は完了です。あとは、iPhone、iPad等でホームアプリを開いて、アクセサリの追加で「コードがないか、スキャンできませんか?」あたりを押すと出てきます。
フェイクサーバの自動起動設定
使用できることが分かったら、今度は自動起動の設定です。まず初めにシェルスクリプトを書きます。適当な場所にstart.shとかで
#!/bin/bash
while true; do
python3 /適当なパス/a9-v720/src/a9_naxclow.py -s
done
などを書きます。その後、chmod +x start.shで実行権限を付けて、systemdに登録します。
sudo vim /etc/systemd/system/a9server.service
内容は
[Unit]
Description=Start A9 Fake server
[Service]
ExecStart=/適当なパス/start.sh
[Install]
WantedBy=multi-user.target
とかです。リロードして、自動起動に設定します。
sudo systemctl daemon-reload
sudo systemctl enable a9server.service
これで、起動時にフェイクサーバが実行されるようになりました。フルのログは
journalctl -u a9server.service
で、ログの最後の部分のみのは
journalctl -u a9server.service -f
で見れます。
おまけ
UART
A9カメラ自体にはUARTがついており、Bootログが見れたり、コンソール?に入れたりします。今回自分が持っているA720アプリ対応のA9カメラでは分解するとこんな感じになりました。(AliExpressの「3点でUS $5.99」でたくさん買ってみたのでレビューで分解しています。)
RXとTX、RX2とTX2、の2つのセットがあります。信号が出ているのはRX2、TX2です。ボーレートは115200で接続できます。
しばらくすると、コンソールが現れますが、ほとんど使えるコマンドがなく、WiFiの接続くらいしかできません。
Liveストリーミング機能
今回使用したA9 V720 Naxclow CameraにはLiveストリーミング機能があって、Web画面を通すことなく直接Liveストリーミングをできます。A9カメラをModeボタン長押しでAPモード(青LEDが素早く点滅)にし、そのWiFiに直接接続します。SSIDはNax_数字みたいな感じです。その後、PCで
python3 src/a9_naxclow.py -l
で見れます。ただ、自分の環境では色が反転しており、色を反転させるコードを1行追加しました。
A9とかいう謎webカメラのストリーミングできた pic.twitter.com/9KN3rAKlzW
— Unagi Dojyou (@Unagi_Dojyou) August 23, 2023
おわりに
手順・関わる機材がそこそこ多くてちょっと手間でしたが無事にできました。AliExpressで買って眠らせてたA9 cameraの有効活用ができそうです。ただ、V720を使用しないA9 cameraも持っているのでそれの使い道はなさそうです…