FileMaker + Raspberry Pi で温度湿度をグラフ化
みなさんはじめまして,モノづくり系YouTube大好きエンジニア丸山です!
今回のブログではRaspberry PiとDHT11で取得した温湿度をFileMakerに送る事ができたので、
そちらを簡単にまとめてご紹介したいと思います。
Raspberry Piを使うと簡単に温度などのデータを取得出来ちゃったりします。
【Raspberry Pi】でネット検索すれば山程情報があるのでチャレンジしてみてください。
では,早速始めていきましょう!
目次
Raspberry Piってなに?
ワンボードマイコンと呼ばれる小さなハードウェアです。
当初は教育用に使える安価なコンピュータとして開発されましたが、今では多くのエンジニアに愛用されています。
WiFiにも接続でき、キーボードとモニタを接続すれば簡単なPCにもなったりします。
検証したRaspberry Piの仕様です。
モデル:Raspberry Pi3 ModelB
CPU:1.4GHz クアッドコア ARM Cortex A53(64 bit)
メモリ: 1GB
USB ポート: USB2.0 × 4
ネットワーク: 10/100/1000Mbit/s イーサーネット(最大速度300Mbit/s )、 802.11b/g/n/ac 無線 LAN 2.4GHz/5GHz
電源: 5V microUSB 、 GPIO
OS:Raspberry Pi OS
Raspberry PiとDHT11つないでみる
使用する温湿度センサーはDHT11で価格も安価で入手し易いセンサーです。
ラズパイのピンが出ている所(GPIOポート)にセンサーを接続します。
この時、ラズパイの電源は切っておきましょう。
DHT11のVCC端子を5vにDATA端子をGPIO14にGND端子をGNDに繋いでいます。
次に接続したDHT11から温度と湿度を計測してみましょう。
DHT11ライブラリのインストール
DHT11センサーの値を取得する為に、DHT関連のモジュールをRaspberry Piにインストールします。
今回はGithubのsazoさんのライブラリを取得しました。
できる人が用意してくれているそんな良い時代になりました。
ラズパイのターミナルより以下のコマンドを実行しモジュールを複製します。
git clone https://github.com/szazo/DHT11_python.git
完了すると、DHT11_Pythonというフォルダが作成されます。
プログラムファイルの作成
プログラムはRaspberryPiに標準でインストールされている「Thonny」というエディタを使います。
画面左上のRaspberryPiのアイコンから「プログラミング」→「Thonny Python IDE」を選択して
エディタを起動させます。
起動すると、このような画面が表示されます。
上がプログラムを記述する所で、下が結果を表示する所です。
ボタンの説明です。
New:プログラムを新規作成します
Load:既存のプログラムを開きます
Save:プログラムを保存します
Run:プログラムを実行します
Stop:プログラムを終了します
Quit:エディタを終了します
それでは、Thonny Python IDEから以下のプログラムを入力します。
import RPi.GPIO as GPIO
import dht11
GPIO.setmode(GPIO.BCM)
dhtStat = dht11.DHT11(pin=14)
stat = dhtStat.read()
print(stat.temperature)
print(stat.humidity)
GPIO.cleanup()
上から説明していきます。
1 GPIOのライブラリを読み込んでいます。
RPi.GPIOはRaspberry PiのGPIOピンを制御できるモジュールです。
2 dht11のライブラリを読み込んでいます。
DHT11センサーから値を取得するためのライブラリです。
4 GPIOポートのピン配列の指定方法を記述します。今回はBCMを設定します。
5 14番ピンからデータを取得する為の準備をしています。
違うピンに接続した場合は、その番号に変更してくださいね。
7 データを読み込んでいます。
8 温度を画面に出力しています。
9 湿度を画面に出力しています。
11 終了処理を行っていて余計なデータをクリアーしています。
入力が終わったら、先ほど複製したDHT11_Pythonフォルダに名前を付けて保存します。
保存が終わったら、「Run」ボタンを押して実行してみましょう。
ウインドウ下のShellに温度と湿度が表示されると思います。
ライブラリを使用すると、簡単に温湿度が取得できる事が分かったかと思います。
グラフを作る為にFileMakerにデータを送ってみましょう。
データをFileMakerに転送してみる
その前にFileMaker Server の準備します
FileMaker Admin Console の[ コネクタ ]タブ で FileMaker Data API を有効にします。
FileMakerの設定をします。
アカウントのアクセス権セットの編集で、FileMaker Data API でのアクセスにチェックを入れます。
設定が終わったら、Raspberry Piに戻って、
Raspberry Piのターミナルより以下のコマンドを実行しライブラリをインストールします。
pip install python-fmrest
- Python-fmrestとは
FileMaker DataAPIとやり取りする為のPythonライブラリです。
レコードの作成、削除、編集、検索などが行えます。
使用方法です
1. import fmrest ライブラリをインポート
2. fms = fmrest.Server(省略) ファイルに接続
3. fms.login() ログイン
4. fms.create_record({‘フィールド名’: 値}) レコードを作成
5. fms.logout() ログアウト
先ほど、作成したプログラムを変更していきます。
import RPi.GPIO as GPIO
import dht11
import fmrest
GPIO.setmode(GPIO.BCM)
dhtStat = dht11.DHT11(pin=14)
stat = dhtStat.read()
print(stat.temperature)
print(stat.humidity)
fms = fmrest.Server(
‘https://***.***.com’,
user=’supportasdata’,
password=’updatedata’,
database=’Temperature’,
layout=’TemperatureLayout’,
verify_ssl=False
)
fms.login()
plot = fms.create_record({‘Temperature’: stat.temperature,
‘Humidity’:stat.humidity})
fms.logout()
GPIO.cleanup()
変更箇所の説明をしていきます。
3 FileMakerのライブラリをインポートします。
12 FileMakerServerに接続する為の設定をおこないます。
サーバー名、ユーザー名、パスワード、ファイル名、レイアウト名を指定します。
今回は証明書が無効だったのでverify_sslにFalseを設定しています。
20 FileMakerにログインします
21 FileMakerに対してレーコードを作成し、Temperatureフィールドに温度をHumidityフィールドに湿度を登録しています。
23 FileMakerをログアウトしています。
入力が終わったら、プログラムを保存します。
保存が終わったら、「Run」ボタンを押して実行してみましょう。
指定したテーブルにデータが追加されていると思います。
データをFileMaker で表示
データをGoogle Chart ToolsのGaugeで表示しています。
だいぶ温度計らしくなったと思いませんか。
作成方法はブログ「FileMaker + JavaScriptでグラフ描画|サポータス開発者ブログ」をみていただけたら作成できるかと思います。
まとめ
今回のブログではRaspberryPiにセンサーを接続し、データをFileMakerに転送して表示する方法を簡単に紹介しました。
ライブラリを利用すると簡単にできる事が分かったかと思います。
見えない物が見えてくるといろんな発見があったりします。
いろんなセンサーを繋げて遊んでみてください。
自宅物置で電子工作の工具を探していたところ懐かしい基板が、H8マイコン、ビーグルボードとかが俺に向かってこんにちはしていた。安物のオシロスコープとマイコンを買って子供のおもちゃを作ろうとしたが、C言語と電子回路の壁に挟まれ、挫折した基板である(涙)。あの頃にyoutubeがあれば、もっと半田ごてもうまかったし、ドリフトももっとうまかったんだろうなぁ。。指先に残るやけどの痕がなつかしい。ああ、半田の匂いがかぎてーよー。そんな事より、ラズパイの知識も、Pythonの知識がなくても、簡単に連携出来る事がわかっていただけたら嬉しいのだ!。FileMakerの連携ではクラリスコネクトでもできそうなので試してみたいと思っていたりする。
今回はRaspberryPiからFileMakerのデータを送ったが、次回はFileMakerからRaspberryPiにコマンドを送って何かを動かしてみようと思う。それは貴方のハートかもしれない。チェストー!
参考
1. DHT11のライブラリ
https://github.com/szazo/DHT11_Python
2. python-fmrest
https://github.com/davidhamann/python-fmrest
3. Google chart
https://developers.google.com/chart/interactive/docs/gallery/gauge