Raspberry Pi Zero W 見守りカメラの画像をタブレットで見る

前回の「Raspberry Pi Zero W を見守りカメラ用に設定する」で玄関に動くものを検知したら写真を撮ってファイルサーバーに保存するようにできました。

妻はあまりパソコンを使わない(妻用のマシンもない)ため、妻がよく使う iPad(3rd) で撮影した画像を見られるようにすべく Node.js で簡単なスライドショーを作りました。

続きを読む

Raspberry Pi Zero W を見守りカメラ用に設定する

玄関のあたりで動く物があったら撮影をしてくれるように設定します。
以前は Raspberry Pi を使っていましたが起動しなくなってしまったので目立たなくしやすい Pi Zero W を選びました。

今回購入した Raspberry Pi Zero W スターターキット(長い)では付属している 8GB の microSD に OS 導入用の NOOBS が入っているのでそいつを使って Raspbian をインストールします。

f:id:k-side:20180212150928j:plain
画像の電源は付属のものではないです

続きを読む

PINE64 1GB版を購入

Trello のオープンソース実装 wekan や Git のリポジトリサーバー Gogs を動かすために Raspberry Pi3 が欲しかったのですが、秋葉原秋月電子通商PINE64 が販売されていたので買ってみました。

Kickstarter で資金調達されて Raspberry Pi3 とほぼ同時期(ちょっと後?)に販売され始めたもので64ビットの SoC を搭載したシングルボードコンピューターです。
Raspberry Pi より大きな本体ですがメモリの量で 1GB 版と 2GB 版があり、2GB 版でも5000円を切っていて、1GB 版も3000円しない販売価格でした。
USB コネクタから給電、メインストレージが microSD、64ビット SoC 搭載と RPi3 と似たような感じです。サイズは倍くらいありますが…。

ともかくお値段に釣られて PINE64 の 1GB 版を購入しました。
とりあえず家で実験です。

OS のインストール

何度か debian を入れたのですが、なんかうまく行かなかったので Wiki をたどって Ubuntu をインストールします。とはいえ Ubuntu なので基本一緒です。
メイン機が Windows なのでイメージをダウンロードした後 DD Win を使って microSD にイメージを書き込み PINE64 に挿して LAN ケーブルと電源を接続すればブートします。
電源は 5V2A を出せる Nexus 7(2017) の AC アダプタから給電させます。

ssh でログインしてまずは uboot とそこのカーネルを更新し、パーティションを拡張します。

$ sudo -i
# /usr/local/sbin/pine64_update_uboot.sh
# /usr/local/sbin/pine64_update_kernel.sh
# resize_rootfs.sh

散々リブートしろと言われているのでここでリブートさせました。
再度 OS が上がっていたらパッケージ類を更新します。

# apt-get update
# apt-get upgrade

ユーザー設定と docker のインストール

自分用の一般ユーザーを追加して docker を入れます。

# adduser zoar
# usermod -aG sudo zoar
# apt-get install docker.io
# usermod -aG docker zoar
# systemctl restart docker

追加したユーザーで ssh ログインできたことを確認してデフォルトの一般ユーザーをログインできなくしておきます。

# passwd -l ubuntu

とりあえずこんな設定だけしておいておしまいです。

さて、再起動させるとときどき OS が上がってこない事があります。ディスプレイを繋いでいないのでどういった現象がおきているかわかりませんが、電源の再投入や再起動は気をつけないといけませんね。
というかディスプレイ繋いで表示を確認すればいいんですが。

#ValidationFriday について簡単に

GitHub が「Open Source Friday」という名前で毎週金曜日にオープンソースへのコントリビュートをしようというキャンペーンをしているのをご存じの方も多いと思います。
OpenStreetMap 周りでも人道支援OpenStreetMap チームHOT人道支援マッピングプロジェクトMissing Mapsなどによって毎週金曜日にマッピングの妥当性を確認する作業をしましょうというキャンペーン「#ValidationFriday」が展開されています。
ハッシュタグとしても機能するこのキャンペーンは Twitter検索するといくつものツイートが見つかります。

HOT が中心となって開発した共同マッピングツール HOT Tasking Manager 上で行われているマッピングプロジェクトに対して、そこで行われた編集の妥当性を検証する作業に参加しましょうというのが大きな目的です。
Tasking Managerマッピングプロジェクトにはマッピングに必要とされる経験やその地域のマッピング難易度が書かれているので、自分にあったタスクで作業をするといいと思います。多くのタスクからマッピング難易度やプロジェクトを動かしている組織、マッピングプロジェクトの名前などで絞り込んで探すこともできます。

どうやって検証作業をするのかわからなかったり、多くの人が参加するプロジェクトに関与することや日本語以外の言語を読み込むことに抵抗を感じる方もいらっしゃるかもしれません。
まずは日本国内で他の人の編集を見てみるのもいいかもしれません。もしくは Mapbox 社が公開している Validating OpenStreetMap (内容は翻訳されています!)を読んで積極的に問題のありそうな編集を探すという方法もあります。

OSM Inspector でエラーを潰している話

この記事はOpenStreetMap Advent Calendar 2017の12日目の記事で、11日目は K-Sakanoshita さんによる『OSMの活用方法(事例含む)をまとめてみます』です。

様々な作業と同様に OpenStreetMap でも編集時に意図しない操作をしてしまい不整合ができてしまう場合があります。
自分はよく昼休みに OSM Inspector を開いてエラーを潰しているので簡単に OSM Inspector を紹介しようと思います。

OSM Inspector とは

OSMにあるデータの不整合を検出して表示する品質評価ツールの一種です。 Geofabrik 社が運営しています。 データ上にある不整合は地図としてのレンダリングに直接影響を与えたり経路検索の検索結果に影響を与えたりするのでできるだけ減らしていく必要があります。
品質評価ツールはいくつか種類がありそれぞれに特徴があって表示される不整合の内容や表示され方が違うので自分の目的やフィーリングで選ぶのがいいと思います。

  • Keep Right
  • Osmose
  • JOSM/Validator
  • Maproulette
  • OSM Inspector

今使っているのはこの中の OSM Inspector です。なぜ他のツールではなく OSM Inspector にしたかというと、たまたま WeeklyOSM で紹介されていたからという理由です。
次に挙げるレイヤーの情報は各種 OSM のエディタで背景として利用することができます。例えば JOSM では画像の設定内にプリセットが用意されているので有効化して背景に設定すると衛星画像と同じ様に表示させることができます。 f:id:k-side:20171211120948p:plain

OSM Inspectorでは不整合の種類ごとにレイヤー分けして表示されています。

  • ジオメトリ
  • タグ付け
  • 場所
  • 道路
  • エリア
  • 海岸線
  • 経路検索
  • 住所
  • 水域
  • 公共交通機関

よく見るカテゴリ

埼玉県とその周辺を中心にジオメトリのレイヤーを見ています。
ジオメトリのレイヤーで主に表示されるのは次のようなエラーです。

  • ポリゴンがねじれている(self_intersection_ways) f:id:k-side:20171211121024p:plain

  • ウェイの同じ構成ノードが複数回登録されている(duplicate_node_in_way) f:id:k-side:20171211121048p:plain

OSM Inspector で表示されたエラーは地図上のアイコンをクリックするとエラーの情報や各種 OSM エディタで対象のオブジェクトを開くためのリンクが表示されます。
エディタの好みは分かれると思いますが時々マルチポリゴンのリレーションを編集することもあるので JavaOSM エディタ JOSM で読み込んで編集するのがいいと思います。ただしリンクから JOSM を開くためにはリモート制御の設定をしておく必要があります。
f:id:k-side:20171211121004p:plain

修正方法

具体的な修正方法については2015年のアドベントカレンダーで kochizufan さんが投稿されたOpenStreetMap修正に有用な操作紹介を見ていただくといいと思います。丸投げとも言います。

エラーを見ていくと普段エディタで開かない地域を開いて見ることになるので他の人がどういう編集をしているのかを確認して勉強することができます。
またアームチェアマッピングでは修正できないエラーもあるので、現地に行ってみる口実にしたり、エラー周辺を編集しているマッパーさんに連絡を取るなど無理して自分自身で修正する必要もないのではないかと思います。

PowerShell で JSON ファイルを連想配列にする

PowerShellJSON ファイルを読み込んでごにょごにょするのに ConvertFrom-Json を使っていますが、ConvertFrom-Json で作成されるオブジェクトが PSCustomObject だったため(自分が)扱いやすい HashTable にとして変数に格納してみました。

JavaScriptSerializer を使って Deserialize するといいみたいです。

$jsontext = Get-Content jsonfile.json -Encoding UTF8

$serializer = New-Object System.Web.Script.Serialization.JavaScriptSerializer

$hashtable = $serializer.Deserialize($jsontext, [System.Collections.Hashtable])

とすると JSON のファイル内容が HashTable として変数 $hashtable に入りました。
若干面倒じゃのぅ…

追記

ConvertFrom-Json-To-Hashtable コマンド作ってみた。

アドベントカレンダーを作ってみた

Node.js と MongoDB を使ってOpenStreetMapアドベントカレンダーを作ってみました。継続的に利用する(される)かどうかはともかく「オープンベータ」とかいう逃げの言葉を使って公開しています。
例年のちゃんと安定したアドベントカレンダーは Qiita に作成されるので真面目に記事を公開される方はもうしばらくお待ちください。

http://osm.eu-4.evennode.com/

続きを読む