Skip to content

feat(purifier): add support for Levoit Eleva 300X (LAP-C341S-WEU) - #548

Open
HaruIjima-kun wants to merge 2 commits into
webdjoe:devfrom
HaruIjima-kun:add-eleva-300x-support
Open

feat(purifier): add support for Levoit Eleva 300X (LAP-C341S-WEU)#548
HaruIjima-kun wants to merge 2 commits into
webdjoe:devfrom
HaruIjima-kun:add-eleva-300x-support

Conversation

@HaruIjima-kun

@HaruIjima-kun HaruIjima-kun commented Sep 5, 2026

Copy link
Copy Markdown

Summary

Adds support for the Levoit Eleva 300X air purifier (device type LAP-C341S-WEU), which was previously silently dropped by the device map (same root cause as #172743, but for a different product line and model).

Details

  • The Eleva 300X uses the same bypassV2 protocol as the Vital 100S/200S and Everest Air purifiers, so it reuses the VeSyncAirBaseV2 class via a new PurifierMap entry.
  • Supports sleep, manual and auto modes; no pet mode support confirmed yet, so it's excluded from the modes list (can be added later if confirmed).
  • PurifierVitalDetailsResult required several fields the Eleva 300X does not report (filterLifePercent is actually reported; the missing ones are screenState, childLockSwitch... — adjust wording as needed to match final field list). These are now optional with sensible defaults, which should not affect existing Vital/Everest parsing.
  • V2AutoPreferences.roomSize is now optional, since the Eleva 300X reports autoPreference without a roomSize field.

Testing

Verified against a real Eleva 300X account (EU region) using debug logging — confirmed the raw deviceType (LAP-C341S-WEU) and the full getPurifierStatus response. Added LAP-C341S-WEU fixtures to call_json_purifiers.py and generated the recorded API response via --write_api. Full test suite passes (397 passed, 3 skipped).

Jose A. Martin and others added 2 commits September 5, 2026 23:22
Adds a new PurifierMap entry using the VeSyncAirBaseV2 class, as the
Eleva 300X shares the same bypassV2 protocol as the Vital 100S/200S
and Everest Air purifiers.

Makes filterLifePercent, screenState, childLockSwitch, screenSwitch,
lightDetectionSwitch, environmentLightState, scheduleCount,
timerRemain, efficientModeTimeRemain and errorCode optional in
PurifierVitalDetailsResult with sensible defaults, and makes
V2AutoPreferences.roomSize optional, since the Eleva 300X does not
report these fields the same way as existing Vital-class devices.

Adds test fixtures for LAP-C341S-WEU in call_json_purifiers.py and
the corresponding recorded API response.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant