著者:すずきひろのぶ
今回はRaspberry Pi 3 ( 以下 RPi3 ) で湿温度計サーバを作ってみました。製作目標は次の通りです。
1. 湿温センサーから湿度と温度の値を取り込む。
2. その値をデータベースに記録する。
3. Web インタフェースで過去の情報や変化などにアクセスできるようにする。
IoT 的な例題としてはちょうどいいサイズの内容です。
記事本文掲載のシェルスクリプトマガジンvol.50は以下リンク先でご購入できます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
require 'rubygems' require 'i2c' require 'date' require 'digest/crc16_modbus' require 'sqlite3' device = I2C.create("/dev/i2c-1") address = 0x5c loop do sleep(0.05) s=nil begin s = device.read(address, 8, "\x03\x00\x04") rescue next end func_code, ret_len, hum_h, hum_l, temp_h, temp_l, crc_l, crc_h = s.bytes.to_a crc16a=Digest::CRC16Modbus.checksum(s[0,6]) crc16b=(crc_h * 256) + crc_l if crc16a != crc16b puts "CRC error" next end db = SQLite3::Database.new("humtemp.db") hum_orig = (hum_h *256 + hum_l) temp_orig = (temp_h *256 + temp_l) puts Time.now puts hum_orig/10.0 puts temp_orig/10.0 db.transaction do sql = "INSERT INTO humtemp(DTIME,HUM,TEMP) VALUES(datetime('now'), ?, ?)" db.execute(sql, hum_orig, temp_orig) end db.close end |