Skip to content

Release v6.0

Choose a tag to compare

@chaunceygardiner chaunceygardiner released this 19 Jul 22:11

weewx-celestial 6.0

A major release that removes this extension's reason-for-being — and keeps
everything you actually see. weewx-celestial no longer computes celestial
values or inserts anything into loop packets: the live page is now driven by
weewx-loopdata 5.0 almanac fields, report almanac tags evaluated by the
weewx-skyfield almanac on every loop record. One engine serves the report
tags and the live values, so they always agree; a new live field is a
weewx.conf fields-line edit, not an extension release. What remains here is
the bundled Celestial report, the $sky_page shim behind its seven sky
charts, and a migration utility. This is not a drop-in upgrade — see
the action-required section — but the migration is mechanical and a bundled
tool does it for you.

What's new

  • The loop-field service is gone. Versions through 5.x computed ~60
    observations with a bundled Skyfield engine, on the WeeWX engine thread,
    and injected them into every LOOP packet. weewx-loopdata 5.0 evaluates
    the same values as almanac fields (almanac.sunrise.raw,
    almanac(horizon=-6).sun(use_center=1).rise.raw, …) with the same
    caching discipline (positions every packet; rise/set once per local day;
    events kept until their day passes), off the engine thread.
  • The sample report is unchanged to look at, rebuilt underneath: every
    live cell now reads the almanac keys; waxing is derived on the page (the
    moon is waxing when the next full moon precedes the next new moon —
    exact, unlike the phase index); distances convert from raw astronomical
    units in javascript; Proxima Centauri converts AU to light years.
  • Installing over the top of 5.x cannot break weewxd. weectl extension install never reverses an old version's registrations, so a
    leftover user.celestial.Celestial in data_services would have crashed
    the engine at startup. 6.0 ships a stub service that starts cleanly,
    binds nothing, and logs how to finish the cleanup.
  • The migration utility now targets 6.0: --migrate-loopdata-fields
    rewrites every celestial entry in your [LoopData] [[Include]] fields
    line (including pre-3.0 PascalCase names) to its almanac equivalent —
    in place, rendition suffixes honored, non-celestial entries untouched,
    duplicates dropped, the report's field set appended. Every entry it can
    produce is cross-checked against weewx-loopdata's parser in the test
    suite.
  • Smaller and simpler: the Skyfield engine, the bundled DE421 ephemeris
    (16 MB, which was also held resident in memory alongside
    weewx-skyfield's copy) and star catalog are gone, and the extension no
    longer requires the Skyfield or NumPy libraries.

ACTION REQUIRED when upgrading

  1. Uninstall the old version first (recommended — it removes the old
    service registration and data files while the old install record still
    knows about them):

    weectl extension uninstall celestial
    

    If you install 6.0 over the top instead, weewxd still starts (the stub
    logs a warning); finish by hand: remove user.celestial.Celestial from
    data_services in [Engine] [[Services]], and delete
    bin/user/celestial_de421.bsp and bin/user/celestial_stars.dat.

  2. Install weewx-loopdata
    5.0+ and weewx-skyfield
    if you have not already, then install 6.0:

    weectl extension install weewx-celestial.zip
    
  3. Migrate your fields line — the utility ships with 6.0, so this comes
    after the install (run from the directory containing the user
    package — WEEWX_ROOT/bin, or ~/weewx-data/bin on pip installs):

    python -m user.celestial --migrate-loopdata-fields --config /home/weewx/weewx.conf --output /tmp/weewx.conf.migrated
    diff /home/weewx/weewx.conf /tmp/weewx.conf.migrated   # review, then move into place
    

    (--in-place edits weewx.conf directly after a backup;
    --print-fields-value prints the bare line for cut-and-paste.)

  4. Restart WeeWX. The [Celestial] weewx.conf section is obsolete and can
    be deleted whenever convenient.

If your own pages read the old fields, three things have no 1:1
replacement: distances arrive as raw AU (multiply by 92,955,807 mi/AU or
149,597,870 km/AU), almanac.moon.phase is a raw percent, and
moonWaxing is derived (almanac.next_full_moon.raw < almanac.next_new_moon.raw). The bundled skin shows all three derivations.

Requirements

  • Python 3.9 or later, WeeWX 5.2 or later
  • weewx-loopdata 5.0
    or later (evaluates the almanac fields)
  • weewx-skyfield
    strongly recommended: it computes the almanac values and draws the seven
    sky-chart panels. Without it, WeeWX's built-in almanac serves what it
    can and the panels show install hints.
  • Skyfield and NumPy are no longer required by this extension.

Installing/upgrading

Download weewx-celestial.zip from this release, then follow the
action-required steps above. For a fresh install there is nothing to
migrate: just step 2, then add the report's fields line from the README to
[LoopData] [[Include]] and restart.

A customized celestial.css is preserved (it ships copy-once and its
classes are unchanged).