parent
c9d180c2db
commit
9f839b7467
@ -0,0 +1,182 @@
|
||||
+++
|
||||
# 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](https://rockylinux.org/) to [OpenBSD](https://www.openbsd.org/).
|
||||
|
||||
## Installation of WeeWX
|
||||
|
||||
The [Installation Guide](http://weewx.com/docs/setup.htm) 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
|
||||
```
|
||||
|
||||
```console
|
||||
$ python3 ./setup.py build
|
||||
$ doas python3 ./setup.py install
|
||||
```
|
||||
|
||||
Optionally install ephem:
|
||||
|
||||
```console
|
||||
$ 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).
|
||||
|
||||
```console
|
||||
# cd /home/weewx
|
||||
# chown -R weewx:weewx .
|
||||
# cd /var/www/weewx
|
||||
# chown -R weewx:weewx .
|
||||
```
|
||||
|
||||
### Finally installed python stuff
|
||||
|
||||
```console
|
||||
# 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
|
||||
```
|
||||
|
||||
```console
|
||||
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`:
|
||||
|
||||
```sh
|
||||
#!/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
|
||||
|
||||
```console
|
||||
$ 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](https://aprs.fi/#!call=a%2FOE7DRT-13&timerange=3600&tail=3600).
|
||||
|
||||
This is basically done with a python script run by cron every hour.
|
||||
|
||||
```python
|
||||
#!/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()
|
||||
```
|
||||
|
||||
```console
|
||||
$ crontab -l
|
||||
57 * * * * python3 /home/dominic/bin/aprs_sendstatus.py
|
||||
```
|
||||
|
||||
|
Loading…
Reference in new issue