RaspberryPiのkiosk端末化

Zabbixのダッシュボード機能を表示専用端末に表示させ、運用オペレーションセンターを作成するというもの。

Raspberry Pi3でキオスク端末(自動ログイン+ブラウザ起動)を作る。を参考にする。
なお、@chromium-browserでZabbixのダッシュボード機能をKiosk表示したURLを指定する。

Zabbix 4.0.1よりダッシュボード機能をKiosk表示する方法は簡単で、kiosk=1パラメータを追加すればよい。

Zabbix Documentation 4.0より
Since Zabbix 4.0.1, the kiosk mode can also be accessed with the following URL parameters:
/zabbix.php?action=dashboard.view&kiosk=1. To exit to normal mode: /zabbix.php?action=dashboard.view&fullscreen=0

ところで、キオスク端末というのは世界共通用語なのだろうか?
WikipediaによるとKioskというのは簡易構造物一般を指す英語「KIOSK」からきているそうな。。。

ネットギアのサポートがいまいち

ネットギアの製品は低価格の割には高スペックなのだが、サポートを受けなければならない状況になるとつらい。

・(製品によるのかもしれないが)インターフェイスが英語
・マニュアルが正しくない
・メールサポートのレスポンスが悪い(日本法人にサポートセンターがなく、都度米国に問い合わせている?)

PiServerを利用してRaspberry Pi3をシンクライアントにする

Raspberry Pi3をシンクライアントにすることができる。
これによって、どのRaspberry Piを使っても同じデスクトップ環境が利用できるようになり、会社だけでなく学校などの利用端末としても利用が期待できる。

VMWare ESXi 6.5上で構築した仮想マシンにPiServerを構築してシンクライアントを実現した。

しかし、ドキュメントが少なすぎる。
参考にしたサイトは次の通り。
[メモ] PiServerを使ってみた(VitrualBox使用)
ラズパイをmicroSD無しでネットブート、シンクライアント構築の「PiServer」

PiSeverを利用することでテレビ会議やYouTubeを見たりするなどの重たい処理をさせたときにRasberryPiがハングアップする事象はなくなるが、Ubuntuを入れたりするための方法については、公式サイトでも書かれていない。。。。

他にも困っていることが・・・・
・エラー表示され、日本語化ができない(chrootされているため?)

iDRAC9

クラウドファーストの時代にあえてオンプレで挑む。

ということで、DELL PowerEdge T440を購入する機会があった。
私がPowerEdgeに出会ったのは、12年前。PowerEdge 2850という2Uサーバだった。
そこから個人的に現在も利用している PowerEdge T110 II を含めると少なくとも3台目に出会うことができた。

T440が素晴らしいところはツールレス保守ができるようになっていて、ディスクのホットプラグ対応はもちろん、電源のホットプラグ対応もされており、簡単に抜き差しできる。一方でフロントベゼルでカギをかけておけば、電源すら入れることができなくなる。

個人的にPowerEdgeが好きなところはツールレス保守だけではなく、iDRACだ。
iDRACというのはサーバOSとは別に管理用のOSが存在しており、iDRACを通じてサーバの再起動ができる。(例えば、サーバOSのLoadAverageが100になってrebootコマンドすら受け付けできなくなった場合には、通常ならリセットボタンを押せばよいが、サーバがデータセンターに配置されている場合など、リモート保守しないといけない場合にはリセットボタンを押すことも難しい。iDRACがあればリセットも容易だ。)

昔はiDRACはオプションだったが、PowerEdge T110では、iDRAC6が搭載されていた。
iDRAC6は管理用ポートがオンボード共通になっており、テキストベースのGUIだった。iDRACでIPアドレスを設定できるが、このアドレス宛にはSNMPしか対応していない(はず)。

ところが、T440に搭載されていたiDRAC9 Enterpriseは、iDRAC専用ポートからアクセスできるようになっており、iDRAC6とは異なり、LOM(Lan on Motherbord)とは別になっているので、セキュリティ上メリットがある構成となっており、またブラウザでアクセスできるようになっている。ブラウザでアクセスできる管理コンソールでは、グラフィカルにサーバの状況が分かるようになっており、電源のオンオフも可能だ。
つまり、電源をオフにした状態のまま、先ほどのフロントベゼルに鍵をかけていても、iDRAC経由での通信は受付されており、そこからパワーオンが可能である。

一つ困ったことは、ログイン方法がわからなかったことだ。デフォルトでは、
ユーザ:root
パスワード:(設定なし)
になっていることに気づくのにしばらく時間がかかった。
パスワードは管理コンソールからログインした上で設定する必要があった。

添付のマニュアルが分かりにくいこともあり、少し改善してほしいところがある。
また、日本語訳が不自然なところがあったので、英語の原文が分かっていないと理解しづらい点がある点があり、この点もぜひ改善してほしい。

2017年7月18日より「Raspberry Pi Zero W」の販売を開始

2017年7月18日より「Raspberry Pi Zero W」の販売を開始

株式会社 ケイエスワイから3月に発売された以降、しばらく次の入荷がないと思っていたら技適を取得できていなかったらしい。(実は3月時点では販売できていなかった?)
発売開始されたことに気づいたのが1週間後でもう完売。。。。いつになったら手にできるのやら。

DHT11の温度センサー上限を超えてしまった。。。

日中の晴れた日は、どうやら温度が60℃を超えてしまうようだ。
らずぱい温度計20170504.png
DHT22であれば、80度まで計測できるうえ、分解能が0.1なのでより精度の高いセンサー情報を収集できる。
DHT11と同じく3ピンなので、置き換えだけでうまくいきそうな予感。。。。
送料の方が高くつきそうなので、お店に行って買ってくるとしよう。

Rasberry Pi 2で定期的に温湿度センサーの情報を送信する

/etc/crontabと/etc/cron.d設定ファイルの書き方を参考にプログラムの実行をスケジュール化する。
/etc/cron.d/send_temp
と登録し、下記を保存する。
#8~17時を除いた6~23時に毎時0時に送信する
0 6-7,18-23 * * * pi /home/pi/iot_source/send_temp.py 12> /home/pi/debug.txt
#土日は8~17時も毎時0時に送信する
0 8-17 * * 0,6 pi /home/pi/iot_source/send_temp.py 12> /home/pi/debug.txt
#5分ごとにセンサデータを収集する
*/5 * * * * pi /home/pi/iot_source/get_temp.py 12> /dev/null

Rasberry Pi 2で温湿度センサーの情報をZabbixサーバに送信する

Rasberry Pi 2で収集した情報をZabbixサーバに送信するためには大きくは2つの方法がある。
・Zabbixエージェントをインストールしてデータを送信(サーバから見ると収集)する方法(パッシブチェックとアクティブチェックというデータの収集のトリガーが異なる2つの方式がある。詳しくはこちら
・zabbix_senderコマンドを利用してデータをサーバに送信する方法
前者の方式は、エージェントを利用するので、サービスを常に起動しておかなければならないということと、ポートを待ち受けしないといけないことから、IoTディバイスとして節電して長く使いたい要求と、セキュリティを担保したい(エージェントの脆弱性によって問題が起こり得るか、DoS攻撃の対象になりうる)ことから後者を採用することにした。
ただ、zabbix_senderはRasberry Pi2を動かしているRaspianOSではちょっと導入が面倒。
Zabbix Server側の設定はこちらを参考にしてみるとよい。
これから始めるZabbix Sender(2) Raspberry Pi の温度データを送るには?
作成したソースはこんな感じ
配列に一度格納してまとめて1回のコマンドで実行することで通信回数を減らしてみた。

#!/usr/bin/env python
import RPi.GPIO as GPIO
import dht11
import time
import subprocess
from datetime import datetime
now=time.time()
Zabbix_Server="(ZabbixサーバのIPアドレス)"
Host_Name="(Zabbixサーバに登録したホスト名)"
#Zabbixサーバに下記アイテムを2つ登録している必要がある
Temp_KeyName="sender_temperature"
Humi_KeyName="sender_humidity"
#define GPIO 14 as DHT11 data pin
Temp_sensor=14
try:
GPIO.setmode(GPIO.BCM)
instance = dht11.DHT11(pin = Temp_sensor)
while not 'result' in locals() or result.humidity==0:
result = instance.read()
if result.is_valid():
print("Tem:"+str(result.temperature)+" C Hum:"+str(result.humidity)+"%")
send_data = []
send_data.append(Host_Name + " " + Temp_KeyName + " " + str(int(now)) + " " + str(result.temperature))
send_data.append(Host_Name + " " + Humi_KeyName + " " + str(int(now)) + " " + str(result.humidity))
check = subprocess.check_call('echo "' + "\n".join(send_data) + '" |
zabbix_sender -z ' + Zabbix_Server + " -T -i -", shell=True)
except KeyboardInterrupt:
pass
finally:
print check

Rasberry Pi 2で温湿度センサーの情報を収集する

Raspberry Pi2に、
まずは温湿度センサー(DHT11センサー)を取り付ける。
DHT11センサーの結線方法は、こちらを参考にするとよい。
LEDが点灯したらとりあえず、5VとGNDピンが正常に結線されていることが分かるので、DATAピンが正しく結線されていることを確認する。
こちら↓
蓋なし.jpg
を参考にしても良いと思います。

#!/usr/bin/env python
import RPi.GPIO as GPIO
import dht11
#define GPIO 14 as DHT11 data pin
Temp_sensor=14
try:
GPIO.setmode(GPIO.BCM)
instance = dht11.DHT11(pin = Temp_sensor)
while not 'result' in locals() or result.humidity==0:
result = instance.read()
if result.is_valid():
print("Tem:"+str(result.temperature)+" C Hum:"+str(result.humidity)+"%")
else:
print("error")
except KeyboardInterrupt:
pass
finally:
GPIO.cleanup()

これをget_temp.py として、

python get_temp.py

と実行して、

Tem:20 C Hum:40%

などと表示されれば温湿度が取得できていることが分かる。

(2018/11/06追記)
液晶ディスプレイへの表示を行う場合には、Raspberry Piボードを使って、 LCDで温湿度データを表示するを参考にして、I2Cを有効にする必要がある。RasberryPi 3ではAdvance OptionsというメニューからInterfaceのメニューに変更になっているので、注意してほしい。

Rasberry Pi 2で温湿度センサーの情報をZabbixで収集する

こんなケースに入れて、
蓋なし.jpg
穴をあけた蓋を付けて、
蓋つき.jpg
温室に取り付けると
取り付け.jpg
こんな感じで温室の温湿度が取得できる。
らずぱい温湿度センサー.png
これをやる為の方法を今後掲載していくことにする。
実現するために必要な材料
Raspberry Pi2
・無線LANアダプタ(余っていた WLI-UC-G を使用)
・温湿度センサー(DHT11センサー を使用。誤差が大きいので、気休め程度。気になる場合にはもう少し精度のよいものがよいかも?)
・リチウムイオンバッテリー(Anker PowerCore 10000)
・電子レンジであっためられるタッパー
・Zabbixサーバ(Cloudnで実現)
実現した結果として
・Raspberry Pi2はバッテリーからでも起動できる
・意外に電源を食うので、省電力対策は欠かせない
 →無線LAN通信を極力減らす必要がある。
今後したいこと
・電源のシャットダウン方法を確立する か バックアップをとる。
・Raspberry Pi2ではなく、Raspberry Pi Zero Wでやりたい。(さらに省電力にしたい)