diff --git a/__pycache__/main.cpython-314.pyc b/__pycache__/main.cpython-314.pyc new file mode 100644 index 0000000..bf819e2 Binary files /dev/null and b/__pycache__/main.cpython-314.pyc differ diff --git a/main.py b/main.py index 1bbe883..8300d57 100644 --- a/main.py +++ b/main.py @@ -89,7 +89,8 @@ class GadgetbridgeMQTT: def __init__(self, config): self.config = config self.db_path = None - self.device_name = "fitness_tracker" + self.device_name = "fitness_tracker" # MQTT identifier (always fitness_tracker) + self.device_alias = "Unknown" # Actual device name for display self.device_id = None # Track device ID for filtering queries self.mqtt_client = None self.last_publish_time = 0 @@ -155,13 +156,13 @@ class GadgetbridgeMQTT: row = cursor.fetchone() if row: device_id = row[0] - alias = row[1] if row[1] else row[2] # Use ALIAS, fallback to NAME - device_name = re.sub(r"\W+", "_", alias).lower() if alias else "fitness_tracker" - logger.info(f"Selected device: ID={device_id}, Name={alias}") - return device_id, device_name + # Get actual device name for display + device_alias = row[1] if row[1] else row[2] # Use ALIAS, fallback to NAME + logger.info(f"Selected device: ID={device_id}, Name={device_alias}") + return device_id, device_alias except Exception as e: logger.error(f"Error getting device info: {e}") - return None, "fitness_tracker" + return None, "Unknown" def get_day_start_timestamp(self): """Get timestamp for start of current day (4am)""" @@ -285,18 +286,22 @@ class GadgetbridgeMQTT: # Server time data["server_time"] = datetime.now().astimezone().isoformat() + # Device name (actual band name) + data["device"] = self.device_alias + return data def publish_discovery(self): """Publish Home Assistant MQTT discovery configs""" device_info = { "identifiers": [self.device_name], - "name": f"Gadgetbridge {self.device_name.replace('_', ' ').title()}", - "model": "Fitness Tracker", + "name": "Fitness Tracker", + "model": self.device_alias, "manufacturer": "Gadgetbridge", } sensors = [ + ("device", "Device", None, "mdi:watch", None, None), ("daily_steps", "Daily Steps", "steps", "mdi:walk", "total_increasing", None), ("weekly_steps", "Weekly Steps", "steps", "mdi:walk", "total", None), ("battery_level", "Battery", "%", "mdi:battery", None, "battery"), @@ -313,7 +318,7 @@ class GadgetbridgeMQTT: for sensor_id, name, unit, icon, state_class, device_class in sensors: config = { - "name": f"{self.device_name.replace('_', ' ').title()} {name}", + "name": f"Fitness Tracker {name}", "unique_id": f"{self.device_name}_{sensor_id}", "state_topic": f"gadgetbridge/{self.device_name}/{sensor_id}", "device": device_info, @@ -352,8 +357,8 @@ class GadgetbridgeMQTT: conn = sqlite3.connect(self.db_path, timeout=10.0) cursor = conn.cursor() - # Get device ID and name - self.device_id, self.device_name = self.get_device_info(cursor) + # Get device ID and actual name + self.device_id, self.device_alias = self.get_device_info(cursor) if not self.device_id: logger.warning("No fitness device found in database") @@ -421,7 +426,7 @@ class GadgetbridgeMQTT: try: conn = sqlite3.connect(self.db_path, timeout=5.0) cursor = conn.cursor() - self.device_id, self.device_name = self.get_device_info(cursor) + self.device_id, self.device_alias = self.get_device_info(cursor) conn.close() except Exception as e: logger.warning(f"Could not read device info: {e}")