- About
- Supported Devices
- System Requirements
- Install Directions
- Documentation
- Starting the
eco_aprs_weather
service - Stopping the
eco_aprs_weather
service - Ecowitt App Configuration
- To confirm weather station telemtry is being recieved by the bridge
- Configuring your APRS software to send WX [Weather] Beacons!
- ⚡️ Lightning fast to setup, requires zero config out of the box [in many cases]
- 🐍 Installable via pip
- 🤝 Python 3.10 compatibility
Hi I'm N5IPT, or Jon.
The eco_aprs_weather
software is a bridge to allow for the ~$120 ECOWITT Weather Stations so that it can output APRS weather onto terrestrial telemetry for amateur radio. It does this via generating wxnow.txt
.
The biggest strength of this software is ability to send of weather packets with zero internet access. Chances are it ends up on the internet from a local I-GATE in your area anyway. This software gets data directly from your weather station over a LAN.
A lot of other APRS weather software collectors seem to require polling weather data from an online API like weather underground, but if your weather station loses internet your weather data has no chance of being reported. This projects goal is to require as little internet infrastructure as possible to function.
If you want a project you can do in a weekend with full weather on APRS try the ~$120 ECOWITT Weather Stations gateway and this software can bridge the gap. This was compelling to me because it can run on a Raspberry Pi, minimal power, and the weather station gateway itself only needs USB power. A field day certified weather project, hihi! The outdoor Solar Powered Anemometer and Self-Emptying Rain Gauge use AA batteries. The entire HAM/weather gateway/igate device can easily operate off solar and battery on a mountain top.
Here is 1 possible architecture implementation of this software [the blue box(es)!]:
Above: You would buy ECOWITT Weather Gateway + sensors [not shown in diagram], setup the block diagram components in white, and finally setup this software in the blue block diagam. The diagram depicts running on Raspberry Pi, but this software can run on an old PC, on Docker, or up in a cloud server; this software should work with many deployment methods.
The architecture described:
This software sits collecting weather metrics from your ECOWITT branded weather station at intervals you set in the ECOWITT app. You can configure your APRS Igate / RF software to periodically use the wxnow.txt
weather beacons generated by eco_aprs_weather
(this app.) The wxnow.txt format is used by popular APRS software to send radio weather telemetry packets. This software emits wxnow.txt
directly over HTTP, and can be saved locally if required.
This software should work with ECOWITT Weather station gateways models like:
Other ECOWITT Gateway models may be supported as long as your ECOWITT device settings can output to a customized HTTP server in "ECOWITT" station format. See the Ecowitt App Configuration section for configuration details in the ECOWITT phone app (which works for the models above)!
NOTE 1: If you know of other compatible ECOWITT devices, I am good on QRZ @ N5IPT, let me know!!!
This software supports:
- ECOWITT WH31 outdoor temperature&humidity sensor
- ECOWITT WH32 outdoor temperature&humidity sensor
- ECOWITT WH40 wireless self-emptying rain gauge sensor
- ECOWITT WS68 wireless solar powered anemometer
- Python 3.2 or greater.
- Memory: 1 GB minimum RAM suggested
This software works great on a Raspberry Pi along with the Direwolf Sofwarre TNC.
deb=$(curl -w "%{filename_effective}" -LO https://github.com/jondkelley/eco_aprs_weather/releases/download/v1.0.1/python3-eco-aprs-weather_1.0.1_all.deb) && dpkg -i $deb && rm $deb && unset deb
yum install -y https://github.com/jondkelley/eco_aprs_weather/releases/download/v1.0.1/python3-eco_aprs_weather-1.0.1-1.noarch.rpm
URL:
https://github.com/jondkelley/eco_aprs_weather/releases/download/v1.0.1/python3-eco_aprs_weather_1.0.1_all.snap
This software can be installed by Python Pip.
Make sure you have python and pip installed by running:
python3 --version
pip3 --version
If you're missing these, you'll need to install python, and python-pip. If these commands worked, install eco_aprs_weather with:
sudo pip3 install eco-aprs-weather
If you pull this repository from github down local, you can alternatively install with
sudo pip3 install .
but this is for developers mostly.
If you want to run this with Docker continers, it is rather simple.
First, get Docker Desktop installed
Then you can run the application with:
docker run -p 0.0.0.0:5000:5000/tcp jondkelley/eco_aprs_weather:latest
You should be able to visit http://localhost:5000
to see the application!
If you want to do local software development, you can rebuild by using:
docker build . -t jondkelley/eco_aprs_weather:latest
You can simply run
eco_aprs_weather --screen
This will start the app in a screen session, afterwards you can now close the Terminal / CMD window.
Note: If this command does not run, you need to make sure you have the following apps installed:
- screen
- curl
You can simply run
eco_aprs_weather --kill
NOTE: This is only known to work on Linux based environments, or Windows Subsystem for Linux.
Once you have the service started for Eco_APRS_Weather
you need to determine the IP address of your device running eco_aprs_weather
.
The IP of this device is used to point your weather station reports to it.
Within your Ecowitt phone app:
- Click the elipsis (
...
) symbol in the top right (of the screen showing your WX station live metrics) - In dropdown, select "Others"
- In the "Edit Gateway" screen click "DIY Upload Servers" button
- In the "DIY Upload Servers" screen click "Customized" (Globe Icon)
- In the
"Server / Host Name"
field enter the IP address of the computer running this software - In the
"Port"
field make sure it is"5000"
- In the
"Upload Interval"
field select the fastest interval - Click save.
- In the
- Hit
<
(top right) to return to previous screens - WX station should start sending metrics to the bridge in the next few minutes!
Visit http://<IP ADDRESS OF THIS SOFTWARE>:5000/sensor/overview
and verify you have station data coming in.
You may have to wait 5-10 minutes and refresh this page periodically, sometimes it takes a while for Ecowitt device settings to take effect.
If you do not see station data, possible solutions involve:
- Check the Ecowitt WX Station configuration settings
- Ensure the path field says exactly "data/report", other values don't work.
- Ensure the computer running this software does not have any sort of Firewall enabled
- Verifying your network configuration and trying again
This is the tricky part. This bridge supports any APRS software that accepts wxnow.txt
weather format in Cumulus weather format.
My only experience is with Direwolf, the modern software replacement for the old 1980's style TNC.
First thing, get your Direwolf tested and working with normal PBEACON
config statements to verify things are up and running. That's beyond the scope of this README.
Once Direwolf is confirmed working, you can comment out your old PBEACON
with a #
chaacter, and try a weather telemtry beacon like this:
PBEACON sendto=IG delay=0:30 every=13 lat=1.303690 long=-1.628359 SYMBOL="weather station" COMMENTCMD="curl -s http://127.0.0.1:5000/wxnow.txt | tail -1"
Note 1: Be sure to change the lat
long
fields to match your physical coordinates!
Note 2: Change 127.0.0.1 to match the IP address of your eco_aprs_weather bridge IP!
Note 3: If your running this software on the same Raspberry Pi with Direwolf, you can leave 127.0.0.1 alone.
This will send your weather reports straight the internet's APRS-IS backend service. It's what most people do. You can add an additional PBEACON
line and change sendto=IG
to sendto=0
to send to the first radio channel in direwolf.
This would look like:
PBEACON sendto=IG delay=0:30 every=13 lat=1.303690 long=-1.628359 SYMBOL="weather station" COMMENTCMD="curl -s http://127.0.0.1:5000/wxnow.txt | tail -1"
PBEACON sendto=0 delay=0:30 every=13 lat=1.303690 long=-1.628359 SYMBOL="weather station" COMMENTCMD="curl -s http://127.0.0.1:5000/wxnow.txt | tail -1"
Having both the above PBEACON
statements causes transmission on both radio port 0
and IG
(igate), sending over local RF as well as APRS-IS. Local RF packets can be received by APRS/WX-aware radios like Kenwood's or maybe some Yaesu's.
I don't know what other APRS software accepts wxnow.txt
and can report telemetry. That's where you come in! I need help, I don't know everything APRS.
Here's a PRO TIP how you can save wxnow.txt
to the disk of any popular Linux/UNIX based system (such as Raspberry Pi):
echo "*/5 * * * * root curl -s http://127.0.0.1:5000/wxnow.txt | tail -1" >> /wxnow.txt
Contact me thru QRZ (N5IPT) and write up some instructions and I can post them here. You will recieve credit by default unless you ask not to be mentioned in this README.
If you know how to use Github and can make a Pull Request, even better!
- Ben (N5AMD) for donating hardware, URI, Raspberry Pi 1 [2011], and a 2meter rig to prototype this software with.