実装手順
1. データ保持用のテーブル作成PostgreSQL側でデータ保持用のテーブルをあらかじめ作成しておきます。テーブル名称は適宜変更してください。
create table grove_light_sensor
(
device_name varchar(30) not null,
data_ts timestamp not null,
lightness float,
constraint pk_grove_light_sensor primary key (device_name, data_ts)
);
2. pipenvの導入
pipenvをインストールしていない場合は、以下のコマンドを実行します。
sudo apt-get update
sudo apt-get -y install python3-pip python3-distutils python3-dev
sudo pip3 install --upgrade pip
sudo pip3 install --upgrade setuptools
sudo pip3 install pipenv
echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc
source ~/.bashrc
3. Seeed-grove.pyとpsycopg2モジュールがインストールされた仮想環境作成
pipenvを使用する場合は以下のコマンドで、Seeed-grove.py用の仮想環境を作成します。
sudo apt-get -y install libpq-dev
mkdir -p ~/grovepi_pg
cd ~/grovepi_pg
pipenv --python 3
pipenv install Seeed-grove.py==0.3 psycopg2-binary
pipenv shell
4. センサーデータ取得・記録プログラム
以下のプログラムを保存します。
record_grove_light_sensor.py
import os
import psycopg2
import psycopg2.extras
from grove.grove_light_sensor_v1_2 import GroveLightSensor
import time
PIN_A0 = 0
sensor = GroveLightSensor(PIN_A0)
device_name = 'test device'
sql = """insert into grove_light_sensor values (%s, current_timestamp, %s)"""
conn = psycopg2.connect(host=os.environ['PG_HOST'], port=os.environ["PG_PORT"], database=os.environ['PG_DB'], user=os.environ['PG_USER'], password=os.environ['PG_PASS'])
with conn.cursor(cursor_factory=psycopg2.extras.DictCursor) as cur:
cur.execute(sql , (device_name, sensor.light))
conn.commit()
5. プログラムの実行 データベースの接続情報を環境変数に設定してrecord_grove_light_sensor.pyを実行します。
export PG_HOST=データベースホスト名またはIP
export PG_PORT=データベースのポート番号(※通常5432)
export PG_DB=データベース名
export PG_USER=ユーザ名
export PG_PASS=パスワード
python3 record_grove_light_sensor.py
0 件のコメント:
コメントを投稿