Skip to content

jondkelley/eco_aprs_weather

Repository files navigation

eco_aprs_weather

About

  • ⚡️ 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.

Architecture Diagram

Here is 1 possible architecture implementation of this software [the blue box(es)!]:

the actual reference architecture diagram

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.

Supported Devices

Supported Weather Station Gateway Devices

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!!!

Supported Weather Station Probes

This software supports:

System Requirements

  • 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.

Install Directions

Install for Debian/Ubuntu (deb) (For Amateurs)

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

Install for Redhat (rpm) (For Amateurs)

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

SNAP Package (For Amateurs)

URL:

https://github.com/jondkelley/eco_aprs_weather/releases/download/v1.0.1/python3-eco_aprs_weather_1.0.1_all.snap

Install Using Python / Pip (For Intermediates)

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.

Install Using Docker (For Experts Only)

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

Starting the eco_aprs_weather service

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

Stopping the eco_aprs_weather service

You can simply run

eco_aprs_weather --kill

NOTE: This is only known to work on Linux based environments, or Windows Subsystem for Linux.

Ecowitt App Configuration

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:

  1. Click the elipsis (...) symbol in the top right (of the screen showing your WX station live metrics)
  2. In dropdown, select "Others"
  3. In the "Edit Gateway" screen click "DIY Upload Servers" button
  4. 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.
  5. Hit < (top right) to return to previous screens
  6. WX station should start sending metrics to the bridge in the next few minutes!

To confirm weather station telemtry is being recieved by the bridge

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

overview pic

Configuring your APRS software to send WX [Weather] Beacons!

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.

Configuring Direwolf

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.

Other APRS Software

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!

Special Thanks To:

  • Ben (N5AMD) for donating hardware, URI, Raspberry Pi 1 [2011], and a 2meter rig to prototype this software with.

About

This is a bridge to allow ECOWITT Weather Stations integrate with APRS weather telemetry for amateur radio.

Resources

License

Stars

Watchers

Forks

Packages

No packages published