github echavet/MitsubishiCN105ESPHome 2026.5.2
Architecture refactor, FrameParser FSM, target humidity & 183 unit tests

pre-release6 hours ago

✨ New Features

  • Target Humidity Sensor — New optional diagnostic sensor (target_humidity_sensor) reads byte 12 from settings response packet (0x02). Supports premium models (e.g. MSZ-LN) that expose humidity targets. Zero impact on existing configs. (#649, #652)
  • Native remote_temperature_source — Recommended method now uses direct sensor binding instead of lambda. Previous lambda method documented as alternate. (#624)

🏗️ Architecture Refactor (Phases 1→4)

  • Phase 1 — Naming conventions (tempModeuse_temperature_encoding_b_), struct default initialization, simplified operator=. (#637)
  • Phase 2 — Pure protocol functions extracted into cn105_protocol.h (checksum, temperature encode/decode, byte-map lookups). Header-only, zero-dependency, fully testable. (#638)
  • Phase 3A — Standalone FrameParser class for byte-by-byte UART frame assembly. Replaces inline parsing state and 4 obsolete methods. Net -83 lines. (#640)
  • Phase 3Bstd::optional lookups replace silent fallback-to-index-0 behavior. Unknown protocol bytes now keep previous value + emit ESP_LOGW. (#639)
  • Phase 4DriverState FSM enum (BOOT → WAIT_WIFI → WAIT_GRACE → CONNECTING → CONNECTED → DISCONNECTED) replaces 6 scattered connection booleans. Net -6 member variables. (#642)

🐛 Bug Fixes

  • Log spamcheckPendingWanted* now emits exactly 1 log line per user action instead of 11+.
  • Setpoint regression — Fix UI briefly reverting to stale temperature on non-temperature SET commands (fan/vane/mode changes).
  • isUARTConnected_ compile error — README examples updated to use isUARTReady_() accessor from FSM refactor. (#645)
  • Error code 0x80 — Mask bit 7 status flag so 0x80 sub 0x00 correctly reports "No Error". (#646)
  • Compressor frequency idle — Set compressor frequency to zero when heat pump is idle. Thanks @ldwaard! (#643)

🧪 Testing

  • 183 unit tests (up from 0) via GoogleTest + CMake FetchContent.
  • CI gate: unit tests must pass before ESPHome compile.
  • 30+ tests from real captured UART frames (live atom-s3 session).
  • Coverage: checksum, temperature encode/decode, byte-map lookups, FrameParser lifecycle, settings/status decoding, SET packet roundtrips.

📄 Documentation

  • Comparison with native ESPHome mitsubishi_cn105 component — feature table, architecture comparison, decision guide. (#648)
  • Experimental Features section added (target humidity, split vanes).
  • Removed obsolete ESP-IDF 5.4.x UART warning (stable for months).

⚙️ CI/CD

  • Build workflow updated for Node.js 20 deprecation. (#641)

Full Changelog: 2026.5.1...2026.5.2

Don't miss a new MitsubishiCN105ESPHome release

NewReleases is sending notifications on new releases.