Rename to Fitness Tracker, add Device sensor with actual band name
This commit is contained in:
parent
66bb7575c3
commit
a2f4b16bf2
BIN
__pycache__/main.cpython-314.pyc
Normal file
BIN
__pycache__/main.cpython-314.pyc
Normal file
Binary file not shown.
29
main.py
29
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}")
|
||||
|
||||
Loading…
Reference in New Issue
Block a user