-
Notifications
You must be signed in to change notification settings - Fork 0
Time and Weather Announcements
A built-in, enhanced take on the classic saytime.pl / weather.sh scripts many ASL3/AllStar repeaters have run for years, so there's no separate program to install and keep in sync.
- Announces the current time (12- or 24-hour, with an optional "Good morning/afternoon/evening" smart greeting) and/or current weather conditions — time only, weather only, or both, independently configurable
- Runs on the same cron-style schedule as Scheduled Announcements (top of every hour by default, but any pattern works) and takes priority over Scheduled Announcements if both are due at the same moment
- Also triggerable on demand over DTMF (map a function in
rpt.conftoherald play-timeweather), independent of the schedule - Weather can come from NOAA METAR, Open-Meteo, your own WeatherFlow Tempest station, or any Personal Weather Station uploading to Weather Underground (including a Tempest station also configured to feed WU) — Tempest, Open-Meteo, and METAR all include wind speed/direction/gust in addition to temperature, feels-like, humidity, and condition
-
Two modes:
- Recordings (default) builds the announcement from a pre-recorded sound pack — fast, fixed wording
-
Custom Templates lets you write your own message(s) with tags (
{smart_greeting}{time}{conditions}{temperature}{feels_like}{humidity}{wind_speed}{wind_gust}{callsign}), rendered fresh with Piper TTS each time at an adjustable speech speed (0.5x–2.0x, per message); with more than one message configured, a different one is picked at random each occurrence (never the same one twice in a row). A tag left blank because the current provider/reading has no data for it (e.g. no gust, or a provider with no wind at all) is silently omitted rather than failing the whole message.
- Top-of-the-hour phrasing — in 12-hour format, choose whether an exact-hour time (e.g. 3:00) says "Three PM" (default) or "Three O'Clock PM"; no effect any other minute. 24-hour format always says "hundred hours" at the top of the hour (e.g. "Sixteen Hundred Hours").
- Minute pronunciation (Custom Templates mode) — choose "Oh" or "Zero" for single-digit minutes, e.g. "Four Oh Six" vs "Four Zero Six" (12-hour) or "Sixteen Oh Six" vs "Sixteen Zero Six" (24-hour)
-
Test with any time, not just right now — the Test button (and
herald test-timeweather --at HH:MM) can preview as if it were any time of day, so checking things like the o'clock phrasing above or the smart-greeting boundaries doesn't mean waiting for the real clock to get there
Time & Weather Announcements use the same cron-based path as Scheduled Announcements, but are checked first, so they take priority if both are due at the same moment — the Scheduled entry simply retries on the next poll cycle rather than being skipped. The announcement audio (time and/or weather, per config) is regenerated fresh every time it plays, unlike a fixed recording. It can also be triggered on demand via a DTMF function mapped to herald play-timeweather, independent of the cron schedule — logged to Playback History as a normal occurrence (not a test), without suppressing the next real scheduled occurrence.
In Custom Templates mode, the daemon computes when the schedule will next fire and starts rendering the chosen message with Piper LookaheadSeconds ahead of that moment (as a background process, so it never blocks unkey detection or anything else in the poll loop) — by the time the scheduled minute arrives, the file is already sitting there ready to play, same instant feel as Recordings mode. If the node is keyed when that moment arrives, it waits for unkey exactly like a Scheduled Announcement; if rendering somehow isn't finished in time, the daemon gives it a short grace period before skipping that occurrence rather than playing nothing or a broken file. DTMF and Test plays render synchronously on demand instead, since those already run outside the daemon's shared poll loop.
There is no dedicated Time & Weather weather provider for reading a classic SkywarnPlus install's already-fetched data — use a TimeWeather.Weather.Provider directly if you want weather announcements independent of your SkywarnPlus setup. See Tail Messages → SkywarnPlus Integration for how the WX tail-message alert itself works.
See Configuration Reference for every field.