RaspberryPiのmDNS(avahi-daemon)のIPv4が無効になってた

ルータをASUSからAirMacに変更したところ、mDNS名で接続できなくなった。

同時に有線LANから、無線LANに接続方法を変更したが、あまり関係ない気がする。

(ASUSのルータは早々に売ったので、詳細は確認不可)

最近、インストールしたRaspberryPi3 B+は大丈夫だったので、

avahiのバージョンか初期設定の問題があるかもしれない。

とりあえず、avahiの設定でIPv4を有効にしたら解決したのですが、

そこに辿り着くまでの試行錯誤の記録です。

最初は、とりあえずSSH接続したいので、Macで下記のコマンドを実行して、

IPを探そうとしました。

% arp -a

? (192.168.10.4) at 0:25:dc:5a:9:78 on en0 ifscope [ethernet]

% nslookup 192.168.10.4
Server:		240b:251:d660:6f10:1e36:bbff:fe03:6da9
Address:	240b:251:d660:6f10:1e36:bbff:fe03:6da9#53

** server can't find 4.10.168.192.in-addr.arpa: NXDOMAIN

nslookupでホスト名が取得できず、何れがRaspberryPiかわからない

(DNSサーバに登録されてないから、、、、ホスト名は取得不可)

仕方ないので、AirMacユーティリティで対象のルータを右クリックし、

ワイヤレスクライアントから対象のRaspberryPiを探し、

マウスカーソルを合わせて接続されているホスト名とIPを確認する

IPは分かったので、IPでSSHアクセス

avahiの動作を中心に疑ってみる

RaspberryPiのavahiで登録情報の確認

$ sudo apt-get -y install avahi-utils
$ avahi-browse -at # mDNS一覧表示

# 対象のRaspberryPiが一覧にない

$ avahi-resolve -n pi3j.local
pi3j.local	240b:251:d660:6f10:eb9b:d106:f4ef:98dd

avahiの登録情報が、Ipv6になってる??

  • あとで分かったが、これは正常。(”-4″オプションをつけないと、IPv6優先)
  • IPv6のみ有効になっている考察は合っていた。

次は、IPv6での接続確認を行なった

Macのping6でIPv6接続を確認

~% ping6 pi3j.local           
240b:251:d660:6f10:eb9b:d106:f4ef:98dd, icmp_seq=3 hlim=64 time=5.850 ms
^C
--- pi3j.local ping6 statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 5.850/7.028/8.428/1.023 ms
# Ping6はOK

~% ping pi3j.local       
ping: cannot resolve pi3j.local: Unknown host
# PingはNG

avahiのIPv4が有効になってない?かもしれない。

有効になっているか、確認する。

RaspberryPiでIPv4が有効か確認

$ avahi-resolve -n -4 pi3p.local
Failed to resolve host name 'pi3p.local': Timeout reached

IPv4はNG。

他の正常なRaspberryPiへの接続も、このRaspberryPiからのIPv4接続は、NG。

このRaspberryPiのIPv4設定が怪しい。

MacのmDNS情報もIPv4が有効か確認

~% dns-sd -q pi3j.local
DATE: ---Sun 07 Oct 2018---
14:30:45.395  ...STARTING...
^C
# IPv4 NG (dns-sdはIPv4が優先)

~% dns-sd -G v4v6 pi3j.local      
DATE: ---Sun 07 Oct 2018---
20:11:16.614  ...STARTING...
Timestamp     A/R    Flags if Hostname                               Address                                      TTL
20:11:16.884  Add        2  8 pi3j.local.                            240B:0251:D660:6F10:EB9B:D106:F4EF:98DD%<0>  120
^C
# IPv4 NG, IPv6 OK

dns-sdもIPv4だけNG、IPv6はOK

やっぱり、RaspberryPiのAvahiのIPv4設定が怪しい。

RaspberryPiのavahi-daemonのIPv4を有効にする

# 設定ファイルを編集
$ sudo vi /etc/avahi/avahi-daemon.conf

# 変更前
use-ipv4=no
use-ipv6=yes

# 変更後(use-ipv4 を yes に変える)
use-ipv4=yes
use-ipv6=yes

# 再起動&リロード
$ sudo service avahi-daemon restart
$ sudo service avahi-daemon force-reload

use-ipv4がnoになっていた。

(いつ変えた??どこで変わった??)

覚えてないので詳細は不明、、、、、気を取り直して、動作確認する。

MacのmDNS情報を確認

~% dns-sd -G v4v6 pi3j.local
DATE: ---Sun 07 Oct 2018---
22:30:50.100  ...STARTING...
Timestamp     A/R    Flags if Hostname                               Address                                      TTL
22:30:50.101  Add        3  8 pi3j.local.                            240B:0251:D660:6F10:EB9B:D106:F4EF:98DD%<0>  120
22:30:50.101  Add        2  8 pi3j.local.                            192.168.10.21                                120
^C
# IPv4,v6 OK

~% ssh pi@pi3j.local   
pi@pi3j.local password:

# mDNSでSSH接続が可能になった

IPv4もOKになり、SSH接続も可能になった。

疲れた。。。

HDRタイムラプス動画とHDR静止画で過去と現在の愛兎の様子を監視する(アンチノイズ) #RaspberryPi #PiCamera #Python #rclone

前回、アップロードまで完了しましたが、画像の暗い部分などでノイズが目立つことがあります。

OpenCVにはアンチノイズリダクションに使えるAPIが用意されているので、試しに使って見たいと思います。

結果としては、少し精細感を欠き、処理時間が2倍ぐらい掛かってしまいますが、ノイズを軽減することが出来ました。

アンチノイズ処理は、cv2.imwriteの手前に、下記の処理を追記することで、実現します。

“HDRタイムラプス動画とHDR静止画で過去と現在の愛兎の様子を監視する(アンチノイズ) #RaspberryPi #PiCamera #Python #rclone” の続きを読む

HDRタイムラプス動画とHDR静止画で過去と現在の愛兎の様子を監視する(その4) #RaspberryPi #PiCamera #Python #rclone

前回はHDR画像とタイムラプス動画を作成しましたが、今回はOneDriveへ作成した画像や動画をアップロードします。

アップロードには、よく使われているLinuxでよく使われているrcloneを利用します。

あらかじめ、Microsoftアカウントへの登録をしておき、OneDriveへログインをしておくとスムーズです。

Amazonプライム会員だと、Amazon Cloud Driveへの静止画のアップロードは無制限で、他のバックアップ用途にも流用できそうだったので、事前に検討していましたが、

acd_cliというCLIでAmazon Cloud Driveを扱うツールが開発停止しており、
さらに、rcloneのAmazon Cloud Drive機能も開発停止していたので、契約している容量が一番大きい、OneDriveにしました。

“HDRタイムラプス動画とHDR静止画で過去と現在の愛兎の様子を監視する(その4) #RaspberryPi #PiCamera #Python #rclone” の続きを読む

HDRタイムラプス動画とHDR静止画で過去と現在の愛兎の様子を監視する(その3) #RaspberryPi #PiCamera #Python

前回は明るさの異なる5枚の写真を撮影しましたが、今回はHDR画像とタイムラプス動画を作成します。

タイムラプス動画の作成には、ffmpegを利用します。

ffmpegは出来れば、ハードウェアエンコーダ(h264_omx)が使える方がより良いです。

OpenCVのHDRの作成方法には「Debvec」「Robertson」「Mertenes」の3パターンがあります。

今回は、露光時間が不要な「Mertenes」を利用します。

出来れば、露光時間を与えた方がより良い結果になるそうですが、十分、綺麗だったので、今回は露光時間は渡していません。

“HDRタイムラプス動画とHDR静止画で過去と現在の愛兎の様子を監視する(その3) #RaspberryPi #PiCamera #Python” の続きを読む

HDRタイムラプス動画とHDR静止画で過去と現在の愛兎の様子を監視する(その2) #RaspberryPi #PiCamera #Python

前回から間が空いてしまいましたが、露出を変えて連続で撮影する処理を作成します。

Pythonのfor文でループしつつ、露出を変えて何度も撮影するプログラムを、試作しましたが、

思った様に明るさが変わらないので、試行錯誤した結果、撮影だけのプログラムを別途作成し、別のPythonプログラムからパラメータを変えて連続で呼び出して、

明るさの異なる写真を5枚、取得する様にしました。

明るさが変わらない理由は不明で、シャッター速度・ISO感度を変更してsleep(2〜10秒)しても、2回目以降のループで明るさが変わらなくなります。

しかも、露出補正レベル(exposure_compensation)に関しては、1回目のループでも全く効果がありません。。。。

公式のドキュメントも確認しましたが、露出補正レベル、シャッター速度、ISO感度の使い方は間違っていない様です。

気持ち悪いですが、前述の様にPythonのプロセスを別にすれば、シャッター速度・ISO感度の変更が効いていたので、

撮影とプロセスを別にしました。

“HDRタイムラプス動画とHDR静止画で過去と現在の愛兎の様子を監視する(その2) #RaspberryPi #PiCamera #Python” の続きを読む

HDRタイムラプス動画とHDR静止画で過去と現在の愛兎の様子を監視する(その1) #RaspberryPi #PiCamera #Python

我が家では、RaspberryPiにHomebridgeをインストールし、PiCameraを使って愛兎の様子を外出先でも見れる様にしています。

この方法は欠点があって、何故かHomebridgeが高頻度で「応答なし」になりますし、過去の様子が見れません。

(嫁のiPhoneはあまり応答なしにならないそうです、、、)

それに画質もあまり良く無いので、小さい生き物の様子をみるにはちょっと不十分ですし、たまたま部屋の暗いところに愛兎がいると、画質が悪いのと相乗効果であまり良く見えません。

そこで、ちょっと前からiPhoneなどスマートフォンで、白飛びや黒つぶれが少ないHDRの写真が撮れますが、

OpenCVでも簡単にHDR写真が作れるそうなので、試してみました。

今回は「その1」ということで、PythonにOpenCVやpicameraなど、必要モジュールのインストールと静止画の撮影を行いました。

“HDRタイムラプス動画とHDR静止画で過去と現在の愛兎の様子を監視する(その1) #RaspberryPi #PiCamera #Python” の続きを読む

avahi-daemonのIPv4の警告を消す #mDNS #RaspberryPi #Tinkerboard

我が家では、ホスト名を設定するのがめんどくさいので、mDNSを多用してますが、

avahiのステータスを見るコマンドを知って

HomebridgeをインストールしているRaspberryPiでステータスを確認して見ましたが、

見覚えのない警告が出力されてました。

“avahi-daemonのIPv4の警告を消す #mDNS #RaspberryPi #Tinkerboard” の続きを読む

#RaspberryPi を据え置きのタブレットPCに

RaspberryPi3 B+と一緒に色々と購入して、据え置きのタブレットPC風にしました!

まだ、用途は考えていません。。。。笑

後々で、電光掲示板がわりに室温とか表示したり、

家庭内の機器をコントロールするマクロボタンを表示したり、

SDカード内の写真と動画を家庭内のNASに自動転送したり、、、したいですね。

また、何かアプリを作ったらご紹介したいと思います。汗

“#RaspberryPi を据え置きのタブレットPCに” の続きを読む

#Tinkerboard にオンラインIDEをインストール #eclipse #Che #Docker #iPad

iPad上でIDEを使ったプログラミングがしたい!人向けです。

Docker版のeclipse Cheが公開されてますが、
armに非対応で、Tinkerboardへのインストールに失敗します。

今回は仕方がないので、eclipse Cheの本体をそのままインストールしました。

“#Tinkerboard にオンラインIDEをインストール #eclipse #Che #Docker #iPad” の続きを読む