You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
DewertOkin RF Gateway support — "Bluetooth RF-Gateway" receivers (external RF bridges for Okimat beds) are now auto-detected and driven correctly: motor commands are sent to the direct Okin write characteristic wrapped in the RF Gateway's 8-byte frame with checksum, verified against the FurniMove APK. (#402, ref #394)
Authoritative Okimat/DewertOkin remote code table — the old ~40 hand-maintained remote codes (with keycodes inherited from smartbed-mqtt guesses) are replaced by a generated 187-code table sourced from the DewertOkin FurniMove vendor backend, with exact per-code keycodes and hold timing. This fixes wrong Flat and memory keycodes on several codes and adds new per-code capabilities: config-driven Massage, split-base Sync, Child Lock, and Zero-G, surfaced in a new Utility section on the Lovelace card. (#411, ref #406)
New bed type: DewertOkin DOT PROTOCOL (okin_dot) — implements the RF1058 / RF34 / RF6707 handset codes (90167, 91983, 93558, 97450, 97544, 98035) that use CB24-style framing over Nordic UART with an affirm handshake. Includes section-mapped motor controls, tap-to-recall memories, and automatic runtime promotion of Okimat entries connected to a DOT box. APK + vendor-backend verified; awaiting hardware confirmation. (#414, ref #406)
Bug Fixes
BOX25/Star presets never moved the bed — Flat, Zero-G, Anti-Snore, Lounge and Memory 1/2 on Ashley/Nectar M1X1232 (Star25…) beds only fired after pressing Stop All. The controller was sending CB25 preset frames the bed silently ignores; presets and memory recall now use the StarCode arm/commit sequence (5A 01 03 10 30 KK A5 ×3 + 0x0F commit) decompiled byte-for-byte from the official M1X12 app. Memory is limited to the two verified slots, with verified long-press save commands. (#409, #419, ref #372)
BOX25 beds auto-corrected to the wrong CB35 type — both BOX25 and CB35 hardware report STAR from the Device Information manufacturer characteristic, so the runtime correction overrode the stronger Star25… name signal and rewrote correct configs to okin_cb35. Star25… devices now stay on BOX25, previously rewritten entries are repaired automatically, and repaired entries regain position feedback. (#419 + follow-up, ref #413)
BedTech QRRM under-bed lights didn't work — QRRM names and the FEE9 service are shared by BedTech and Casper/Richmat hardware, so BedTech beds were classified as Richmat and received Casper RGB frames. BedTech controllers are now distinguished via the confirmed 0x4C57 manufacturer field, light/memory commands match the BedTech 7.1.3 APK (light toggle <, off u; ./+ are memory slot 1, not lights), and lighting is exposed as toggle-only since the OEM protocol has no discrete on command. Misclassified entries are corrected without oscillating, and stale light-switch/light-timer entities are cleaned up. (#420 + follow-up, ref #410)
OKIMAT 4 beds downgraded to a single-actuator stair-lift profile — full OKIMAT beds (e.g. Lattoflex OKIMAT 4 IPS/M) expose the exact same GATT signature as the ELDA stair lift, so they were reclassified to okin_rf_eco_bt and lost Legs, Memory, and Light. The Device Information model string now disambiguates: OKIMAT… models keep their multi-motor profile, MEGAMAT MBZ still refines to the stair profile. (#407, ref #406)
Non-bed devices discovered as Richmat beds — the generic FFF0 service alone no longer detects as a W4 WiLinke Richmat bed; a corroborating Richmat name (DHN-… or a QRRM…-style remote code) is required, matching how the vendor app itself identifies beds. Fixes false discovery cards for a dashcam (NO_DVR-FTD4-8) and a FIXD car OBD scanner. (#421, refs #418, #415)
ESPHome LED controller discovered as a Kaidi bed — the 0xFFFF/C0 FF manufacturer data Kaidi detection keyed on is actually the generic PairLink BLE-mesh SDK transport, which non-bed products also emit — and its payloads can pass every structural check. A parseable PairLink payload alone no longer detects; a corroborating Kaidi signal (Mouselet name, FFC0 service, or Kaidi MAC OUI) is required. (#422, ref #417)
Support bundles always shipped empty logs — recent_logs scanned for a log handler Home Assistant never installs, so every bundle came back with recent_logs: []. Bundles now tail home-assistant.log (off the event loop), filtered to the integration/Bluetooth/bleak loggers, with tracebacks kept intact. (#401)
Internal
Frontend toolchain migrated to TypeScript 7.0 (stable native compiler), dropping the tsgo / native-preview dependency.