From 5fd81a641d91564d7afbeee54d07f5f119e7c2b7 Mon Sep 17 00:00:00 2001 From: rouggy Date: Sat, 10 Jan 2026 09:31:46 +0100 Subject: [PATCH] up --- internal/devices/antennagenius/antennagenius.go | 9 ++++++++- internal/devices/powergenius/powergenius.go | 6 ++++++ internal/devices/tunergenius/tunergenius.go | 6 ++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/internal/devices/antennagenius/antennagenius.go b/internal/devices/antennagenius/antennagenius.go index 2fc21c1..a650c9f 100644 --- a/internal/devices/antennagenius/antennagenius.go +++ b/internal/devices/antennagenius/antennagenius.go @@ -420,7 +420,14 @@ func (c *Client) GetStatus() (*Status, error) { return &Status{Connected: false}, nil } - return c.lastStatus, nil + // Check if device is actually alive + // If no antennas and all values are default, device is probably off + status := *c.lastStatus + if len(status.Antennas) == 0 || (status.PortA != nil && status.PortA.Source == "" && status.PortB != nil && status.PortB.Source == "") { + status.Connected = false + } + + return &status, nil } // SetAntenna sets the antenna for a specific port diff --git a/internal/devices/powergenius/powergenius.go b/internal/devices/powergenius/powergenius.go index e67b8e6..a9c9048 100644 --- a/internal/devices/powergenius/powergenius.go +++ b/internal/devices/powergenius/powergenius.go @@ -164,6 +164,12 @@ func (c *Client) pollLoop() { // Mark as connected status.Connected = true + // Check if device is actually alive (not just TCP connected) + // If voltage is 0 and temperature is 0, device is probably off + if status.Voltage == 0 && status.Temperature == 0 { + status.Connected = false + } + // Peak hold logic - keep highest power for 1 second now := time.Now() if c.lastStatus != nil { diff --git a/internal/devices/tunergenius/tunergenius.go b/internal/devices/tunergenius/tunergenius.go index 61225e7..8ae937e 100644 --- a/internal/devices/tunergenius/tunergenius.go +++ b/internal/devices/tunergenius/tunergenius.go @@ -163,6 +163,12 @@ func (c *Client) pollLoop() { // Mark as connected status.Connected = true + // Check if device is actually alive + // If all frequencies are 0, device is probably off + if status.FreqA == 0 && status.FreqB == 0 && status.PowerForward == 0 { + status.Connected = false + } + // Peak hold logic - keep highest power for 1 second now := time.Now() if c.lastStatus != nil {