MELCloud & MELCloud Home API for Node.js - v60.5.0
    Preparing search index...

    Class HomeDeviceAtaFacade

    Facade for a MELCloud Home ATA device. Provides typed access to device settings and per-mode temperature clamping before forwarding updates to the BFF.

    Hierarchy (View Summary)

    Index
    errorMessage: null

    Home's /context flags a faulted unit (isInError) but carries no text for it — the wording lives in the unit's error log, a separate read — so the contract's message is null on this dialect.

    type: "airToAir"

    Connection-type discriminator, captured at construction (a physical device never changes type) so it stays readable on a pruned id — the Home counterpart of the Classic facades' type.

    • get capabilities(): TData["capabilities"]

      Static capability flags and ranges advertised by this device, narrowed to the device-type shape by TData.

      Returns TData["capabilities"]

      The capability descriptor.

    • get exists(): boolean

      Whether the underlying device still exists in the registry. Non-throwing introspection mirroring the Classic facades' exists: a consumer holding a cached facade can detect staleness without a try/catch.

      Returns boolean

      true while the registry still resolves the id.

    • get id(): string

      Unique device identifier as assigned by MELCloud Home.

      Returns string

      The GUID string assigned by MELCloud Home.

    • get inStandbyMode(): boolean

      Whether the unit is in standby (powered, but idle).

      Returns boolean

      true when on standby.

    • get isAvailable(): boolean

      Whether MELCloud can still deliver writes to the unit. false means the wifi adapter lost its link to the cloud: writes are accepted but never delivered, and readings go stale. The /context isConnected flag only counts once it has read false for a full day: its negative side is unproven, and the persistence window makes a Classic-Offline-style tight-threshold boolean harmless (such a flag never stays false through a report cycle).

      Returns boolean

      false after a day of continuous disconnection.

    • get isConnected(): boolean

      The RAW /context isConnected flag, as the wire read it on the latest sync — exposed for comparison with what the official app shows, never as availability. Its positive side is live-probed (12/12 true on healthy units); its negative side is unproven, and a flag that flapped would grey a tile on every flap, which is why isAvailable — the contract consumers must act on — only flips after a day of continuous false. Independent of the streak: a unit one minute into a disconnection reads isConnected: false and isAvailable: true at once.

      Returns boolean

      The wire flag, verbatim.

    • get isInError(): boolean

      Whether the unit itself reports a fault — the /context isInError flag, which MELCloud relays from the unit.

      Returns boolean

      true while the unit reports a fault of its own.

    • get isOwner(): boolean

      Whether the current account owns this device rather than being a guest of it. Reports the structural origin only: false does not by itself prove a guest is barred from control (the BFF accepts guest writes on shared units).

      Returns boolean

      true when owned, false when shared with this account.

    • get name(): string

      User-facing display name set in the MELCloud Home app.

      Returns string

      The device's display name.

    • get operationMode(): HomeOperationMode

      Currently active operation mode (heat/cool/auto/dry/fan/off). The type documents the known vocabulary; unknown or absent wire values pass through unchecked (see #enumSetting), so exhaustive switches should keep a default arm.

      Returns HomeOperationMode

      The operation mode — a HomeOperationMode member for known wire values, an unchecked wire string otherwise.

    • get power(): boolean

      Whether the unit is powered on. Independent of standby: a unit in standby is powered but idle.

      Returns boolean

      true when on, false when off.

    • get roomTemperature(): number

      Last-reported room temperature in degrees Celsius.

      Returns number

      Degrees Celsius as last reported by the device.

    • get rssi(): number

      Last-reported Wi-Fi signal strength of the device adapter, in dBm.

      Returns number

      The RSSI value.

    • get supportsOverheat(): boolean

      Whether this device can hold an overheat protection — the feature is ATA-only (the official app never offers it on ATW units).

      Returns boolean

      true on ATA devices.

    • get temperatureStep(): number

      Setpoint granularity in °C, from the unit's advertised half-degree capability.

      Returns number

      0.5 on half-degree units, 1 otherwise.

    • Fetches energy telemetry for this device over the given time window — cumulative consumption on ATA units, one interval-measure direction on ATW units (measure selects consumed or produced there, and only there). See HomeEnergyQuery for the window and interval semantics.

      Parameters

      • params: { from: string; interval: string; to: string }

        Query window and interval, plus the energy direction on ATW.

      Returns Promise<Result<HomeEnergyData>>

      The telemetry bundle, or a typed failure.

    • Fetches energy telemetry as the normalized series — the projection of getEnergy that owns the wire dialect so consumers never decode it: each sample's UTC wall-clock stamp anchored as an epoch-ms instant, each value in kilowatt-hours whatever the device type (ATW interval buckets are kWh on the wire; the ATA cumulative measure is watt-hours, scaled here), samples in wire order. A garbled sample degrades field-by-field to null — never NaN, never a throw — and keeps its entry. The wire-verbatim bundle stays available on getEnergy.

      Parameters

      • params: { from: string; interval: HomeEnergyInterval; to: string }

        Query window and typed interval, plus the energy direction on ATW.

      Returns Promise<Result<HomeEnergySeriesPoint[]>>

      The normalized samples, or a typed failure.

    • Fetches the error-log entries for this device, projected onto the cross-dialect shape: errorCode maps to code, errorReason to message when present, clearedTimestamp to clearedAt when cleared — each wall-clock stamp paired with its UTC-anchored epoch instant. The raw wire entries stay available on the API client.

      Returns Promise<Result<ErrorLogEntry[]>>

      The neutral entries (possibly empty), or a typed failure.

    • Member operation modes in the one group vocabulary, treating the device as a group of one — the same read every zone facade answers, projected through the operation-mode bijection with no wire call.

      Parameters

      • options: { poweredOnly: boolean }

        Member filter.

        • poweredOnly: boolean

          true answers empty when the unit is powered off.

      Returns ClassicOperationMode[]

      The device's own mode (Classic-numbered), alone or absent.

    • Apply a Classic group state to this device: the delta is translated to the Home vocabulary and pushed through the native per-device update path. Group writes are no-op tolerant: an all-null delta translates to nothing and resolves without a wire call, and a device already matching the delta (a NoChangesError from its update) counts as success.

      Parameters

      Returns Promise<void>

      The zone-shaped success outcome once the write completes.

    • Powers the unit on or off. This is the unit-level master power (the Power setting, shown as the system on/off toggle in the app), defined at the base like the Classic side's updatePower — the contracts differ: this one resolves void and throws the typed transport error. Convenience wrapper over updateValues.

      Parameters

      • isOn: boolean = true

        true to power on, false to power off.

      Returns Promise<void>