Skip to main content

Northern Lights Forecast

PyPI Python Version License Read the documentation at https://northern-lights-forecast.readthedocs.io/

Tests Codecov pre-commit Black

Features

Get notified whenever there are good chances of seeing northern lights! Follow @NorthernLightsForecastBot on telegram for updates on the Tromsø magnetometer, or set up your own telegram bot with this project. Setting up a telegram bot is easy as pie, just follow this guide.

Requirements

The project uses tesseract to read the scale off a magnetogram plot. See installation instructions below.

Installation

Clone the repository:

git clone https://github.com/engeir/northern-lights-forecast.git nlf && cd nlf

Install tesseract, used with the package pytesseract.

Then get yourself a telegram bot using this guide.

Set up a virtual environment and activate. (Use whatever, for example poetry: poetry shell.)

Now we are ready to install the project; run poetry install in the root of the project.

Set up a cron job:

sh crontab.sh

Running sh croptab.sh -p will print to the console instead of installing a new cron job. It is important to get the correct path to the python virtual environment, therefore, the shell script must be run when the virtual environment is activated. To be certain everything is set up correctly you may want to run poetry run sh croptab.sh.

The cron script will try to start the bot daemon every 10 minutes. The PID for the process is saved to $HOME/.local/share/nlf/nlf-bot.pid. To stop the bot daemon, run

nlfd --stop

The daemon can also be started manually with

nlfd

Usage

Please see the Command-line Reference for details. Below is the output of nlf --help:

Usage: nlf [OPTIONS]

  Northern Lights Forecast.

Options:
  --version                     Show the version and exit.
  -l, --location TEXT           Which magnetometer to use. Run with '--
                                locations' option to list all available
                                locations.  [default: Tromsø]

  --locations / --no-locations  List out available magnetometer locations.
                                [default: False]

  --test / --no-test            Test sending message to telegram.  [default:
                                False]

  --help                        Show this message and exit.

Telegram

It is also possible to visit the telegram bot (@NorthernLightsForecastBot) and query for forecasts live. This includes the commands:

  • /start and /help: this will do the same thing, greet you with a helpful message

  • /version: which will print out the version of the project

  • /locations: which will print out the valid locations a forecast can be obtained from

  • Forecast <location>: that is, any message that starts with the word forecast and has a valid location as any of the succeeding words.

assets/telegram_screendump.gif

How?

The script implements an automated Northern Lights forecast by taking advantage of the web site of Tromsø Geophysical Observatory (TGO).

Image analysis

The script will try to download a .gif file with plots of the components of a magnetometer. One component is all that is needed (blue line) and the script will then locate the blue pixels and fit a graph to the pixel locations with a Savitzky-Golay filter.

Below is an example with the original image above the new reverse engineered graph.

assets/before.jpg assets/after.png

At a given threshold of the derivative of the X component of a magnetometer in Tromsø (or one of the supported locations, see nlf --locations), a notification is sent to a telegram bot to let the user know of the current substorm event.

Cron

The script can be run every hour from 18:00 through 08:00 during the months September through March, using cron to automate the task. Run

sh crontab.sh

to set this up, or edit the cron script manually with

env EDITOR=nano crontab -e

The general form of how you edit cron is as shown below, but to get the exact string you can run sh crontab.sh -p, where the option -p will make the script print to the console rather than edit cron. The same options can be used when running the script as a cron job as is specified in the Command-line Reference (e.g.the -l option).

0 0-8,18-23 * 9-12,1-3 * export DISPLAY=:0 && cd /path/to/folder/containing/script && python src/northern_lights_forecast/__main__.py > t.txt 2>&1

To change when the script is run, edit the cron scheduling to a custom setting: https://crontab.guru/

The crontab.sh script will try to find the tesseract executable and add this to path, which is needed for the cronjob to work. If it cannot find tesseract, a comment is instead printed warning about this, and you have to verify the installation of tesseract and possibly add it to path manually.

Contributing

Contributions are very welcome. To learn more, see the Contributor Guide.

License

Distributed under the terms of the MIT license, Northern Lights Forecast is free and open source software.

Issues

If you encounter any problems, please file an issue along with a detailed description.

Credits

This project was generated from @cjolowicz’s Hypermodern Python Cookiecutter template.

Metadata

Release files for northern-lights-forecast 4.1.4

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for northern-lights-forecast 4.1.4
File Size Uploaded
northern-lights-forecast-4.1.4.tar.gz 17.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for northern-lights-forecast 4.1.4
File Interpreter ABI Platform
northern_lights_forecast-4.1.4-py3-none-any.whl Python 3 none any Details

Total release size: 33.6 kB

Release files / northern-lights-forecast-4.1.4.tar.gz

Download URL northern-lights-forecast-4.1.4.tar.gz
Size 17.4 kB
Tags Source
SHA-256 checksum
How to use checksums
93adb847f11aae1dfe448fca89d32e084ea7bcc465031061c5cbe9a93830592d
BLAKE2b-256 checksum
How to use checksums
60f2ac445bfb7927f9816c155da68d99f77efde90e9963159dbd8fc4a28b592d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release files / northern_lights_forecast-4.1.4-py3-none-any.whl

Download URL northern_lights_forecast-4.1.4-py3-none-any.whl
Size 16.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
680c6c2f1248d7f02f6aee98c34440a4182d38176c63d6279aaa7f9cf12cc2ff
BLAKE2b-256 checksum
How to use checksums
ca098e615e6ea9f0b44bc1674005f0695469ee7caaf25ddeb619dbfe2e829050
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.1 CPython/3.9.13

Release history Release notifications | RSS feed

This release

4.1.4 This release

2 release files

4.1.3

2 release files

4.1.2

2 release files

4.1.0

2 release files

4.0.0

2 release files

3.0.1

2 release files

3.0.0

2 release files

2.0.3

2 release files

2.0.2

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.2.3

2 release files

1.2.2

2 release files

1.2.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page