shohei blog

投稿者: Shohei

ATOM Cam を使って予算1万円で畑を監視する

はじめに

この記事は「 ATOM Tech の ATOM Cam を使い畑を監視しよう」というコンセプトですが、本カメラの屋外設置は保証対象外の行為となります、また本記事にある行為はカメラ以外にバッテリーや太陽光発電パネルを扱う事になりますのでカメラ本体の故障は元より事故や発火等のリスクがある事を承知下さい。

という訳で、ATOM Cam 発売されました。たった 2,500円で国内メーカのネットワークカメラが買えるという事に驚きます。しかしここまで値段が下がれば色々と冒険もできると思います。私事ですが2020年3月に朝来に引越し、庭(というか菜園)の手入れをするのが楽しくなってきた所です、しかし週末にしか帰宅しない生活の為平日は菜園を見る事ができない、ので何とかならないのかと実は M5Camera を屋外に設置して定期的に JPEG を送付するというプログラムを書いていた所(これもサーバ側のプログラムは書いてあるので別の機会にどこかに載せます) です。という所に ATOM Cam を見つけて「これだ!」となりました。

必要な物

  •  ATOM Cam 本体 2500円
  • 太陽光発電パネルキット(10W) 2990円
  •  バッテリー(12v12Ah) 3480円
  • 収納ボックス 1000円くらい?

上記で大体 10,000 円くらいになりますね。
ボックスはわざわざ買わなくても家で余っている物を流用すればOKですね。ここで使っているのは PP 素材なので屋外にそのまま晒すと劣化するかもしれません…。

STEP.1 仮組
全ての物を箱から出し、仮組して動作するかチェックします。
ソーラーパネルの先はクリップになっていましたが不要なので切断します。
このケーブルを切り取りバッテリーとコントローラの接続にも使います。
バッテリーとコントローラを接続しコントローラの電源が入る事を確認し、次にソーラーパネルと接続し太陽光下で発電する事を確認します。問題無ければ ATOM Cam を取り出しコントローラのUSBポートに差し込み初期セットアップを行います。

STEP.2 ボックス加工
カメラ用の穴と、ソーラーパネルのケーブルを通す穴を開けます。ソーラーパネルを固定する用の穴が必要な場合はこちらも穴を開けます。
また、熱暴走が心配なので雨が降っても水が侵入しない場所に空気穴を開けておきます。
※カメラ用の穴はレンズ部分だけ空けると夜間オートで切り替わるナイトビジョンの時に点灯する赤外線ライトがボックス側に反射して何も見えなくなるので要対策です。現在対策確認中。
電動工具であれば穴は一発であけられるのでお勧めです。マキタのペンドライバードリルを使っています。

STEP.3 組立て
箱の中に入れましょう。
ソーラーパネルはインシュロックでボックスの蓋に固定しました。
カメラは付属の両面テープで金属プレートをボックス内側に貼り付けてマグネットで固定しますがズレるのでガムテープで位置修正してます。

STEP.4 設置
適当な場所に設置するだけです。画角が広いので良いですね。スマホのアプリで実際に見ながら設置できるので良いですね。

運用
2020年6月1日に設置2020年6月5日現在特に問題無く動作しています。

社内で構築した Rocket.Chat をインターネットから繋がるようにする

社内環境で既に構築してしまった Rocket.Chat を外部から評価したかったのでやり方を模索。

前提としては社内からインターネット上の踏み台サーバーへSSH接続可能な事。

 

Reverse ssh tunnel を安定運用する
[http://qiita.com/syoyo/items/d31e9db6851dfee3ef82]

ここを参考に3000番ポートをポートフォワードで踏み台から転送できるようにする。

これだけで踏み台から(もしくは踏み台にSSHしてポートフォワード掛ければ) Rocket.Chat へ接続できるようになる。

しかしこれだと一々接続しなければ行けないのでさらにこの踏み台サーバーのポートを直接叩けば Rocket.Chatが使えるようになるには下記の設定を入れる。

まずは、踏み台側sshdの設定変更、これで外部から受け付けられる

nano /etc/ssh/sshd_config
GatewayPorts yesを追加
sudo /etc/init.d/sshd restart

次にIPのFORWARD設定

sudo nano /etc/default/ufw
#DEFAULT_FORWARD_POLICY="DROP"
DEFAULT_FORWARD_POLICY="ACCEPT"

sudo nano /etc/ufw/sysctl.conf
net/ipv4/ip_forward=1</pre>

最後にiptables(ufw)の変更、

nano /etc/ufw/before.rules
*nat
:PREROUTING ACCEPT [0:0]
-A PREROUTING -m tcp -p tcp --dst <IP ADDRESS> --dport <OUTBOUND PORT> -j DNAT --to-destination 127.0.0.1:<FORWAD PORT>
COMMIT
ufw reload

これで繋がるようになるはず。

php70-php-gdを入れても設定が反映されなかった

WordPressではGDというライブラリを使い画像の処理を行っているそうな。
サムネイル(アイキャッチ)の縮小や画像編集で「ご利用中のホスティング環境は画像の回転機能に対応していません。」が出る場合はこれが上手く動いていないのが原因。

CentOSなのでこんな感じ

# yum list |grep php-gd
php70-php-gd.x86_64                        

#yum install php70-php-gd

これで使えるようになると思ったらどうも反応しない。
phpinfoにもGDの項目がenable以前に表示もされていない。

というわけで下記を行なったところ解決。

 

extension=/opt/remi/php70/root/usr/lib64/php/modules/gd.so

Let’s Encrypt してみたけどハマった

このブログを載せているサーバがDebian6だったの気付き8まで一気にアップグレードしました。

Let’s Encryptが気になったので導入してみる事に。

ガイド通りにやったら問題無く証明書を作成する所まではできたがApacheがどうしてもエラーになる。

SSLのチェックサイトではoversized record received with length とか怒られてしまうのだが原因はapache2のvirtualhostの記述にありました。

<VirtualHost *:80> の形式と
<VirtualHost HOGEHOGE.com> の形式が混在してしまうとSSL(ポート443)ではなく通常のページを返すようです。

最終的にApacheのログレベルをtraceにしててやっと気づきましたが大分ハマってしまったので記事にしときました。

 

CPIにownCloud 8をインストールする

htaccessをこうすれば動く

# Version: 8.0.2

Options +FollowSymLinks
 <IfModule mod_fcgid.c>
 <IfModule mod_setenvif.c>
 <IfModule mod_headers.c>
 SetEnvIfNoCase ^Authorization$ "(.+)" XAUTHORIZATION=$1
 RequestHeader set XAuthorization %{XAUTHORIZATION}e env=XAUTHORIZATION
 </IfModule>
 </IfModule>
 </IfModule>
 <IfModule mod_php5.c>
 php_value upload_max_filesize 513M
 php_value post_max_size 513M
 php_value memory_limit 512M
 php_value mbstring.func_overload 0
 php_value always_populate_raw_post_data -1
 <IfModule mod_env.c>
 SetEnv htaccessWorking true
 </IfModule>
 </IfModule>
 <IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
 RewriteRule ^\.well-known/host-meta /public.php?service=host-meta [QSA,L]
 RewriteRule ^\.well-known/host-meta\.json /public.php?service=host-meta-json [QSA,L]
 RewriteRule ^\.well-known/carddav /remote.php/carddav/ [R]
 RewriteRule ^\.well-known/caldav /remote.php/caldav/ [R]
 RewriteRule ^apps/calendar/caldav\.php remote.php/caldav/ [QSA,L]
 RewriteRule ^apps/contacts/carddav\.php remote.php/carddav/ [QSA,L]
 RewriteRule ^remote/(.*) remote.php [QSA,L]
 RewriteRule ^(build|tests|config|lib|3rdparty|templates)/.* /503.php [L]
 RewriteRule ^(\.|autotest|occ|issue|indie|db_|console).* /503.php [L]
 #RewriteRule ^(build|tests|config|lib|3rdparty|templates)/.* - [R=404,L]
 #RewriteRule ^(\.|autotest|occ|issue|indie|db_|console).* - [R=404,L]
 </IfModule>
 <IfModule mod_mime.c>
 AddType image/svg+xml svg svgz
 AddEncoding gzip svgz
 </IfModule>
 <IfModule mod_dir.c>
 DirectoryIndex index.php index.html
 </IfModule>
 AddDefaultCharset utf-8
 Options -Indexes
 <IfModule pagespeed_module>
 ModPagespeed Off
 </IfModule>
 <IfModule mod_headers.c>
 <FilesMatch "\.(css|js)$">
 Header set Cache-Control "max-age=7200, public"
 </FilesMatch>
 </IfModule>

ErrorDocument 403 /owncloud/core/templates/403.php
 ErrorDocument 404 /owncloud/core/templates/404.php

<Limit GET POST OPTIONS>
 Order allow,deny
 Allow from all
 </Limit>
 <LimitExcept GET POST OPTIONS PROPFIND DELETE PROPPATCH MKCOL PUT COPY>
 Order deny,allow
 Deny from all
 </LimitExcept>
 <IfModule mod_dav.c>
 Dav Off
 </IfModule>

20141109

東京より友人来る。
高校時代からの付き合いだから16年くらいの付き合い、知り合ったきっかけはパソコン通信。彼は岡山の高校だったのに大学が地元枚方に来た縁で海外旅行まで一緒にいったりした仲、今ではお互い所帯持ちというのが遠くに来たんだなぁと思う。プリンごちそうさまでした。

あーちゃんが伝い歩きを覚えはじめた。

豚まんのタネが余っていたので生地を作った。蒸したての豚まんは美味しくてあっという間に完食。一部をさかなさんにお裾分け。

夜ごはんはさかなさんに頂いていた鴨肉の蕎麦。松代一本ねぎも美味しかった。本当にたくさん頂いているので食べにいかねばいかないと奥さんと話す。