2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Inkbird IBS-TH1 PLUSの値をBeagleBone Blackでスプレッドシートへ記録

Last updated at Posted at 2023-06-18

はじめに

この記事はInkbird IBS-TH1の値をRaspberryPiでロギングを参考に BeagleBone Black で動かした時の記録です。

使用機材

1.BeagleBone Black で Inkbird のセンサ値を取得

BeagleBone Blackにbluepyをインストール

bluepy を使うのでインストールします。

sudo apt-get install libglib2.0-dev python3-venv python3-pip
pip3 install bluepy

BLEの動作確認として、以下のコマンドを実行してエラーが出なければOK

sudo hcitool lescan

センサ値取得スクリプトの作成

参考記事からセンサ値取得のスクリプトを作成します。

inkbird_ibsth1_connect.py
from bluepy import btle
import struct

def get_ibsth1_data(macaddr):
    peripheral = btle.Peripheral(macaddr)
    characteristic = peripheral.readCharacteristic(0x2d)
    (temp, humid, unknown1, unknown2, unknown3) = struct.unpack('<hhBBB', characteristic)
    sensorValue = {
            'Temperature': temp / 100,
            'Humidity': humid / 100,
            'unknown1': unknown1,
            'unknown2': unknown2,
            'unknown3': unknown3,
        }
    return sensorValue

参考記事のhandleは0x28ですが、Inkbird IBS-TH1PLUS のhandle は0x2dなので修正します。

メインスクリプトの作成

センサ値取得スクリプトを呼び出すため、メインスクリプトを作成します。

inkbird_toSpreadSheet.py
from bluepy import btle
import inkbird_ibsth1_connect

# InkBird MAC ADDRESS
PERIPHERAL_MAC_ADDRESS = '**:**:**:**:**:**'

sensorValue = inkbird_ibsth1_connect.get_ibsth1_data(PERIPHERAL_MAC_ADDRESS)

print(sensorValue['Temperature'])

MACアドレスはInkBirdの公式アプリで確認してスクリプトに入力したら、コンソールから実行します。

$ python3 inkbird_toSpreadSheet.py
27.07

InkBird の温度と同じであれば動作確認完了です。

2.BeagleBone Blackからスプレッドシートにセンサ値を書き込み

スプレッドシートにセンサ値を書き込むGASスクリプトをWebAppとして公開

参考記事を元にスプレッドシートのIDを入力しないように修正したものが以下になります。

postSensorData.gs
var book = SpreadsheetApp.getActiveSpreadsheet();

//Postされたデータを受け取り
function doPost(e){
  var data = [      
    e.parameter.Date_Master, // マスター日時     
    e.parameter.Date, // 測定日時    
    e.parameter.Temperature, // 気温    
    e.parameter.Humidity, // 湿度    
    e.parameter.Light, // 照度    
    e.parameter.UV, // UV    
    e.parameter.Pressure, // 圧力    
    e.parameter.Noise, // 騒音    
    e.parameter.BatteryVoltage, // 電池電圧    
    new Date(), // アップロード終了時刻    
  ];
  //取得したデータをログに記載
  Logger.log(new Date());
  //スプレッドシートへのデータ行書き込み
  addData(e.parameter.DeviceName, data);
  return ContentService.createTextOutput("ok");
}

//スプレッドシートへのデータ行書き込み
function addData(sheetName, data){
  var sheet =  book.getSheetByName(sheetName);
  sheet.appendRow(data);
}

WebAppへPOSTするスクリプトの作成

BeagleBone BlackへRequestライブラリをインストールします。

pip3 install requests

参考記事を元に、持ってないセンサ値は無しに変更したものが以下になります。

omron_env_toSpreadSheet.py
from datetime import datetime, timedelta
from bluepy import btle
import inkbird_ibsth1_connect
import requests

# InkBird MAC ADDRESS
PERIPHERAL_MAC_ADDRESS = '**:**:**:**:**:**'
# GAS WebAPP URL
WEB_APP_URL = 'https://script.google.com/macros/s/******/exec'
# Google SpreadSheet Sheetname
deviceName = '*******'

# ----

#現在時刻を取得
date = datetime.today()
#現在時刻を分単位で丸める
masterDate = date.replace(second=0, microsecond=0)
if date.second >= 30:
    masterDate += timedelta(minutes=1)

#センサ値取得
sensorValue = inkbird_ibsth1_connect.get_ibsth1_data(PERIPHERAL_MAC_ADDRESS)

#Googleスプレッドシートにアップロードする処理
data = {
    'DeviceName': deviceName,
    'Date_Master': str(masterDate),
    'Date': str(date),
    'SensorType': '',
    'Temperature': str(sensorValue['Temperature']),
    'Humidity': str(sensorValue['Humidity']),
    'Light': '',
    'UV': '',
    'Pressure': '',
    'Noise': '',
    'BatteryVoltage': ''
}

response = requests.post( WEB_APP_URL, data=data)

PERIPHERAL_MAC_ADDRESS へ InkbirdのMACアドレスを、
WEB_APP_URL へ GASのWebAPPのUrl を、
deviceName へ Googleスプレッドシートのシート名を、それぞれ入力します。

その後、以下のコマンドを実行してスプレッドシートに値が書き込まれていたら動作確認完了です。

python3 omron_env_toSpreadSheet.py

3.BeagleBone Black でスケジュール実行

cronは有効になってるので、cronでスケジュール実行させるだけです。

cronで指定した時間がすぎて、スプレッドシートに値が書き込まれていたら動作確認完了です。

その他

BeagleBone BlackのLED、暗闇だとチカチカして寝れないので消しておきます。

echo none > /sys/class/leds/beaglebone:green:usr0/trigger

参考

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?