3.8 KiB
+++
vim: ft=markdown
title = 'Moving WeeWX to OpenBSD' summary = '''I moved my WeeWX setup to my new server, which is running OpenBSD 7.3.''' date = '2023-05-27T23:19:53+02:00'
lastmod = ''
categories = [ 'amateur-radio' ] tags = [ 'wx', 'weewx', 'openbsd', 'server', 'selfhost' ]
+++
I've moved my server to a new provider and changed the OS within this task from Rocky Linux to OpenBSD.
Installation of WeeWX
The Installation Guide is very useful and you should follow its procedure.
I installed WeeWX into /home/weewx
. I also created a new user named weewx.
weewx:*:999:999:WeeWX Daemon:/home/weewx:/sbin/nologin
Also install some prerequisites:
pkg_add py3-configobj py3-serial py3-pyusb py3-pip py3-cheetah py3-jplephem py3-pymysql
$ python3 ./setup.py build
$ doas python3 ./setup.py install
Optionally install ephem:
$ doas -u weewx pip install ephem
You may want to change owner of the installed files (in case you didn't create the weewx user beforehand and used the root user for that before).
# cd /home/weewx
# chown -R weewx:weewx .
# cd /var/www/weewx
# chown -R weewx:weewx .
Finally installed python stuff
# pkg_info | grep py3 | awk '{ print $1 }'
py3-chardet-5.1.0
py3-cheetah-3.2.6p3
py3-configobj-5.0.6p7
py3-jplephem-2.18p0
py3-numpy-1.24.1
py3-pip-23.0.1
py3-pymysql-1.0.2p2
py3-pyusb-1.2.1
py3-serial-3.4p5
py3-setuptools-64.0.3p1v0
py3-six-1.16.0p2
doas -u weewx pip list
Package Version
---------- -------
chardet 5.1.0
Cheetah3 3.2.6
configobj 5.0.6
ephem 4.1.4
jplephem 2.18
numpy 1.24.1
pip 23.0.1
PyMySQL 1.0.2
pyserial 3.4
pyusb 1.2.1
ranger-fm 1.9.3
setuptools 64.0.3
six 1.16.0
Setting up the start script
I've put the following file into /etc/rc.d/weewx
:
#!/bin/sh
# Start script for FreeBSD, contributed by user Fabian Abplanalp
# Put this script in /usr/local/etc/rc.d then adjust WEEWX_BIN and
# WEEWX_CFG values in /etc/defaults/weewx
# some small modifications by Dominic Reich “OE7DRT”
WEEWX_BIN="/home/weewx/bin/weewxd"
WEEWX_CFG="/home/weewx/weewx.conf"
#WEEWX_PID="/var/run/weewx/weewx.pid"
WEEWX_PID="/home/weewx/weewx.pid"
DOAS="/usr/bin/doas -u weewx"
# Read configuration variable file if it is present
#[ -r /etc/defaults/weewx ] && . /etc/defaults/weewx
[ -r /home/weewx/defaults ] && . /home/weewx/defaults
case "$1" in
"start")
echo "Starting weewx..."
${DOAS} ${WEEWX_BIN} ${WEEWX_CFG} --daemon --pidfile ${WEEWX_PID} &
#echo $! > ${WEEWX_PID}
echo "done"
;;
"stop")
echo "Stopping weewx..."
if [ -f ${WEEWX_PID} ] ; then
kill `cat ${WEEWX_PID}`
rm ${WEEWX_PID}
echo "done"
else
echo "not running?"
fi
;;
"restart")
echo "Restarting weewx..."
$0 stop
sleep 2
$0 start
;;
*)
echo "$0 [start|stop|restart]"
;;
esac
Add weewx
to pkg_scripts=
in /etc/rc.conf.local
and start it with
$ doas rcctl start weewx
Status text for APRSWXNET (aprs.fi)
I do also send a status message which adds a nice link back to my weather website on aprs.fi.
This is basically done with a python script run by cron every hour.
#!/usr/bin/env python3
"""sending aprs status packets for my weather station"""
import aprslib
def main():
"""main func"""
AIS = aprslib.IS("OE7DRT-13", passwd="*****", port=14580)
AIS.connect()
AIS.sendall("OE7DRT-13>APRS,TCPIP*:>Weatherpage: https://wx.oe7drt.com\r\n")
if __name__ == "__main__":
main()
$ crontab -l
57 * * * * python3 /home/dominic/bin/aprs_sendstatus.py