Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
2df807d
Add SkyStrip weather forecast usermod
ksedgwic Aug 28, 2025
315b5ab
Fix CodeRabbit issues:
ksedgwic Aug 28, 2025
3a57075
Add missing header include
ksedgwic Aug 29, 2025
44e983f
Fix base API url
ksedgwic Aug 29, 2025
9a6a0a9
Improve documentation and comments:
ksedgwic Aug 29, 2025
a77c260
Code review improvements:
ksedgwic Aug 29, 2025
abcd7b3
Use segment virtualization APIs instead of raw start/stop
ksedgwic Aug 29, 2025
2d2c73d
skystrip: Fix formatting issues
ksedgwic Aug 29, 2025
440f21a
skystrip: Fix urlEncode bounds check to avoid premature truncation
ksedgwic Aug 29, 2025
35ccfbf
skystrip: Avoid undefined behavior: cast to unsigned char for ctype c…
ksedgwic Aug 29, 2025
3cbae81
skystrip: Guard against truncated input in parseLatLon
ksedgwic Aug 29, 2025
d51eef6
skystrip: Print 64-bit-safe timemachine dt
ksedgwic Aug 29, 2025
a3f700d
skystrip: Fix lat/long round-off update bug
ksedgwic Aug 30, 2025
fb1f3f6
skystrip: Improve documentation / comments
ksedgwic Sep 2, 2025
36c9bcd
skystrip: Further improve documentation
ksedgwic Sep 2, 2025
e37322d
skystrip: Even further doc improvements
ksedgwic Sep 2, 2025
8f08861
skystrip: Fix segment freeze semantics
ksedgwic Sep 16, 2025
7deb02b
skystrip: Don't gate fetching with strip.isUpdating
ksedgwic Sep 20, 2025
027626c
skystrip: Fix washed out areas with minimum saturation increase
ksedgwic Sep 20, 2025
946c486
skystrip: Suppress view of calm wind
ksedgwic Sep 20, 2025
bcd0ed3
skystrip: improve rendering of views
ksedgwic Oct 13, 2025
7efff94
skystrip: display the SKYSTRIP_GIT_DESCRIBE in the config
ksedgwic Oct 24, 2025
88167f5
skystrip: more view rendering improvements
ksedgwic Dec 3, 2025
1c27bb7
skystrip: fix location update reload bug
ksedgwic Dec 8, 2025
9f6d88c
skystrip: conditional-compile remove the 10 second safety
ksedgwic Dec 9, 2025
b521793
skystrip: improve the FAQ
ksedgwic Dec 15, 2025
f61afa5
skystrip: add explainer
ksedgwic Dec 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
151 changes: 151 additions & 0 deletions usermods/usermod_v2_skystrip/FAQ.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
# SkyStrip Interpretation Guide

This FAQ explains how to interpret the SkyStrip display.
There are 4 strips, from top to bottom:
- Cloud View
- Wind View
- Temperature View
- 24 Hour Delta View

## Cloud View (CV)

Displays the next 48 hour forecast of clouds and rain, with sunrise/sunset markers.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🟡 Minor

Hyphenate the compound adjective “48-hour.”

This is a small user-facing text polish.

✏️ Proposed fix
-Displays the next 48 hour forecast of clouds and rain, with sunrise/sunset markers.
+Displays the next 48-hour forecast of clouds and rain, with sunrise/sunset markers.
...
-Displays the next 48 hour forecast of wind direction and velocity.
+Displays the next 48-hour forecast of wind direction and velocity.

Also applies to: 35-35

🧰 Tools
🪛 LanguageTool

[grammar] ~12-~12: Use a hyphen to join words.
Context: ...## Cloud View (CV) Displays the next 48 hour forecast of clouds and rain, with s...

(QB_NEW_EN_HYPHEN)

🤖 Prompt for AI Agents
In `@usermods/usermod_v2_skystrip/FAQ.md` at line 12, Update the user-facing
sentence "Displays the next 48 hour forecast of clouds and rain, with
sunrise/sunset markers." to hyphenate the compound adjective as "48-hour" (i.e.,
"Displays the next 48-hour forecast of clouds and rain, with sunrise/sunset
markers.") and make the same change for the other occurrence referenced (the
second instance noted at line 35) so both FAQ.md entries use "48-hour".


### Features
- **Sunrise/sunset markers** appear as single orange pixels at time of sunrise/sunset.

- **Day/night clouds** pale yellow in daylight and turn darker at night.

- **Cloud coverage** from sparse to full.

- **Precipitation** rain is blue, snow is purple. Pastel shades
represent less chance of precipitation, bold colors indicate it's
likely. Brightness indicates forecast accumulation.

### Config notes
- `RainMaxInHr`: sets the precipitation rate that maps to full
brightness (default 1.0 in/hr), so lower values make lighter rates pop
brighter.
- `CloudWaveHalfPx`: half-cycle length of the dithering wave in pixels
(default 2.2); lower values make the on/off cloud bands tighter.


## Wind View (WV)

Displays the next 48 hour forecast of wind direction and velocity.

### Features
- **Color shows where the wind is coming from.** Hue walks around the
compass so you can read direction at a glance (e.g., blue for north,
orange for east, yellow for south, green for west, with smooth
blends in between).

- **Brightness tracks how windy it feels.** Value uses the stronger of
sustained speed or gusts, dimming calm periods and pushing toward
full brightness as winds climb toward 50 mph.

- **Saturation highlights gustiness.** Colors stay pastel when gusts
match the steady wind, then grow more vivid as gusts pull ahead,
making choppy conditions easy to spot.

| Direction | Color | Hue (°) |
|-----------|--------|---------|
| N | Blue | 240 |
| NE | Purple | 300 |
| E | Orange | 30 |
| SE | Gold | 45 |
| S | Yellow | 60 |
| SW | Lime | 90 |
| W | Green | 120 |
| NW | Cyan | 180 |
| N | Blue | 240 |

Note: Hues wrap at 360°, so “N” repeats at the boundary.


## Temperature View (TV)

Displays the next 48 hours forecast of temperature and humidity.

### Features
- **Hue traces the temperature.** Colors shift through the palette as the
forecast warms or cools, so you can read temperature at a glance.
- **Degree crossings are marked.** Single ticks mark each 5 °F step, and
double ticks mark the 10 °F steps to anchor the scale.
- **Time notches keep you oriented.** Small notches appear every three
hours, with larger ones at noon and midnight so you can line up events
to the clock.
- **Saturation reflects humidity.** Colors wash out when it’s muggy and
stay vivid when the air is dry.

| Center (°F) | Color | Hue (°) |
|-------------|----------|---------|
| -45 | yellow | 60 |
| -30 | orange | 30 |
| -15 | red | 0 |
| 0 | magenta | 300 |
| 15 | purple | 275 |
| 30 | blue | 220 |
| 45 | cyan | 185 |
| 60 | green | 130 |
| 75 | yellow | 60 |
| 90 | orange | 30 |
| 105 | red | 0 |
| 120 | magenta | 300 |
| 135 | purple | 275 |
| 150 | blue | 220 |

Colors wrap outside the 0–120 °F range—it’s “so cold it’s hot” or “so hot
it’s cold.”

### Config notes
- `ColorMap`: pipe-separated `center:hue` pairs set the palette (hues can be
numbers or names); defaults to 15 °F steps using the table above.
- `MoveOffset`: optional integer shift, applied on save, that moves every
color stop by the same °F amount without editing each entry.


## 24-Hour Delta View (DV)

Shows how much warmer or colder it is forecast to be compared to the
same time 24 hours prior.

Color indicates how much change is forecast:

| Change vs 24h prior | Strip color | Brightness |
|---------------------|-------------|------------|
| Colder than -15° | Purple | Shout |
| -15° to -10° | Indigo | Strong |
| -10° to -5° | Cyan-blue | Moderate |
| -5° to +5° | Off (blank) | Off |
| +5° to +10° | Yellow | Moderate |
| +10° to +15° | Orange | Strong |
| Warmer than +15° | Red | Shout |

### Config notes
- Default thresholds are 5 / 10 / 15 °F (configurable with
`DeltaThresholds`).


## Debug Pixel

You can use the debug pixel to examine details of each view at a
particular point on the display.

### Choose a pixel

Set the **Pixel index** to the LED you want to inspect (0 is the left edge,
141 is the right), replacing the default `-1` disabled value.

### Save and spot the blink

Click **Save** to lock in the index. The selected pixel position blinks as
a vertical column across all strips until you turn **Debug pixel** back
off. This makes it easy to confirm you’re watching the right spot.

### Read the per-view values

Reopen the config screen to see the captured inputs and outputs for
that pixel in the **Debug pixel** box. Change the index and save again
any time you want a fresh sample. Set the **Pixel Index** back to
`-1` when you are done.
Loading