Add Kibernetik 12K portable split air conditioner (#5452)
* Add Kibernetik 12K portable split air conditioner
Adds a device config for the Kibernetik 12K BTU portable split AC
(Tuya product id deedvplnx2yvge08, category kt, "Portable Split Air
Conditioner"). Sold in Switzerland via Fust (art. 111235), Smart Life app.
This device was previously matched (by dps fallback) to the Kogan
kawfpac12ya config, which maps the fan (dps 5) as a 3-speed device
(low/medium/high). The Kibernetik is a 5-speed unit: the cloud schema
reports dps 5 enum range ['1'..'5'].
The fan steps were verified empirically on real hardware by selecting
each level in the Smart Life app and reading back the raw dps value:
dps 5 "1" -> silent
dps 5 "2" -> low
dps 5 "3" -> medium (app "Mid")
dps 5 "4" -> high
dps 5 "5" -> turbo
Remaining datapoints mirror the Kogan PAC_Y12 config, on which this
device operates correctly. Note: the Kogan Y12 (also PAC_Y12 hardware)
may have the same 5-speed fan and a similar mislabel, but I could not
verify that on a Kogan unit, so its config is left unchanged.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Address review: standard fan translations + split timer/countdown
- climate: use translation_only_key: aircon_extra and map dps 5 to the
standard extra fan values quiet (1) and strong (5) instead of the
non-standard silent/turbo.
- Split the timer datapoints off the climate entity, verified on hardware
by setting a 1 h timer in the app and reading back the raw dps:
dps 103 "timer" -> 1 (setting, hours) -> number entity
(translation_key timer, class duration, 0-24 h)
dps 105 "countdown" -> 60 (remaining, min) -> sensor entity
(translation_key time_remaining, class duration, min)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* Decode remaining dps from data model, add heat mode
Pulled the Query Things Data Model from the Tuya cloud and used it to
name the previously-unknown dps and add the heat hvac mode:
- dp4 mode enum includes HEAT -> add hvac_mode heat
- dp102 Defrost (ro bool) -> defrost binary_sensor
- dp106 Alarm (ro bitmap) -> problem binary_sensor
- dp109 innerdry (rw bool) -> auto_dry switch
- dp110 model (ro enum 0/1) kept as unknown (meaning unconfirmed)
yamllint clean, tests/test_device_config.py passes (32).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* Drop heat mode, rename dp110 to model
Per review: this is a cool-only model, so leave HEAT out of the hvac
mapping for now (kept as a comment). Rename dp110 unknown_110 -> model
(name from the Tuya data model) and record that this cool-only 5-speed
unit reports "0", so a future heat-capable model can be compared.
yamllint clean, tests/test_device_config.py passes (32).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: mco85 <michael@collavo.ch>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>