Skip to content

Add Fan Operating Mode select for active fan mode#50

Open
EdenNelson wants to merge 3 commits into
tuct:mainfrom
EdenNelson:feature/fan-operating-mode-select
Open

Add Fan Operating Mode select for active fan mode#50
EdenNelson wants to merge 3 commits into
tuct:mainfrom
EdenNelson:feature/fan-operating-mode-select

Conversation

@EdenNelson

Copy link
Copy Markdown
Contributor

Add a fan_operating_mode select that exposes the purifier's active fan mode as a normal ESPHome select entity for dashboards that do not render fan presets directly.

Fixes #49

Summary

  • Add type: fan_operating_mode to the Levoit select platform.
  • Map select options to the existing raw MCU fan mode values used by the fan preset path.
  • Expose model-specific fan operating mode options:
    • Core200S: Manual, Sleep
    • Core300S/Core400S/Core600S: Manual, Sleep, Auto
    • Vital100S/Vital200S: Manual, Sleep, Auto, Pet
    • Sprout: Manual, Auto
    • EverestAir: Manual, Sleep, Auto, Turbo
  • Keep the new select synchronized from MCU status and local fan-control changes.
  • Add the select to Levoit default device YAMLs and builder YAML mirrors.
  • Document that Fan Operating Mode is the active fan mode and is distinct from Auto Mode / Auto Profile.

Validation

  • git diff --check passed.
  • Editor diagnostics reported no errors in the Python/select code; C++ diagnostics only showed local include-path noise for ESPHome headers.
  • ESPHome Core400S local compile passed with fan_operating_mode configured.
  • Live YAML config validation passed against EdenNelson/levoit@integration/core400s-auto-profile-stack.
  • Core400S live testing passed: ESPHome Web UI shows the Fan Operating Mode select, and the dropdown updates to Manual when fan operation changes.

Scope

This PR exposes the active fan operating mode through a normal ESPHome select while keeping existing fan preset behavior intact. It does not add remembered Room Size persistence, Manual/Auto mechanics changes, Core room-size encoding changes, diagnostics, raw sensors, generated YAML churn beyond required config mirrors, or unrelated model behavior changes.

Disclosure

This PR was prepared with GitHub Copilot/AI assistance and human-in-the-loop review. Live validation was performed by a human on a Core400S using air-purifier-office.yaml. Other model option sets mirror the existing fan preset mode support and were not hardware-tested.

@tuct

tuct commented Jul 4, 2026

Copy link
Copy Markdown
Owner

Hi,
Could you check the merge conflict @EdenNelson ?
And thank you for your contributions!!!

…ng-mode-select

# Conflicts:
#	components/levoit/levoit.cpp
@EdenNelson

Copy link
Copy Markdown
Contributor Author

Fixed and tested. Thank you.

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.

Feature: Add Fan Operating Mode select for active fan mode

2 participants