PLC application sources (NVL, rooms, boiler), HA/Node-RED integration guide, and NVL patch utilities. Co-authored-by: Cursor <cursoragent@cursor.com>
117 lines
3.2 KiB
Smalltalk
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;
|