2017/03/12

不動産とIoTを試してみる

不動産管理で使えるIoTサーバー(Windows)の構築

0.結論

・かなり複雑で手順が長い。業務でサーバー管理者などをやっている人でなければ再現不可かもしれない!?
・本来はセキュリティ上、どのような設定になっているかをウェブ上で公開するべきではないが。

1.不動産とIoTでできること

・防犯カメラ録画と遠隔地からのオンデマンドな監視
・温度などのデータ取得
・機材の故障も遠隔地から診断できる

もう少し頑張ればできること

・高価なカメラとストレージ(20万円くらい必要)を用意してVisualStudio+画像認識ライブラリで多少のプログラムを書けば顔認識して何時に誰が通ったか記録するなどもできなくはないと思われる。
・遠隔操作できるWindowsなのでアイデア次第で何でもつなげる

普通のPCサーバーと違うところ

・できる限り省電力であること
・空調がない場所への設置。夏の暑さに耐えられること
・数年間メンテナンスなしで安定稼働するような最小安定構成でセットアップ
・soracomは従量課金なので通信料を最小限に
・無線は年単位での長期安定は見込めないため有線でつなぐ

→一般的にはラズベリーパイが使われることが多い領域であるが、今回はWindowsを採用。
Windowsのほうが使用に慣れているので、トラブル発生時も何となく原因が推測できて解決しやすいため。

2.基本的な流れ

1.機器の接続
・ELECOM、BUFFALOなどの普通の有線/無線ルーター。使い慣れているものでよい。
・Intel NUCのUSBにsoracomの通信モデム
・プラネックスのネットワークカメラ(カメラ一発シリーズ)

2.ルーターへの接続
接続は次の通り
<有線WAN>接続なし
<有線LAN1>Intel NUC
<有線LAN2>ネットワークカメラ
<無線LAN>待ち受け状態に
ELECOM無線ルーターは2.4GHzのみOnにする。
soracom回線が落ちたときのため現場まで行けばWiFi接続できるように設定する。

3.Windows10 LTSBインストール
Home不可、Proでも良いがアプリやエッジを消したり強制アップデートをキャンセルしたり設定が面倒。WindowsServerでも良いが高い。LTSBはProからアプリ機能が省略されていてアップデートがバグフィックスのみになったeditionだと考えれば良い。

4.自動リカバリ設定
電源切断>電源再開のとき、自動再起動してログオンが済んでネット接続完了の状態にすること
→途中で電源が落ちたときに現場に行かなくても復旧できるように
→Windows10のタスクスケジューラでいくつかの設定が必要

5.Windowsの不要な動作をすべてdisableに
・バックグラウンドで動くサービス、Windowsアップデート、ソフトの自動アップデートなどをしないように設定する

6.Windowsのコアサービス(svchost.exeなど)が勝手に通信しない設定
・すべてのポートを閉めてホワイトリストを作成

7.時刻合わせとNTPサーバー化
・長期安定稼働には時刻合わせが必要
・接続する機器(ネットワークカメラなど)がPCで時刻合わせできるようにする

8.Hamachiインストール
・遠隔メンテする場合はHamachi+RDPが基本アクセスルート
Logmeinは有効にすると勝手に高額課金されるので年間数万円は気にしないという予算感でない限りはおすすめしない。そのお金が払えるならば、Hamach+RDPが落ちたときのバックアップとして有用。無料のChromeリモートデスクトップでも良さそう(調査中)

9.深夜に自動再起動設定
・一日一回再起動した方が安定稼働しそうなため

10.カメラ録画設定
プラネックスのカメラ一発シリーズを使う。このシリーズはハードはOKなのだがソフト面のデキが悪いのでファームウェアアップデート必須。
Windows上に共有フォルダを作成してカメラからログインして書き込みできるように設定。(WindowsはNAS化する。ディスク領域をカメラに対して解放する)

11.Googleドライブ設定
カメラの動画ファイルをアップロードするために設定。ftpやAmazon,Microsoftのクラウドドライブでも何でもよい。同期共有型のものだと余計な通信が発生するためftp型(一方的にアップして終わり)のストレージがよい。

3.ハードウェア

安定動作しそうな構成を考えると次のようになった

1.PC本体(4万円)

Intel NUC(安いCeleronで十分) + 4GB RAM + 512GB SSD
→屋根裏に乗せたりするので軽いことも大事

2.有線/無線LANルーター(0.5万円)

ELECOMやBUFFALOの普通の有線+無線ルーター エレコムのWRC-F1167ACF2など
→WAN回線につないでいないと時計が狂って動かなくなるものはNG
→インターネット回線が落ちたときor現地で直接つないで高速にアクセスするために必要
→ルーターにSIM(フリー)スロットが付いている機種があれば便利だが日本にはない?
UKなどには売っている
例:D-Link DW 4G / 3G LTE Sim Slot Unlocked Wireless Mobile Broadband Router with 4 Port Ethernet DWR-921/B UK Plug
が日本ではほとんど売っていないので普通のルーターにする。個人輸入してもいいが、厳密には技適マークなしの無線機器は違反である。
→NUCのWifiと「Virtual Router」「My Wifi router」などを使ってNUC自身をルーター化する方法もあるが、長期安定動作するのか不明のため不採用
→AtermなどのWifiルーターは手動リセットなしで何年も無線が安定するとは思えないので使わない

3.ネットワークカメラ(2万円~)

プラネックスのカメラ一発シリーズCS-W50HDなど
→ハードのデキはまあまあだが、再生ソフトがひどい
→数ヶ月ほどネット接続せず時刻合わせしないと内部時計が狂って録画停止する問題がある
→赤外線で暗くても撮影できるのは○
→圧縮後でも画質はOK.被写体から遠くに設置すると細部が見えにくい
→録画は独自形式(.crf)だが中身の動画はH.264形式、音声はG.711形式。VLCで動画部分のみを自動認識して再生できる。
→室内+有線ネット常時接続環境であればBUFFALOのNASなどに1年くらい連続書き込みを続けても安定している様子

4.ネット回線はソラコム(0.5万円)

SORACOMスターターキット(3G USBドングル AK-020同梱)
これくらいしか選択肢がない
こちらもハードウェア、ウェブ管理画面はOKだがWindows用接続ソフトのデキがいまいち

5.オプションハード

遠隔操作で電源ON/OFFできるパワータップ(IP Power9258など)を付ければ「再起動すれば直るWindowsの不具合」で現地に行かなくて済む。ただし、機器が高いので付けなくてもいい。

3.PC基本設定

NUC BIOS設定

BIOS設定
電源FAIL OFFした時に自動的に電源ON設定になるように

Windows10 LTSBインストール

1.普通にインストールする
2.起動する
3.デバイスドライバはインストールせず標準のままでよい
4.固定IPv4アドレス設定
5.リモートデスクトップの着信許可設定を忘れずに
ここまで済んだら、あとはリモート(RDP)からつなぐ

6.Intelチップセットドライバのみインストールした
7.Windowsライセンス認証を忘れずに

SSDプチフリ対策

Windows10+Crucial SSDではタスクマネージャーでディスク使用率100%となる不具合が出る。
レジストリ等の書き換えで直る。他メーカーのSSDでは問題ない

手順は次の通り

1.レジストリ書き換え
下記をテキストファイルを作成して管理権限で実行

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\PowerSettings\0012ee47-9041-4b5d-9b77-535fba8b1442\0b2d69d7-a2a1-449c-9680-f91c70521c60]
“Attributes”=dword:00000000

2.電源オプション変更
その次に
コントロールパネル>電源オプションより
「AHCI Link Power Management – HIPM/DIPM」のバッテリ駆動、電源に接続をそれぞれDIPMにする

長期安定化対策

1.「システムの保護」を無効に
2.電源設定でスリープOFF
3.IPv6無効
4.WiFiとBluetooth無効
5.再起動時の自動ログイン設定 netplwizでログインパスワードなしに設定
6.1日一回タスクスケジュールで自動再起動 shutdown -r
7.タスクスケジューラ履歴を有効にしてトラブル時に追跡できるようにする
8.時計の正確さを保つ
9.Windowsアップデートと強制再起動をしない
10.Windows Defender無効化

□Windowsアップデートと再起動をしない
gpeditでgp編集
「コンピューターの構成」の「管理用テンプレート」→「Windowsコンポーネント」→「Windows Update」
「自動更新を構成する」画面の左上部分にある「未構成・有効・無効」欄のチェックを「有効」に変更
詳しくは外部サイトで

Windows10のWindows Update動作を自分で選択する方法

 

PCと接続デバイスの時計の正確さを保つ

コンピュータの時計は長期の稼働では狂ってしまう。
特にプラネックスのカメラは時計が狂い、1970年などにリセットされてしまい、時刻エラーで録画を停止してしまう問題があるので正しい時刻設定が維持されるようにしなければならない。
たいした話ではないはずだがWindowsの仕様で非常に面倒。

□PCのntpサーバー化
管理者権限のコマンドラインより
sc triggerinfo w32time delete
としてから
w32timeサービスの起動を自動-遅延開始にする
net start w32time

□WindowsでNTPサーバを構築する場合にはレジストリ設定が必要
regedit.exeで次の2カ所を書き換える

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpServer\Enabled
Enabledを1に設定

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config\AnnounceFlags
AnnounceFlagsを5に。デフォルトはaとなっている。

ウェブ記事によれば、UNIX系サーバとの同期する場合にはLocalClockDispersionを「0」に設定する必要があります。とのことで、
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\Config\LocalClockDispersion
ここをゼロにしておくといいかもしれない。

このあたりを参考にしました
http://d.hatena.ne.jp/Spiral/20110310/1327558925

□Windows timeの設定

[タスクスケジューラライブラリ] – [Microsoft] – [Windows]- [Time Synchronization] 配下にある Synchronize Time を選択 → 右クリックし、[無効] を選択

こちらを参考にしました
http://capm-network.com/?tag=Windows-NTP%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89%E8%A8%AD%E5%AE%9A

ネットワーク設定

Windowsdefender無効化

windowsdefender無効化.reg というファイルを作り下記を内容にして実行

—-
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows Defender]
“DisableAntiSpyware”=dword:00000001

Windows Firewall設定

□Windows10 Firewallのプライベートネットワークとパブリックネットワークとは何か

初心者にはわかりにくい。
これらは、ネット接続のプロファイルのプリセット名である。
プライベート、パブリック、ドメイン(にくわえて、すべて)と3種類のプリセットに分かれている。
単なるプリセット名なので、パブリックのほうがセキュリティ的に厳しく設定されている必要はない。
LAN1=プライベート、無線接続3=パブリックなど、
接続ごとに、どちらかを割り当てると自動的にWindows Firewallのセキュリティポリシーが適用される。

Windowsファイアーウォールのホワイトリスト設定

まずはデバイスとネットワークプロフィールを関連づけする
・hamachiとローカルLANはプライベートに
・USBDEVICE(soracom経由のインターネット)はパブリックに

→Windows10でプライベートネットワークとブリックネットワークの切り替え方法

□secpol.mscで変更
1. Open the Local Security Policy (secpol.msc).
2. In the left pane, click/tap on Network List Manager Policies. (see screenshot below)
https://www.tenforums.com/tutorials/28375-change-network-profile-name-windows-10-a.html
面倒すぎるがこれしかない?

□パワーシェルでも変更できる。たまに失敗する。やめたほうがよい。
パワーシェルを必ず管理者モードで実行
Set-NetConnectionProfile -Name “USBDEVICE” -NetworkCategory Private
(or -NetworkCategory public)
とやっても”識別されていない”ためか、しばらくすると強制的にパブリックになってしまう。

Windowsファイアウォール上の設定

基本すべての通信は遮断。その上で必要な分だけ
Windowsファイアーウォールにてホワイトリスト設定。
ホワイトリストをうまく作成しないと止まる。

□プライベートネットワークは送受信ともに全通し
ip address指定でカメラとの送受信を通す設定(192.168.x.xはすべて通せばOK)

□パブリックネットワークの発信は原則全廃棄したうえでホワイトリストを作成
→発信を制限しないとsoracom従量課金が高くなる(これ重要)

パブリックネットワークで許可するのは次の通り

・ローカル接続は無条件ですべてOKに

・logmeinはプログラム名指定で次の2つを全許可
%ProgramFiles% (x86)\LogMeIn\x64\LogMeIn.exe
%ProgramFiles% (x86)\LogMeIn\x64\LogMeInToolkit.exe

・外部とのrdpをokに
リモートデスクトップは次の3つの「サービス」を全許可
Remote Desktop Configuration
Remote Desktop Servicies
Remote Desktop Servicies UserMode Port Redirect

・時刻同期のために
Windows Timeサービスを許可

・その他
コアネットワークDNS
コアネットワークDHCP

遠隔操作用にHamachiインストール

ハマチでなくてもソフトイーサなどRDPを通せるVPNソフトなら何でも良い
・NetworkIDは111-222-333という数値形式になっていてユーザー名(ID)を入力するのではないことに注意
・ハマチのユーザー登録をしないと使えなくなる
・ハマチ auto updateしない設定に
・ハマチは無料版は使えない。有料版に登録すること。

 ネットワークカメラの設定

・カメラ一発シリーズの設定
1024*768の設定にすること。それ以上の解像度は落ちる?
動作には.net3.5 frameworkが必要
→Windows10に.net3.5をインストールするには
Dism /online /enable-feature /featurename:NetFx3 /All
ネットからダウンロードして自動インストールする

・NAS録画日数を変更する場合
変更した時点からx日の記録を刷る模様。そのため履歴をすべて消してから変更すべき。
空き容量がなくなると、自動的に空き容量設定に変わる?
256GBのSSDなら18日間くらい録画可能。

・記録されるフォルダは次のようなパスになる
C:\Users\y\Desktop\cam2\IPCamRecordFiles\Recording\N@006073049-006073049

・発売初期のファームウェアはバグが多く途中で止まる。最新ファームへアップ必須。
FFP-W70HDは調子が悪い?FFP-W60HDは問題なく長期稼働している。

soracomの設定

普通にドライバをインストールする
Windowsログオン時に自動的に常時接続開始する必要。

デフォルトでは1日20MiBを超えると速度minimumに変更されてしまう
soracomはアップロードは0.3円/MiBなので1GB=300円くらい。あり得る価格。
ただし、丸一日の録画容量は15-20GBなので時間帯を選択する必要あり。
丸一日を取りたい場合は現場で無線LAN接続するしかない。

□soracom通信制限の管理

各sim、グループ、全体の各カテゴリごとに日次、月次の制限設定あり それぞれを確認のこと

AK020のダイヤルアップソフトを使わない自動接続

1.apnを設定
Windowsの”設定”>ネットワークとインターネット>携帯電話>携帯電話>詳細オプション
apn=soracom.io
user=sora
pw=sora
サインイン情報の種類 none
IP=IPv4

2.タスクスケジューラで「ログイン時に実行」をセット。必ず「ログイン時に・・」をトリガーに選ぶこと。違うのを選んではいけない。
さらに、途中で電波が悪くなったなどで落ちたときのことを考え、1時間ごとに定期繰り返しで再接続。
バッチファイルを作り中身は
rasdial.exe “USBDEVICE” sora sora
このバッチファイルはUACで止められることはない。これでWindows起動時に自動接続する

動作確認

・RDPで入れるか
・Windowsの時計合わせ(外部の標準時サーバーへの接続)ができるか
・ネットワークカメラの時計合わせができるか(PCのNTPサーバーに正常接続できるか)
・再起動したときにsoracomが自動接続するか
・再起動したときにhamachiが自動起動してオンラインになるか
(再起動したときにlogmeinがオンラインになるか)
・カメラのライブ視聴ができるか →これはカメラ一発のバグによりできないこともある。ライブはできなくても録画はされている。
・録画データを再生できるか
・カメラ一発の録画データが蓄積されているフォルダ内に現時刻の録画データ書き込みがされているか
・録画フォルダに数分ごとに作成されるカメラ画像スナップショットのjpgサムネイルがあるか(なければファームウェアのバージョンアップ必要)