Skip to content

TITLE: HE-UM40CR CO₂ hot water heat pump: status & energy return 403 (4300) — Comfort Cloud HWS uses /device/a2wInfo/ not /deviceStatus/now/ #476

Description

@aussiestorblog

Checklist

  • I have verified that the account and device works in the Comfort Cloud App.
  • This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
  • This issue is not a duplicate issue of currently previous issues..

What version of Home Assistant Core?

core-2026.7.4

Describe the issue

Environment
Panasonic Comfort Cloud integration version: 2026.6.7
Bundled aio_panasonic_comfort_cloud: as shipped with 2026.6.7 (running on Python 3.14)
Home Assistant: HAOS
Device: Panasonic HE-UM40CR — CO₂ (R744) heat-pump hot water system (DHW), sold in Australia
Device guid: HE-UM40CR+ (serial redacted)
Managed via Comfort Cloud (accsmart.panasonic.com), not Aquarea Smart Cloud
Problem

The device is enumerated correctly (Got 1 Panasonic devices), but every per-device call fails with 403 {"code":4300,"message":"Have no authority to the request"}, so the device never sets up and the energy coordinator backs off to 600s. This happens on the owner account with terms accepted and the device fully working in the Comfort Cloud app.

Two calls fail identically:

Status — get_status → GET /deviceStatus/now/{guid}
Energy — get_todays_energy → POST deviceHistoryData with {'dataMode': 2, 'date': ...}

Both of these are the air-conditioner endpoints. The HE-UM40CR is a hot-water unit, and the Comfort Cloud backend denies these AC endpoints for it (hence 4300). The existing Aquarea support in the integration doesn't apply either, because this unit is on Comfort Cloud, not Aquarea Smart Cloud.

Evidence from the app (APK 4.3.0, com.panasonic.ACCsmart)

The official app has separate request paths per device family. Decompiled string/class evidence:

GetDeviceStatusRequestAC and GetDeviceStatusRequestPCPF — AC/PCPF status classes
Hot-water / A2W devices use a distinct endpoint family, not /deviceStatus/now/:
GET https://accsmart.panasonic.com/device/a2wInfo/{guid} → returns A2wStatusEntity (tank temp, a2wStatus, setDhwFlg, icon_tank, energyConsumption)
POST https://accsmart.panasonic.com/device/a2wInfoUpdate → control
Confirmed host+path literals present in the app: /device/a2wInfo/, /device/a2wInfoUpdate, /device/a2wRegisterInfo/, alongside the AC ones /deviceStatus/now/, /deviceStatus/control, /deviceHistoryData.

So for a Comfort Cloud hot-water unit the app reads status/energy from /device/a2wInfo/{guid}, while the integration calls the AC /deviceStatus/now/{guid} and deviceHistoryData, which the backend rejects with 4300 for this device class.

Suggested fix

Route Comfort Cloud hot-water / A2W device types to /device/a2wInfo/{guid} (read) and /device/a2wInfoUpdate (write) instead of the AC deviceStatus/deviceHistoryData endpoints, and parse the A2wStatusEntity (tank temperature, operating state, energyConsumption) into the existing water-heater entity. Device-type detection can key off the model/guid prefix or the deviceType returned by /device/deviceList.

Logs (redacted)
ERROR [aio_panasonic_comfort_cloud.helpers] Error in get_status
Expected status code '200' but received '403'
Response body: {"code":4300,"message":"Have no authority to the request"}
WARNING [aio_panasonic_comfort_cloud.apiclient] Failed to get live status for device HE-UM40CR+ switching to cached data.
...
ERROR [aio_panasonic_comfort_cloud.helpers] Error in get_todays_energy
Expected status code '200' but received '403'
Payload: {'deviceGuid': 'HE-UM40CR+', 'dataMode': 2, 'date': '20260725', 'osTimezone': '+10:00'}
Response body: {"code":4300,"message":"Have no authority to the request"}
WARNING [custom_components.panasonic_cc.panasonic.coordinator] 46 HWS Energy API failure 1/5 — Access Denied ... polling interval increased to 600s

Full traceback shows the failing call chain: coordinator.get_device → apiclient.get_device → apiclient._get_device_status → execute_get(self._get_device_status_now_url(guid), "get_status", 200) → 403/4300.

I'm happy to test a patch against this device and provide diagnostics.

Error/Debug Logs


Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions