Collecting multiple values - cflurin/node-red-contrib-dsm GitHub Wiki
Often you have to collect multiple values before you can control devices or generally go ahead with the flow. Although node-red offers several ways to achieve this task using the dsm node can be an alternativ solution.
Configuration
{
"currentState": "empty",
"states": {
"empty": {
"setData": "filling"
},
"filling": {
"setData": "filling",
"getData": "empty"
}
},
"data": {
"indoor": 0,
"outdoor": 0
},
"methods": {
"setData": "sm.data[msg.payload.name]=msg.payload.value;output=false;",
"getData": "msg.payload=RED.util.cloneMessage(sm.data);sm.data.indoor=0;sm.data.outdoor=0;output=true;"
}
}
Flow
[{"id":"48905e8f.4fe55","type":"inject","z":"57ef434a.058a6c","name":"indoor","topic":"setData","payload":"{\"name\": \"indoor\", \"value\": 20.5}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":4080,"wires":["c4e4f5d.9ae6508"](/cflurin/node-red-contrib-dsm/wiki/"c4e4f5d.9ae6508")},{"id":"a14c136c.5d301","type":"inject","z":"57ef434a.058a6c","name":"getData","topic":"getData","payload":"","payloadType":"date","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":4160,"wires":["c4e4f5d.9ae6508"](/cflurin/node-red-contrib-dsm/wiki/"c4e4f5d.9ae6508")},{"id":"c4e4f5d.9ae6508","type":"dsm","z":"57ef434a.058a6c","name":"multiple values","sm_config":"{\n \"currentState\": \"empty\",\n \"states\": {\n \"empty\": {\n \"setData\": \"filling\"\n },\n \"filling\": {\n \"setData\": \"filling\",\n \"getData\": \"empty\"\n }\n },\n \"data\": {\n \"indoor\": 0,\n \"outdoor\": 0\n },\n \"methods\": {\n \"setData\": \"sm.data[msg.payload.name]=msg.payload.value;output=false;\",\n \"getData\": \"msg.payload=RED.util.cloneMessage(sm.data);sm.data.indoor=0;sm.data.outdoor=0;output=true;\"\n }\n}\n","x":310,"y":4120,"wires":["838c9686.359db8"](/cflurin/node-red-contrib-dsm/wiki/"838c9686.359db8")},{"id":"3c5e9f76.98b9","type":"inject","z":"57ef434a.058a6c","name":"outdoor","topic":"setData","payload":"{\"name\": \"outdoor\", \"value\": 27.2}","payloadType":"json","repeat":"","crontab":"","once":false,"onceDelay":0.1,"x":90,"y":4120,"wires":["c4e4f5d.9ae6508"](/cflurin/node-red-contrib-dsm/wiki/"c4e4f5d.9ae6508")},{"id":"838c9686.359db8","type":"debug","z":"57ef434a.058a6c","name":"","active":true,"tosidebar":true,"console":false,"tostatus":true,"complete":"payload","x":490,"y":4120,"wires":[]}]