터치 패널 시놀로지 팬 가드 표시
This commit is contained in:
1 parent
be6e9e117b
commit
5d79938a56
2 files changed
+28
-7
No files matched your search
+27
-6
@@ -94,9 +94,14 @@ awk -F= '
|
||||
SYNOLOGY_HEALTH_SCRIPT = r"""
|
||||
cpu="$(cat /sys/class/hwmon/hwmon0/temp1_input 2>/dev/null)"
|
||||
fan="$(cat /sys/class/hwmon/hwmon1/fan2_input 2>/dev/null)"
|
||||
pwm="$(cat /sys/class/hwmon/hwmon1/pwm2 2>/dev/null)"
|
||||
enable="$(cat /sys/class/hwmon/hwmon1/pwm2_enable 2>/dev/null)"
|
||||
guard="$(systemctl is-active synology-fan-guard.service 2>/dev/null || printf unknown)"
|
||||
case "$cpu" in ''|*[!0-9]*) cpu=0 ;; esac
|
||||
case "$fan" in ''|*[!0-9]*) fan=0 ;; esac
|
||||
awk -v cpu="$cpu" -v fan="$fan" 'BEGIN {printf "SYNO_CPU=%.1f\nSYNO_FAN=%d\n", cpu / 1000, fan}'
|
||||
case "$pwm" in ''|*[!0-9]*) pwm=0 ;; esac
|
||||
case "$enable" in ''|*[!0-9]*) enable=-1 ;; esac
|
||||
awk -v cpu="$cpu" -v fan="$fan" -v pwm="$pwm" -v enable="$enable" -v guard="$guard" 'BEGIN {printf "SYNO_CPU=%.1f\nSYNO_FAN=%d\nSYNO_GUARD=%s\nSYNO_PWM=%d\nSYNO_PWM_ENABLE=%d\n", cpu / 1000, fan, guard, pwm, enable}'
|
||||
"""
|
||||
SAMPLE_INTERVAL_MS = 50
|
||||
GRAPH_SECONDS = 10
|
||||
@@ -715,7 +720,7 @@ class TouchPanel(QMainWindow):
|
||||
(("wan", "UPLINK"), ("synology_sata2", "SATA2 I/O"), ("rpi_throttle", "RPI THROT")),
|
||||
(("lan", "ETH1"), ("synology_sata4", "SATA4 I/O"), ("synology_temp", "SYNO TEMP")),
|
||||
(("wifi5", "5G"), ("synology_local", "LOCAL"), ("synology_fan", "SYNO FAN")),
|
||||
(("wifi24", "2.4G"), ("synology_wan", "UPLINK"), None),
|
||||
(("wifi24", "2.4G"), ("synology_wan", "UPLINK"), ("synology_guard", "SYNO GUARD")),
|
||||
]
|
||||
for index, (pi_row, synology_row, extra_row) in enumerate(status_rows, 1):
|
||||
key, label = pi_row
|
||||
@@ -923,11 +928,11 @@ class TouchPanel(QMainWindow):
|
||||
|
||||
def render_synology_ping(self, latency_ms):
|
||||
detail = f"{latency_ms:.1f}ms"
|
||||
if latency_ms <= 10:
|
||||
if latency_ms <= 15:
|
||||
self.rows["synology_ping"].set_state(detail, read_steady=True, write_steady=False, error_steady=False)
|
||||
elif latency_ms <= 15:
|
||||
self.rows["synology_ping"].set_state(detail, read_steady=False, write_steady=True, error_steady=False)
|
||||
elif latency_ms <= 30:
|
||||
self.rows["synology_ping"].set_state(detail, read_steady=False, write_steady=True, error_steady=False)
|
||||
elif latency_ms <= 50:
|
||||
self.rows["synology_ping"].set_state(detail, read_steady=False, write_steady=False, error_steady=True)
|
||||
else:
|
||||
self.rows["synology_ping"].set_state(detail, read_steady=False, write_steady=False, error_steady=False, error_blink=True)
|
||||
@@ -1027,6 +1032,7 @@ class TouchPanel(QMainWindow):
|
||||
self.synology_fan_rpm = int(values.get("SYNO_FAN", "0") or 0)
|
||||
self.render_synology_temp()
|
||||
self.render_synology_fan()
|
||||
self.render_synology_guard(values)
|
||||
|
||||
def synology_status_ready(self):
|
||||
output = bytes(self.synology_proc.readAllStandardOutput()).decode("utf-8", "ignore")
|
||||
@@ -1047,7 +1053,7 @@ class TouchPanel(QMainWindow):
|
||||
self.set_synology_offline()
|
||||
|
||||
def set_synology_offline(self):
|
||||
for key in ["synology_sata1", "synology_sata2", "synology_sata4", "synology_wan", "synology_local"]:
|
||||
for key in ["synology_sata1", "synology_sata2", "synology_sata4", "synology_wan", "synology_local", "synology_guard"]:
|
||||
self.rows[key].set_state("-", read_steady=False, write_steady=False, error_steady=True)
|
||||
|
||||
def render_synology_status(self, values):
|
||||
@@ -1114,6 +1120,21 @@ class TouchPanel(QMainWindow):
|
||||
def render_synology_fan(self):
|
||||
self.render_fan_tile("synology_fan", self.synology_fan_rpm)
|
||||
|
||||
def render_synology_guard(self, values):
|
||||
guard = values.get("SYNO_GUARD", "unknown")
|
||||
try:
|
||||
pwm = int(values.get("SYNO_PWM", "0") or 0)
|
||||
enable = int(values.get("SYNO_PWM_ENABLE", "-1") or -1)
|
||||
except ValueError:
|
||||
pwm = 0
|
||||
enable = -1
|
||||
if guard != "active" or self.synology_fan_rpm <= 0:
|
||||
self.rows["synology_guard"].set_state("FAIL", read_steady=False, write_steady=False, error_steady=True)
|
||||
elif pwm >= 255 or enable != 5:
|
||||
self.rows["synology_guard"].set_state("FULL", read_steady=False, write_steady=True, error_steady=False)
|
||||
else:
|
||||
self.rows["synology_guard"].set_state("AUTO", read_steady=True, write_steady=False, error_steady=False)
|
||||
|
||||
def render_fan_tile(self, key, rpm):
|
||||
detail = f"{int(rpm):,} rpm" if rpm > 0 else "0 rpm"
|
||||
self.rows[key].set_state(
|
||||
|
||||
Reference in new issue
Block a user