Files
nearxos d98c44bfa3 Initial commit: CODESYS tree, integration docs, Node-RED scripts.
PLC application sources (NVL, rooms, boiler), HA/Node-RED integration guide, and NVL patch utilities.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-05-26 21:21:56 +03:00

117 lines
3.2 KiB
Smalltalk

(* === DECLARATION === *)
(* Room lighting (redesign). Shower channels l_1..l_5 only l_6 is water heater (Boiler_PRG). *)
PROGRAM Lights_new
VAR
Living_Room: FB_ROOM;
Dininng_Room: fb_room;
Kitchen_Area: fb_room;
Hallway: fb_room;
Office: fb_room;
Bedroom: fb_room;
Master_Bedroom: fb_room;
Master_bath: fb_room;
Shower: fb_room;
Guest_wc: fb_room;
Outside_front: fb_room;
Covered_Veranda: fb_room;
Yard: fb_room;
Outside_back: fb_room;
END_VAR
(* === IMPLEMENTATION === *)
Living_Room(
switches := NVL_Receiver.cmd_livingRoom,
relay_status := NVL_Sender.light_livingRoom
);
NVL_Sender.light_livingRoom := Living_Room.lights;
Dininng_Room(
switches := NVL_Receiver.cmd_dinningRoom,
relay_status := NVL_Sender.light_dinningRoom
);
NVL_Sender.light_dinningRoom := Dininng_Room.lights;
Kitchen_Area(
switches := NVL_Receiver.cmd_kitchenArea,
relay_status := NVL_Sender.light_kitchenArea
);
NVL_Sender.light_kitchenArea := Kitchen_Area.lights;
Hallway(
switches := NVL_Receiver.cmd_hallway,
relay_status := NVL_Sender.light_hallway
);
NVL_Sender.light_hallway := Hallway.lights;
Office(
switches := NVL_Receiver.cmd_office,
relay_status := NVL_Sender.light_office
);
NVL_Sender.light_office := Office.lights;
Bedroom(
switches := NVL_Receiver.cmd_bedroom,
relay_status := NVL_Sender.light_bedroom
);
NVL_Sender.light_bedroom := Bedroom.lights;
Master_Bedroom(
switches := NVL_Receiver.cmd_masterBedroom,
relay_status := NVL_Sender.light_masterBedroom
);
NVL_Sender.light_masterBedroom := Master_Bedroom.lights;
Master_bath(
switches := NVL_Receiver.cmd_masterBath,
relay_status := NVL_Sender.light_masterBath
);
NVL_Sender.light_masterBath := Master_bath.lights;
Shower(
switches := NVL_Receiver.cmd_shower,
relay_status := NVL_Sender.light_shower
);
// l_6 not used for shower water heater uses boiler_status.relay_output (%QX5.4)
NVL_Sender.light_shower.l_6 := FALSE;
NVL_Sender.light_shower.l_6_status := FALSE;
NVL_Sender.light_shower.l_1 := Shower.lights.l_1;
NVL_Sender.light_shower.l_2 := Shower.lights.l_2;
NVL_Sender.light_shower.l_3 := Shower.lights.l_3;
NVL_Sender.light_shower.l_4 := Shower.lights.l_4;
NVL_Sender.light_shower.l_5 := Shower.lights.l_5;
NVL_Sender.light_shower.l_1_status := Shower.lights.l_1;
NVL_Sender.light_shower.l_2_status := Shower.lights.l_2;
NVL_Sender.light_shower.l_3_status := Shower.lights.l_3;
NVL_Sender.light_shower.l_4_status := Shower.lights.l_4;
NVL_Sender.light_shower.l_5_status := Shower.lights.l_5;
Guest_wc(
switches := NVL_Receiver.cmd_guestWc,
relay_status := NVL_Sender.light_guestWc
);
NVL_Sender.light_guestWc := Guest_wc.lights;
Outside_front(
switches := NVL_Receiver.cmd_outFront,
relay_status := NVL_Sender.light_outFront
);
NVL_Sender.light_outFront := Outside_front.lights;
Covered_Veranda(
switches := NVL_Receiver.cmd_coveredVeranda,
relay_status := NVL_Sender.light_coveredVeranda
);
NVL_Sender.light_coveredVeranda := Covered_Veranda.lights;
Yard(
switches := NVL_Receiver.cmd_outYard,
relay_status := NVL_Sender.light_outYard
);
NVL_Sender.light_outYard := Yard.lights;
Outside_back(
switches := NVL_Receiver.cmd_outBack,
relay_status := NVL_Sender.light_outBack
);
NVL_Sender.light_outBack := Outside_back.lights;