Files
kkelomatic_home/node-red/room-config.js
nearxos 23439e1cd0 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.
2026-02-08 23:15:10 +02:00

88 lines
3.1 KiB
JavaScript

/**
* Single source of truth for rooms and lights.
* Lives on the Node-RED server at /root/.node-red/room-config.js
* All function nodes use: global.get('roomConfig')
* Loaded at startup from settings.js (functionGlobalContext). To reload without restart, use the
* "Reload room config" flow: see node-red/reload-room-config-docs.md
*/
const ROOM_CONFIG = {
// Order must match CODESYS NVL_In. Used by NVL SEND (state-to-nvl-send-payload).
roomNames: [
'cmd_livingroom',
'cmd_out', // add other NVL room keys as needed
// 'masterBedroom',
// 'masterBathroom',
// 'bedroom_1',
// 'bedroom_2',
// 'bathroom',
// 'guestWc',
// 'kitchen',
// 'pantry',
// 'livingRoom',
// 'dinningRoom',
// 'entrance',
// 'hallway',
// 'outVeranda',
// 'outFront',
// 'outBack',
// 'outSide',
],
// PLC → HA sync. room = key in nvl-receive payload, light = 1..6, entityId = HA entity.
lightEntityMap: [
{ room: 'light_livingRoom', light: 1, entityId: 'input_boolean.living_room_new' },
// { room: 'light_livingRoom', light: 2, entityId: 'input_boolean.living_room_2' },
// { room: 'l_kitchen', light: 1, entityId: 'input_boolean.kitchen_1' },
],
// HA entity_id substring (after domain.) without trailing _N → NVL room key. For HA to NVL.
entityToRoom: {
// living_room: 'livingRoom',
living_room_new: 'cmd_livingroom',
// kitchen: 'kitchen',
// master_bedroom: 'masterBedroom',
// bathroom: 'bathroom',
// bedroom_1: 'bedroom_1',
// bedroom_2: 'bedroom_2',
// dinning_room: 'dinningRoom',
// entrance: 'entrance',
// hallway: 'hallway',
// pantry: 'pantry',
// guest_wc: 'guestWc',
// out_veranda: 'outVeranda',
// out_front: 'outFront',
// out_back: 'outBack',
// out_side: 'outSide',
},
// // Zigbee: friendly_name → single room (fallback when switchBindings missing).
// deviceToRoom: {
// '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.
deviceIdToName: {
// '0xa4c138a5b9771b05': 'Office Switch', // uncomment and add your device IEEE from the payload
},
// Optional: bind by IEEE instead of friendly name (same shape as switchBindings). Use if the node never sends friendly_name.
// switchBindingsByDeviceId: {
// '0xa4c138a5b9771b05': { 1: { room: 'cmd_livingroom', light: 1 }, 2: { room: 'cmd_out', light: 2 } },
// },
/**
* Which (room, light) each physical button controls. Key = button number (1..6), value = { room, light }.
* Button and light are independent: e.g. button 2 can control light 1, or light 2 in another room.
* One button can target one { room, light } or an array for multiple lights.
*/
switchBindings: {
'Office Switch': {
1: { room: 'cmd_livingroom', light: 1 }, // button 1 → light 1
2: { room: 'cmd_livingroom', light: 2 }, // button 2 → light 1 (same light; other switches could do button 2 → light 2)
},
},
};
module.exports = ROOM_CONFIG;