2025-07-09 16:41:30,494 - ERROR - PAI.paradox.hardware.spectra_magellan.panel - Exception parsing message: b'e219070910280011000000000000476172616a652031372020202020202000000000001a20'
Traceback (most recent call last):
File "/usr/local/lib/python3.11/site-packages/paradox/hardware/spectra_magellan/panel.py", line 173, in parse_message
return parsers.LiveEvent.parse(message)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/construct/core.py", line 308, in parse
return self.parse_stream(io.BytesIO(data), **contextkw)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/construct/core.py", line 320, in parse_stream
return self._parsereport(stream, context, "(parsing)")
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/construct/core.py", line 332, in _parsereport
obj = self._parse(stream, context, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/construct/core.py", line 2000, in _parse
subobj = sc._parsereport(stream, context, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/construct/core.py", line 332, in _parsereport
obj = self._parse(stream, context, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/construct/core.py", line 2489, in _parse
return self.subcon._parsereport(stream, context, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/construct/core.py", line 332, in _parsereport
obj = self._parse(stream, context, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/construct/core.py", line 4368, in _parse
obj = self.subcon._parsereport(stream, context, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/construct/core.py", line 332, in _parsereport
obj = self._parse(stream, context, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/construct/core.py", line 2000, in _parse
subobj = sc._parsereport(stream, context, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/construct/core.py", line 332, in _parsereport
obj = self._parse(stream, context, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/construct/core.py", line 2489, in _parse
return self.subcon._parsereport(stream, context, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/construct/core.py", line 332, in _parsereport
obj = self._parse(stream, context, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/construct/core.py", line 719, in _parse
return self._decode(obj, context, path)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/local/lib/python3.11/site-packages/paradox/hardware/spectra_magellan/adapters.py", line 9, in _decode
return datetime.datetime(obj[0] * 100 + obj[1], obj[2], obj[3], obj[4], obj[5])
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ValueError: hour must be in 0..
b'e219070910280011000000000000476172616a652031372020202020202000000000001a20'
Los valores extraídos del mensaje del panel están produciendo un valor de hora (obj[4]) que es ≥ 24, lo cual es inválido para datetime.datetime().
def _decode(self, obj, context, path):
# Validar y limitar valores antes de crear datetime
year = obj[0] * 100 + obj[1] if obj[0] < 100 else obj[0]
month = max(1, min(12, obj[2]))
day = max(1, min(31, obj[3]))
hour = max(0, min(23, obj[4])) # Limitar hora a 0-23
minute = max(0, min(59, obj[5])) # Limitar minutos a 0-59
return datetime.datetime(year, month, day, hour, minute)
GitHub Issue Report: PAI Paradox Alarm Interface - ValueError en parsing de fecha/hora
🐛 Descripción del Bug
PAI versión 3.7.0 está generando errores de
ValueErroral intentar parsear mensajes de eventos en vivo del panel Paradox, específicamente cuando intenta crear objetos datetime con valores de hora inválidos.📋 Información del Entorno
Sistema Home Assistant
PAI Configuration
🔥 Error Completo
🔍 Análisis del Error
Mensaje Raw Parseado
Ubicación del Error
/usr/local/lib/python3.11/site-packages/paradox/hardware/spectra_magellan/adapters.py_decode()Problema Identificado
El error ocurre cuando PAI intenta crear un objeto
datetime.datetime()en la línea:Los valores extraídos del mensaje del panel están produciendo un valor de hora (obj[4]) que es ≥ 24, lo cual es inválido para
datetime.datetime().🔄 Reproducibilidad
💡 Posibles Causas
🛠️ Solución Temporal Sugerida
Validación en adapters.py
📊 Información Adicional Necesaria
Para ayudar en el diagnóstico, por favor proporciona:
🎯 Comportamiento Esperado
PAI debería:
📋 Checklist para Desarrolladores
🔗 Enlaces Relevantes
#v3.7.0