温湿度ロガー USBRH

温度や湿度を記録するデバイスが欲しくなったので、ストロベリーリナックスUSBRHというものを買いました。USB 接続で極めて小型。

しかし、付属ソフトはリアルタイムで温度・湿度の表示を行うもので、ログを取るものではありませんでした。デバイスにアクセスするDLLと、Visual Basic で書かれたサンプルプログラムのソースは付いていましたが、VB の開発環境は持ってません。

仕方がないので、Python + ctypes でちょろっと作りました。

from ctypes import windll, byref, c_int, c_long, c_char_p, c_double
from time import strftime, sleep
from sys import exit

drv = windll.LoadLibrary(r'USBMeter.dll')	# USBRH Driver

index = c_int()

dev = c_char_p(drv.FindUSB(byref(index)))
print("device =", dev.value)
print("index =", index.value)

temp = c_double()
humid = c_double()

while True:
    err = c_long(drv.GetTempHumidTrue(dev, byref(temp), byref(humid))).value
    if err != 0:
        print("Error")
        exit(1)
    print ('"%s", %5.2f, %5.2f' % (strftime("%Y/%m/%d %H:%M:%S"), temp.value, humid.value))
    sleep(1)