Skip to main content

Moving WeeWX to OpenBSD

·415 words·2 mins

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