{ "packageName": "Mitsubishi Comfort Cloud", "author": "evdev", "version": "1.3.11", "minimumHEVersion": "2.3.0", "dateReleased": "2026-08-14", "category": "Integrations", "tags": "Thermostats", "licenseFile": "https://raw.githubusercontent.com/evdev/mitsubishi-comfort-hubitat/main/LICENSE", "documentationLink": "https://github.com/evdev/mitsubishi-comfort-hubitat#readme", "communityLink": "https://github.com/evdev/mitsubishi-comfort-hubitat/issues", "gitHubUrl": "https://github.com/evdev/mitsubishi-comfort-hubitat", "releaseNotes": "2026-08-14: 1.3.11 - Document Mitsubishi's August 2026 Comfort Cloud change: local device keys are withheld from the API; cloud control still works; cached keys remain valid.\n2026-08-14: 1.3.10 - Device keys: detect Comfort accounts whose legacy zoneTable is empty and whose live adapter_update omits the key; stop waiting and say clearly that cloud control still works.\n2026-08-14: 1.3.9 - Device keys: parse the legacy V2 login without Hubitat JSON double-encoding, dump zoneTable structure, and stop Socket.IO once adapter_update confirms V3 has no password.\n2026-08-14: 1.3.8 - Device keys: try legacy V2 zoneTable login before Socket.IO, accept alternate password field names, and log adapter_update keys when the password is missing.\n2026-08-14: 1.3.7 - Device key fetch: pause cloud polling during the socket session, serialize async socket requests, re-send adapterStatus until keys arrive, and skip IP scan until keys exist.\n2026-08-14: 1.3.6 - Fix Socket.IO debug logging for Hubitat sandbox (avoid getClass() on parsed payloads).\n2026-08-13: 1.3.5 - Local device key fetch uses async Engine.IO polling with raw text bodies, persists session in atomicState, and parses adapter_update even when Hubitat JSON-decodes the socket payload.\n2026-08-13: 1.3.4 - Fix local device key fetch: match pykumo Socket.IO subscribe/poll sequence, save Comfort Cloud user id, and fall back to the legacy v2 login when the socket push is empty.\n2026-08-13: 1.3.3 - Fetch local device keys uses the same login as the setup page, re-signs in when the runtime token is stale, and no longer gets stuck after Done.\n2026-08-13: 1.3.2 - Clarify local device key setup: automatic fetch with live progress, IP fields labeled as addresses only, per-zone IP vs key status.\n2026-08-13: 1.3.1 - Local IP scan UX: pre-fill hub subnet, populate zone IP fields on match, per-unit status, and a live Find unit IPs progress page.\n2026-08-13: 1.3.0 - Hybrid partial-offline polling (local where ready, cloud fallback elsewhere), credential-change auth reset, installer mode locks, improved operating state and °F lookup, wireless sensor index scan, and local adapter busy retry.\n2026-08-13: 1.2.3 - Pass nested component state as JSON via data values and applyThermostatState; republish cached state on app init; improve debug logging visibility.\n2026-08-13: 1.2.2 - Route nested component updates through applyThermostatState with queued publish and child parse() handlers.\n2026-08-13: 1.2.1 - Fix nested component updates by sending events directly to child devices and improving component lookup.\n2026-08-13: 1.2.0 - Nest indoor, filter, diagnostics, and wireless sensors under each zone thermostat. Upgrading recreates those satellite devices (thermostat IDs are unchanged).\n2026-08-13: 1.1.2 - Indoor humidity from zone/MHK2/cloud, shared cloudStatus, live filterDirty on the Filter child, and defrost/standby on the thermostat.\n2026-08-13: 1.1.1 - Hubitat button actions for local credential/IP refresh, improved command retry on auth/local failures, and Kumo local auth token fixes for Hubitat runtime.\n2026-07-27: 1.1.0 - Hybrid local LAN control (pykumo protocol), offline local-only mode, per-zone IP settings, connectionPath attribute.\n2026-07-26: 1.0.1 - Profile-driven fan modes and setpoint limits.\n2026-07-26: 1.0.0 - Initial release.", "apps": [ { "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", "name": "Mitsubishi Comfort", "namespace": "ephrayim", "location": "https://raw.githubusercontent.com/evdev/mitsubishi-comfort-hubitat/main/apps/mitsubishi-comfort-app.groovy", "required": true, "oauth": false, "description": "Parent app for Mitsubishi Comfort / Kumo Cloud with hybrid local control" } ], "drivers": [ { "id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", "name": "Mitsubishi Comfort Thermostat", "namespace": "ephrayim", "location": "https://raw.githubusercontent.com/evdev/mitsubishi-comfort-hubitat/main/drivers/mitsubishi-comfort-thermostat.groovy", "required": true, "description": "Zone thermostat parent device" }, { "id": "c3d4e5f6-a7b8-9012-cdef-123456789012", "name": "Mitsubishi Comfort Indoor Sensor", "namespace": "ephrayim", "location": "https://raw.githubusercontent.com/evdev/mitsubishi-comfort-hubitat/main/drivers/mitsubishi-comfort-indoor-sensor.groovy", "required": true, "description": "Indoor temperature and humidity sensor (nested under the thermostat)" }, { "id": "d4e5f6a7-b8c9-0123-def0-234567890123", "name": "Mitsubishi Comfort Wireless Sensor", "namespace": "ephrayim", "location": "https://raw.githubusercontent.com/evdev/mitsubishi-comfort-hubitat/main/drivers/mitsubishi-comfort-wireless-sensor.groovy", "required": true, "description": "Wireless room sensor (PAC-USWHS003-TH-1, nested under the thermostat)" }, { "id": "e5f6a7b8-c9d0-1234-ef01-345678901234", "name": "Mitsubishi Comfort Diagnostics", "namespace": "ephrayim", "location": "https://raw.githubusercontent.com/evdev/mitsubishi-comfort-hubitat/main/drivers/mitsubishi-comfort-diagnostics.groovy", "required": true, "description": "WiFi adapter firmware and signal diagnostics (nested under the thermostat)" }, { "id": "f6a7b8c9-d0e1-2345-f012-456789012345", "name": "Mitsubishi Comfort Filter Reminder", "namespace": "ephrayim", "location": "https://raw.githubusercontent.com/evdev/mitsubishi-comfort-hubitat/main/drivers/mitsubishi-comfort-filter-sensor.groovy", "required": true, "description": "Filter dirty flag and reminder configuration (nested under the thermostat)" } ] }