Fix device matching to check template NAME field

- DeviceName comes from template's NAME field (e.g., 'Treatlife SS02')
- Config keys use different names (e.g., 'TreatLife_SW_SS02S')
- Now falls back to checking template NAME if key doesn't match
- Fixes issue where devices with template-based names weren't getting console settings
- Both console_settings and device_diff use same matching logic
This commit is contained in:
Mike Geppert 2026-01-07 20:30:53 -06:00
parent 137899cfc2
commit 70e0b038e6
2 changed files with 32 additions and 3 deletions

View File

@ -97,16 +97,30 @@ class ConsoleSettingsManager:
"""
device_list = self.config.get('device_list', {})
# First try exact match
# First try exact match on key
if device_type in device_list:
return device_list[device_type].get('console_set')
# Then try case-insensitive match
# Then try case-insensitive match on key
device_type_lower = device_type.lower()
for template_name, template_data in device_list.items():
if template_name.lower() == device_type_lower:
return template_data.get('console_set')
# Finally, try matching against the template NAME field
# DeviceName comes from the template's NAME field
import json
for template_name, template_data in device_list.items():
template_str = template_data.get('template', '')
if template_str:
try:
template_obj = json.loads(template_str)
template_device_name = template_obj.get('NAME', '')
if template_device_name.lower() == device_type_lower:
return template_data.get('console_set')
except json.JSONDecodeError:
continue
return None
def _get_console_commands(self, console_set_name: str) -> List[str]:

View File

@ -118,13 +118,28 @@ class DeviceComparison:
if device_type in device_list:
console_set_name = device_list[device_type].get('console_set')
else:
# Try case-insensitive match
# Try case-insensitive match on key
device_type_lower = device_type.lower()
for template_name, template_data in device_list.items():
if template_name.lower() == device_type_lower:
console_set_name = template_data.get('console_set')
break
# If still not found, try matching against template NAME field
if not console_set_name:
import json
for template_name, template_data in device_list.items():
template_str = template_data.get('template', '')
if template_str:
try:
template_obj = json.loads(template_str)
template_device_name = template_obj.get('NAME', '')
if template_device_name.lower() == device_type_lower:
console_set_name = template_data.get('console_set')
break
except json.JSONDecodeError:
continue
if not console_set_name:
self.logger.warning(f"No console_set found for device type: {device_type}")
return expected