Files
bambuddy/backend
maziggy 5665babab4 Use the printer's own plug for energy when several are linked (issue #2859)
Per-print energy is one plug's meter read at the start of a print and
    again at the end. Both readings asked for "the plug on this printer"
    with scalar_one_or_none(), which raises on two rows. Linking a second
    plug to a printer - a dry box, a filter fan, a lights script - therefore
    stopped energy tracking on that printer outright, and did it silently:
    the print-start handler logged the exception as an ordinary failure and
    the print-end handler then reported "no start kWh recorded", which is
    also what it says for a printer with nothing linked to it.

    The assumption was never enforced anywhere else. The plug API rejects a
    second Tasmota plug and deliberately allows any number of Home Assistant
    entities, the UNIQUE constraint on smart_plugs.printer_id was dropped on
    purpose, and every other consumer reads a list. These two call sites were
    the last ones left from before that.

    Energy now ranks a printer's plugs - the one that powers it first, then
    by id so the start and end readings agree - and takes the first that
    actually reports a counter, so accessories drop out with nothing
    configured. Ranking rather than filtering: a printer whose only linked
    row is disabled, or a script, used it before and still does. When none
    of them measures anything the log names the ones it tried, so that stops
    reading like "no plug configured".

    Also: the plug page counted an online plug as offline unless it reported
    energy, so a switch with no power sensor showed as offline for as long
    as it stayed linked.

    Existing archives cannot be backfilled - the starting reading was never
    taken, so there is nothing to compute a delta from.
2026-08-17 15:51:03 +02:00
..