# Node-RED flow check report (live vs repo)

Checked live flows on **10.20.30.12** (Feb 2026). Summary below.

---

## Updated (match repo) – Living Room tab

| Node name            | Status   | Note |
|----------------------|----------|------|
| HA to NVL            | Updated  | Uses `roomConfig`, `entityToRoom` |
| Zigbee to NVL        | Updated  | Uses `switchBindings`, multi-device payload, `v.payload.action` |
| Clear zigbee edge    | Updated  | Supports `Array.isArray(msg.zigbeeClear)` |
| STATE TO NVL         | Updated  | Uses `global.get('roomConfig').roomNames` |
| NVL to HA Sync       | Updated  | Uses `roomConfig.lightEntityMap` |

You have **duplicate** nodes in the same tab: some of these names exist twice (or three times), and **one copy is old**. The flow may be wired to the **old** instances.

---

## Not updated / needs action

### 1. Load room config – **empty**

- **Current:** The "Load room config" function node contains only `return msg;` (12 chars).
- **Effect:** `global.get('roomConfig')` is never set from `room-config.js`, so other nodes may use fallbacks or wrong data.
- **Fix:** Paste the full loader code into the "Load room config" function node. Code to paste is in **[node-red/room-config-loader.js](../../node-red/room-config-loader.js)** (see below).

### 2. Duplicate nodes in Living Room

Same tab contains both updated and old versions:

- **HA to NVL:** 1 updated, 1 old  
- **Zigbee to NVL:** 2 updated, 1 old  
- **Clear zigbee edge:** 1 updated, 1 old  
- **NVL to HA Sync:** 1 updated, 1 old  
- **NVL SEND:** 1 node, **old** (hardcoded `roomNames = ['cmd_livingroom']`)

If your flow is connected to the **old** nodes, behaviour will not match the repo. Ensure:

- Zigbee/HA → **updated** "Zigbee to NVL" / "HA to NVL" → **updated** "STATE TO NVL" (or replace "NVL SEND" with STATE TO NVL and wire that) → nvl-send.
- Delay → **updated** "Clear zigbee edge" (the one that has `Array.isArray(msg.zigbeeClear)`).

### 3. Flow 7

All relevant function nodes there are **old** (fixed `livingRoom`, no roomConfig). Update them if you use that tab, or leave as-is if unused.

---

## Code to paste: Load room config

Paste this into the **Load room config** function node (and connect an Inject “once after 0.5 s” to it):

```javascript
// Delete cached version so changes to the file are picked up on redeploy
delete require.cache[require.resolve('/root/.node-red/room-config.js')];
const ROOM_CONFIG = require('/root/.node-red/room-config.js');

global.set('roomConfig', ROOM_CONFIG);
node.warn('[Load room config] loaded: ' + ROOM_CONFIG.roomNames.length + ' rooms, ' + ROOM_CONFIG.lightEntityMap.length + ' light mappings');
return null;
```

Full file: [node-red/room-config-loader.js](../../node-red/room-config-loader.js).

---

## room-config.js on server

`/root/.node-red/room-config.js` is present and contains `roomNames`, `switchBindings`, etc. Upload from repo when you change config:  
`scp node-red/config_files/room-config.js root@nodered.paraskeva.net:/root/.node-red/room-config.js`

---

## Checklist

1. [ ] Paste **Load room config** code (above) into the "Load room config" node and deploy.
2. [ ] In Living Room, confirm wires go to the **updated** HA to NVL / Zigbee to NVL / Clear zigbee edge (not the old duplicates).
3. [ ] Use **STATE TO NVL** (roomConfig) in the NVL path, or replace **NVL SEND** content with [state-to-nvl-send-payload.js](state-to-nvl-send-payload.js).
4. [ ] Optionally remove or disable the **old** duplicate nodes in Living Room to avoid confusion.
5. [ ] After changing `room-config.js`, upload it and redeploy (or restart Node-RED).
