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>
This commit is contained in:
2026-05-26 21:21:56 +03:00
commit d98c44bfa3
27 changed files with 3844 additions and 0 deletions

185
codesys-tree/_manifest.json Normal file
View File

@@ -0,0 +1,185 @@
{
"project_path": "C:\\codesys-projects\\Codesys_Home_Automation\\Home_Automation.project",
"staged_project_path": "C:\\codesys-projects\\Codesys_Home_Automation\\Home_Automation_Boiler_Phase1\\Home_Automation.project",
"staged_project_folder": "Home_Automation_Boiler_Phase1",
"active_application": "Application",
"generated_at": "2026-05-24T20:24:00+03:00",
"inventory_refreshed_at": "2026-05-24T20:24:00+03:00",
"io_snapshot": {
"file": "_io.json",
"summary": "_io.md",
"captured_at": "2026-05-24T20:24:00+03:00",
"device_count": 9,
"channels_only": true
},
"convention": {
"declaration_marker": "(* === DECLARATION === *)",
"implementation_marker": "(* === IMPLEMENTATION === *)",
"notes": "Each .st file contains the declaration section followed by the implementation section, separated by the markers above. Empty section after a marker means CODESYS reported no content for that section."
},
"objects": [
{
"file": "Device/Plc Logic/Application/PLC_PRG.st",
"object_path": "Device / Plc Logic / Application / PLC_PRG",
"kind": "program",
"has_declaration": true,
"has_implementation": true
},
{
"file": "Device/Plc Logic/Application/0.Structures/struct_switches.st",
"object_path": "Device / Plc Logic / Application / 0.Structures / struct_switches",
"kind": "dut",
"has_declaration": true,
"has_implementation": false
},
{
"file": "Device/Plc Logic/Application/0.Structures/struct_lights.st",
"object_path": "Device / Plc Logic / Application / 0.Structures / struct_lights",
"kind": "dut",
"has_declaration": true,
"has_implementation": false
},
{
"file": "Device/Plc Logic/Application/0.Structures/struct_room_outs.st",
"object_path": "Device / Plc Logic / Application / 0.Structures / struct_room_outs",
"kind": "dut",
"has_declaration": true,
"has_implementation": false
},
{
"file": "Device/Plc Logic/Application/0.Structures/struct_room_cmds.st",
"object_path": "Device / Plc Logic / Application / 0.Structures / struct_room_cmds",
"kind": "dut",
"has_declaration": true,
"has_implementation": false
},
{
"file": "Device/Plc Logic/Application/0.Structures/struct_boiler_cmd.st",
"object_path": "Device / Plc Logic / Application / 0.Structures / struct_boiler_cmd",
"kind": "dut",
"has_declaration": true,
"has_implementation": false
},
{
"file": "Device/Plc Logic/Application/0.Structures/struct_boiler_status.st",
"object_path": "Device / Plc Logic / Application / 0.Structures / struct_boiler_status",
"kind": "dut",
"has_declaration": true,
"has_implementation": false
},
{
"file": "Device/Plc Logic/Application/0.Structures/struct_zones.st",
"object_path": "Device / Plc Logic / Application / 0.Structures / struct_zones",
"kind": "dut",
"has_declaration": true,
"has_implementation": false
},
{
"file": "Device/Plc Logic/Application/1.Variables/NVL_Sender.st",
"object_path": "Device / Plc Logic / Application / 1.Variables / NVL_Sender",
"kind": "gvl",
"has_declaration": true,
"has_implementation": false
},
{
"file": "Device/Plc Logic/Application/1.Variables/NVL_Receiver.st",
"object_path": "Device / Plc Logic / Application / 1.Variables / NVL_Receiver",
"kind": "gvl",
"has_declaration": true,
"has_implementation": false
},
{
"file": "Device/Plc Logic/Application/1.Variables/GVL.st",
"object_path": "Device / Plc Logic / Application / 1.Variables / GVL",
"kind": "gvl",
"has_declaration": true,
"has_implementation": false
},
{
"file": "Device/Plc Logic/Application/3.Function Blocks/fb_toogleButton.st",
"object_path": "Device / Plc Logic / Application / 3.Function Blocks / fb_toogleButton",
"kind": "function_block",
"has_declaration": true,
"has_implementation": false
},
{
"file": "Device/Plc Logic/Application/3.Function Blocks/fb_switch.st",
"object_path": "Device / Plc Logic / Application / 3.Function Blocks / fb_switch",
"kind": "function_block",
"has_declaration": true,
"has_implementation": false
},
{
"file": "Device/Plc Logic/Application/3.Function Blocks/fb_light.st",
"object_path": "Device / Plc Logic / Application / 3.Function Blocks / fb_light",
"kind": "function_block",
"has_declaration": true,
"has_implementation": true
},
{
"file": "Device/Plc Logic/Application/3.Function Blocks/fb_room.st",
"object_path": "Device / Plc Logic / Application / 3.Function Blocks / fb_room",
"kind": "function_block",
"has_declaration": true,
"has_implementation": true
},
{
"file": "Device/Plc Logic/Application/3.Function Blocks/fb_boiler.st",
"object_path": "Device / Plc Logic / Application / 3.Function Blocks / fb_boiler",
"kind": "function_block",
"has_declaration": true,
"has_implementation": true
},
{
"file": "Device/Plc Logic/Application/4.Programs/Lights.st",
"object_path": "Device / Plc Logic / Application / 4.Programs / Lights",
"kind": "program",
"has_declaration": true,
"has_implementation": false
},
{
"file": "Device/Plc Logic/Application/4.Programs/Lights_new.st",
"object_path": "Device / Plc Logic / Application / 4.Programs / Lights_new",
"kind": "program",
"has_declaration": true,
"has_implementation": true
},
{
"file": "Device/Plc Logic/Application/4.Programs/Boiler_PRG.st",
"object_path": "Device / Plc Logic / Application / 4.Programs / Boiler_PRG",
"kind": "program",
"has_declaration": true,
"has_implementation": true
}
],
"non_textual_tree": [
{"depth": 0, "kind": "node", "name": "Project Settings"},
{"depth": 0, "kind": "device", "name": "Device"},
{"depth": 1, "kind": "node", "name": "Plc Logic"},
{"depth": 2, "kind": "application", "name": "Application"},
{"depth": 3, "kind": "node", "name": "Library Manager"},
{"depth": 3, "kind": "node", "name": "Task Configuration"},
{"depth": 4, "kind": "node", "name": "MainTask"},
{"depth": 5, "kind": "node", "name": "PLC_PRG"},
{"depth": 4, "kind": "node", "name": "EtherCAT_Task"},
{"depth": 3, "kind": "folder", "name": "3.Function Blocks"},
{"depth": 3, "kind": "folder", "name": "1.Variables"},
{"depth": 3, "kind": "folder", "name": "2.Functions"},
{"depth": 3, "kind": "folder", "name": "4.Programs"},
{"depth": 3, "kind": "folder", "name": "0.Structures"},
{"depth": 1, "kind": "node", "name": "SoftMotion General Axis Pool"},
{"depth": 1, "kind": "device", "name": "GPIOs_A_B"},
{"depth": 1, "kind": "node", "name": "Onewire"},
{"depth": 1, "kind": "node", "name": "Camera device"},
{"depth": 2, "kind": "device", "name": "<Empty>"},
{"depth": 1, "kind": "node", "name": "SPI"},
{"depth": 1, "kind": "node", "name": "I?C"},
{"depth": 1, "kind": "device", "name": "EtherCAT_Master"},
{"depth": 2, "kind": "device", "name": "EK1100"},
{"depth": 3, "kind": "device", "name": "K1"},
{"depth": 3, "kind": "device", "name": "K2"},
{"depth": 3, "kind": "device", "name": "K3"},
{"depth": 3, "kind": "device", "name": "K4"},
{"depth": 0, "kind": "node", "name": "__VisualizationStyle"}
]
}