JVital2013 / vitality-goes

Web App for showcasing Geostationary Weather Satellite Data
GNU General Public License v3.0
71 stars 6 forks source link
satellite-imagery sdr weather

Vitality GOES

A Web App for showcasing Geostationary Weather Satellite Data. Vitality GOES is designed to display data received from GOES-16/18 satellites via goestools, Satdump, or XRIT Decoder, but images from other satellites can be displayed as well.

Click Here for Screenshots and Videos

Traducción al español por XQ6DLW, Demys

Series of Screenshots of Vitality GOES

Table of Contents

  1. What does Vitality GOES do?
  2. System Requirements
  3. Preparing your system for Vitality GOES
  4. Installing Vitality GOES
  5. Configuring Vitality GOES
  6. Updating Vitality GOES
  7. Theming
  8. Creating configs for other satellites
  9. Other Documentation
  10. Credits
  11. Additional Resources

What does Vitality GOES do?

Vitality GOES makes data received from a Geostationary Weather Satellite feed easily accessible, through a web browser, from anywhere on your local network. Even if the internet goes down, people on your local LAN can still access real-time weather information.

Vitality GOES has the following features:

Sample configurations are provided for the following satellite/station setups:

Satellite Downlink Supported Programs
GOES-16 and 18 HRIT goestools, SatDump, and XRIT Decoder
EWS-G1 (GOES-13) GVAR SatDump
FengYun-2x S-VISSR SatDump
GEO-KOMPSAT 2A xrit-rx or SatDump

How does it work?

A satellite downlink is picked up by your satellite dish, and is processed into text and image data by goestools/SatDump. From there, Vitality GOES reads the data and presents it to the user on their device across the local network.

Flow of Geostationary Weather Data Via Vitality GOES

System Requirements

You need to set up a satellite dish and point it at the satellite of your choice to get started. Additionally, SatDump or goestools must be configured to save recieved data to disk. Guides for setting up these programs can be found under Additional Resources.

It is recommended that you host Vitality GOES on your ground station itself for the most up-to-date information and to simplify setup/maintenance. If you choose, it can be hosted on another machine if you have a sync process set up between the ground station and the Vitality GOES server. Syncing received images from another machine is outside the scope of Vitality GOES.

It is also recommended that you use a Debian-based Linux distro to host the Vitality GOES server. Something like Raspberry Pi OS, Ubuntu, or Debian is preferred. If you host it on Windows, make sure your satellite data is on an NTFS drive.

If you enable the secondary scripts, you may need more processing power than a low-end machine (like a Raspberry Pi) can provide. You may need to offload video rendering tasks to another machine or upgrade your server to something beefier. I'm using a laptop with a 4th generation Core i5 processor, and it has more than enough power to run goestools, Vitality GOES, and all secondary scripts.

Once configured, any modern web browser can connect to Vitality GOES and view the data. Anyone with access to your server can view the data with ease!

Preparing your system for Vitality GOES

Option 1: SatDump

You can use SatDump as a data source without changing any of its configurations. While SatDump can be run interactively with a full UI, this is not recommended for long-term realtime decoding. Instead, you should launch satdump in cli mode for live decoding. Here is an example SatDump command to use an RTL-SDR to pick up GOES-16/18:

satdump live goes_hrit F:\path\to\satdumprepo --source rtlsdr --samplerate 2.4e6 --frequency 1694.1e6 --gain 49 --http_server 0.0.0.0:8080 --fill_missing

The http_server part is optional and is only needed to provide decoder/demodulator statistics to Vitality GOES. For more information, see the config documentation.

Option 2: goestools

To assist you in configuring goestools for Vitality GOES, sample goesrecv.conf and goesproc-goesr.conf files have been included in the configs folder of this repository. These files are pretty close to "stock" suggested files. You do not need to use these exact configs. You might want to remove sections you won't be using, and you'll need do do a "Find & Replace" to update the directory to where you want your GOES products stored. In the end, your setup should be configured as follows:

Option 3: XRIT Decoder

Thanks to @abomb60, data from USA-Satcom's XRIT Decoder is supported as well.

Vitality GOES Dependencies

Vitality GOES needs to be hosted on a web server stack. Recommended software versions:

For this readme, I'm going to assume you're not running another web server on the same machine.


Linux

Assuming you're on a Debian/Ubuntu-based server, the following commands should install all the dependencies you need:

sudo apt update
sudo apt upgrade
sudo apt install apache2 php libapache2-mod-php
sudo a2enmod rewrite
sudo systemctl restart apache2

You may also need to enable .htaccess files in Apache2 for all functionality to work. To do so, edit /etc/apache2/apache2.conf as root and update this section:

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
</Directory>

to this:

<Directory /var/www/>
        Options -Indexes
        AllowOverride All
        Require all granted
</Directory>

Finally, you need to make sure Apache has read access to your satellite data. There are two ways to do this. If your data is somewhere in your user folder (ex. /home/pi), you can give the www-data user access to your user folder. To do so, run these commands (replacing pi with your username):

sudo usermod -a -G pi www-data
chmod 0750 /home/pi
sudo systemctl restart apache2

The other option is to configure your receiving program to save your data elsewhere (ex, /var/lib/satdata), and set your permissions as appropriate.

Windows

The easiest way to host Vitality GOES on a Windows box is to use XAMPP (https://www.apachefriends.org/). Download and install this software. When prompted, the only parts that are needed are Apache and PHP. Don't forget to start the Apache service in the XAMPP control panel before continuing.


Afterwards, verify your web server is working. When you navigate to the IP of your Vitality GOES server, you should see something that looks like this:

Demo Apache2 Page

Installing Vitality GOES

Linux

In a command line, run the following commands:

sudo rm -rf /var/www/html
git clone https://github.com/JVital2013/vitality-goes
cd vitality-goes
cp -r html /var/www/html

Then, copy a set of example configuration files from the configs folder of this repo into /var/www/html/config. Take a look at the config readme for more.

Windows

To start hosing Vitality GOES in Windows:

  1. Download a zip of the Vitality GOES git repository (link for the lazy)
  2. Extract the zip
  3. Delete the contents of C:\xampp\htdocs\
  4. Copy the contents of vitality-goes\html into C:\xampp\htdocs\

Then, copy a set of example configuration files from the configs folder of this repo into C:\xampp\htdocs\config. Take a look at the config readme for more.

Configuring Vitality GOES

Take a look at the config readme for info on how to tweak the Vitality GOES configuration to your liking.

Advanced configurations for goestools

"Admin Text" does not get saved by goestools due to a change in how the GOES satellites send the file down. For this text to get displayed, recompile goestools with this patch: https://github.com/pietern/goestools/pull/105/files. Afterwards, enable adminPath in config.ini and point it to your location for admin text files.

Vitality GOES can also show historical graphs for Viterbi error correction rates, Reed-Solomon error correction rates, packet drops, and more. To set this up, look here.

Secondary Scripts

Vitality GOES comes with a number of scripts to enhance and extend its functionality. It is optional to implement any of these scripts, but some like Cleanup-EmwinText are highly encouraged.

For information on setting up these scripts, look here.

Updating Vitality GOES

Linux

Run the following commands in a terminal:

git clone https://github.com/JVital2013/vitality-goes
cd vitality-goes
rsync -av --exclude 'config' --exclude 'videos' html/ /var/www/html/ --delete

If you still have your cloned vitality-goes repo from last time, you can also just run git pull before running rsync.

Windows

  1. Download a zip of the most recent Vitality GOES repository (link for the lazy)
  2. Extract the zip
  3. Open a command line within the extracted zip's vitality-goes-main directory
  4. Run the following command: robocopy html C:\xampp\htdocs /MIR /R:0 /W:0 /XD videos config

Theming

Vitality GOES supports theming. It comes with 5 themes, but you can make your own or install others shared with you. To get started with theming, take a look at the themes documentation.

Creating configs for other satellites

You can use Vitality GOES to view images from other satellites not included in the sample configs. Here's how to set it up:

Advanced use cases

Credits

Special thanks to Pieter Noordhuis for his amazing goestools package. Without him, Vitality GOES would be nothing, and the GOES HRIT/EMWIN feed would remain out of reach for a large number of amateur satellite operators.

Also special thanks to Aang23 for his SatDump package, the swiss army knife of amateur satellite reception.

The following software packages are included in Vitality GOES:

Additional Resources

Here are a few tools that may help you with picking up the HRIT/EMWIN Feed

License

2022-2024 Jamie Vital. Made available under the GPLv3 License.