【Raspberry Pi zero 2 W】カメラこうにう

Amazon で 999円のカメラ買って、リボンケーブルを Raspberry Pi zero 2 Wに接続

sudo raspi-config して、3.Interfaces Option > P1 Camera > はい で設定完了

車の警報装置が作動したら、motion で動体検知やろうと思って、alarm_monitor.sh に motion 起動のプログラムを追加。

前回から変わったのが次のコード。

【RX-7】警報発報メール通知プログラム

スマートフォンにUSBテザリングしていて、省電力モードのせいで、Raspberry Pi zero 2 Wから通信を発信してないと、外からVPNで接続できないので、10分毎に ping を打ってる。

その時に、motion が起動していたら、動体検知動画を家のサーバーに転送して元のファイルは消すようにプログラムを組んだ。

家では、サーバーの Web を見れば、動画が閲覧できる状態。

だが、車にカメラを設置してみると、次の状態。

リボンケーブル短いのと、電源の関係上、こんな感じでしか設置できない。

それにカメラ基盤むき出しだし、いつ、カメラ部品が剥がれるのか気が気じゃない。

長いリボンケーブルと、カメラケース欲しいなあと Amazon を物色してたら

同じ値段でカメラモジュールもついてて、まんまの奴あるやんけ!!

【追記】よーく見たら、ケーブルが30mm!? 説明文には、15cmって書いてあるな。騙されたでござる

しかし、ケースついてるから注文はキャンセルしないでおこう【/追記】

単体で、長いリボンケーブルとケースを個別に買うより、こっちの方が安いので即ポチった。

カメラ2台になっちゃったけど、家のサーバーに接続して、部屋のソーラー発電で火が出てないか監視するのに使ってもいいな。

【追記】

仕方ないので30cmのリボンケーブルを追加購入したでござる。

【/追記】

WireGuard

車に積んでいる Raspberry Pi zero 2 W(以下ラズパイ)にいつでもアクセスしたいと思った。

しかし、 donedone 128kbps で常時接続しているとは言え、接続IPアドレスが133.203.130.90と分かったとしても、こいつは携帯電話会社のファイヤーウォールだから、直接携帯電話へアクセスする事はできない。

そこで、VPNの WIreGuard の出番。
ラズパイ から、家のサーバーに VPN接続すれば、家からならVPN経由で ssh が可能になる。

接続方法は
情報源: 【Ubuntu】WireGuardで簡単VPN環境を構築 | VPS Life

こちらを参考にさせていただいた。感謝。

サーバー側ステータスを見てみると、

RX-7に搭載しているラズパイのクライアント側

これで、外部から車に搭載したRaspberry Pi へ指令が送れるようになった訳だが、電子工作と合わせると、車を始動不能にしたり、クラクションでSOS鳴らしたり、色々、可能性が広がって夢が広がりまくりんぐなわけですよ。 🙂

【皇紀2682年9月26日 追記】

いざ、ラズパイに接続しようとするもできない。

どうやら、ラズパイのUSB省電力機能が効いているのか、ラズパイ側からVPNのサーバーに ping を打たないと、サーバーからはアクセスできないっぽい。

ラズパイの cron で10分毎にVPNサーバーに ping 打つようにしてみるか。

【/皇紀2682年9月26日 追記】

車載Raspberry Pi zero 2 Wの通信

一応、車の中に電源繋いで置きっぱなしだが、家の車庫にあると、WiFiに繋がって、部屋のPCから ssh でログインする事ができる。

ただ、USBテザリングが有効のままなので、システムのアップデートをしようとすると、donedone 128kbps で通信しちゃうので遅くてしょうが無い。

そこで、usb0 インターフェースをダウンさせてやると、WiFiの経路を使って通信するので、インターネットの接続速度が速くなる。

apt update、 apt upgrade が終わったら、USBテザリングへ経路を戻す。

ログをRAM DISK化しようか考えていたが、/var/log/wtmp と /var/log/lastlog 位しか書き込んで無いから別にいいか。

【RX-7】警報発報メール通知プログラム

Raspberry Pi zero 2 Wに exim4 入れて、スマートホスト設定して、Xserver のメールサーバーをリレーホストにする設定して、ボタン監視してメール通知するプログラムをサクっと書いた。

ボタン監視は、GPIO26とGNDに繋いでやる予定だけど、巷にあるサンプルだと、エラーとかリソースビジーとか出るので wait を入れた。

echo 26 >/sys/class/gpio/gpio26/export
sleep 0.1
echo in >/sys/class/gpio/gpio26/direction
sleep 0.1
echo high >/sys/class/gpio/gpio26/direction

ハードウェアに近いプログラム書いた事無いと分からんかもしれんけど、Raspberry Pi が GPIO26 の用意完了前にデータを書こうとすると、間に合わない場合があるので、その場合は適当に時間待ちしてやる必要があるんだな。

Raspberry Pi zero 2 Wの BCM2835は、ARM v8(Cortex-A53)クアッドコアの64bit 1GHzなので、結構処理速度が速いようで、GPIOのファイルシステムへ書き込みするのに、sleep で wait を入れないとダメになったみたいだな。

ちなみにメールは次のようなものが届く予定。

無茶苦茶シンプルなので、donedone 128kbps でも問題なく送信できる。

で、後は半田ゴテで、配線するのみなのだが、半田ゴテ暫く使ってなかったから汚部屋で見つからんのよね。 🙁

【追記:皇紀2682年9月18日21:13】

ラスタバナナの変換コネクタに必死で半田付けし、GPIO26とGNDに半田付け

docomoの携帯電話を挿せるけど、携帯から5V出てるとしたら、raspberry PiのGIPOへ5V流れて壊れちゃうので、携帯電話を挿してはいけない。

先のプログラム走らせて、イヤホンマイクボタンを押すと、メールが来た。

これで、docomo 3Gが無くなっても大丈夫 🙂

【/追記:皇紀2682年9月18日21:13】

Raspberry Pi zero 2 W 到着

bootイメージの入った 32GBのmicroSD付きなので、まずはそいつをPCにマウント。

「ファイル」で開いて、右クリックで、「端末で開く」。

/boot/ に “ssh” という空ファイルを作成。

次は、Headless で使う為に、同じく /boot/ に wpa_subblicant.conf を作成

[/boot/wpa_supplicant.conf]

設定は「Raspberry Pi 無線 LAN 設定おぼえ書き」を参考にしました。ありがとうございます。

で、ルーターのDHCP払い出し状況を確認すると、192.168.11.15 へ割当られている模様。

初期ユーザー pi でパスワードが raspberry ね。

グラフィカルユーザーインターフェースから、ヘッドレスへ

で、再起動

次にまた ssh で入ると、

既定ユーザーの pi のパスワード変わってないからセキュリティリスクやでと親切に教えてくれる。

タイムゾーン設定、言語設定、ホスト名変更に raspi-config で設定

パッケージのアップデートに sudo apt update やったらエラーが出たので、検索したら、「Raspbianのsudo apt-get updateが失敗したら試したい解決方法」に載っていた。ありがとうございます。

その通りやる(ちょっと違うけど)。

更新パッケージが270個位あったので、中々終わらなかった。

そして、microSDの長寿命化の為に、ログを一切吐かないように、/etc/rsyslog.conf を編集して、インクルードの無効化と、RULES以下の設定を全部 # でコメントアウト

そして、念の為、/etc/logrotate.conf を月1ローテーションで、履歴は1つのファイルのみ、インクルード無効化に変更

pi ユーザーのパスワードを変更して、スマートフォンをUSBテザリングに設定して、Raspberry Pi zero 2 Wに接続してみると、何の操作や設定する事もなく、通信経路が確立した。

後は、ラズパイにメール送信環境と、GPIOチェックしてメール送るプログラム書いて、ラスタバナナの平型コネクタソケットをGPIOに配線したら、即運用できそうだな。

ただ、車のバッテリが上がったら嫌なので、ラズパイとスマホでどれだけ消費電力喰うか分からないのが不安要因なんだな。

Raspberry Pi Zero 2 W こうにう

※商品紹介写真が面倒くさいので、アフィリエイトで張ってます。

情報源: Pi Zero 2 W Starter Kit 32GB 6点セット V2 Sandwich ケース[RASST02STA0322]

KSYって単体は在庫切れなんだけど、スターターキットとかの抱き合わせは在庫豊富なんだよなあ。

Raspberry PI4 8GBこうにう

4買った時も、単体在庫切れだったけど、スターターキットは在庫があったので、そういう売り方なんだろうな。

この Raspberry Pi zero 2 Wは、車載用で、GPIOに警報装置の配線引き込んで、発報したら、メールを飛ばす処理に使おうと思っている。

本当は、警報装置は発報したら、接続したガラケーに電話を掛けさせ、電話で警報発報を知らせてくれるというもの。

これが、皇紀2,686年3末に 3Gの電波が停波して使えなくなっちゃうので、その代わりにRaspberry Piにメールを投げさせようと考えている訳なんだな。

平型端子変換コネクタこうにう

以前、ラスタバナナの変換端子使えねえと書いてたけど、あれからテスターを当てまくって、平型ケーブルの1番GNDと8番ピンが基盤のどこに繋がっているのかが分かったので、そこに配線して信号を取り出す予定。

一時は、車載警報装置の平型コネクタ破壊して線を取り出そうかと考えていたが、そのまま変換端子に接続してRaspberry Piで信号を受け取れそう。

なので、配線用の太さ0.5mmの配線、Raspberry Piとスマホ繋ぐUSBケーブル、Raspberry Piの電源用のUSBケーブルも買った。

スマホとRaspberry Piは通信用で、USBテザリングを行なう予定

Raspberry Pi はmicroSDにログを書き込んでいると、1〜2年でmicroSDがダメになるので、わしの買ったものは、弄ってログをRAM DISKに書くようにしている。

今回の Raspberry Pi zero 2 W は、RAMが 512MBしか無いからRAM DISKで賄えるのか心配だな。いっそ、rsyslog.conf 弄ってログ一切無しってのもアリだな。

【Raspberry Pi3】ACケーブル交換

昨日注文したヤツが今日届いた。デリバリープロバイダーだけど、隣町の運送業者で、関東だと配達が酷いそうだが、こちらは結構迅速に届けてくれる。

交換前は、電圧低下検出→電圧正常化→電圧低下検出→電圧正常化……の繰り返しだった。

5V3Aのケーブルに交換後は出なくなった。

今まで使ってたのって、Raspberry Pi3 買った時にセットで買ったもので、株式会社ケイエスワイのもので、5V2.5A とそんなに悪く無いのだけれど、0.5A違うと駄目なんだな。

多分、接続している Webカメラが電力を食うのだろう。というか、それしか外部部品は付けてないから、それしかない(笑)。

【作業記録】監視カメラのRaspberry Pi3を自動更新&再起動

わしの Raspberry Pi3 は Raspbian GNU/Linux 9 (stretch)なので、自動更新にはなってないから、unattended-upgrades のパッケージをインストール。

needrestart パッケージが提案パッケージになっとるけど、要るのかなあ?

後は次の記事を参考に設定。

【作業記録】自動更新&再起動設定

防犯監視カメラだから、深夜に再起動するのはマズいので、昼間に再起動するようにした。

まあ、Raspberry Pi3 だと、数秒で復帰するから、特に問題は無いだろう。

そして、apt-cron をアンインストール

 

新GPS

Amazonの記録によれば、皇紀2679年5月7日に購入したものだが、既に衛星を殆ど捕捉せず、NTPサーバーのGPSとして役割を果たさなくなっていた。二年もたなかったが、1,090円という激安GPSで、24時間365日運用はキツかったか。

そこで、新しく Aliexpress でGPSをこうにう。

情報源: TOPGNSS USB GPS GLONASS Receiver module antenna GN 803G USB GNSS GPS GLONASS receiver GMOUSE Industrial application|GPS Receiver & Antenna| – AliExpress

だいたい1,518.08 円。ロシアのGLONASSではなく、支那の北斗の衛星を受信できるモデルもあるようだが、GLONASSにしておいた。

raspberry PI 4 だと、GPS基盤付けて、PPS信号を取って、より正確な時刻にする事もできるが、どれが良い製品か分からないのと、それに合う外部アンテナを探すのが面倒くさい。

あと、現状は時刻サーバーは1/100秒の誤差だが、1/1000秒の精度は求めてないし、子亀基盤のせたらケースに収まらないから、折角買ったケースを買い直さないといけないのも面倒くさい。

PRN 137のみちびき3号機を含め16機の衛星からデータ受信しとる。

2時間くらい移動軌跡を描画させたら、脅威の集束率。前までは、画面外に行ってた事もあったが、概ね10m誤差範囲で収まってる模様。
別に隣の家まで侵入していった訳じゃないよ 🙂

どんなGPSを繋いでも、元々南東に数メートルズレた位置になるので、地図情報が合ってないのかもね。

GPSドングルは永年運用してると、段々と衛星を捕捉できなくなって、使い物にならなくなるが、これは長持ちして欲しいなあ。

Let’s encryptでおウチサーバーの証明書取得

家のサーバーは X server のDNS設定をいじるスクリプトを組んで、サブドメインである irc.noizumi.orgが家のIPアドレスを向くようにDDNSモドキになっている。

HTTPは、監視カメラの zoneminder を外から見れるように元々、ルーターでポート10080番→80番としていて、加えてAUTH DIGESTを掛けているから、外から見放題にはなってなかった。

さて、果たしてポート80番が解放されている必要のある Let’s encrypt で、DIGEST認証が掛かっている httpd の証明書が作れるのか?
まあ、作れるのでこの記事を書いている訳だが 🙂

Let’s encryptは外部からアクセス可能かの判定に、/.well-known ってディレクトリを掘って、そこのファイルを外部から読み出し可能かどうかで、証明書作成者がドメインを使用可能で、有効かを判定している。

ちなみに、もう一つの懸念事項として、Let’s encrypt の certbot が動いているマシンから irc.noizumi.org にアクセスする場合、ルーターが IP masquerade を使用していて、繋げられないというのがある。

確か、iptables になって、POSTROUTING を使用すれば、LANからルーターが接続したPPPoEのグローバルIPアドレスに接続しても、いい感じにプライベートアドレスに変換してアクセス可能にできたはずなのだが、安物ルーターだと仕方がないか。

話はそれたが、DIGEST認証に穴を作って、/.well-known/* のアクセスがあったら、認証しないという設定にしてやる。

[/etc/apache2/conf-available/auth_digest.conf]

他にも .htdigest ファイルを作ってるけど、それは割愛。

# a2enconf auth_digest で有効化
わしの場合は元々有効になっているので、auth_digest.conf を弄るだけ。

そして、サーバーへ Let’s encrypt をインストール
# apt install certbot python-certbot-apache

# certbot –apache

参考:Certbot を使い3分で無料の SSL 証明書を取得する

nginx を apache に読み替えて設定。幸い、certbot から直接 irc.noizumi.org へのアクセスは無いようで、問題なく設定できた。

証明書の確認や、自動更新、テストなどは次のサイトが参考になる。

参考:Let’sEncryptの取得&自動更新設定してみた

さすがプロだけあって、論理的で分かりやすい。

ついでに、irc もSSLを稼働。ngircd の設定にちょっと躓いたりもしたが、

[Global]
Ports = 6667

[SSL]
CertFile = /etc/ngircd/cert/fullchain.pem
KeyFile = /etc/ngircd/cert/privkey.pem
Ports = 6697, 9999

を追加する事でいけた。
ルーターのポートフォワードは、非SSLが6667、SSLが6697で、9999はフォワードしてないので、外部からは繋げられない。

Let’s encryptが作成した証明書ファイルは、所有者が root:root で、privkey.pem は root 権限のみ読めるファイルなので、ircの権限で動作するngircdには読む事ができない。

そこで、/etc/ngircd/cert にコピーして、irc:irc の所有者にした。

証明書の自動更新の設定もしたが、ngircd の証明書もコピーするようにしてある。cp の上書きなので、所有者の再設定をしなくてもいいはず。