Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
11
Help us understand the problem. What is going on with this article?
@kitashu

Raspberry Piで温度記録Webサーバを作る

More than 1 year has passed since last update.

準備するもの

  • Raspberry Pi 3 Model B+ あるいはRaspberry Pi Zero
  • ACケーブル
  • Bosch BME280 気温・湿度・気圧センサ(千石電商で購入)
  • ジャンパピン メス-メス 4本
  • USB接続キーボード
  • Raspbian OSインストール用のMicroSDカード(今回は32GBのものを利用しました)

Raspberry Pi Zeroで動かすなら、更に下記を準備

  • USB接続の無線LANドングルとUSB On-The-Goケーブル(Raspberry Pi Zero WかWHを買えば不要です)
  • HDMI変換コネクタ

Raspbian Liteのインストール、初期設定

  • PCでNoobsをダウンロードし、ZIPファイルの内容をFAT32フォーマットされたMicroSDカードにコピーします。
  • MicroSDカードを挿入して起動します
  • Raspbian Liteをインストール
  • Wi-FiのSSIDとパスワードも登録しておくと楽です
  • 再起動後、user:pi, password:raspberryでログイン
% sudo raspi-config
  • hostnameを設定
  • SSHサーバを起動
  • timezoneを設定
  • ユーザpiのパスワードを変更

これ以降、sshによるリモートログインで作業を続行できます。

Apache2とMuninのインストール

# apt update && apt upgrade
# apt install apache2 munin i2c-tools python-smbus
# ln -s /etc/munin/apache.conf /etc/apache2/sites-enabled/munin.conf

Munin動作設定

/etc/munin/apache.conf
18c18,20
<         Allow from localhost 127.0.0.0/8 ::1
---
>         Allow from all
>       Require all granted
>       Allow from localhost 127.0.0.0/8 ::1

BME280の動作設定

Raspberry PiのGPIOとセンサを接続します。
Vcc - Pin01(3.3V DC)
SDA - Pin03(I2C Data)
SCK - Pin05(I2C Clock)
GND - Pin06(GND)
※スイッチサイエンス社のBME280の場合、SDOをPin09(GND)に落とします。

センサの認識状態を確認する

# i2cdetect -y 1
     0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 --

BME280のセンサが0x76にて認識されていることを確認できました。

次に、スイッチサイエンス社のWebサイトから、サンプルコードをダウンロードします。ファイル冒頭のSMbus2は、SMbusに書き換えておきます。

$ python bme280_sample.py
temp : 23.37  ℃
pressure : 1015.26 hPa
hum :  52.59 %

無事、センサから情報を取得できました。

Muninのプラグイン

こちらのサイトを全面的に参考にさせていただきました。なので、Muninプラグインについてはあまり書くことがありません。すみません。
ちなみに、スイッチサイエンス社のサンプルコードでは、UTF-8で単位がつけられていますが、Muninにわたす場合には単位を付けずに浮動小数点の値をそのまま出力させてやります。

おまけ:IFTTTでGoogle Spreadsheetに出力させる

温度取得のスクリプトに少し手を加えます。IFTTTのWebhookによりPOSTしたデータをGoogle Spreadsheetに格納させるスクリプトにします。動作にはurllib3が必要ですので、aptでpython-urllib3をインストールしておきます。特にpipなどを入れる必要はありませんでした。

  url ="https://maker.ifttt.com/trigger/(イベント名)/with/key/(取得したKEY)"
  method = "POST"
  headers = {"Content-Type" : "application/json"}
  obj = {"value1" : result_temperature, "value2" : result_humidity, "value3" : result_pressure}
  json_data = json.dumps(obj).encode("utf-8")
  http = urllib3.PoolManager()
  r = http.request(
    'POST',
    url,
    body = json_data,
    headers = headers)

おまけ2:Twitterに投稿する

(作成中)

終わりに

念の為、1日毎にリブートするようにします。

% sudo crontab -e 
01 5 * * * /sbin/reboot
11
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
11
Help us understand the problem. What is going on with this article?