Add LG PuriCare humidifier HUM_056905_WW - #114
Conversation
anszom
left a comment
There was a problem hiding this comment.
Please rebase to the latest master, the 0xa7 change was already applied there.
Also please add a note to the README with the device's "public" model name.
| * The rest are LG's own declarations, published because the appliance reports them: every | ||
| * id here appeared in the device's answer to a values query (0x1f5=2), so nothing below is | ||
| * an entity for a field this unit does not have. |
There was a problem hiding this comment.
This comment contradicts the example packet provided in QUERY_RESPONSE_HEX. The TLVs 0x117 0x10e 0x337 0x35a and 0x35b don't appear there.
| this.addSwitch(config, 0x20e, 'auto_dry', 'Auto dry', 'mdi:fan-auto', AUTO_DRY_ON) | ||
|
|
||
| this.addNumber(config, 0x21e, 'watertank_light', 'Tank light brightness', 'mdi:lightbulb', 0, 200, 1) | ||
| this.addNumber(config, 0x21b, 'off_timer', 'Off timer (min)', 'mdi:timer-off', 0, 720, 10) |
There was a problem hiding this comment.
Can we use addTimerField here? Follow the RAC_.. implementation as well.
| this.addSensor(config, 0x355, 'filter_used', 'Filter usage hours', { | ||
| icon: 'mdi:filter-outline', | ||
| entity_category: 'diagnostic', | ||
| }) | ||
| this.addSensor(config, 0x356, 'filter_max', 'Filter replacement cycle', { | ||
| icon: 'mdi:filter-cog', | ||
| entity_category: 'diagnostic', | ||
| }) |
There was a problem hiding this comment.
RAC_05... publishes similar entities, can you make these consistent with them?
| const DISPLAY_BRIGHTNESS = [ | ||
| ['Off', 0], | ||
| ['1Level', 8], | ||
| ['2Level', 9], | ||
| ['3Level', 10], | ||
| ] as const |
There was a problem hiding this comment.
Maybe it would be better to expose this as a simple integer value 0-3? Either that, or use readable names "Level 1".."Level 3"
| unit_of_measurement: '%', | ||
| state_class: 'measurement', | ||
| }) | ||
| ;(config.components as any).humidifier.current_humidity_topic = '$this/current_humidity-' |
There was a problem hiding this comment.
as any casts may not be necessary after rebasing to master where a HumidifierComponent is defined already.
| this.addNumber(config, 0x35a, 'start_time', 'Scheduled on time(HHMM)', 'mdi:clock-start', 0, 2400, 10) | ||
| this.addNumber(config, 0x35b, 'stop_time', 'Scheduled off time(HHMM)', 'mdi:clock-end', 0, 2400, 10) |
There was a problem hiding this comment.
HHMM is not understood natively by homeassistant, use platform: time and convert to a HH:MM:SS format. The exact details depend on the actual values used by the appliance, including a "no timer set" state.
| dev.drop() | ||
| }) | ||
|
|
||
| test('every mode code decodes to its Korean label', (t) => { |
There was a problem hiding this comment.
There are no Korean labels anymore
A ThinQ2 humidifying air purifier on the existing TLV path (deviceType 404). The wire map is taken from LG's own modelJSON tlv_* labels rather than guessed tags, and its enums were confirmed against the LG cloud's decode while bridged. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
c7e24ae to
0e04222
Compare
|
Rebased onto master — the 0xA7 change is gone from this branch since it is already there, so this is now the driver, its tests, the bridge entry and a README line. Your comments, one by one:
420 tests passing (409 on master + 11 here), On the README: I listed it by its ThinQ id, because LG's modelJSON for this platform gives no marketing model name ( |
Second of the per-device-class splits from #111.
HUM_056905_WW — a ThinQ2 PuriCare humidifier (deviceType 404) on the existing TLV path. The wire map is taken from LG's own modelJSON
tlv_*labels rather than guessed tags, and every enum was confirmed against the LG cloud's decode of the same unit while bridged.Shared infrastructure (same as the dehumidifier PR #113):
TLVDevice's packet gate accepts0xA7in byte 6 alongside0x87— this family frames with0xA7. Originally from @BluSyn's #64.All labels are English.
npm testpasses;tscclean.