MAJOR RE-WRITE. UPDATED TO 0.7.0. 08/28/2026
If AI coding scares you or makes you uncomfortable, don't update to this driver now or in the future.. Claude.ai did most of the work to implement the changes below. I have run it for a little while it it works for me with no errors or warnings. Your mileage may vary.
As most of you know I had been maintaining two weather drivers. One for those without a Personal Weather Station (PWS) and this one for those with a PWS and use Weather-Display software. Once @jshimota released his updated OpenWeatherMap Multi-API Weather Driver I deprecated my OWM driver as I do not intend to maintain that going forward. I then asked Claude.ai to take @jshimota's new OpenWeatherMap Multi-API Weather Driver and my Weather-Display driver and merge them. The summary of the changes implemented is here:
What's New for v0.7.0
This is a code-style modernization of Weather-Display With OWM-Alerts Forecast Driver, bringing it in line with the conventions of the community's newer OpenWeatherMap Multi-API Weather Driver, while keeping this driver's own data sources (your PWS via Weather-Display, OpenWeatherMap forecast/alerts, NWS alerts).
Bottom line for anyone transitioning
No dashboards, rules, or apps need to change. Every existing attribute name, preference name, and dashboard tile (myTile, threedayfcstTile, alertTile, all your wind_/forecast/cloud*/etc. attributes) is unchanged. Update the driver code, save, and it keeps working exactly as before — new features are all opt-in.
Bugs fixed (you may notice slightly different behavior — for the better)
- betwixt attribute was never actually populated (a "slice of day" value was computed but never stored) — now shows real values if you have that optional attribute enabled.
- updateLux() referenced an undefined variable in its log line, which could throw on every poll.
- "Manual Poll Only" for the station/forecast interval dropdowns silently fell back to a 3-hour schedule instead of disabling scheduled polling — now works as labeled.
- schedule/runIn/runEvery10Minutes/unschedule calls now pass handler names as quoted strings — the old unquoted form could trigger a Hubitat platform Ambiguous method overloading error that aborted scheduling.
- rainToday null-safety fix in the OpenWeatherMap forecast handler — could throw a NullPointerException on early polls (this one existed in your original driver too).
- JSON parsing is now crash-proof across all 5 handlers (Weather-Display, OpenWeatherMap current, OpenWeatherMap location lookup, NWS alerts, version-check) — a malformed/truncated response now logs an error and skips that poll instead of throwing and leaving tiles stale.
- A preference-default bug: the per-attribute "Publish" checkboxes read attribute.default, but the underlying data uses the key defa — silently resolved to null (harmless today since everything already defaulted off, but would've silently broken if any toggle were ever meant to default on).
- API key is now redacted from logs by default (new toggle to re-expose it if you want it for debugging).
New optional features (all off by default — enable via "Display All Optional Attributes")
- Sun/moon altitude & azimuth — currentSunAltitude/currentSunAzimuth/currentMoonAltitude/currentMoonAzimuth (+ text variants).
- Per-day moon phase detail sourced from OpenWeatherMap — today/tom/tda MoonPhase (value, text, PNG image, SVG image, emoji) — plus a new currentMoonPhaseTile dashboard tile.
- Wind direction image/emoji — windDirImageUrl/windDirectionImage/windDirectionEmojiIcon, alongside the existing text-only wind_direction/wind_cardinal.
- Tile debug badge — optional character-count overlay on tiles, for troubleshooting tile-length issues.
- New commands: clearAllDriverStates, clearAllAttributes, clearAllSchedules.
- Independent logging levels — Info/Error/Warn/Debug/Trace toggles instead of one "Extended Logging" switch (Debug auto-disables after 30 minutes, matching the old behavior's spirit).
Under the hood (for the curious — no action needed)
- Replaced a custom static, cross-device data store with Hubitat's native per-device state map.
- Consolidated two duplicated wind-direction lookup tables into one shared helper.
- Consolidated two independent solar-position algorithms into one — the existing altitude/azimuth attributes are now computed by the same algorithm that feeds the new sun-angle attributes (previously two separate implementations that could disagree by fractions of a degree). Values will shift very slightly (sub-degree) from before — cosmetic only.
- Removed confirmed-dead code: getstdImgName(), getcondText(), getThisCopyright(), and unused fields in the icon lookup table.
- Extracted dashboard-tile HTML building into a single generateTiles() function.
- Replaced the old publish/attribute-hide mechanism with a version that also skips redundant events when nothing changed.
As with any changes .... I am sure something was broken that I didn't test. Let me know what those may be and I'll ask Claude.ai to look into it. If AI coding scares you or makes you uncomfortable, don't update this to driver now or in the future.
Thanks.