Combine messages in different subflows

Hi, i made a ping flow that works great.
Each ping sends a message to domoticz and domoticz puts a device on or off ...
No problems in the existing flow.

I want to send one message for all my pings and not xxxx messages..
I have to make 26 ping commands...
the variable that i use to switch a device for one ping is:
waarde = '[{"obj":"test1","act":"On"}]'

when i send '[{"obj":"test","act":"On"},{"obj":"test","act":"On"}]' my domoticz will turn on both test1 and test2

problem is that these values come from different subflows, see attached flow and i must combine them somehow...

[{"id":"5842cd1f.a817d4","type":"tab","label":"Pinger_service","disabled":false,"info":""},{"id":"91dcea2b.7bcf68","type":"debug","z":"5842cd1f.a817d4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":850,"y":540,"wires":[]},{"id":"87fb4485.7871b8","type":"inject","z":"5842cd1f.a817d4","name":"ping script","topic":"test","payload":"","payloadType":"date","repeat":"300","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":500,"wires":[["ca205fcc.b7c2f","d5a6079e.f97ab8"]]},{"id":"ca205fcc.b7c2f","type":"exec","z":"5842cd1f.a817d4","command":"sudo ping 192.168.1.10 -c1 -w1","addpay":false,"append":"","useSpawn":"true","timer":"","oldrc":false,"name":"ping pc peter","x":370,"y":500,"wires":[[],[],["c635e14d.bcf88"]]},{"id":"c635e14d.bcf88","type":"function","z":"5842cd1f.a817d4","name":"pc peter uit","func":"if ( msg.payload.code === 0 )\nwaarde = '[{\"obj\":\"test\",\"act\":\"On\"}]'\nelse \nwaarde = '[{\"obj\":\"test\",\"act\":\"Off\"}]'\n\nmsg.payload = {};\nmsg.payload.command = \"setuservariable\";\nmsg.payload.idx = 13;\nmsg.payload.value = waarde;\n\nreturn msg;","outputs":1,"noerr":0,"x":690,"y":500,"wires":[["91dcea2b.7bcf68","16dac8f3.d13ec7"]]},{"id":"16dac8f3.d13ec7","type":"mqtt out","z":"5842cd1f.a817d4","name":"naar domoticz","topic":"domoticz/in","qos":"","retain":"","broker":"a9c9d504.f88908","x":1220,"y":520,"wires":[]},{"id":"d5a6079e.f97ab8","type":"exec","z":"5842cd1f.a817d4","command":"sudo ping 192.168.20.42 -c1 -w1","addpay":false,"append":"","useSpawn":"true","timer":"","oldrc":false,"name":"ping mobiel peter","x":390,"y":600,"wires":[[],[],["32ed8fe8.c34d7"]]},{"id":"32ed8fe8.c34d7","type":"function","z":"5842cd1f.a817d4","name":"idx 1783","func":"if ( msg.payload.code === 0 )\nwaarde = '[{\"obj\":\"mobiel_peter\",\"act\":\"On\"}]'\nelse \nwaarde = '[{\"obj\":\"mobiel_peter\",\"act\":\"Off\"}]'\n\nmsg.payload = {};\nmsg.payload.command = \"setuservariable\";\nmsg.payload.idx = 13;\nmsg.payload.value = waarde;\n\nreturn msg;","outputs":1,"noerr":0,"x":680,"y":600,"wires":[["16dac8f3.d13ec7","91dcea2b.7bcf68"]]},{"id":"a9c9d504.f88908","type":"mqtt-broker","z":"","name":"mqttdomoticz","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]```


each subflow has this function with different values for "test" (this is the device)

if ( msg.payload.code === 0 )
waarde = '[{"obj":"test","act":"On"}]'
else 
waarde = '[{"obj":"test","act":"Off"}]'

msg.payload = {};
msg.payload.command = "setuservariable";
msg.payload.idx = 13;
msg.payload.value = waarde;

return msg;

![ping|690x124](upload://5TMD8zbSK3wxSTjpufTtvpnTBnO.png)

I am not really sure what you are trying to send here, but here is a mockup.

Use an array of IP's, split them, change the payload so that the ping can accept it and parse the results.

[{"id":"8f735e5.70109a","type":"function","z":"a390494e.288918","name":"Array of machines","func":"d = [\n    {ip:'10.0.0.6',object:'nodered',idx:1720},\n    {ip:'10.0.0.200',object:'nas',idx:13}\n    ]\nreturn {payload:d};","outputs":1,"noerr":0,"x":282,"y":216,"wires":[["8c5d42ab.fb5b8"]]},{"id":"be480017.4e62f","type":"inject","z":"a390494e.288918","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":108,"y":216,"wires":[["8f735e5.70109a"]]},{"id":"4415a65f.bc426","type":"debug","z":"a390494e.288918","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":770,"y":216,"wires":[]},{"id":"8c5d42ab.fb5b8","type":"split","z":"a390494e.288918","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":423,"y":216,"wires":[["f7d44c60.ccb07"]],"l":false},{"id":"f7d44c60.ccb07","type":"change","z":"a390494e.288918","name":"","rules":[{"t":"set","p":"object","pt":"msg","to":"payload.object","tot":"msg"},{"t":"set","p":"idx","pt":"msg","to":"payload.idx","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"payload.ip","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":471,"y":216,"wires":[["f3aa0303.ab72d"]],"l":false},{"id":"f3aa0303.ab72d","type":"exec","z":"a390494e.288918","command":"ping -c1 -w1","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":574,"y":216,"wires":[[],[],["92b1f34c.b8e708"]]},{"id":"92b1f34c.b8e708","type":"function","z":"a390494e.288918","name":"","func":"obj = msg.object\nidx = msg.idx\nc = msg.payload.code\ncommand = \"setuservariable\"\nact = (c===0) ? \"On\" :\"Off\"\nvalue = {obj:obj,act:act}\n\n\nreturn {payload:{idx:idx,command:command,value}} ","outputs":1,"noerr":0,"x":687,"y":216,"wires":[["4415a65f.bc426"]],"l":false}]

My ping flow works great, but each pingdevice (subflow) has his own message thats switches a device.
i want merging the results from the different ping (messages to one message.
Mu domoticz can receive one message with different on/off statements in it. (see start of my thread)

Ok misunderstanding. Take a look at the batch and join nodes (in that order). With the batch node you can group the messages and the join node will make one object.

yes, that sound better!

Your script is much better then mine, i had to add two nodes for each extra ping device
With your setup i can add all my ping devices in one node!
I changed your function a little bit so it makes a perfect message for my domoticz function

idx = msg.idx
cidx = 13
c = msg.payload.code
command = "setuservariable"
act = (c===0) ? "On" :"Off"
waarde = '[{"obj":"' + msg.object + '","act":"' + act + '"}]'
return {payload:{command:command,idx:cidx,value:waarde}}

This gives for each ping the following payload
command: "setuservariable"
idx: 13
value: "[{"obj":"mobiel_peter","act":"On"}]"

this fills a uservariable with idx=13 in domoticz that excuted a script in domoticz when changes...
That domoticz script can handle more device actions as part of value, see below

My wish is to make 1 message that combines messages like:
command: "setuservariable"
idx: 13
value: "[{"obj":"mobiel_peter_1","act":"On"},{"obj":"mobiel_peter_2","act":"Off"}]"

The ping script in node-red executes every 15 minutes, after the last device ping it can make the 1 message. My skills are so lousy, i only can change scripts ....

adjusted flow

[{"id":"5842cd1f.a817d4","type":"tab","label":"Pinger_service","disabled":false,"info":""},{"id":"91dcea2b.7bcf68","type":"debug","z":"5842cd1f.a817d4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1250,"y":160,"wires":[]},{"id":"87fb4485.7871b8","type":"inject","z":"5842cd1f.a817d4","name":"ping script","topic":"test","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":100,"y":340,"wires":[["ca205fcc.b7c2f","d5a6079e.f97ab8"]]},{"id":"ca205fcc.b7c2f","type":"exec","z":"5842cd1f.a817d4","command":"sudo ping 192.168.1.10 -c1 -w1","addpay":false,"append":"","useSpawn":"true","timer":"","oldrc":false,"name":"ping pc peter","x":330,"y":340,"wires":[[],[],["c635e14d.bcf88"]]},{"id":"c635e14d.bcf88","type":"function","z":"5842cd1f.a817d4","name":"pc peter uit","func":"if (context.get(\"Modem\") === \"\")\ncontext.set(\"Modem\",'testtest')\n\nif ( msg.payload.code === 0 )\nwaarde = '[{\"obj\":\"test\",\"act\":\"On\"}]'\nelse \nwaarde = '[{\"obj\":\"test\",\"act\":\"Off\"}]'\n\nmsg.payload = {};\nmsg.payload.command = \"setuservariable\";\nmsg.payload.idx = 13;\nmsg.payload.value = waarde;\nmsg.payload.test = context.get(\"Modem\");\n\nreturn msg;","outputs":1,"noerr":0,"x":570,"y":340,"wires":[["16dac8f3.d13ec7","91dcea2b.7bcf68"]]},{"id":"16dac8f3.d13ec7","type":"mqtt out","z":"5842cd1f.a817d4","name":"naar domoticz","topic":"domoticz/in","qos":"","retain":"","broker":"a9c9d504.f88908","x":1260,"y":300,"wires":[]},{"id":"d5a6079e.f97ab8","type":"exec","z":"5842cd1f.a817d4","command":"sudo ping 192.168.20.42 -c1 -w1","addpay":false,"append":"","useSpawn":"true","timer":"","oldrc":false,"name":"ping mobiel peter","x":350,"y":440,"wires":[[],[],["32ed8fe8.c34d7"]]},{"id":"32ed8fe8.c34d7","type":"function","z":"5842cd1f.a817d4","name":"idx 1783","func":"if (context.get(\"Modem\") === \"\")\ncontext.set(\"Modem\",'test')\n\n\nif ( msg.payload.code === 0 )\nwaarde = '[{\"obj\":\"mobiel_peter\",\"act\":\"On\"}]'\nelse \nwaarde = '[{\"obj\":\"mobiel_peter\",\"act\":\"Off\"}]'\n\nmsg.payload = {};\nmsg.payload.command = \"setuservariable\";\nmsg.payload.idx = 13;\nmsg.payload.value = waarde;\nmsg.payload.test = context.get(\"Modem\");\n\nreturn msg;\n","outputs":1,"noerr":0,"x":560,"y":440,"wires":[["16dac8f3.d13ec7","91dcea2b.7bcf68"]]},{"id":"364be31a.60989c","type":"function","z":"5842cd1f.a817d4","name":"Array of machines","func":"d = [\n    {ip:'192.168.1.10',object:'test',idx:1720},\n    {ip:'192.168.20.42',object:'mobiel_peter',idx:13}\n    ]\nreturn {payload:d};","outputs":1,"noerr":0,"x":350,"y":600,"wires":[["ff06620.68029a"]]},{"id":"992a91f3.98fe5","type":"inject","z":"5842cd1f.a817d4","name":"","topic":"","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":120,"y":540,"wires":[["364be31a.60989c"]]},{"id":"99610e6c.66f51","type":"debug","z":"5842cd1f.a817d4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1170,"y":620,"wires":[]},{"id":"ff06620.68029a","type":"split","z":"5842cd1f.a817d4","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":515,"y":600,"wires":[["21f8336f.b0286c"]],"l":false},{"id":"21f8336f.b0286c","type":"change","z":"5842cd1f.a817d4","name":"","rules":[{"t":"set","p":"object","pt":"msg","to":"payload.object","tot":"msg"},{"t":"set","p":"idx","pt":"msg","to":"payload.idx","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"payload.ip","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":619,"y":600,"wires":[["73c932bc.0f184c"]],"l":false},{"id":"73c932bc.0f184c","type":"exec","z":"5842cd1f.a817d4","command":"ping -c1 -w1","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":770,"y":600,"wires":[[],[],["7f96da5b.d04e34"]],"info":"command: \"setuservariable\"\r\nidx: 13\r\nvalue: \"[{\"obj\":\"mobiel_peter\",\"act\":\"On\"}]\""},{"id":"7f96da5b.d04e34","type":"function","z":"5842cd1f.a817d4","name":"","func":"idx = msg.idx\ncidx = 13\nc = msg.payload.code\ncommand = \"setuservariable\"\nact = (c===0) ? \"On\" :\"Off\"\nwaarde = '[{\"obj\":\"' + msg.object + '\",\"act\":\"' + act + '\"}]'\n\nreturn {payload:{command:command,idx:cidx,value:waarde}} ","outputs":1,"noerr":0,"x":955,"y":580,"wires":[["99610e6c.66f51","16dac8f3.d13ec7"]],"l":false,"info":"command: \"setuservariable\"\r\nidx: 13\r\nvalue: \"[{\"obj\":\"mobiel_peter\",\"act\":\"On\"}]\""},{"id":"b65401b6.52c62","type":"comment","z":"5842cd1f.a817d4","name":"better flow to ping more then one device","info":"","x":410,"y":540,"wires":[]},{"id":"24874e2.5f1cdb2","type":"comment","z":"5842cd1f.a817d4","name":"one way to ping, other flow is much better","info":"","x":300,"y":280,"wires":[]},{"id":"a9c9d504.f88908","type":"mqtt-broker","z":"","name":"mqttdomoticz","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}]type or paste code here

How many devices/responses do you expect ?

Instead of sending the full message, first gather all devices, then use the batch node (group by number of messages), join node merge them to 1 object, then add the idx,command etc.

about 30 devices

type or paste[{"id":"992a91f3.98fe5","type":"inject","z":"5842cd1f.a817d4","name":"","topic":"","payload":"","payloadType":"date","repeat":"900","crontab":"","once":false,"onceDelay":0.1,"x":130,"y":540,"wires":[["364be31a.60989c"]]},{"id":"364be31a.60989c","type":"function","z":"5842cd1f.a817d4","name":"Array of machines","func":"d = [\n    {ip:'192.168.1.10',object:'test',idx:1720},\n    {ip:'192.168.20.42',object:'mobiel_peter',idx:13},\n    {ip:'8.8.8.8',object:'dns_google',idx:13},\n    {ip:'192.168.20.80',object:'NAS_ip',idx:13},\n    {ip:'192.168.1.99 ',object:'Accesspoint_ip',idx:13},\n    {ip:'192.168.1.95',object:'switch_ip',idx:13},\n    {ip:'83.85.15.117',object:'Ziggo_ip_wan',idx:13},\n    {ip:'192.168.178.1',object:'Ziggo_ip_lan',idx:13},\n    {ip:'192.168.20.1',object:'edgerouter_ip',idx:13},\n    {ip:'192.168.20.28',object:'tv_studiekamer',idx:13},\n    {ip:'192.168.30.46',object:'tv_niels',idx:13},\n    {ip:'192.168.20.24',object:'tv_woonkamer',idx:13},\n    {ip:'192.168.30.45',object:'tv_sonia',idx:13},\n    {ip:'192.168.1.10',object:'pc-peter',idx:13},\n    {ip:'192.168.20.10',object:'pc_peter_laptop',idx:13},\n    {ip:'192.168.30.33',object:'pc_sonia_laptop',idx:13},\n    {ip:'192.168.30.32',object:'pc_niels_laptop',idx:13},\n    {ip:'192.168.30.34',object:'pc_niels_game',idx:13},\n    {ip:'192.168.178.12',object:'pc_niels_game_noodvz',idx:13},\n    {ip:'192.168.30.37',object:'pc_niels_game_wifi',idx:13},\n    {ip:'192.168.20.11',object:'tablet_peter',idx:13},\n    {ip:'192.168.30.36',object:'tablet_sonia',idx:13},\n    {ip:'192.168.20.44',object:'tablet_monique',idx:13},\n    {ip:'192.168.30.30',object:'ps4_lan_ip',idx:13},\n    {ip:'192.168.30.31',object:'wii_lan_ip',idx:13},\n    {ip:'192.168.20.22',object:'kodi',idx:13},\n    {ip:'192.168.30.43',object:'mobiel_niels',idx:13},\n    {ip:'192.168.30.42',object:'mobiel_sonia',idx:13},\n    {ip:'192.168.20.42',object:'mobiel_peter',idx:13},\n    {ip:'192.168.20.41',object:'mobiel_monique',idx:13},\n    ]\nreturn {payload:d};","outputs":1,"noerr":0,"x":350,"y":600,"wires":[["ff06620.68029a"]]},{"id":"ff06620.68029a","type":"split","z":"5842cd1f.a817d4","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":515,"y":600,"wires":[["21f8336f.b0286c"]],"l":false},{"id":"21f8336f.b0286c","type":"change","z":"5842cd1f.a817d4","name":"","rules":[{"t":"set","p":"object","pt":"msg","to":"payload.object","tot":"msg"},{"t":"set","p":"idx","pt":"msg","to":"payload.idx","tot":"msg"},{"t":"set","p":"payload","pt":"msg","to":"payload.ip","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":619,"y":600,"wires":[["73c932bc.0f184c"]],"l":false},{"id":"73c932bc.0f184c","type":"exec","z":"5842cd1f.a817d4","command":"ping -c1 -w1","addpay":true,"append":"","useSpawn":"false","timer":"","oldrc":false,"name":"","x":770,"y":600,"wires":[[],[],["7f96da5b.d04e34"]],"info":"command: \"setuservariable\"\r\nidx: 13\r\nvalue: \"[{\"obj\":\"mobiel_peter\",\"act\":\"On\"}]\""},{"id":"7f96da5b.d04e34","type":"function","z":"5842cd1f.a817d4","name":"","func":"idx = msg.idx\ncidx = 13\nc = msg.payload.code\ncommand = \"setuservariable\"\nact = (c===0) ? \"On\" :\"Off\"\nwaarde = '[{\"obj\":\"' + msg.object + '\",\"act\":\"' + act + '\"}]'\n\nreturn {payload:{command:command,idx:cidx,value:waarde}} ","outputs":1,"noerr":0,"x":955,"y":580,"wires":[["99610e6c.66f51","16dac8f3.d13ec7"]],"l":false,"info":"command: \"setuservariable\"\r\nidx: 13\r\nvalue: \"[{\"obj\":\"mobiel_peter\",\"act\":\"On\"}]\""},{"id":"99610e6c.66f51","type":"debug","z":"5842cd1f.a817d4","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","x":1170,"y":620,"wires":[]},{"id":"16dac8f3.d13ec7","type":"mqtt out","z":"5842cd1f.a817d4","name":"naar domoticz","topic":"domoticz/in","qos":"","retain":"","broker":"a9c9d504.f88908","x":1260,"y":300,"wires":[]},{"id":"a9c9d504.f88908","type":"mqtt-broker","z":"","name":"mqttdomoticz","broker":"localhost","port":"1883","clientid":"","usetls":false,"compatmode":true,"keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","closeTopic":"","closeQos":"0","closePayload":"","willTopic":"","willQos":"0","willPayload":""}] code here