@gybalazs/node-red-contrib-daikin-faikout 0.1.1

Daikin air-conditioner control & telemetry for Node-RED — native stock BRP069Bxx (HTTP) and Faikin/Faikout (MQTT/WebSocket) backends, headless canonical core nodes. Pairs with the node-red-dashboard-2-ac-control widgets, or use it with any dashboard or au

npm install @gybalazs/node-red-contrib-daikin-faikout

@gybalazs/node-red-contrib-daikin-faikout

Control and read Daikin air conditioners from Node-RED, over the factory Wi-Fi adapter (BRP069Bxx, local HTTP) or a Faikin/Faikout ESP32 board (MQTT or WebSocket). Headless: it speaks one canonical schema, so it works with any dashboard, automation, or database — with or without a UI.

Pairs with @gybalazs/node-red-dashboard-2-ac-control for a ready-made FlowFuse Dashboard 2.0 control panel, but needs neither it nor a dashboard to run.

Install

npm install @gybalazs/node-red-contrib-daikin-faikout

Or Menu → Manage palette → Install. Node-RED ≥ 3, Node.js ≥ 18.

Docker: installing into the image works for these core nodes as-is. The companion widget package needs one extra step — see its README.

Nodes

Node Role
daikin unit (config) One air conditioner. Owns the connection + state; picks the backend (stock / Faikout) and transport (HTTP poll / MQTT / WebSocket / mock). Sibling nodes subscribe to it.
daikin ac Controller. Input: a canonical command ({ "setpoint": 22 }). Output 1: the full canonical state on every change. In MQTT mode, output 2 is the encoded device command for an mqtt out node.
daikin telemetry Live metrics. Output 1: canonical telemetry (for dashboards/automations). Output 2: InfluxDB-ready [fields, tags].

Quick start (no hardware)

Import Import → Examples → @gybalazs/node-red-contrib-daikin-faikout, or set a daikin unit to transport: mock. A simulated unit runs entirely in memory — inject {"power":true,"mode":"cool","setpoint":23} into the daikin ac node and watch the canonical state come out.

The canonical schema

Everything speaks this one shape, so any producer can drive the UI and any consumer can read it.

// control (settable + reported)
{ "power": true, "mode": "cool",        // auto | cool | heat | dry | fan
  "setpoint": 22, "fan": "auto",          // "auto" | 1..N | "quiet"
  "swingV": false, "swingH": false,
  "econo": false, "powerful": false, "streamer": false,
  "comfort": false, "quiet": false, "sensor": false, "led": false,
  "demand": 100,                          // outdoor-unit power cap %, 100 = no limit
  "targetHum": 0 }                        // humidifying units only
// telemetry (reported)
{ "roomTemp": 24.5, "outdoorTemp": 31, "humidity": 52, "compHz": 42,
  "powerW": 610, "fanRpm": 720, "liquidTemp": 12.5, "inletTemp": 25,
  "energyTotalKwh": 1234.5, "energyHeatKwh": 220, "energyCoolKwh": 900 }
// meta (reported): name, backend, online, caps, error, defrosting

A partial payload merges into the state — a single key refreshes one control. The node also sends a resolved caps object, so a UI knows exactly what this unit supports and hides the rest.

Backends

  • Stock Daikin (BRP069Bxx, e.g. BRP069B42): local HTTP. No push API (polled), and no instantaneous wattage — it reports compressor Hz, runtime and cumulative kWh. Demand control and target humidity are read/probed from the device where supported.
  • Faikout (ESP32): MQTT (recommended, pushes on change with livestatus) or WebSocket. Reports the full set: instantaneous power, fan RPM, coolant/inlet temperatures, lifetime energy.

Capabilities are auto-detected from the device where possible (Faikout reports exactly which fields it supports); the config node lets you override.

Transports & wiring

  • Stock → HTTP: managed. Set the host/IP and poll interval; nothing else to wire.
  • Faikout → MQTT: you wire your own mqtt in/mqtt out (your broker config is reused). The config node's edit dialog prints the exact topics. Enable livestatus on the device.
  • Faikout → WebSocket: managed, push-based, no wiring.
  • Mock: a simulator for testing, same code path as the real transports.

State lives in memory only; the device is the source of truth and is re-read immediately on start (retained MQTT / instant first poll), so a Node-RED restart loses nothing.

InfluxDB

Wire daikin telemetry output 2 straight into an influxdb out node. Only instantaneous values are emitted — history belongs in the database and is charted back from there. Tags: unit, backend.

Credits

The protocol handling is a clean-room reimplementation (zero legacy runtime deps), informed by:

License

MIT © Balazs Gyarmati

Node Info

Version: 0.1.1
Updated 4 days ago
License: MIT
Rating: not yet rated

Categories

Actions

Rate:

Downloads

0 in the last week

Nodes

  • gyb-daikin-unit
  • gyb-daikin-ac
  • gyb-daikin-telemetry

Keywords

  • node-red
  • daikin
  • faikin
  • faikout
  • brp069b
  • air-conditioner
  • hvac
  • climate
  • mqtt
  • home-automation

Maintainers