-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtag-processor.json
1 lines (1 loc) · 2.67 KB
/
tag-processor.json
1
[{"id":"ad50bdb522f4a3ea","type":"function","z":"6996a1850e9640cf","name":"Scan for missing tags","func":"const tag_path = 'sensors.tag'\n\nvar tag_messages = [];\nvar state_messages = [];\nvar tracked_tags = flow.get(\"tracked_tags\");\n\nconst dtnow = new Date()\nvar setflow = false\nfor (const key of Object.keys(tracked_tags)){\n // @ts-ignore\n if (((dtnow - tracked_tags[key]['datetime']) >= 30000 && tracked_tags[key]['state'] == 'seen')) {\n tracked_tags[key]['state'] = 'missing';\n setflow = true;\n // Only when we are travelling over 0.2 knots. Not with a bad fix and tied to shore.\n if (msg.payload >= 0.2) {\n var newmessage = {};\n newmessage.topic = `mob.${tracked_tags[key]['tag_name']}`\n newmessage.$source = 'tag-processor'\n var alert_message = `Person Overboard! Tag name: ${tracked_tags[key]['tag_name']}. Last known position: ` +\n `Lat: ${tracked_tags[key]['position']['latitude']}, ` +\n `Lon: ${tracked_tags[key]['position']['longitude']}`;\n newmessage.payload = {\n \"path\": newmessage.topic,\n \"method\": [\"visual\", \"sound\"],\n \"state\": \"emergency\",\n \"message\": alert_message,\n \"position\": tracked_tags[key]['position'] };\n newmessage.$source = 'tag-processor';\n tag_messages.push(newmessage);\n }\n var state_message = {};\n state_message.topic = `${tag_path}.${tracked_tags[key]['tag_name'].state}`;\n state_message.payload = 'missing';\n state_message.$source = 'tag-processor';\n state_messages.push(state_message)\n\n var next_point_message = {}\n next_point_message.$source = 'tag-processor'\n next_point_message.topic = 'navigation.course.nextPoint'\n next_point_message.payload = {\n 'position': tracked_tags[key]['position'],\n 'type': 'MOB'\n }\n next_point_message.$source = 'tag-processor';\n state_messages.push(next_point_message)\n }\n // @ts-ignore\n else if ((tracked_tags[key]['state'] == 'missing') && ((dtnow - tracked_tags[key]['datetime']) <= 10)) {\n // @ts-ignore\n var state_message = {};\n state_message.topic = `${tag_path}.${tracked_tags[key]['tag_name']}.state`;\n state_message.payload = 'seen';\n state_message.$source = 'tag-processor'\n state_messages.push(state_message);\n }\n }\n\nif (setflow){\n flow.set('tracked_tags', tracked_tags);\n }\n\nreturn [state_messages, tag_messages]","outputs":2,"timeout":0,"noerr":0,"initialize":"","finalize":"","libs":[],"x":560,"y":280,"wires":[["2923a0a5b4e7f232"],["17372134f139ab16"]]}]