はじめに
自宅サーバの構成変更に伴い、従来のWindows 10およびストロベリーLinux社USB温度・湿度計モジュール(USBRH)による温度・湿度の記録が行えなくなった。
代わりにLinux(Debian)と同社のUSB温度・湿度計モジュール Ver.2(以降はUSBRH2と記す)による温度・湿度の記録に切り替えた。
本ページは、USBRH2で記録を行うBashスクリプトを紹介するものである。
スクリプトの構成は私が考え、コーディングはChatGPTが行った。
このページの内容に沿って設定等を行ったのではなく、一通り設定等を終えてから振り返ってこれを記載している。このため、誤っている箇所があるかもしれないことに留意してほしい。
掲載したスクリプトの各行の説明は行っていないが、不明点はChatGPTやEdgeのCopilot、GoogleのAIモード(いずれも無料)にコードを貼り付けて問い合わせると説明を得られるだろう。
なお、計測データの使途であるが、単にグラフ表示を行いたかっただけである。
グラフはリニューアル中なので公開していないが、旧グラフはここから見られる(2026-04以降は、本ページに記載したスクリプトで集計している)。
環境・仕様等
- Debian 13
- USBRH2は1台
- 計測したデータをPostgreSQLに格納する
- スクリプトはcronで1分毎に起動するが、計測自体は偶数分に行う(グラフ表示で毎分のデータは必要ないため)
スクリプトファイルを作成
スクリプトファイルはtemphumi.shとtemphumi_rw.shの2つある(内容は以下に記載)。
どちらも先ほど準備したbinディレクトリに格納する。格納したらスクリプトファイルに実行権限を付与する。
- temphumi.sh
-
- 偶数分のチェック・temphumi_rw.shの呼出・DB(PostgreSQL)への格納を行う。
- スクリプトの終了ステータスは、0が成功(または奇数分で処理スキップ)、0以外はエラーである。
- 何らかの理由でUSBRH2から受信を行えなくても処理が止まらないようにタイムアウト付きでtemphumi_rw.shを呼び出す。
- DB(PostgreSQL)への格納が不要なら18~24行と56~最終行は不要である。
- temphumi_rw.sh
-
- USBRH2へコマンドを発し、その結果(テキスト)を標準出力へ出力する。
- スクリプトの終了ステータスは、0が成功、0以外はエラーである。
- これ単体でも動作するが、何らかの理由でUSBRH2から応答を受信できないと、受信を待ち続けてスクリプトが終わらなくなる。
- USBRH2を/dev/ttyACM*ではなく、/dev/serial/by-id/*で特定しているので、USBRH2を接続するUSBポートを変更したりUSBRH2を増設してもデバイスIDは変化しない。
複数のUSBRH2を利用する場合に便利ではないだろうか。
実際のデバイス名は次の形式である。XXXXはUSBRH2に埋め込まれたシリアル番号になる(リンク先ページのserialコマンドを参照)。
/dev/serial/by-id/usb-Strawberry_Linux_USBRH2_XXXX-if00
- USBRH2を複数接続する予定はないが、18行目で複数接続を検出しているので不要なら削除してほしい。
temphumi.sh
temphumi_rw.sh
cronの設定
下記のコマンドでcrontabを編集する。
追加する内容は次の通りである。#で始まる行はコメントなので追記不要。
スクリプトの出力内容は下記のコマンドで確認できる。動き続けるので、停止するときはCTRL+Cを押下する。