Skip to content

Weather Channel

austin edited this page Nov 12, 2026 · 3 revisions

Weather Channel

This adds a channel that plays your local forecast in the style of the 1990s WeatherStar 4000, the one with the smooth jazz.

There are two ways to get it:

  • The easy way: one line in .env, then type your ZIP code in the dashboard. Start here.
  • Your own look: pick which forecast screens show, use widescreen, or point at a weather page you already run. More steps.

Both need a regular PC (amd64). The part that draws the picture does not run on a Raspberry Pi or other ARM machine. The forecasts cover the United States only.

How it works

FieldStation42's own "web" channels need a full desktop to draw a web page, and the server doesn't have one. So the weather channel works a different way. One small container serves the weather page. A second one opens that page in a hidden browser and turns it into a video stream. The wrapper then adds that stream as a channel.

graph TD
  ws4kp[WeatherStar 4000+ web page]
  ws4channels[ws4channels: captures the page as a stream]
  wrapper[Station Wrapper 43]
  emby[Emby or Jellyfin]
  ws4kp --> ws4channels --> wrapper --> emby
Loading

The easy way

1. Switch it on

Add one line to .env, next to the compose file, and start again:

cd ~/fieldstation42
echo 'WEATHER_CHANNEL=1' >> .env
docker compose up -d

Two more containers start. The first time takes a few minutes, because Docker downloads them.

A channel called Weather joins your lineup. It gets channel 3, or the next free number if 3 is taken. You can see it on the dashboard's Sources page.

2. Type your ZIP code

  1. Open the dashboard (http://192.168.1.20:5004) and go to Settings.
  2. Find Weather channel.
  3. Type a ZIP code, or a town like Orlando, FL. Save.

The channel shows your forecast within a minute or two. Nothing restarts. Until you set a place, the channel shows a card telling you where to set one.

To move the forecast somewhere else later, change the setting. That's all.

3. Refresh the guide in Emby or Jellyfin

Emby and Jellyfin show the new channel after their next guide refresh. If you use a client mode player, it gets the channel too, with the same number.

Good to know

  • It always runs. The hidden browser draws the forecast all day, even when nobody is watching. It uses about half a CPU core and 500 MB of memory.

  • Anyone on your network can read the place. The page the hidden browser opens has no login, so anyone who can reach port 5004 can see the ZIP code you typed. Don't put the server on the internet.

  • To change its number or name, use the Sources page.

  • To remove it, delete the Weather source on the Sources page. Then take WEATHER_CHANNEL=1 out of .env and remove the two containers:

    docker rm -f station-wrapper-43-ws4channels station-wrapper-43-ws4kp

Your own look

Use this if you want to choose which screens show (hourly, radar, extended forecast), want widescreen, or already run WeatherStar somewhere. You set up the look on the WeatherStar page and hand its link to your own capture container.

You don't need WEATHER_CHANNEL=1 for this. If you did the easy way first, remove that channel as shown above, so you don't draw the weather twice.

You need WeatherStar 4000+ running somewhere on your network. These steps assume it's at http://192.168.1.10:8080.

1. Set up the weather page

  1. Open WeatherStar in a browser.

  2. Type your town or ZIP code and turn on the screens you want.

  3. Open the Share tab below the weather display and click Copy permalink. The permalink is the long link that saves all your choices.

  4. Turn on kiosk mode in the link. Paste it somewhere you can edit it, find kiosk=false and change it to kiosk=true:

    ...&radar=true&future-radar=true&kiosk=true&stickyKiosk=false&...
    

    If your link has no kiosk= in it, add &kiosk=true to the end instead.

Kiosk mode hides the location box, the tabs and the settings, so the forecast fills the whole picture. Without it the capture can end up showing the page's controls as well.

To check your link, open it in a browser. You should see only the weather display. Press Ctrl-K to get the controls back.

Use the page's address on your own network, not one behind a login. The capture can't log in.

2. Add your own capture container

Don't edit docker-compose.yml itself. Save this as a second file beside it, ~/fieldstation42/docker-compose.override.yml. Docker Compose reads both files together, and the wrapper's own file stays as you downloaded it.

services:
  my-weather:
    image: ghcr.io/rice9797/ws4channels:latest
    container_name: my-weather
    restart: unless-stopped
    mem_limit: 1096m
    cpus: 1.0
    ports:
      - "9798:9798"   # playlist.m3u and the stream
    environment:
      ZIP_CODE: "12345"              # CHANGE: your ZIP code
      WS4KP_HOST: "192.168.1.10"     # CHANGE: where WeatherStar runs
      WS4KP_PORT: "8080"             # CHANGE: its port
      VIEW_MODE: standard
      PERMALINK_URL: "<paste your permalink here, with kiosk=true>"

Keep the name my-weather. The wrapper's compose file already has a service called ws4channels for the easy way, and two services can't share a name.

Start it:

cd ~/fieldstation42
docker compose up -d

Check that it works. This should print a short playlist:

curl -s http://192.168.1.20:9798/playlist.m3u

3. Add it as a channel

  1. In the dashboard, open Sources and click Add a source.
  2. Type: a playlist (m3u).
  3. Address: http://192.168.1.20:9798/playlist.m3u
  4. Mode: Converted for browsers.
  5. First channel number: pick one, like 47.
  6. Save.

The weather channel joins your lineup. Emby and Jellyfin show it after their next guide refresh.

Changing what it shows

Set up the screens you want on the WeatherStar page, copy the new permalink, change kiosk=false to kiosk=true in it again, and paste it into PERMALINK_URL. Then run docker compose up -d again.

Clone this wiki locally