Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

Telemetry parse fails: TelemetryColorLogicLight.special_effect required but MSP R4.4 omits @specialEffect

Chiusa Adatta ai principianti
#160 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
2/5
Tempo stimato
1-3 ore
Idoneità per principianti
88/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
python
Ambito
backend

Direzione di ricerca

Inizia in models/telemetry.py da TelemetryColorLogicLight e segui Telemetry.load_xml attraverso Telemetry.model_validate(). Riproduci il parsing con l’elemento ColorLogic-Light mostrato privo di @specialEffect; il lavoro è completato quando la telemetria viene convalidata correttamente senza quell’attributo, preservando il comportamento predefinito senza effetto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

Summary

Telemetry.load_xml() raises OmniParsingError for a controller whose <ColorLogic-Light> telemetry element does not include a specialEffect attribute. TelemetryColorLogicLight.special_effect is declared as a required field with no default, so Telemetry.model_validate() fails with a pydantic missing error and the whole telemetry fetch dies. For the haomnilogic-local HA integration this makes setup impossible — the config flow is permanently stuck on cannot_connect.

Environment

  • python-omnilogic-local 5.0.2 (also present on main — models/telemetry.py line ~269)
  • Hayward OmniLogic, MSP firmware R4.4
  • Equipment: 1 variable-speed filter pump, 1 ColorLogic light, 1 valve-actuator water feature, 1 HydraPure, unconfigured CSAD slot, virtual heater (no physical heater)
  • Consumed via cryptk/haomnilogic-local 2.0.2 on Home Assistant

Actual telemetry element from this controller

<ColorLogic-Light systemId="4" lightState="0" currentShow="11" speed="4" brightness="4" />

No specialEffect attribute. (Backyard, BodyOfWater, Filter, VirtualHeater, Relay, CSAD, Group all parse fine — this is the only failure, so CSAD empty ph/orp is not currently an issue for this system.)

Traceback

File ".../pyomnilogic_local/models/telemetry.py", line 559, in load_xml
    instance = Telemetry.model_validate(data["STATUS"])
pydantic_core._pydantic_core.ValidationError: 1 validation error for Telemetry
ColorLogic-Light.0.@specialEffect
  Field required [type=missing, input_value={'@systemId': 4, '@lightState': 0, '@currentShow': 11, '@speed': 4, '@brightness': 4}, input_type=dict]

The above exception was the direct cause of the following exception:
  ...
pyomnilogic_local.models.exceptions.OmniParsingError: Failed to parse Telemetry: 1 validation error for Telemetry
ColorLogic-Light.0.@specialEffect
  Field required [type=missing, ...]

Suggested fix

special_effect isn't required for correct operation (the HA light entity doesn't read it). Give it a default:

# pyomnilogic_local/models/telemetry.py  (class TelemetryColorLogicLight)
special_effect: ColorLogicSpecialEffect = Field(
    alias="@specialEffect", default=ColorLogicSpecialEffect.NO_EFFECT
)

Older / simple-mode ColorLogic configs and some MSP firmwares just don't send the attribute. A quick audit of the other Telemetry* models for required fields that older firmware may omit (e.g. @lastSpeed, CSAD @ph/@orp when empty-string) would likely prevent similar reports.

Workaround (in case it helps others)

Monkey-patched Telemetry.load_xml in the HA custom component's __init__.py to catch the specialEffect OmniParsingError, inject specialEffect="0" into <ColorLogic-Light .../>, and re-parse. Integration then sets up and all entities (light, valve, pump speed/presets, HydraPure, schedules, sensors) work.

Lingua principale
Python
Stelle
10
Fork
13
Merge medio
5m
PR unite (30g)
2

Preparare l'ambiente

  • Include un Dockerfile o un file Docker Compose
  • Nessun modello di pull request
  • Nessuna guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di cryptk/python-omnilogic-local

Tutte le issue di cryptk/python-omnilogic-local

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.