[
    {
        "id": "80472c6f5ab0ceb1",
        "type": "tab",
        "label": "СОП",
        "disabled": false,
        "info": "",
        "env": []
    },
    {
        "id": "82fa300ca05c4568",
        "type": "function",
        "z": "80472c6f5ab0ceb1",
        "name": "increment register",
        "func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_T_TANK') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_T_TANK', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n    value: v,\n    register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6;       // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1;   // Идентификатор устройства\nmsg.address = 1100;  // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 410,
        "y": 340,
        "wires": [
            [
                "791aea74bb391beb",
                "782ffc62b6685ef5"
            ]
        ]
    },
    {
        "id": "72ede930ebd8e9ae",
        "type": "inject",
        "z": "80472c6f5ab0ceb1",
        "name": "tick",
        "props": [],
        "repeat": "1",
        "crontab": "",
        "once": true,
        "onceDelay": 1,
        "topic": "",
        "x": 210,
        "y": 340,
        "wires": [
            [
                "82fa300ca05c4568",
                "0ea8a7cec8595723",
                "18284d5de921917f",
                "503edbe326920db4",
                "a00a9797429ad64e",
                "8656df9f506874b5",
                "0600f89cbbef760f",
                "233784632d9af852",
                "3368d6dd4d245c14",
                "b70f9de01e3737a7"
            ]
        ]
    },
    {
        "id": "782ffc62b6685ef5",
        "type": "debug",
        "z": "80472c6f5ab0ceb1",
        "name": "debug 3",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 860,
        "y": 260,
        "wires": []
    },
    {
        "id": "0ea8a7cec8595723",
        "type": "function",
        "z": "80472c6f5ab0ceb1",
        "name": "increment register",
        "func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_T_OUT') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_T_OUT', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n    value: v,\n    register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6;       // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1;   // Идентификатор устройства\nmsg.address = 1111;  // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 410,
        "y": 400,
        "wires": [
            [
                "3e733d4f4f7c7eca"
            ]
        ]
    },
    {
        "id": "18284d5de921917f",
        "type": "function",
        "z": "80472c6f5ab0ceb1",
        "name": "increment register",
        "func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_T_REC') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_T_REC', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n    value: v,\n    register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6;       // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1;   // Идентификатор устройства\nmsg.address = 1112;  // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 410,
        "y": 460,
        "wires": [
            [
                "66749e276ed8f774"
            ]
        ]
    },
    {
        "id": "503edbe326920db4",
        "type": "function",
        "z": "80472c6f5ab0ceb1",
        "name": "increment register",
        "func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_P_PUMP') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_P_PUMP', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n    value: v,\n    register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6;       // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1;   // Идентификатор устройства\nmsg.address = 1113;  // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 430,
        "y": 520,
        "wires": [
            [
                "0ae0d2efc3157ffb"
            ]
        ]
    },
    {
        "id": "a00a9797429ad64e",
        "type": "function",
        "z": "80472c6f5ab0ceb1",
        "name": "increment register",
        "func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_P_OUT') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_P_OUT', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n    value: v,\n    register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6;       // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1;   // Идентификатор устройства\nmsg.address = 1114;  // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 430,
        "y": 580,
        "wires": [
            [
                "16fefaf576d59dad"
            ]
        ]
    },
    {
        "id": "8656df9f506874b5",
        "type": "function",
        "z": "80472c6f5ab0ceb1",
        "name": "increment register",
        "func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_L') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_L', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n    value: v,\n    register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6;       // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1;   // Идентификатор устройства\nmsg.address = 1115;  // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 430,
        "y": 640,
        "wires": [
            [
                "45f23a96185e8194"
            ]
        ]
    },
    {
        "id": "0600f89cbbef760f",
        "type": "function",
        "z": "80472c6f5ab0ceb1",
        "name": "increment register",
        "func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_RESERVE1') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_RESERVE1', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n    value: v,\n    register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 5;       // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1;   // Идентификатор устройства\nmsg.address = 1116;  // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 430,
        "y": 700,
        "wires": [
            [
                "f0817ef1fe6a7c7b"
            ]
        ]
    },
    {
        "id": "233784632d9af852",
        "type": "function",
        "z": "80472c6f5ab0ceb1",
        "name": "increment register",
        "func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_RESERVE2') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_RESERVE2', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n    value: v,\n    register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 5;       // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1;   // Идентификатор устройства\nmsg.address = 1117;  // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 430,
        "y": 760,
        "wires": [
            [
                "f8997f5372daf09b"
            ]
        ]
    },
    {
        "id": "3368d6dd4d245c14",
        "type": "function",
        "z": "80472c6f5ab0ceb1",
        "name": "increment register",
        "func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('WS_DSC1') || 50;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 50 ? 40 : v + 1);\n\n// Сохраняем обновленное значение в поток\nflow.set('WS_DSC1', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n    value: v,\n    register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 5;       // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1;   // Идентификатор устройства\nmsg.address = 1118;  // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 430,
        "y": 820,
        "wires": [
            [
                "c1298450172d3598"
            ]
        ]
    },
    {
        "id": "791aea74bb391beb",
        "type": "modbus-write",
        "z": "80472c6f5ab0ceb1",
        "name": "СОП. Температура в баке",
        "showStatusActivities": false,
        "showErrors": false,
        "showWarnings": true,
        "unitid": "1",
        "dataType": "HoldingRegister",
        "adr": "1110",
        "quantity": "1",
        "server": "",
        "emptyMsgOnFail": false,
        "keepMsgProperties": false,
        "delayOnStart": false,
        "startDelayTime": "",
        "x": 660,
        "y": 340,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "3e733d4f4f7c7eca",
        "type": "modbus-write",
        "z": "80472c6f5ab0ceb1",
        "name": "СОП. Температура после т/об",
        "showStatusActivities": false,
        "showErrors": false,
        "showWarnings": true,
        "unitid": "1",
        "dataType": "HoldingRegister",
        "adr": "1111",
        "quantity": "1",
        "server": "",
        "emptyMsgOnFail": false,
        "keepMsgProperties": false,
        "delayOnStart": false,
        "startDelayTime": "",
        "x": 670,
        "y": 400,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "66749e276ed8f774",
        "type": "modbus-write",
        "z": "80472c6f5ab0ceb1",
        "name": "СОП. Температура внешнего контура",
        "showStatusActivities": false,
        "showErrors": false,
        "showWarnings": true,
        "unitid": "1",
        "dataType": "HoldingRegister",
        "adr": "1112",
        "quantity": "1",
        "server": "",
        "emptyMsgOnFail": false,
        "keepMsgProperties": false,
        "delayOnStart": false,
        "startDelayTime": "",
        "x": 700,
        "y": 460,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "0ae0d2efc3157ffb",
        "type": "modbus-write",
        "z": "80472c6f5ab0ceb1",
        "name": "СОП. Давление после насоса",
        "showStatusActivities": false,
        "showErrors": false,
        "showWarnings": true,
        "unitid": "1",
        "dataType": "HoldingRegister",
        "adr": "1113",
        "quantity": "1",
        "server": "",
        "emptyMsgOnFail": false,
        "keepMsgProperties": false,
        "delayOnStart": false,
        "startDelayTime": "",
        "x": 670,
        "y": 520,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "16fefaf576d59dad",
        "type": "modbus-write",
        "z": "80472c6f5ab0ceb1",
        "name": "СОП. Давление в контуре",
        "showStatusActivities": false,
        "showErrors": false,
        "showWarnings": true,
        "unitid": "1",
        "dataType": "HoldingRegister",
        "adr": "1114",
        "quantity": "1",
        "server": "",
        "emptyMsgOnFail": false,
        "keepMsgProperties": false,
        "delayOnStart": false,
        "startDelayTime": "",
        "x": 660,
        "y": 580,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "45f23a96185e8194",
        "type": "modbus-write",
        "z": "80472c6f5ab0ceb1",
        "name": "СОП. Уровень в баке",
        "showStatusActivities": false,
        "showErrors": false,
        "showWarnings": true,
        "unitid": "1",
        "dataType": "HoldingRegister",
        "adr": "1115",
        "quantity": "1",
        "server": "",
        "emptyMsgOnFail": false,
        "keepMsgProperties": false,
        "delayOnStart": false,
        "startDelayTime": "",
        "x": 640,
        "y": 640,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "f0817ef1fe6a7c7b",
        "type": "modbus-write",
        "z": "80472c6f5ab0ceb1",
        "name": "СОП. WS_RESERVE1",
        "showStatusActivities": false,
        "showErrors": false,
        "showWarnings": true,
        "unitid": "1",
        "dataType": "Coil",
        "adr": "1116",
        "quantity": "1",
        "server": "",
        "emptyMsgOnFail": false,
        "keepMsgProperties": false,
        "delayOnStart": false,
        "startDelayTime": "",
        "x": 640,
        "y": 700,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "f8997f5372daf09b",
        "type": "modbus-write",
        "z": "80472c6f5ab0ceb1",
        "name": "СОП. WS_RESERVE2",
        "showStatusActivities": false,
        "showErrors": false,
        "showWarnings": true,
        "unitid": "1",
        "dataType": "Coil",
        "adr": "1117",
        "quantity": "1",
        "server": "",
        "emptyMsgOnFail": false,
        "keepMsgProperties": false,
        "delayOnStart": false,
        "startDelayTime": "",
        "x": 640,
        "y": 760,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "c1298450172d3598",
        "type": "modbus-write",
        "z": "80472c6f5ab0ceb1",
        "name": "СОП. Дискретные сигналы водяной станции",
        "showStatusActivities": false,
        "showErrors": false,
        "showWarnings": true,
        "unitid": "1",
        "dataType": "Coil",
        "adr": "1118",
        "quantity": "1",
        "server": "",
        "emptyMsgOnFail": false,
        "keepMsgProperties": false,
        "delayOnStart": false,
        "startDelayTime": "",
        "x": 720,
        "y": 820,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "95b003fc392fcadd",
        "type": "modbus-server",
        "z": "80472c6f5ab0ceb1",
        "name": "",
        "logEnabled": true,
        "hostname": "0.0.0.0",
        "serverPort": 10502,
        "responseDelay": 100,
        "delayUnit": "ms",
        "coilsBufferSize": 10000,
        "holdingBufferSize": 10000,
        "inputBufferSize": 10000,
        "discreteBufferSize": 10000,
        "showErrors": true,
        "showStatusActivities": true,
        "x": 200,
        "y": 120,
        "wires": [
            [],
            [],
            [],
            [],
            []
        ]
    },
    {
        "id": "5c728bfa2fcb05c1",
        "type": "modbus-write",
        "z": "80472c6f5ab0ceb1",
        "name": "xxx. LIION_U",
        "showStatusActivities": false,
        "showErrors": false,
        "showWarnings": true,
        "unitid": "1",
        "dataType": "HoldingRegister",
        "adr": "91",
        "quantity": "1",
        "server": "aa6c3b71da0ea2b8",
        "emptyMsgOnFail": false,
        "keepMsgProperties": false,
        "delayOnStart": false,
        "startDelayTime": "",
        "x": 630,
        "y": 180,
        "wires": [
            [],
            []
        ]
    },
    {
        "id": "b70f9de01e3737a7",
        "type": "function",
        "z": "80472c6f5ab0ceb1",
        "name": "increment register",
        "func": "// Получаем текущее значение из хранилища или задаём начальное значение 10\nlet v = flow.get('LIION_U') || 60;\n\n// Увеличиваем значение на единицу и применяем циклическое изменение в диапазоне от 10 до 30\nv = ((v + 1) > 60 ? 40 : v + 2);\n\n// Сохраняем обновленное значение в поток\nflow.set('LIION_U', v);\n\n// Формируем сообщение для передачи данных\nmsg.payload = {\n    value: v,\n    register: 0\n};\n\n// Устанавливаем дополнительные параметры сообщения\nmsg.fc = 6;       // Тип операции Modbus (запись одиночного регистра)\nmsg.unitid = 1;   // Идентификатор устройства\nmsg.address = 1100;  // Адрес регистра\nmsg.quantity = 1; // Количество регистров\nmsg.payload = [v*10];// Значение, которое будет записано\n\n// Возвращаем сформированное сообщение\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 410,
        "y": 240,
        "wires": [
            [
                "5c728bfa2fcb05c1"
            ]
        ]
    },
    {
        "id": "aa6c3b71da0ea2b8",
        "type": "modbus-client",
        "name": "",
        "clienttype": "tcp",
        "bufferCommands": true,
        "stateLogEnabled": false,
        "queueLogEnabled": false,
        "failureLogEnabled": true,
        "tcpHost": "0.0.0.0",
        "tcpPort": "10502",
        "tcpType": "DEFAULT",
        "serialPort": "/dev/ttyUSB",
        "serialType": "RTU-BUFFERD",
        "serialBaudrate": "9600",
        "serialDatabits": "8",
        "serialStopbits": "1",
        "serialParity": "none",
        "serialConnectionDelay": "100",
        "serialAsciiResponseStartDelimiter": "0x3A",
        "unit_id": "1",
        "commandDelay": "1",
        "clientTimeout": "1000",
        "reconnectOnTimeout": true,
        "reconnectTimeout": "2000",
        "parallelUnitIdsAllowed": true,
        "showErrors": false,
        "showWarnings": true,
        "showLogs": true
    }
]