Over the last week, I have seen a few posts where a need to monitor the incoming data and to react when it stops.
I have seen a few examples of how this is addressed, and I have taken them and wrapped them up in a cute little subflow.
This subflow Node has the following feature set.
- Settable Trigger Time
- Settable Topic
- Includes the last payload and it's time when the Watch Dog alerts you
- Passes all messages without modification
- Can be started in 2 ways
- Immediately
- After the first message
- Outputs via the following
- 2nd Output Pin
- Or UDP Broadcast
2nd Output Pin
{
payload: {
"lastPayload": Unknown,
"lastTopic": Unknown,
"lastPayloadTime": Number
},
topic: string(as set on the node)
}
UDP Broadcast
{
"lastPayload": Unknown,
"lastTopic": Unknown,
"lastPayloadTime": Number,
"topic": string(as set on the node)
}
Anyway - it's nothing major, but maybe helpful for those that need this type of monitoring.
this wasn't a full project - just something I wanted to put together for re-use and fun
[{"id":"b17c7f38b23fb4de","type":"subflow","name":"Watch Dog","info":"","category":"","in":[{"x":40,"y":340,"wires":[{"id":"1b5262aaeb390dae"},{"id":"d83bcd9b3298eb9c"}]}],"out":[{"x":820,"y":400,"wires":[{"id":"9c0a44dc31ef8539","port":0}]},{"x":730,"y":540,"wires":[{"id":"9dd2a8d18e1f2c04","port":0}]}],"env":[{"name":"TOPIC","type":"str","value":"","ui":{"icon":"font-awesome/fa-tag","label":{"en-US":"Topic"},"type":"input","opts":{"types":["str"]}}},{"name":"NOW","type":"bool","value":"false","ui":{"icon":"font-awesome/fa-play","label":{"en-US":"Start immediately"},"type":"checkbox"}},{"name":"TIME","type":"num","value":"30000","ui":{"icon":"font-awesome/fa-clock-o","label":{"en-US":"Threshold (MS)"},"type":"input","opts":{"types":["num"]}}},{"name":"ACTION","type":"str","value":"PIN","ui":{"icon":"font-awesome/fa-gears","label":{"en-US":"Action"},"type":"select","opts":{"opts":[{"l":{"en-US":"2nd Pin Output"},"v":"PIN"},{"l":{"en-US":"UDP Broadcast"},"v":"UDP"}]}}},{"name":"BAddress","type":"str","value":"","ui":{"icon":"font-awesome/fa-server","label":{"en-US":"Broadcast Address"},"type":"input","opts":{"types":["str"]}}},{"name":"BPort","type":"num","value":"","ui":{"icon":"font-awesome/fa-plug","label":{"en-US":"Broadcast Port"},"type":"input","opts":{"types":["num"]}}}],"meta":{},"color":"#3FADB5","outputLabels":["Pass Through","Action"],"icon":"font-awesome/fa-user-secret","status":{"x":1120,"y":80,"wires":[{"id":"45e8d783f6c8e214","port":0},{"id":"b07d1819ab4a1950","port":0},{"id":"087a8f75fbb904fe","port":0}]}},{"id":"502e5cc53e846971","type":"inject","z":"b17c7f38b23fb4de","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":true,"onceDelay":"0.1","topic":"","payload":"NONE: Immediate Start","payloadType":"str","x":150,"y":120,"wires":[["9568cfafa35e3f22","69becc8e19e43e71"]]},{"id":"94de3913649870b1","type":"delay","z":"b17c7f38b23fb4de","name":"","pauseType":"delayv","timeout":"0","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":820,"y":260,"wires":[["087a8f75fbb904fe","46e9c074762666e1"]]},{"id":"9568cfafa35e3f22","type":"switch","z":"b17c7f38b23fb4de","name":"","property":"NOW","propertyType":"env","rules":[{"t":"false"},{"t":"true"}],"checkall":"true","repair":false,"outputs":2,"x":390,"y":120,"wires":[["923c5f88313eb057"],["3123e89c81a2c842","81b7e16132e8410d"]]},{"id":"3123e89c81a2c842","type":"change","z":"b17c7f38b23fb4de","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"fill\":\"green\",\"shape\":\"dot\",\"text\":\"Monitoring\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":620,"y":120,"wires":[["45e8d783f6c8e214"]]},{"id":"923c5f88313eb057","type":"change","z":"b17c7f38b23fb4de","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"fill\":\"yellow\",\"shape\":\"ring\",\"text\":\"Waiting To Start\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":620,"y":80,"wires":[["b07d1819ab4a1950"]]},{"id":"42a2aca8fbced4dd","type":"change","z":"b17c7f38b23fb4de","name":"","rules":[{"t":"set","p":"reset","pt":"msg","to":"true","tot":"bool"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":260,"wires":[["3123e89c81a2c842","94de3913649870b1"]]},{"id":"d1f13e8250d5817e","type":"delay","z":"b17c7f38b23fb4de","name":"","pauseType":"delay","timeout":"5","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":410,"y":340,"wires":[["81b7e16132e8410d"]]},{"id":"81b7e16132e8410d","type":"change","z":"b17c7f38b23fb4de","name":"","rules":[{"t":"set","p":"delay","pt":"msg","to":"$number($env('TIME'))","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":640,"y":340,"wires":[["94de3913649870b1"]]},{"id":"087a8f75fbb904fe","type":"change","z":"b17c7f38b23fb4de","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"{\"fill\":\"red\",\"shape\":\"dot\",\"text\":\"Triggered\"}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":980,"y":200,"wires":[[]]},{"id":"46e9c074762666e1","type":"link out","z":"b17c7f38b23fb4de","name":"link out 18","mode":"link","links":["0d6dfac1af842c67"],"x":945,"y":260,"wires":[]},{"id":"0d6dfac1af842c67","type":"link in","z":"b17c7f38b23fb4de","name":"link in 10","links":["46e9c074762666e1"],"x":105,"y":560,"wires":[["3a6d70c83f7464fe"]]},{"id":"3a6d70c83f7464fe","type":"switch","z":"b17c7f38b23fb4de","name":"","property":"ACTION","propertyType":"env","rules":[{"t":"eq","v":"PIN","vt":"str"},{"t":"else"}],"checkall":"true","repair":false,"outputs":2,"x":230,"y":560,"wires":[["9dd2a8d18e1f2c04"],["7f73a3e925609f12"]]},{"id":"69becc8e19e43e71","type":"change","z":"b17c7f38b23fb4de","name":"","rules":[{"t":"set","p":"lastPayload","pt":"flow","to":"payload","tot":"msg","dc":true},{"t":"set","p":"lastTopic","pt":"flow","to":"topic","tot":"msg","dc":true},{"t":"set","p":"lastPayloadTime","pt":"flow","to":"","tot":"date"}],"action":"","property":"","from":"","to":"","reg":false,"x":380,"y":200,"wires":[[]]},{"id":"d83bcd9b3298eb9c","type":"function","z":"b17c7f38b23fb4de","name":"Deep Copy MSG","func":"return {\n msg:RED.util.cloneMessage(msg)\n}","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":190,"y":340,"wires":[["42a2aca8fbced4dd","d1f13e8250d5817e"]]},{"id":"9dd2a8d18e1f2c04","type":"function","z":"b17c7f38b23fb4de","name":"Notification","func":"return {\n payload: {\n lastPayload: flow.get('lastPayload'),\n lastTopic: flow.get('lastTopic'),\n lastPayloadTime: flow.get('lastPayloadTime')\n },\n topic: env.get('TOPIC'),\n}","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":450,"y":540,"wires":[[]]},{"id":"7f73a3e925609f12","type":"function","z":"b17c7f38b23fb4de","name":"Notification","func":"return {\n payload: JSON.stringify({\n lastPayload: flow.get('lastPayload'),\n lastTopic: flow.get('lastTopic'),\n lastPayloadTime: flow.get('lastPayloadTime'),\n topic: env.get('TOPIC')\n }),\n ip: env.get('BAddress'),\n port: env.get('BPort')\n}","outputs":1,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":450,"y":600,"wires":[["a8c37c11cbb16ba2"]]},{"id":"a8c37c11cbb16ba2","type":"udp out","z":"b17c7f38b23fb4de","name":"","addr":"","iface":"","port":"","ipv":"udp4","outport":"","base64":false,"multicast":"broad","x":730,"y":600,"wires":[]},{"id":"45e8d783f6c8e214","type":"junction","z":"b17c7f38b23fb4de","x":780,"y":120,"wires":[[]]},{"id":"b07d1819ab4a1950","type":"junction","z":"b17c7f38b23fb4de","x":780,"y":80,"wires":[[]]},{"id":"9c0a44dc31ef8539","type":"junction","z":"b17c7f38b23fb4de","x":200,"y":400,"wires":[["69becc8e19e43e71"]]},{"id":"1b5262aaeb390dae","type":"junction","z":"b17c7f38b23fb4de","x":120,"y":400,"wires":[["9c0a44dc31ef8539"]]},{"id":"12085eb00806f5fb","type":"subflow:b17c7f38b23fb4de","z":"7de832c8bdc79726","name":"","x":410,"y":260,"wires":[[],[]]}]