Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

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

Closed Beginner friendly
#160 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
88/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Active
Tech stack
python
Domain
backend

Research direction

Start in models/telemetry.py at TelemetryColorLogicLight and follow Telemetry.load_xml through Telemetry.model_validate(). Reproduce parsing with the shown ColorLogic-Light element lacking @specialEffect; done means telemetry validates successfully without that attribute while preserving the default no-effect behavior.

Written by the indexing model from the issue text.

Description

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.

Dominant language
Python
Stars
10
Forks
13
Avg merge
5m
Merged PRs (30d)
2

Getting set up

  • Ships a Dockerfile or Docker Compose file
  • No pull request template
  • No contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from cryptk/python-omnilogic-local

All issues in cryptk/python-omnilogic-local

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.