Skip to content

Releases: circuitdojo/solar-monitor

v0.4.3

Choose a tag to compare

@github-actions github-actions released this 13 Jul 20:10

Full Changelog: v0.4.2...v0.4.3

Full Changelog: v0.4.2...v0.4.3

v0.4.2

Choose a tag to compare

@github-actions github-actions released this 13 Jul 16:53

Changed

  • Device ids are server-minted UUIDs. The Add Device form no longer asks for
    an ID — POST /api/v1/devices generates one and returns it, and
    PUT /api/v1/devices/{id} is update-only (404 for unknown ids) instead of
    upserting, so a create can no longer silently overwrite an existing device.
    AddDeviceRequestDto loses its id field (API/TypeScript wire change).
    Existing devices keep their ids; export/import still preserves ids.

Full Changelog: v0.4.1...v0.4.2

v0.4.1

Choose a tag to compare

@github-actions github-actions released this 13 Jul 16:53

Fixed

  • Transient Modbus timeouts no longer drop poll samples. The 6000XP
    occasionally skips a request even on a healthy bus; the port actor now
    enforces a 50 ms quiet gap between transactions, retries each request once
    on timeout, and reopens the port between attempts so a late-arriving
    response can't be misattributed to the next request (RTU responses carry
    no address field). A WARN poll failure now means both attempts timed
    out; single timeouts log at debug.

Full Changelog: v0.4.0...v0.4.1

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 13 Jul 16:16

Fixed

  • Serial port recovery after a USB replug. The Modbus port actor previously
    opened its serial fd once and held it forever, so an unplugged cable left
    every poll failing with Input/output error (os error 5) until the service
    was restarted. The actor now opens the port lazily and drops it on
    transport errors, reopening on the next poll; Modbus exceptions and
    timeouts do not churn the port.
  • Requests arriving while the port is unavailable get an error reply instead
    of being silently dropped.

Changed

  • Serial ports are identified by a stable spec: usb-serial:<SN> when the
    adapter reports a USB serial number, the raw device path otherwise. Port
    enumeration returns specs, device configs store them, and the actor
    re-resolves the spec to the current device node on every reopen — so
    recovery works even when the kernel renumbers the port (ttyUSB0
    ttyUSB1). Existing configs holding a raw path keep working but do not
    survive renumbering; re-select the port in the device editor to adopt the
    spec.
  • api and bin no longer depend on serialport directly; enumeration
    goes through the tokio-serial re-exports in the protocols crate.

Full Changelog: v0.3.0...v0.4.0

v0.3.0

Choose a tag to compare

@github-actions github-actions released this 10 Jul 20:29

Added

  • Hourly downsampling with configurable retention (--retention-days,
    default 30): full-resolution rows fold into avg/min/max hourly buckets,
    and data queries transparently merge both tables.

Changed

  • Workspace migrated to Rust edition 2024.

Full Changelog: v0.2.0...v0.3.0

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 10 Jul 14:08

Added

  • App version in the web UI footer.
  • Release workflow: pushing a version tag builds and publishes binaries.

Full Changelog: https://github.com/circuitdojo/solar-monitor/commits/v0.2.0