pi zero w で YAAC (APRS-WX)

にゃん太郎とアマチュア無線 で、
「YAACにはWXNOW.TXTがサポートされている」との記述を見つけたので、
pi zero w と BME280 で、APRS WeatherStation を作ってみた。
以前 SWITCHSCIENCE にて公開されていた
bme280_custom.py を import して使用するみたいです。
現在 bme280_custom.py は無いので、今でも公開されてる bme280_sample.py をDLして変更

bme280_sample.py の変更箇所
—————————————————————–
#coding: utf-8

#from smbus2 import SMBus ←コメントもしくは削除
import smbus # 追記
/// 略 ///

#bus = SMBus(bus_number) ←コメントもしくは削除
bus = smbus.SMBus(bus_number) # 追記
/// 略 ///

def readData():
/// 略 ///
#compensate_T(temp_raw) ←コメントもしくは削除
#compensate_P(pres_raw) ←コメントもしくは削除
#compensate_H(hum_raw) ←コメントもしくは削除
t = compensate_T(temp_raw) # 追記
p = compensate_P(pres_raw) # 追記
h = compensate_H(hum_raw) # 追記
return p + “,” + t + “,” + h # 追記

def compensate_P(adc_P):
/// 略 ///
#print “pressure : %7.2f hPa” % (pressure/100) ←コメントもしくは削除
return “%7.2f” % (pressure/100) # 追記

def compensate_T(adc_T):
/// 略 ///
#print “temp : %-6.2f ℃” % (temperature) ←コメントもしくは削除
return “%.2f” % (temperature) # 追記

def compensate_H(adc_H):
/// 略 ///
#print “hum : %6.2f %” % (var_h) ←コメントもしくは削除
return “%.2f” % (var_h) # 追記
/// 略 ///
—————————————————————–
bme280_custom.py と rename

※ 設置場所が水辺で、湿度が100%になった時に文字列がズレた為
「にゃん太郎とアマチュア無線」の記述を変更

WXNOW.TXTのデータフォーマットへの変換は、下記の様に抽出
wx###.py の一部
—————————————————————–
bme_get = bme280_custom.readData()
bme_list = (bme_get.split(‘,’))

# 気温 摂氏→華氏
temp = bme_list[1]
temp_C = float(temp)
T = format(( (temp_C*1.8) + 32), ‘.0f’)

# 湿度
hum = bme_list[2]
hum1 = float(hum)
H = (format(hum1, ‘.0f’))[-2:]

# 気圧
press = bme_list[0]
press1 = float(press)
press2 = format(press1, ‘.1f’)
P = (press2.replace(‘.’,””))
—————————————————————–
普通の環境なら、「にゃん太郎とアマチュア無線」の記述を
そのまま流用すれば良いと思います。

● wxnow.txt 保存
煩雑に上書きするので、SDカード延命の為 tmpfs を作成して使用する。

● pi zero w bullseye java
$ sudo apt install openjdk-8-jre -y

● YAAC install
$ sudo apt install unzip -y
$ wget https://www.ka2ddo.org/ka2ddo/YAAC.zip
$ mkdir ./YAAC
$ cd ./YAAC
$ unzip ../YAAC.zip

● YAAC setup
pi zero w の場合、configuration wizard を使用すると YAAC が落ちるので、キャンセル
File → Configre → Expert Mode で設定

● YAAC 自動起動
YAAC 起動前に wxnow.txt を作成
$ nano /home/[user]/.config/lxsession/LXDE-pi/autostart
——————————————-
@python /home/[user]/bme280/wx###.py
@java -jar /home/[user]/YAAC/YAAC.jar
——————————————-

● cron
※ wxnow.txt を autostart で作成すると
root だとパーミッションエラーになるので [user] にて cron
$ crontab -e (10分間隔の例)
————————————————————————-
*/10 * * * * python /home/[user]/bme280/wx###.py > /dev/null 2>&1
————————————————————————-
$ sudo /etc/init.d/cron restart