Hi,
Hoping someone can help and it may be a bit of a noobie question. But I have a ADAM-6717 module, the Get AI (get anolog inputs) and Get DIO (Digital Input / Outputs). These output data all at the same time when triggered, what I wanted to do was get the information in one payload and ordered correctly. Currently I've added delays to collate the information. But surely there is a better of acomplishing this task.
[
    {
        "id": "39140a8f02f9cd8f",
        "type": "tab",
        "label": "202391 Post to Losant",
        "disabled": false,
        "info": ""
    },
    {
        "id": "2c7feaa2b0083587",
        "type": "inject",
        "z": "39140a8f02f9cd8f",
        "name": "2 seconds",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "2",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 110,
        "y": 320,
        "wires": [
            [
                "c2231f55bbf2e15d",
                "4f2c591624eef712"
            ]
        ]
    },
    {
        "id": "c2231f55bbf2e15d",
        "type": "get-ai-value",
        "z": "39140a8f02f9cd8f",
        "name": "",
        "x": 310,
        "y": 180,
        "wires": [
            [
                "636586677e4ef330"
            ],
            [
                "f2fce7de9313309e"
            ],
            [],
            [],
            [],
            [],
            [],
            [],
            [],
            [],
            [],
            [],
            [],
            [],
            [],
            []
        ]
    },
    {
        "id": "c401a86aec8ce76b",
        "type": "function",
        "z": "39140a8f02f9cd8f",
        "name": "Consildate Payload",
        "func": "var array = msg.payload;\nvar result = {};\n\n// Create a new object and assign array values to specific keys\nif (array.length == 6) {\n    result = {\n        data:\n        {\n            level_1: Math.round(array[0]),\n            level_2: Math.round(array[1]),\n            pump1_running: array[2],\n            pump1_fault: array[3],\n            pump2_running: array[4],\n            pump2_fault: array[5],\n            device: \"10.0.150.254\"\n        }\n    };\n} else {\n    result = {\n        data:\n        {\n            error:true\n        }\n    };\n}\n\n// Set the payload to the new object\nmsg.payload = result;\n\n// Return the message to continue the flow\nreturn msg;",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 1110,
        "y": 200,
        "wires": [
            []
        ]
    },
    {
        "id": "4f2c591624eef712",
        "type": "get-dio-value",
        "z": "39140a8f02f9cd8f",
        "name": "",
        "x": 310,
        "y": 420,
        "wires": [
            [
                "13f62a477c570579"
            ],
            [
                "78fa5a51abe7026d"
            ],
            [
                "a7fa0c7ee6a2e105"
            ],
            [
                "46e12dec0807a453"
            ],
            [],
            [],
            [],
            [],
            []
        ]
    },
    {
        "id": "04fc3726c9ba5fcf",
        "type": "join",
        "z": "39140a8f02f9cd8f",
        "name": "join 6 values",
        "mode": "custom",
        "build": "array",
        "property": "payload",
        "propertyType": "msg",
        "key": "topic",
        "joiner": "\\n",
        "joinerType": "str",
        "accumulate": false,
        "timeout": "0",
        "count": "6",
        "reduceRight": false,
        "reduceExp": "",
        "reduceInit": "",
        "reduceInitType": "",
        "reduceFixup": "",
        "x": 890,
        "y": 120,
        "wires": [
            [
                "8f94de12548c8f4c",
                "15714fa4c817c198"
            ]
        ]
    },
    {
        "id": "5e3dc3bb41fbc682",
        "type": "debug",
        "z": "39140a8f02f9cd8f",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 1330,
        "y": 140,
        "wires": []
    },
    {
        "id": "6efb623c5643184c",
        "type": "delay",
        "z": "39140a8f02f9cd8f",
        "name": "",
        "pauseType": "delay",
        "timeout": "10",
        "timeoutUnits": "milliseconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 690,
        "y": 160,
        "wires": [
            [
                "04fc3726c9ba5fcf"
            ]
        ]
    },
    {
        "id": "13f62a477c570579",
        "type": "delay",
        "z": "39140a8f02f9cd8f",
        "name": "",
        "pauseType": "delay",
        "timeout": "20",
        "timeoutUnits": "milliseconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 690,
        "y": 200,
        "wires": [
            [
                "04fc3726c9ba5fcf"
            ]
        ]
    },
    {
        "id": "78fa5a51abe7026d",
        "type": "delay",
        "z": "39140a8f02f9cd8f",
        "name": "",
        "pauseType": "delay",
        "timeout": "30",
        "timeoutUnits": "milliseconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 690,
        "y": 240,
        "wires": [
            [
                "04fc3726c9ba5fcf"
            ]
        ]
    },
    {
        "id": "a7fa0c7ee6a2e105",
        "type": "delay",
        "z": "39140a8f02f9cd8f",
        "name": "",
        "pauseType": "delay",
        "timeout": "40",
        "timeoutUnits": "milliseconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 690,
        "y": 280,
        "wires": [
            [
                "04fc3726c9ba5fcf"
            ]
        ]
    },
    {
        "id": "46e12dec0807a453",
        "type": "delay",
        "z": "39140a8f02f9cd8f",
        "name": "",
        "pauseType": "delay",
        "timeout": "50",
        "timeoutUnits": "milliseconds",
        "rate": "1",
        "nbRateUnits": "1",
        "rateUnits": "second",
        "randomFirst": "1",
        "randomLast": "5",
        "randomUnits": "seconds",
        "drop": false,
        "outputs": 1,
        "x": 690,
        "y": 320,
        "wires": [
            [
                "04fc3726c9ba5fcf"
            ]
        ]
    },
    {
        "id": "636586677e4ef330",
        "type": "range",
        "z": "39140a8f02f9cd8f",
        "minin": "4",
        "maxin": "20",
        "minout": "0",
        "maxout": "5000",
        "action": "scale",
        "round": false,
        "property": "payload",
        "name": "Scale 0-5000",
        "x": 630,
        "y": 100,
        "wires": [
            [
                "04fc3726c9ba5fcf"
            ]
        ]
    },
    {
        "id": "f2fce7de9313309e",
        "type": "range",
        "z": "39140a8f02f9cd8f",
        "minin": "4",
        "maxin": "20",
        "minout": "0",
        "maxout": "5000",
        "action": "scale",
        "round": false,
        "property": "payload",
        "name": "Scale 0-5000",
        "x": 510,
        "y": 160,
        "wires": [
            [
                "6efb623c5643184c"
            ]
        ]
    },
    {
        "id": "8f94de12548c8f4c",
        "type": "debug",
        "z": "39140a8f02f9cd8f",
        "name": "",
        "active": false,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "payload",
        "targetType": "msg",
        "statusVal": "",
        "statusType": "auto",
        "x": 1040,
        "y": 360,
        "wires": []
    },
    {
        "id": "15714fa4c817c198",
        "type": "function",
        "z": "39140a8f02f9cd8f",
        "name": "Consolidate Payload v2",
        "func": "var array = msg.payload;\nvar result = {};\n\n// Initialize counters and buffers if they don't exist\nif (typeof context.counters === 'undefined') {\n    context.counters = {\n        pump1_running: 0,\n        pump1_fault: 0,\n        pump2_running: 0,\n        pump2_fault: 0\n    };\n}\nif (!context.buffers) {\n    context.buffers = {\n        pump1_running: [],\n        pump1_fault: [],\n        pump2_running: [],\n        pump2_fault: []\n    };\n}\n\n// Check if array length is 6\nif (array.length == 6) {\n    // Create a new object and assign array values to specific keys\n    result = {\n        data: {\n            level_1: Math.round(array[0]),\n            level_2: Math.round(array[1]),\n            pump1_running: array[2],\n            pump1_fault: array[3],\n            pump2_running: array[4],\n            pump2_fault: array[5],\n            device: \"10.0.150.254\"\n        }\n    };\n    \n    // Update buffers\n    context.buffers.pump1_running.push(array[2]);\n    context.buffers.pump1_fault.push(array[3]);\n    context.buffers.pump2_running.push(array[4]);\n    context.buffers.pump2_fault.push(array[5]);\n    \n    // Keep only the last 2 elements in the buffers\n    if (context.buffers.pump1_running.length > 6) {\n        context.buffers.pump1_running.shift();\n    }\n    if (context.buffers.pump1_fault.length > 15) {\n        context.buffers.pump1_fault.shift();\n    }\n    if (context.buffers.pump2_running.length > 6) {\n        context.buffers.pump2_running.shift();\n    }\n    if (context.buffers.pump2_fault.length > 15) {\n        context.buffers.pump2_fault.shift();\n    }\n    \n    // Update counters\n    context.counters.pump1_running = context.buffers.pump1_running.every(value => value === true) ? context.counters.pump1_running + 1 : 0;\n    context.counters.pump1_fault = context.buffers.pump1_fault.every(value => value === true) ? context.counters.pump1_fault + 1 : 0;\n    context.counters.pump2_running = context.buffers.pump2_running.every(value => value === true) ? context.counters.pump2_running + 1 : 0;\n    context.counters.pump2_fault = context.buffers.pump2_fault.every(value => value === true) ? context.counters.pump2_fault + 1 : 0;\n    \n    // Reset counters if any value is false\n    if (!array[2]) context.counters.pump1_running = 0;\n    if (!array[3]) context.counters.pump1_fault = 0;\n    if (!array[4]) context.counters.pump2_running = 0;\n    if (!array[5]) context.counters.pump2_fault = 0;\n    \n    // Set pump values to true if the respective counter has reached 2\n    if (context.counters.pump1_running >= 6) {\n        result.data.pump1_running = true;\n    }\n    if (context.counters.pump1_fault >= 15) {\n        result.data.pump1_fault = true;\n    }\n    if (context.counters.pump2_running >= 6) {\n        result.data.pump2_running = true;\n    }\n    if (context.counters.pump2_fault >= 15) {\n        result.data.pump2_fault = true;\n    }\n} else {\n    result = {\n        data: {\n            error: true\n        }\n    };\n}\n\n// Set the payload to the new object\nmsg.payload = result;\n\n// Return the message to continue the flow\nreturn msg;\n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "libs": [],
        "x": 1090,
        "y": 260,
        "wires": [
            [
                "5e3dc3bb41fbc682"
            ]
        ]
    }
]
Thanks,
Park
