mirror of
https://github.com/maziggy/bambuddy.git
synced 2026-10-21 18:47:13 +02:00
Added Wifi signal strength to printer card
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user