TWELITE StickとTWELITE ARIAによる温度と湿度の計測

Raspberry Piをサーバーにして、TWELITE ARIAで計測した温度と湿度の測定値を提供する。
TWELITE ARIAは無線でUSBドングルのTWELITE Stickにデータを少ない電力で送信できる。
電気回路工作が不要なため、情報系の技術者にはありがたい機材になっている。

必要な主な機材

  • TWELITE Stick

  • TWELITE ARIA

  • TWELITE R3

  • USBケーブル

  • Raspberry Pi 3B+

  • Windows機もしくはmacOS機

必要なソフトウェア

  • TWELITE STAGE SDK (WindowsやmacOS以外だとすぐに使えない)

ARIAからのデータ送信間隔の変更

  • 工場出荷時のデータ送信間隔は5秒になっているが、CR2032の電池では1年持たない。

  • データ送信間隔を60秒にすると概算で4.8年持つとのこと。

  • TWELITE Stickから無線(OTA)でTWELITE ARIAの設定値を変更可能のはずだが、現状バグでできないとのこと。

  • そのため、TWELITE R3経由で有線で接続する。

データ送信間隔変更のための接続方法

(Windows機もしくはmacOS機)〜(USBケーブル)〜(TWELITE R3)〜(TWELITE ARIA)

データ送信間隔の変更手順

  1. TWELITE STAGEアプリを起動する。

  2. インタラクティブモードを選ぶ

  3. 送信間隔の項目を選ぶ (tを入力)

  4. 送信間隔時間を入力する (60を入力)

  5. 保存する (Sを入力)

Raspberry Pi

インストール

  • Raspberry Pi OS Lite をRaspberry Pi Imagerを使ってSSHが有効な状態でSDカードに書き込む。

  • apt installでpython3-seriapython3-serialとapache2をインストールする。

get_aria.py

import serial
from datetime import datetime
from zoneinfo import ZoneInfo

# ポート設定(環境に合わせて変更してください)
ser = serial.Serial(‘/dev/ttyUSB0’, 115200, timeout=10)

while True:
    line = ser.readline().decode(‘ascii’).strip()
    if line.startswith(‘:’):
        # データの特定位置から値を抽出(App_ARIAの仕様に基づく)
        try:
            # 送信元シリアルID: 
            serial = line[15:15+8] 
            # バッテリー電圧: 
            battery_hex = line[69:69+4] 
            battery = int(battery_hex, 16) / 1000.0
            # 温度: 10進数で100倍された値が入っている
            temp_hex = line[103:103+4] 
            temp = int(temp_hex, 16) / 100.0
            # 湿度: 10進数で100倍された値
            hum_hex = line[115:115+4]
            hum = int(hum_hex, 16) / 100.0
        except ValueError:
            continue
        with open('/dev/shm/' + serial, 'w', encoding='utf-8') as f:
            now = datetime.now(ZoneInfo("Asia/Tokyo"))
            print(now.strftime("%a %d %b %X %Z %Y"), file=f)
            print(f"batt={battery:.3f} [V] Temp={temp:.1f} ['C] Humidi={hum:.1f} [%]", file=f)
ser.close()

/etc/systemd/system/twelite.service

[Unit]
Description = TWELITE Gateway service
After = network.target

[Service]
Type = simple
ExecStart = /usr/bin/python3 (どこか)/get_aria.py
User = root
Group = dialout

Restart = always
RestartSec = 5

[Install]
WantedBy = multi-user.target

常時設定

# systemctl enable twelite.service
# systemctl start twelite.service

この段階で、/dev/shm/(TWELITE ARIAのシリアルID) に以下のような内容が書かれる。

Fri 27 Mar 09:33:11 JST 2026
batt=2.715 [V] Temp=14.5 ['C] Humidi=59.4 [%]

apache2の設定

# ln -s /dev/shm/(TWELITE ARIAのシリアルID) /var/www/html/
# systemctl enable apache2.service
# systemctl start apache2.service