Update documentation for Home Assistant light management and room configuration

- Added a new section in README.md for creating and managing lights by room in Home Assistant, linking to a focused guide.
- Enhanced the all-lights-and-rooms.md documentation with a reference to the new guide for clarity on entity creation and room assignment.
- Made minor adjustments to the room-config.js file, commenting out outdated device-to-room mappings to improve code clarity.

This update improves the documentation and usability for users managing lights and rooms in Home Assistant.
This commit is contained in:
2026-02-08 23:15:10 +02:00
parent d64d0f8923
commit 23439e1cd0
4 changed files with 132 additions and 5 deletions

View File

@@ -21,6 +21,7 @@ Basics: **how home automation works**, **services**, and **CODESYS connectivity*
- [Living Room flow](integration/nodered-livingroom-flow.md) — Test flow, NVL send, Action node, sync - [Living Room flow](integration/nodered-livingroom-flow.md) — Test flow, NVL send, Action node, sync
- [All lights and rooms](integration/all-lights-and-rooms.md) — Scale to all lights: config, HA entities (YAML bulk), checklist - [All lights and rooms](integration/all-lights-and-rooms.md) — Scale to all lights: config, HA entities (YAML bulk), checklist
- [HA: create and manage lights by room](integration/ha-lights-and-rooms.md) — Create entities, assign to rooms (Areas), sync with room-config.js
- [Living Room analysis](integration/nodered-livingroom-analysis.md) — Current nodes and wiring (from live Node-RED) - [Living Room analysis](integration/nodered-livingroom-analysis.md) — Current nodes and wiring (from live Node-RED)
## CODESYS ## CODESYS

View File

@@ -160,6 +160,8 @@ Generate this list from your room list + lights per room (e.g. 16 rooms × up to
## 4. Home Assistant: creating entities for all lights ## 4. Home Assistant: creating entities for all lights
For a focused guide on **creating entities and assigning them to rooms (Areas)** in HA, see **[ha-lights-and-rooms.md](ha-lights-and-rooms.md)**.
You need one HA entity per light (or per zone) that Node-RED and the PLC treat as one target. Two common choices: You need one HA entity per light (or per zone) that Node-RED and the PLC treat as one target. Two common choices:
- **`input_boolean`** simple on/off, good for “virtual” switches that only drive the PLC. - **`input_boolean`** simple on/off, good for “virtual” switches that only drive the PLC.

View File

@@ -0,0 +1,124 @@
# Creating and managing light entities in Home Assistant (by room)
This guide covers how to create the light/switch entities that Node-RED and the PLC use, and how to assign them to **rooms** (HA **Areas**) so you can manage and display them by room.
---
## 1. Concepts
| In Home Assistant | In Node-RED / room-config.js |
|-------------------|------------------------------|
| **Area** (room) | Room name for UI/dashboards |
| **Entity** | One light switch (e.g. `input_boolean.living_room_1`) |
| Entity **name** | Friendly label (e.g. “Living Room 1”) |
- You create **entities** (e.g. `input_boolean`) and optionally **areas** (rooms).
- You **assign each entity to an area** so HA can group them by room (overview, dashboards, “turn off room”).
- Entity IDs must match what you put in **room-config.js** (`entityToRoom`, `lightEntityMap`).
---
## 2. Create rooms (Areas) first (recommended)
So you can assign entities to a room when creating or editing them.
1. **Settings****Areas & Zones** (or **Settings****Devices & services****Areas**).
2. Click **Add area**.
3. Name it like your rooms (e.g. *Living Room*, *Kitchen*, *Hallway*). You can add an icon per area.
4. Create one area per room you use in Node-RED (names can differ from NVL room keys; area is for HA UI only).
---
## 3. Create light entities
Two ways: **YAML (bulk, by room)** or **UI (one by one)**.
### Option A: YAML package (bulk, easy to manage by room)
Create one file per room (or one file with sections) so entities are grouped by room. Then assign the area in the UI once (see step 4).
**Single file for all lights, grouped by room** save as `packages/lights_by_room.yaml` in your HA config:
```yaml
# PLC/Node-RED lights entity_id must match room-config.js (entityToRoom, lightEntityMap)
# Naming: <room>_<light_num> e.g. living_room_1, kitchen_2
input_boolean:
# Living room
living_room_1: { name: Living Room 1 }
living_room_2: { name: Living Room 2 }
# Kitchen
kitchen_1: { name: Kitchen 1 }
kitchen_2: { name: Kitchen 2 }
# Hallway
hallway_1: { name: Hallway 1 }
# Add more: master_bedroom_1, bathroom_1, entrance_1, etc.
```
Ensure `configuration.yaml` has:
```yaml
homeassistant:
packages: !include_dir_named packages
```
Restart Home Assistant. All entities are created. Entity IDs will be `input_boolean.living_room_1`, etc.
### Option B: UI (one by one)
1. **Settings****Devices & services****Helpers****Create Helper****Toggle**.
2. Name (e.g. *Living Room 1*). HA will generate an entity_id (e.g. `input_boolean.living_room_1`).
3. Create a helper for each light. Use a consistent naming pattern so the generated entity_id matches what you use in Node-RED (e.g. *Room Name N*`room_name_n`).
---
## 4. Assign entities to a room (Area)
After entities exist, assign each to an Area so they show up by room.
1. **Settings****Devices & services****Entities** (or **Settings****Entities**).
2. Filter by **input_boolean** (or your light domain).
3. Click an entity → open the **Area** dropdown and choose the room (e.g. *Living Room*, *Kitchen*).
4. Repeat for each entity.
**Faster for many entities:** **Settings****Areas & Zones** → click an area (e.g. *Living Room*) → **Add entities** and select all lights that belong in that room.
Result: each light entity is tied to one room (area) for overview, dashboards, and “turn off all in this room”.
---
## 5. Keep Node-RED and HA in sync
Use the **same entity_id and room logic** in both places.
| Where | What to match |
|-------|----------------|
| **room-config.js** `entityToRoom` | Map from entity_id “base” (e.g. `living_room_new`, `living_room`) to NVL room key (e.g. `cmd_livingroom`, `livingRoom`). |
| **room-config.js** `lightEntityMap` | One entry per light: `entityId: 'input_boolean.living_room_1'`, `room` = NVL receive key, `light` = 1..6. |
| **HA** | Entity IDs and (optionally) names; areas are for UI only. |
**Naming convention that works well:**
- Entity ID: `input_boolean.<room>_<number>`
Examples: `living_room_1`, `kitchen_2`, `hallway_1`.
- In **entityToRoom** use the part without the number: `living_room`, `kitchen`, `hallway` (and any alias like `living_room_new``cmd_livingroom`).
When you add a new light in HA (new entity_id), add or update:
1. **room-config.js** `lightEntityMap` (and `entityToRoom` if its a new room base name).
2. **room-config.js** `roomNames` if its a new NVL room.
3. Reload config in Node-RED (or let the Watch flow do it when you save the file).
---
## 6. Summary
| Goal | Action |
|------|--------|
| Create rooms in HA | **Settings****Areas & Zones** → Add area per room. |
| Create many lights at once | YAML package (e.g. `packages/lights_by_room.yaml`) with `input_boolean` entries, then restart HA. |
| Create one light | **Settings****Helpers** → Create Helper → Toggle, name it (e.g. *Kitchen 2*). |
| Assign lights to a room | **Settings****Entities** → select entity → set **Area**; or **Areas & Zones** → area → Add entities. |
| Match Node-RED | Use same entity_ids in **room-config.js** (`entityToRoom`, `lightEntityMap`). |
For scaling to many rooms and lights, see also [all-lights-and-rooms.md](all-lights-and-rooms.md).

View File

@@ -56,10 +56,10 @@ const ROOM_CONFIG = {
// out_side: 'outSide', // out_side: 'outSide',
}, },
// Zigbee: friendly_name → single room (fallback when switchBindings missing). // // Zigbee: friendly_name → single room (fallback when switchBindings missing).
deviceToRoom: { // deviceToRoom: {
'Office Switch': 'cmd_livingroom', // 'Office Switch': 'cmd_livingroom',
}, // },
// When using a multi-device Zigbee node, payload is keyed by IEEE (e.g. 0xa4c138a5b9771b05). Map IEEE → friendly name so switchBindings by name still works. // When using a multi-device Zigbee node, payload is keyed by IEEE (e.g. 0xa4c138a5b9771b05). Map IEEE → friendly name so switchBindings by name still works.
deviceIdToName: { deviceIdToName: {
@@ -79,7 +79,7 @@ const ROOM_CONFIG = {
switchBindings: { switchBindings: {
'Office Switch': { 'Office Switch': {
1: { room: 'cmd_livingroom', light: 1 }, // button 1 → light 1 1: { room: 'cmd_livingroom', light: 1 }, // button 1 → light 1
2: { room: 'cmd_livingroom', light: 1 }, // button 2 → light 1 (same light; other switches could do button 2 → light 2) 2: { room: 'cmd_livingroom', light: 2 }, // button 2 → light 1 (same light; other switches could do button 2 → light 2)
}, },
}, },
}; };