Raspberry Pi2で室温、水温を計測してグラフ表示する
Raspberry Pi2に水温計と温度計を取り付け、10分ごとに室温と水温を計測してさくらVPSへ送信
送ったデータを記録してグラフ表示して可視化する
温度計を取り付ける
ものづくりエクスペリメントさんを参考に防水温度センサと温度センサ DS18B20を2つ取り付ける
防水温度センサはAitendoで買うと2線のものになってたので2線の場合はIT工房Zさん参照してください
私はよく解らなかったのでビクトリーセブンで3線タイプのものを買い直しました
配線が終わったらコンソールからデバイスを確認
ls /sys/bus/w1/devices 28-01146537b1ff 28-0414681d12ff w1_bus_master1
28-01146537b1ff 28-0414681d12ff IDは各自で異なります
どちらが水温計でどちらが室温計なのか線を抜き差しして特定しておきます
温度計測
ターミナルからコマンドで確認 t=の所を1000で割ると温度になります
cat /sys/bus/w1/devices/28-01146537b1ff/w1_slave bd 01 55 00 7f ff 0c 10 da : crc=da YES bd 01 55 00 7f ff 0c 10 da t=27812 cat /sys/bus/w1/devices/28-0414681d12ff/w1_slave 75 01 55 00 7f ff 0c 10 2b : crc=2b YES 75 01 55 00 7f ff 0c 10 2b t=23312
シェルスクリプト化
sudo vi /usr/local/bin/room_temp #!/bin/sh DEVID="28-0414681d12ff" cat /sys/bus/w1/devices/$DEVID/w1_slave \ | perl -e 'while(<stdin>){ if(/t=([0-9]+)/){print $1/1000,"\n";} }'
コピって水温用にDEVIDだけ書き換えたものも用意しておきます
権限を与えて実行
sudo chmod +x /usr/local/bin/room_temp room_temp 23.25
サーバーへ送信する
取得したデータをさくらVPSへPOST
参考サイトから丸コピしてデータ部分を追記
#!/usr/bin/env ruby # -*- coding: utf-8 -*- require 'uri' require 'net/http' def http_request(method, uri, query_hash={}) query = query_hash.map{|k, v| "#{k}=#{v}"}.join('&') #ハッシュをオプションの書式に変換 query_escaped = URI.escape(query) uri_parsed = URI.parse(uri) http = Net::HTTP.new(uri_parsed.host) case method.downcase! when 'get' return http.get(uri_parsed.path + '?' + query_escaped).body when 'post' return http.post(uri_parsed.path, query_escaped).body end end #cpu cpu_temp = `cat /sys/class/thermal/thermal_zone0/temp` cpu_usage = `mpstat | sed -n '4,4p' | awk '{ print $3 }' | tr -d '\n'` #mem usedmem = `free -m | sed -n '3,3p' | awk '{ print $3 }' | tr -d '\n'` totalmem = `free -m | sed -n '2,2p' | awk '{ print $2 }' | tr -d '\n'` mem_usage = totalmem.to_f.quo(usedmem.to_f) #room room_temp = `/usr/local/bin/room_temp` #water water_temp = `/usr/local/bin/water_temp` http_request('POST', 'ポスト先URL', {:cpu_temp => cpu_temp.to_f.quo(1000), :cpu_usage => cpu_usage, :room_temp => room_temp,:water_temp => water_temp, :mem_usage => mem_usage})
オマケでCPU温度、CPU使用率、メモリ使用率も取得するよう設定してみました
cronに仕込んで10分おきに送信する
crontab -e */10 * * * * /usr/local/bin/send-temp > /dev/null 2>&1
POSTされたデータをDBに登録する
これはもう普通のWebアプリと一緒
さくらVPS側でphpを使って実装 やる気の感じられないPHPコードがこちら
<?php require_once('./db_conf.php'); $pdo = getPDO(); $stmt = $pdo->prepare("INSERT INTO STAT (cpu_temp,room_temp,water_temp,cpu_usage,mem_usage,assay) VALUES (:cpu_temp,:room_temp,:water_temp, :cpu_usage, :mem_usage, NOW())"); foreach($_POST as $key => $value) { $stmt->bindValue(':'.$key, $value); } $stmt->execute(); $pdo = null; ?>
ラスパイから温度送信rubyファイルを叩いたりした後、さくらVPS上でデータを確認
select * from STAT order by id desc; +------+----------+-----------+------------+-----------+-----------+---------------------+ | id | cpu_temp | room_temp | water_temp | cpu_usage | mem_usage | assay | +------+----------+-----------+------------+-----------+-----------+---------------------+ | 1165 | 30.40 | 23.19 | 27.81 | 9.32 | 17.49 | 2015-04-19 19:40:03 | | 1164 | 30.40 | 23.19 | 27.81 | 9.32 | 17.49 | 2015-04-19 19:30:03 | | 1163 | 30.40 | 23.25 | 27.81 | 9.32 | 16.85 | 2015-04-19 19:20:04 | | 1162 | 30.40 | 23.31 | 27.81 | 9.32 | 17.83 | 2015-04-19 19:10:03 | | 1161 | 30.94 | 23.38 | 27.81 | 9.32 | 17.17 | 2015-04-19 19:00:05 | | 1160 | 30.40 | 23.38 | 27.81 | 9.32 | 17.17 | 2015-04-19 18:50:03 | | 1159 | 30.40 | 23.44 | 27.81 | 9.32 | 17.49 | 2015-04-19 18:40:04 | | 1158 | 30.40 | 23.25 | 27.88 | 9.32 | 17.49 | 2015-04-19 18:30:03 | | 1157 | 29.86 | 23.25 | 27.88 | 9.32 | 17.49 | 2015-04-19 18:20:04 | | 1156 | 30.94 | 23.31 | 27.88 | 9.32 | 17.49 | 2015-04-19 18:10:03 |
あとはグラフ化ですが長くなってきたので次回
完成品は金魚水槽ページで確認できますのでどうぞ
関連記事
-
穂竜はじめました
先日新しく45cm水槽を立ち上げてまして穂竜という金魚を飼いはじめました。 高頭 …
-
RaspberryPi2で動画配信しながら写真も撮りたい
金魚デカくなった? 金魚にエサやってると4月の初頭から飼い始めた琉金が1周り大き …
-
プラ船の金魚がネコに襲撃された
ガレージに出してるプラ船がネコにやられました・・・ これはひどい どうもカメラを …
-
Raspberry Pi2で水槽のLEDを自動点灯/消灯する
先日Raspberry Pi2を購入し、自宅からのストリーミング配信する為あれこ …
-
45cm水槽を修理してみた
大昔に使ってた45cm水槽が出てきたので洗って使おうと思ったんですが水漏れしてま …
-
エサやりボタン復活しました
遠隔エサやりボタン 春になってきたので冬の間ストップしていたエサやりボタンを復活 …
-
福だるま 購入しました
新入り金魚 メイン水槽をリセットしたのでヤフオクで金魚を購入しました 福だるまと …
-
福だるま購入しました
福だるま?玉サバ? ちょっと前、寝室に60cm水槽に立ち上げた水槽へ福だるまを4 …
-
Raspberry Pi2で室温、水温を計測してグラフ表示する その2
前回でRaspberry PiからさくらVPSへ計測したデータを飛ばして登録でき …
-
RaspberryPi2を使ったリモートのエサやりボタン復活しました
春がきた 春になり水温が上がってきたのでプラ舟ページのエサやりボタンを復活させま …