(*
  GVL: NVL stubs (or replace by CODESYS Network Variable lists NVL_In / NVL_Out).
  In the real project, bind these to your UDP/network variable sender/receiver.
  DI_Emergency_Stop: link to physical input or leave FALSE.
*)
VAR_GLOBAL
    NVL_In: STRUCT
        open_plan_living_room: struct_room_cmds;
        open_plan_dining_room: struct_room_cmds;
        open_plan_entrance: struct_room_cmds;
        open_plan_guest_wc: struct_room_cmds;
        kitchen_kitchen: struct_room_cmds;
        kitchen_pantry: struct_room_cmds;
        bedrooms_office: struct_room_cmds;
        bedrooms_hallway: struct_room_cmds;
        bedrooms_laundry: struct_room_cmds;
        bedrooms_shower: struct_room_cmds;
        bedrooms_bedroom: struct_room_cmds;
        master_bedroom_suite: struct_room_cmds;
        master_bedroom_bathroom: struct_room_cmds;
        exterior_veranda: struct_room_cmds;
        exterior_entrance: struct_room_cmds;
        exterior_yard: struct_room_cmds;
        boiler: struct_boiler_cmd;
    END_STRUCT;

    NVL_Out: STRUCT
        l_open_plan_living_room: struct_room_outs;
        l_open_plan_dining_room: struct_room_outs;
        l_open_plan_entrance: struct_room_outs;
        l_open_plan_guest_wc: struct_room_outs;
        l_kitchen_kitchen: struct_room_outs;
        l_kitchen_pantry: struct_room_outs;
        l_bedrooms_office: struct_room_outs;
        l_bedrooms_hallway: struct_room_outs;
        l_bedrooms_laundry: struct_room_outs;
        l_bedrooms_shower: struct_room_outs;
        l_bedrooms_bedroom: struct_room_outs;
        l_master_bedroom_suite: struct_room_outs;
        l_master_bedroom_bathroom: struct_room_outs;
        l_exterior_veranda: struct_room_outs;
        l_exterior_entrance: struct_room_outs;
        l_exterior_yard: struct_room_outs;
        boiler_status: struct_boiler_status;
    END_STRUCT;

    DI_Emergency_Stop: BOOL := FALSE;
END_VAR
