Aller au contenu principal

Horus

A Node.js/React short term weather report designed for sports, live at https://brunopc-net.github.io/Horus.

Named after the Egyptian god of rainstorms, weather, sky and war.

Repository

Summer 2023, Wildfires were terrible in Canada. With global warming effects increasing every year, I wanted an algorithm that would advice me on what to do when I'm planning to go play outside. I also wanted something to advice me to protect from the sun, as UV can be high even if it's cloudy.

While I was on it, I decided to include precipitation alerts so I won't go for a long bike ride if there will be rain in two hours for exemple. I also included temperature alerts to make sure I'm aware of the conditions for my time outside.

It consists of two sections:

Alerts

Here's the alerts displayed in the advice section:

🏭 Air quality (AQI-US)

You can read about Air Quality Index (U.S.) here. I choose to not use maroon AIQ color for consistency with the other alerts and to make the app more intuitive.

🟢 0-50
No alert

🟡 50-100
Not the best, outside exposure still ok

🟠 100-150
Play outside with N95 mask😷
Close windows, turn on air purifier

🔴 150-200
Play outside max 120min with N95😷
Close windows, air purifier at moderate level

🟣 200-250
No exercice, 60min max outside exposure with N95😷
Close windows, air purifier at high level

🟣 250-300
Stay inside
Close windows, air purifier at max level

💀 300+
Stay inside with N95😷
Close windows, air purifier at max level

☀️ UV Index

You can read about UV Index here.

For UV, as it fluctuate during the day, I put two alerts:

  • A max UV alert (if max level is later in the day)
  • A time to burn alert. Time to burn is calculated by using Fitzpatrick's formula
    (200 * skin_type_resistance)⁄(3 * UVI) with skin type II (skin_type_resistance = 3)
    If you're skin type 1, be aware that this metric is too optimistic for you ; you should protect from sun approximatly 16% faster then what's adviced and at UV Level 2.

Max UV Alert

🟢 0-2: No alert
🟡 3-5: Max UV predicted: x
🟠 6-7: Max UV predicted: x
🔴 8-10: Max UV predicted: x
🟣 11-12: Max UV predicted: x
💀 13+: Max UV predicted: x

Time to burn

🟢 Over predicted forecast time: No alert
🟢ℹ️ 240+ minutes: You will need sunscreen in x min
🟢⚠️ 120-240 minutes: Protect your skin after x min
🟡 30-120 minutes: Protect your skin after x min
🟠 20-30 minutes: Protect your skin after x min
🔴 17-20 minutes: Protect your skin after x min
🟣 15-17 minutes: Protect your skin after x min
💀 15- minutes: Protect your skin after x min

🌡️ Temperature

Temperature used is the "feels like" temperature, so heat index should be considered in the summer and wind index should be considered in the winter.

🥵 Heat alerts

🟢 12-28°C
No alert

🟡 28-32°C
Caution with exercice, listen to your body
Drink proactively

🟠 32-36°C
Exercice moderatly, take regular breaks
Take a lot of water/electrolytes

🔴 36-40°C
Exercice lightly, no more then 120min Zone2
Take as much water/electrolytes as possible

🟣 40-44°C
Exercice very lightly, no more then 60min Zone1
Take as much water/electrolytes as possible

💀 44+°C
Avoid exercice, stay as cool as you can
Take as much water/electrolytes as possible

🥶 Cold alerts

🟢 12 to 28°C
No alert

🟡 6 to 12°C
You may need a light jacket or sleeves

🟠 0 to 6°C
You may need winter gear, watch out for ice🧊

🔴 -12 to 0°C
Put winter gear

🟣 -24 to -12°C
Wear maximum clothing, goggles

💀 Lower than -24°C
Extreme cold, stay indoors

🌧️🌨️ Precipitations

Support rain and snow

🌧️ Rain alerts

🟢 No rain: No alert
🟡 0-2mm: Some rain drops expected
🟠 2-6mm: Significant rain expected
🔴 6-12mm: A lot of rain is expected
🟣 12-24mm: Deluge is expected
💀 24+mm: Heavy deluge is expected

🌨️ Snow alerts

🟢 No rain: No alert
🟡 0-5cm: A bit of snow is expected
🟠 5-12cm: Significant snow expected
🔴 12-20cm: A lot of snow is expected
🟣 20-30cm: Snow storm is expected
💀 30+cm: Heavy snow storm is expected