Added Wifi signal strength to printer card

This commit is contained in:
maziggy
2025-12-07 11:30:19 +00:00
parent 0c452a12e9
commit cef6cd593b
10 changed files with 469 additions and 394 deletions
+9 -2
View File
@@ -241,13 +241,20 @@ class BambuFTPClient:
# Try AVBL command (available space) - some FTP servers support this
try:
response = self._ftp.sendcmd("AVBL")
logger.debug(f"AVBL response: {response}")
# Response format: "213 <bytes available>"
if response.startswith("213"):
parts = response.split()
if len(parts) >= 2:
result["free_bytes"] = int(parts[1])
except Exception:
pass
except Exception as e:
logger.debug(f"AVBL command not supported: {e}")
# Try STAT command as fallback
try:
response = self._ftp.sendcmd("STAT")
logger.debug(f"STAT response: {response}")
except Exception:
pass
# Calculate used space by listing root directories
try:
+12 -1
View File
@@ -347,6 +347,17 @@ class BambuMQTTClient:
logger.info(f"[{self.serial_number}] Received system data: {system_data}")
self._handle_system_response(system_data)
# Parse WiFi signal at top level (some printers send it here)
if "wifi_signal" in payload:
wifi_signal = payload["wifi_signal"]
if isinstance(wifi_signal, (int, float)):
self.state.wifi_signal = int(wifi_signal)
elif isinstance(wifi_signal, str):
try:
self.state.wifi_signal = int(wifi_signal.replace("dBm", "").strip())
except ValueError:
pass
if "print" in payload:
print_data = payload["print"]
@@ -1220,8 +1231,8 @@ class BambuMQTTClient:
# Parse WiFi signal strength (dBm)
if "wifi_signal" in data:
wifi_signal = data["wifi_signal"]
logger.info(f"[{self.serial_number}] wifi_signal received: {wifi_signal}")
if isinstance(wifi_signal, (int, float)):
# Convert string dBm to int (e.g., "-52dBm" -> -52)
self.state.wifi_signal = int(wifi_signal)
elif isinstance(wifi_signal, str):
# Handle string format like "-52dBm"
+2
View File
@@ -287,6 +287,8 @@ def printer_state_to_dict(state: PrinterState, printer_id: int | None = None) ->
"ams_status_main": state.ams_status_main,
"ams_status_sub": state.ams_status_sub,
"tray_now": state.tray_now,
# WiFi signal strength
"wifi_signal": state.wifi_signal,
}
# Add cover URL if there's an active print and printer_id is provided
if printer_id and state.state == "RUNNING" and state.gcode_file: