風待ち

プログラミングの勉強や日々の出来事のログなど

Raspberry Piにカメラをつけて、コマンドで撮影するのは問題なく上手く行ったけど、ピント合わせが面倒だったのでライブカメラにして合わせようと思ったらMotion-mmalが動かず、motionEyeを入れることでなんとか使えるようになった。

TechShareのRaspberry Pi用カメラモジュール(Standard,Adjustable Focus)というものを購入。

Amazonですすめられるままに買った。動作報告のレビューもあるし問題ないだろう。

届くと、説明書なんかはなくてURLが書かれているだけ。まぁ安いものだし。

Camera -Raspberry Pi 用カメラモジュール

そこに書かれているままにセットアップしてコマンドを打つと問題なく撮影された。

raspistill -o image.jpg

上下左右が逆さまになったが、これはカメラの取り付け方が反対みたいだ。

Raspberry Pi本体とつながっているケーブルを上にして置くと逆さまになるみたい。

これについては、オプションをつければ問題なく撮影してくれる。

rasbstill -vf -hf -o image.jpg

ここまでは良かったが、ピント合わせが面倒で仕方なかったので、Motion-mmalを入れることにした。

が、これが難航。どうやっても「libavformat.so」なるものがないといわれる。

調べつつ「apt-get」で入れようとするもない。途方にくれていたらmotionEyeを発見。説明に従って入れていく。

motioneye Install On Raspbian

途中、4のところでエラーになるがおもむろにもう一度同じコマンドを実行したら上手く行った。失敗した理由も再実行で上手く行った理由もわからないし、Issuesに近いものが書かれているがよくわからん。まぁ上手く行ったのでよしとしよう。

4.Install the dependencies from the repositories:

$ apt-get install python-pip python-dev libssl-dev libcurl4-openssl-dev libjpeg-dev

説明の最後まで行けば、あとは、/etc/motioneye/motioneye.confに書かれているポート番号を調べてブラウザで「http://Raspberry PiのIPアドレス:調べたポート番号/」にアクセスすればライブで映像が見れる。

これで、ピントの調整も上手く行ったのでmotionEyeは止めてcronで5分に一回撮影する。

$  systemctl stop motioneye

cronで動かすShellスクリプトは「camera.sh」としてこんな感じのシンプルなものにした。

#!/bin/bash

DATE=$(date +"%Y-%m-%d_%H%M")

raspistill -vf -hf -o /home/pi/camera/$DATE.jpg

カメラフォルダの下に年月日と日時のファイル名で保存していく。

さて、何が写るか。

これでうちの家の庭を荒らしまわっている犯人を特定できるだろう。おそらく、ネコかムジナだろうけど。

夜の撮影はやめておく。カメラも普通のものだし、他のものが写ったら嫌だし。しかし、ムジナだと犯行は夜か…

Raspberry Pi3でどうやってもWifiにつながらなかったので、network-managerに変更したらあっさりつながった。

ずっと有線で作業していて、いよいよWifiを使うとして、調べながらwpa_supplicant.confを書いても上手くいかず。

GUIで操作してSSIDをクリックするとパスワードを求められるが、それにパスワードを入力しても一切反応がない。 (最初はraspbian_liteを落としていたのでCUIしかなく、仕方なくまた一晩かけて落としなおした。)

/etc/network/interfacesを見るが、どうも上手くいかない。

外の防犯カメラを作るためにRaspberry Piを買ったので無線でなければ準備がものすごく面倒になる。

あきらめかけていたところ、network-managerなるものがあると知ったので、そっちに切り替えることにした。

  1. インストールと削除
  2. /etc/NetworkManager/NetworkManager.confを編集
  3. /etc/network/interfacesのこれまで試行錯誤した設定をコメントアウト
  4. 接続したいWifiを探して
  5. 設定する
$ sudo apt-get install -y network-manager
$ sudo apt-get remove -y dhcpcd5

managed=falseをmanaged=trueに変える

managed=true

interfacesは全部「#」でコメントアウトしてしまってよさそう。小心者なので最初はwlan0系だけコメントアウトした。

# allow-hotplug wlan0
# iface wlan0 inet dhcp
#     wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

※eth0もコメントアウトしないと今度は有線が使えなくなったけど、無線でだけで十分なのでどうでもいい。

Wifiを探す

$ nmcli dev wifi list

接続したいWifiSSIDとパスワードを設定

$ nmcli d wifi connect SSIDを書く password パスワードを書く

これで接続できるようになった。

それでも上手く行かない時は一度、ちゃんとデバイスが認識されているか見た方がいいかも。

$ nmcli dev status

ネットで調べながらだとOSのバージョンが違って上手く行かなかったりすることも多い。

情報にも鮮度があるから、調べる時にはいつ書かれたものかを意識した方がよさそう。

仕事では古い技術を使うことが多いから、逆に過去のものをあさる事が多いんだけどね。

VB6とかVB6とかVB6とか。

Raspberry Piを買ったけど、ネットワークが細すぎてraspbianをブラウザでを落とそうとしてもエラーになったのでwgetで落とした。

FireFoxで落とそうとしたけど、13時間かかると出る。使ってるネットワークが細いことは知ってたけど、ここまでとは思わなかった。

そして、放置していたらいつの間にかエラーになって止まっていた。

再開しても、最初からやり直しになるので結局、2時間もたたずにエラーになってしまう。

そこで、Windows7ではあるものの、wgetを使っていたのでそれを使ってダウンロードした。

URLはFireFoxのエラーになったものを右クリックして「ダウンロード元のURLをコピー」した。

CMD> wget.exe http://director.downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2017-12-01/2017-11-29-raspbian-stretch-lite.zip

一晩放置していたらダウンロードが終わっていたので、SDカードに書き込むと問題なく起動した。

Visual Studio Codeで英数字と日本語で別のフォントを利用する Windows7

Visual Studio Codeを英数字は「Consolas」、日本語は「メイリオ」で使いたい。

VS Codeを起動して、ユーザー設定を開き下記を追記すると思ったように表示されるようになった。

"editor.fontFamily": "Consolas,メイリオ",

先に指定したフォントが優先で使われるみたいで、メイリオを先に指定すると英数字も日本語も表示できてしまうので、Consolasの出番はない。

なので、日本語フォントのないConsolasを先に指定すると、英数字はConsolasが表示され、日本語はメイリオで表示される。

英数字と日本語で微妙にフォントサイズが違う感じはするが、コードはConsolasで見たいので、妥協する。

コードとコメントを読む時は、同時に見てはいるけど認識のしかたが違うというか、何となく、別の感覚で読んで認識しているので、フォントや色やサイズが違う方が自分にはより理解しやすい。

たぶん、自分の中でコードは少なくとも書いてある通りに動いる事実があり(その動きがバグであろうが)、コメントは書いた時にはそういうつもりだったんだろう、書いた人の中ではな。くらいの感じで読んでいるからなのかもしれない。

emacsにdesertテーマを追加する。

vimのdesertテーマに出会ってから、他のエディタや開発環境を使う時でも、テーマの設定ができるものなら、desertテーマを追加している。

人気のあるカラーテーマではないとは思うけど、自分には長い時間見ていても疲れないし、一番しっくりくる色合いで、好んで使っている。

emacsにはdesertテーマは追加しないと無いようなので、テーマを追加してみた。

微妙に色合いが違うけどその辺は雰囲気が似ていればいい。

GitHubここからdesert-theme.elを落としてくる。

こうやって作ってくれている人がいると、自分以外にも同じものが好きな人がいることがわかってちょっと嬉しい。周りにはこのカラーテーマに賛同してくれる人がいないので、日々ちょっと寂しい気持ちでいる。

テーマを設定する前に落としてきたファイルを.emacs.dの下にthemesを作ってその中に入れておく。

mkdir ~/.emacs.d/themes/
mv desert-theme.el ~/.emacs.d/themes/

入れたら、init.elに設定を追加すれば反映される。

;; テーマの追加
(add-to-list 'custom-theme-load-path "~/.emacs.d/themes")
(load-theme 'desert t)

emacsでHelmを使っていても、ファイルを開く時にはDiredを使いたい場合にinit.elに書く事

Helmは全部を同じように扱えるから便利。

だけど、たくさんのファイルを順番に編集する必要がある時には、Diredを開きっぱなしで作業した方が効率がいいと思う。

ウィンドウを分割して、片方でDiredを開いておいて、もう片方でファイルを表示させ、切り替えて使う。

特にDiredで気に入っているのは、そのフォルダ内のファイルを絞り込むのに、正規表現を使えるのがいい感じ。絞った状態でファイルリストを表示しておけば、関係ないファイルを開いてしまう煩わしさをはじめから排除できる。

そういう使い方を好む人はHelm設定の下の方に下記の設定をinit.elに書けばいい。

(add-to-list 'helm-completing-read-handlers-alist '(find-file . nil))
(add-to-list 'helm-completing-read-handlers-alist '(dired . nil))
(add-to-list 'helm-completing-read-handlers-alist '(howm-list-grep-fixed . nil))

ついでに、howmで固定検索する時にも元の処理を使うようにする。

Windows7でemacsを起動した時に最前面にならない

git for windowsからemacsを起動した時にまれに、後ろに隠れてアクティブウィンドウにならず、いちいち切り替えるのが面倒なので調べてみた。

レジストリ

HKEY_CURRENT_USER/Control Panel/Desktop/ForegroundLockTimeout

を「200000」->「0」にして再起動すればいいらしい。

変更して再起動したら、常に最前面に表示されるようになったのでよかった。

emacsが問題というわけではなく。

どのアプリでも起こる問題みたいだが、自分の環境ではemacsでしか発生していない。

常にではなく、たまにしか起きない現象だから、Windowsemacs使ってるために起こるなんかの嫌がらせかと思ったよ。