Mayflower Autonomous Ship
Monitor operations aboard the Mayflower Autonomous Ship, an AI-powered marine research vessel gathering critical ocean data with a nice, rich real-time MQTT dataset and a most gracious compendium of publically-consumable information by Mr. James Sutton of IBM, available here: https://jpwsutton.github.io/mayflower_autonomous_ship_data/
Designed on Pi4 @ 4GB to run 24/7 in a kiosk, it demands 40%-60% CPU and ~1GB of RAM as map tracks fill up. The data logging feature is write-intensive and will soon wear out an SD card, so I have an externally-powered SSD and minimize data storage by suspending the log if MQTT disconnects.
This project began with American bus lines and British ferry boats found on a public MQTT server, a curiously-detailed telemetry set which I developed a dashboard for to investigate why this vessel made its landing only in Turnchapel Wharf after repetitive cruises.
I slip in and revise the code from time to time as I discover errors and attempt improvements; I'm a hack at Javascript, so if there's something humorous about these method(s), enjoy some levity!
[{"id":"723a850f03705f70","type":"tab","label":"MAS400","disabled":false,"info":"","env":[]},{"id":"f0f6caf54c075a94","type":"group","z":"723a850f03705f70","name":"Navigation","style":{"fill":"","fill-opacity":"0.33","label":true,"color":"#000000"},"nodes":["f2e5df03442864f3","3dafb266bfc33096","0c7d9f8da552d721","cbecb927e996ad01","2880ccc846f2b19a","0ea04183ec9f7fd3","b454993e3f99f668","db733d76c650e213","1c28a4d47d92617b","b96cc28319a832c8","1727d5351040a8af","473860ab77e94487","f91234c1e07b5ee9","7a1c70a34c93403b","c3dd222cdd304a9f","8a188249be3fe3c9","ba1be765ac58a545","f4c79784136bebc2","ab9f7b41121658b8","0eaebfc3759251df","c34348bf198286b5","0f81065653f51533","68b2ca9799d01f60","4d175d726b015abf"],"x":604,"y":569,"w":542,"h":452},{"id":"03810b4592173062","type":"group","z":"723a850f03705f70","name":"Multimedia","style":{"fill-opacity":"0.5","label":true,"color":"#000000"},"nodes":["eb1e330d050a2573","53fc7ea5637889bb","53fc7ea5637889bb","5a2629061bfccb0f","836fc6f20df974d5","5846da495b8549b7","ba1d15ae059c0c31","449e7f8e75426203","36f546f50ab444a7","ee132bd77b2a94a7","6f7e81b6279bfddd","39db2e8855b6b74a","67b8d6f883b73d69","1e1707984d1c29ea","efe96f4596300a73","9b2b5e8efd3a7524","9bfa41cc56d04d49","6dc3cc279a7a5fb5","7fa4a4e289b6b740","b78112a6001422a0","bbb47b35b772e288","f8b797b549a91cc6","ccadf2d86de0d770","80385854e8c25d86","08ff58e1841a957f"],"x":324,"y":19,"w":472,"h":512,"info":"**Audio-visual UI elements** \n\nIt seemed proper to place these types of things in their own group."},{"id":"693f162dbf677324","type":"group","z":"723a850f03705f70","name":"Hazard Identification System","style":{"stroke":"#7f7f7f","fill":"","label":true,"color":"#000000","fill-opacity":"0.33"},"nodes":["af97e83c723692a9","6a74725f88e29988","be088c61ac151896","aa359da50e8cee46","3c15b1124590609b","99694684ca63166e","50584460d47f6fd8","6a373ee33ea68fc4","937946ced567d673","3d24f0f24255a581","60c3bc3a769f090c","ee90af320510dac9","18d7fae9856cc12f","fef4ead37857648c","dcd16115ec7bcf9f","fff6b1a1425fa368","6992ef79e2df301f","40541555820381eb","d3f1f44b210f1f8b"],"x":534,"y":1669,"w":712,"h":342},{"id":"a1fbbb2c794ac7c2","type":"group","z":"723a850f03705f70","name":"Condition","style":{"label":true,"color":"#000000","fill":"","fill-opacity":"0.5"},"nodes":["8e1303931dec7873","eed36892c1cdd78b","2e95772f341b7f87","0a31c45f55ed6146","05268d12801d1dc8","8434f2d8ae505c54","d5a905f64427c43e","8423a005f1d484df","e2c9bf3d0aecedad","d95eb1cd34ece5a4","c2f91a5c9324c430","b96ed3ba1795e421","76f5e7df9d8d7f79","00d6b8da321e8ab6","e902b33c8764bc9a","a6ce94df2ac9f2ad","392cc957659bc318","9ae49b3220d26d38","f481e904f3c00923","c16f132fef75cf7e","910987f3b400ed74","1388b8a5a621f2dd","485b4ccb55cf1374","522e202ae4c42175"],"x":824,"y":19,"w":532,"h":532},{"id":"b5598464a148aa0e","type":"group","z":"723a850f03705f70","name":"Meteorology","style":{"label":true,"color":"#000000","fill":"","fill-opacity":"0.33"},"nodes":["1fc671b7018b4510","d56e737dac6a04aa","c38d898d15587254","036e63eec57e3816","491c6228c2642eb6","220209abd90ce904","6da2a2fe7ef67d1c","8a985bdc52d0e024","c16f7e099155e6f2","2def4bce8d2970bd","81385f5602613f28"],"x":1164,"y":569,"w":452,"h":222},{"id":"76fcb5288eb1cd8a","type":"group","z":"723a850f03705f70","name":"Local CPU Telemetry","style":{"label":true,"color":"#000000"},"nodes":["646a4ce2fa197521","94c1424c14bca0f6","bf4b32a1fbd2ec38","08384bed2cc43501","1dfed45f55d3d772","5f9a24e0468796be","10cfdd6bd56bca72","d93874fd5c600f8b"],"x":534,"y":2549,"w":692,"h":152,"info":"**RasPi Telemetry** \n\nNot actually a part of the MAS400 project, this code merely reports the condition of the Raspberry Pi being used for my MAS400 ECDIS."},{"id":"13cba7e2abe41be3","type":"group","z":"723a850f03705f70","name":"Multi-point MQTT Feeds","style":{"label":true,"color":"#000000","fill-opacity":"0.33"},"nodes":["ae9b10ca52f13bdd","1a21761f7a85df24","b5c6298851890342","457410faa30fbad6","63ed867f740aca8d","8b9a719230cb1251","cf0652d131e29887","550e42e551ee6bbe","6a15d91f5d144c03","031f44ea4d33b28f","162c1b65c4067a39"],"x":24,"y":59,"w":272,"h":322,"info":"**Discrete topic subscriptions and processing links.** \n\nThis might be \"going overboard\" on some programming level I'm not aware of, but the extended hierarchy better helps me track message sourcing and routing while I study Node-RED and MQTT."},{"id":"575f2d95663315b7","type":"group","z":"723a850f03705f70","name":"Science Pod","style":{"label":true,"color":"#000000"},"nodes":["f7d4705ba1e96cb9","3c761eb551fbf89d","42af9716e3f51569","8c40765c42ef995e","6ce9808d52343868","7325276bb27990ea","14c47183b929c234","adc7155754f157ce","63e9e3082487d97d","7e5e66f941bb834e","b2879fcfb194bf45","05a188e6b8a2a396","2adb9cdbaadf13d4","c9cd81d0694043bb","30ea5cd6d463fd23","a30e14472a810836","8934b5d021033d55","73a87c37f30040c1","f9ec7e6df6cd6981","9a9385ba7b946036","9d57bfc92bfda3f9","2ddb6e252eb92315","8a19d7fd3a31f057","7d72c3dade5954f7","9b44b436dbd35e69","64a8176b08ebd618","da8af06744375ba5","903d55feaedffdb1","718c390de1dc7611","e95abfa2cf66cfd8","fffb53301b7b78ae","0cc98cdd1f1a4f36","6efcfd92c1767119","20c44b453080a64a","f804f9ee89420800"],"x":534,"y":1059,"w":702,"h":592},{"id":"24a68d6833825b17","type":"group","z":"723a850f03705f70","name":"Conductivity, Temperature, and Depth (CTD)","style":{"label":true,"color":"#000000"},"nodes":["b4f4d84e006a0ff5","55bfcb19f0eadaeb","e4c1b8473ccac4df","7215cab95f4b1253","977d7ffd0ec873af","70ae7622a4cfd47a","4ffeeaec66148398","6f2a43b4911bddfe","6e5a4105d3e8c62d","fee15aeec1d23d8a","991a75060cf52191"],"x":1164,"y":809,"w":452,"h":232},{"id":"40d12ce7239ed051","type":"group","z":"723a850f03705f70","name":"Oxygen","style":{"label":true,"color":"#000000"},"nodes":["c5f0c281539f948f","3433d031a24eb308","654f0c905a7c7f76","c2bc6a55783ec102","ad14a4e6010c36c7","18b5ce9318ccf98e","ab4cc294ad07f393","22b7a98945533917","63755cb01771b633","5537d594d77a90c5","39215d73fd7892b3","118f06c465ef5d87"],"x":1264,"y":1379,"w":472,"h":302},{"id":"df021e7f9c11434c","type":"group","z":"723a850f03705f70","name":"etsMasPi 1-4","style":{"fill":"","fill-opacity":"0.34","label":true,"color":"#000000"},"nodes":["7497921e.79fa2c","e8016041.eca6c","599f478a.ba57f8","ca31bcf7.9556","22e61b63.6e6dd4","7980c723.34a8d8","ec342f6e.b988d","b4d54643.0ef488","8c0d0baa.4c90a8","cd9bb3ea.ba28e","7762c8e.b9f2338","3ac6ede1.1b68f2","ee593aae1a3a8e92","ca00ee395f70e32b","7cc36f792be4cec5","43a178fad536aa62","ddadbaaaf28f0702","8f8ed2737ba0a977","e40dbbff9e247eaa","44ad0d1694b2320b","11e04ab5848925c1","9a597807131908e4","b48e7e9549e09cbd","42e1fc378068a668","32a40b99881dd96c","321872d735333d7b","f90aca2e9628c0f9","79078a6b4b496937","d1ec74e9b8a034c9","0d29d7aa1a0ffa0b","625e46bc64be7127","513542dc0e86934c","d8c1eee878bee35a","c1d2ec7df051254f","82b2ba739e30624e","3c3a07eaf15358eb","97f2b6682432315e","7af8a8f5572f3a18","bb11da1bb81e0e16","25d2edc972b16acd","4db0a2be4ad8e6f6","1e0ef90cd9c871b2","ed9439567d528ae9","4f01731ef6f06b05","52d156fe04c785c9","d5e634f71d21770a","821ac293bb4424b4","5ee626d4286deb5c","3de2e218491cca39","12d1519b46dcf437","08525443ce5a87fc","8531b0fefc308360","848965f4ac8e4f6f","67a1fc967a871fdc","0c293f01b121cbd6","3905758b4728e741","fc14a28dc53a8ac2","ee43616747db476e","dbbced2967e891ab","cb5995699fa307bf","0af6d094acfa4258"],"x":34,"y":749,"w":472,"h":1722},{"id":"98311f6f4a71c253","type":"group","z":"723a850f03705f70","name":"JSON Logging","style":{"label":true,"color":"#000000"},"nodes":["ecd0e7532513094f","f5c354f0e9534f2d","b4542e3ebcb2838b","9216ee322dbb8880","eb89cb9216b25a49","a1efcddab613b526","4cf50a94dc15150b","0a1f83d36684bb85","78070ea13b1222f0","7d98493b02e5e93f","989371046986fae3","6ceea8a57434c1c2","65f4623a630b5c3a","3a7b98234da93ad8","85894f9f69f06550","f807a5ab375f5472","d8a1bf5d6a32c691","efc2cf70f35c7183","fb9cc7df3d49177a","51eed9e924cdce87","7de3ed55f7339121","32af042069614b76","db074d5ae07fe758","f30dd169e7f2c4f5","ad9b7901f88a37b9","14d5cffdedc533ac","3b94aaf22f2b42a9","367fc2cb2bc8f851","6e110d1007c4155e","5307c263876dc53d"],"x":534,"y":2029,"w":552,"h":502},{"id":"d5142240213ef174","type":"group","z":"723a850f03705f70","name":"Fluorometer","style":{"label":true,"color":"#000000"},"nodes":["e8472da27f2b4e27","b6581cc1addd2a00","80da678c71700f3d","29b8608e6a3f8f32","ac7e0d75c01f375c","b4d2744df52c75ad","a668915340ea6869","116560e0644c865f","0225ea13c8cdaa91"],"x":1264,"y":1059,"w":522,"h":297},{"id":"5ce273ee75ad31e7","type":"group","z":"723a850f03705f70","name":"AIS Radar","style":{"label":true,"color":"#000000"},"nodes":["7f31d818603fabae","6f2772d8b2d171e4","8034aaa7bd4653c9","732c05fe05638238","928fba2f05e06085","9b9a0dc0764f0718","08d033e89bff5739","9e9ca0b9bf09c459","6e3abd28838fa15b"],"x":34,"y":559,"w":342,"h":152},{"id":"5a2629061bfccb0f","type":"join","z":"723a850f03705f70","g":"03810b4592173062","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"5","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":615,"y":270,"wires":[["836fc6f20df974d5","08ff58e1841a957f","1e1707984d1c29ea"]],"l":false},{"id":"0c7d9f8da552d721","type":"change","z":"723a850f03705f70","g":"f0f6caf54c075a94","name":"Hi-Lo","rules":[{"t":"set","p":"highlimit","pt":"msg","to":"20","tot":"num"},{"t":"set","p":"lowlimit","pt":"msg","to":"-20","tot":"num"},{"t":"set","p":"setpoint","pt":"msg","to":"-0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":845,"y":700,"wires":[["cbecb927e996ad01"]],"l":false},{"id":"8e1303931dec7873","type":"switch","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"Status","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"shipConnectivity","vt":"str"},{"t":"eq","v":"date","vt":"str"},{"t":"eq","v":"shipStatus","vt":"str"},{"t":"eq","v":"solarChargerPowerWatts","vt":"str"},{"t":"eq","v":"batteryVoltageTenths","vt":"str"},{"t":"eq","v":"batteryCapacityPct","vt":"str"}],"checkall":"true","repair":false,"outputs":6,"x":975,"y":290,"wires":[["2e95772f341b7f87","d95eb1cd34ece5a4","f481e904f3c00923"],["c2f91a5c9324c430"],["05268d12801d1dc8"],["d5a905f64427c43e"],["8434f2d8ae505c54"],["e2c9bf3d0aecedad"]],"l":false},{"id":"eed36892c1cdd78b","type":"link in","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"Status In","links":["63ed867f740aca8d"],"x":865,"y":370,"wires":[["b96ed3ba1795e421","c16f132fef75cf7e"]]},{"id":"1fc671b7018b4510","type":"ui_text","z":"723a850f03705f70","g":"b5598464a148aa0e","group":"1ae86b42.0ff1c5","order":4,"width":5,"height":1,"name":"Weather","label":"<font size=1>Weather: </font>","format":"{{msg.payload}}","layout":"row-left","className":"","x":1460,"y":610,"wires":[]},{"id":"d56e737dac6a04aa","type":"ui_text","z":"723a850f03705f70","g":"b5598464a148aa0e","group":"1ae86b42.0ff1c5","order":5,"width":5,"height":1,"name":"Weather Phrase","label":"<font size=1>Weather Phrase: </font>","format":"{{msg.payload}}","layout":"row-left","className":"","x":1480,"y":640,"wires":[]},{"id":"2e95772f341b7f87","type":"ui_led","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","order":1,"group":"bbf266696379cab5","width":2,"height":2,"label":"","labelPlacement":"right","labelAlignment":"left","colorForValue":[{"color":"#00ff00","value":"Connected","valueType":"str"},{"color":"#ffff00","value":"Disconnected","valueType":"str"},{"color":"#ff0000","value":"Lost","valueType":"str"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Connectivity","x":1140,"y":170,"wires":[]},{"id":"0a31c45f55ed6146","type":"ui_text","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","group":"bbf266696379cab5","order":5,"width":4,"height":1,"name":"UTC","label":"<font size=1>UTC: </font>","format":"<font size=1>{{msg.payload}}</font>","layout":"row-left","className":"","x":1170,"y":230,"wires":[]},{"id":"eb1e330d050a2573","type":"ui_template","z":"723a850f03705f70","g":"03810b4592173062","group":"1ae86b42.0ff1c5","name":"Camera Viewport","order":3,"width":10,"height":5,"format":"<iframe width=\"480\" height=\"270\" src=\"https://www.ustream.tv/embed/24088054\" scrolling=\"no\" allowfullscreen webkitallowfullscreen frameborder=\"0\" style=\"border: 0 none transparent;\"></iframe>","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","className":"","x":620,"y":100,"wires":[[]],"info":"Just one solution for getting video embedded into the Node-RED dashboard."},{"id":"39db2e8855b6b74a","type":"ui_template","z":"723a850f03705f70","g":"03810b4592173062","group":"1ae86b42.0ff1c5","name":"Custom Dashboard CSS","order":1,"width":0,"height":0,"format":"<style>\nroot, a, button, p, div {-webkit-user-select: none !important;}\nbody {\n //background: -webkit-linear-gradient(\n //130deg,\n //#004545 0%,\n //#125aa5 50%,\n //#b800e9 100%\n //);\n //-webkit-touch-callout: none !important;\n //background-image: url(\"/MAS400-6006.jpg\");\n //background-repeat: no-repeat;\n //background-position: right top;\n //background-size: cover;\n}\n\nbody.nr-dashboard-theme md-toolbar,\nbody.nr-dashboard-theme md-content md-card {background-color: transparent !important; color: #FFFFFF;}\nui-card-panel {background-color: rgba(32,32,32,0.66) !important;border-radius: 10px !important;}\n.md-card.md-default-theme, md-card {border-radius: 5px;}\n.nr-dashboard-switch.ng-scope {background-color: rgba(255,255,255,.2) !important;}\n.nr-dashboard-switch.ng-scope:hover {background-color: rgba(255,255,255,.5) !important;}\n.nr-dashboard-theme .nr-dashboard-button .md-button {background-color: rgba(255,255,255,.2);}\n.md-button {border-radius: 10px;}\n.nr-dashboard-cardpanel layout-column \n {\n background-color: rgba(255,255,255,0.2) !important;\n background-color: transparent !important;\n border-radius: 10px !important;\n }\n.nr-dashboard-theme ui-card-panel {border: none;}\n.nr-dashboard-template {overflow-y: visible;}\n.nr-dashboard-theme md-content md-card {background-color: transparent !important;}\n.nr-dashboard-theme ui-card-panel p.nr-dashboard-cardtitle {color: rgba(255, 255, 255, 0.5);}\n</style>\n\n<script>\ndocument.ontouchmove = function (e) {e.preventDefault();}\n</script>","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":false,"templateScope":"global","className":"","x":660,"y":60,"wires":[[]]},{"id":"05268d12801d1dc8","type":"ui_multistate_switch","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"Operational Status","group":"be0e67b7.090858","order":1,"width":13,"height":1,"label":"","stateField":"payload","enableField":"enable","passthroughField":"passthrough","inputMsgField":"inputmsg","rounded":true,"useThemeColors":false,"hideSelectedLabel":false,"multilineLabel":false,"passThrough":"never","inputMsg":"all","userInput":"enabled_show","options":[{"label":"<font size=2>Autonomous</font>","value":"Autonomous","valueType":"str","color":"#64ff61"},{"label":"<font size=2>Standby</font>","value":"Standby","valueType":"str","color":"#004f99"},{"label":"<font size=2>Active</font>","value":"Active","valueType":"str","color":"#cccc00"},{"label":"<font size=2>Startup</font>","value":"Start up in progress","valueType":"str","color":"#ff33cc"},{"label":"<font size=2>Remote</font>","value":"Remote Control","valueType":"str","color":"#cc6600"}],"topic":"","x":1160,"y":260,"wires":[[]]},{"id":"53fc7ea5637889bb","type":"ui_multistate_switch","z":"723a850f03705f70","g":"03810b4592173062","name":"Camera Select","group":"1ae86b42.0ff1c5","order":2,"width":10,"height":1,"label":"","stateField":"template","enableField":"enable","passthroughField":"passthrough","inputMsgField":"inputmsg","rounded":true,"useThemeColors":true,"hideSelectedLabel":false,"multilineLabel":false,"passThrough":"never","inputMsg":"all","userInput":"enabled_show","options":[{"label":"<font size=2>PTZ</font>","value":"<iframe width=\"480\" height=\"270\" src=\"https://www.ustream.tv/embed/24088054\" scrolling=\"no\" allowfullscreen webkitallowfullscreen frameborder=\"0\" style=\"border: 0 none transparent;\"></iframe>","valueType":"str","color":"#009933"},{"label":"<font size=2>Stern</font>","value":"<iframe width=\"480\" height=\"270\" src=\"https://www.ustream.tv/embed/24088055\" scrolling=\"no\" allowfullscreen webkitallowfullscreen frameborder=\"0\" style=\"border: 0 none transparent;\"></iframe>","valueType":"str","color":"#999999"},{"label":"<font size=2>Bow</font>","value":"<iframe width=\"480\" height=\"270\" src=\"https://www.ustream.tv/embed/24088056\" scrolling=\"no\" allowfullscreen webkitallowfullscreen frameborder=\"0\" style=\"border: 0 none transparent;\"></iframe>","valueType":"str","color":"#ff6666"},{"label":"<font size=2>Starboard</font>","value":"<iframe width=\"480\" height=\"270\" src=\"https://www.ustream.tv/embed/24088057\" scrolling=\"no\" allowfullscreen webkitallowfullscreen frameborder=\"0\" style=\"border: 0 none transparent;\"></iframe>","valueType":"str","color":"#009999"},{"label":"<font size=2>Multiview</font>","value":"<iframe width=\"480\" height=\"270\" src=\"https://www.ustream.tv/embed/24088058\" scrolling=\"no\" allowfullscreen webkitallowfullscreen frameborder=\"0\" style=\"border: 0 none transparent;\"></iframe>","valueType":"str","color":"#cccc00"}],"topic":"","x":430,"y":100,"wires":[["eb1e330d050a2573"]]},{"id":"2880ccc846f2b19a","type":"calculator","z":"723a850f03705f70","g":"f0f6caf54c075a94","name":"Rudder Divisor","inputMsgField":"payload","outputMsgField":"payload","operation":"div","constant":"-28.6","round":true,"decimals":"1","x":845,"y":730,"wires":[["3dafb266bfc33096"]],"l":false},{"id":"0ea04183ec9f7fd3","type":"calculator","z":"723a850f03705f70","g":"f0f6caf54c075a94","name":"Rudder Divisor","inputMsgField":"payload","outputMsgField":"payload","operation":"div","constant":"10","round":true,"decimals":"1","x":845,"y":670,"wires":[["1727d5351040a8af"]],"l":false},{"id":"b454993e3f99f668","type":"calculator","z":"723a850f03705f70","g":"f0f6caf54c075a94","name":"m to fathoms","inputMsgField":"payload","outputMsgField":"payload","operation":"mult","constant":"0.54680665","round":true,"decimals":0,"x":845,"y":820,"wires":[["b96cc28319a832c8"]],"l":false},{"id":"db733d76c650e213","type":"calculator","z":"723a850f03705f70","g":"f0f6caf54c075a94","name":"kph conv","inputMsgField":"payload","outputMsgField":"payload","operation":"mult","constant":"1.9438444924406","round":false,"decimals":"0","x":845,"y":640,"wires":[["1c28a4d47d92617b"]],"l":false},{"id":"8434f2d8ae505c54","type":"calculator","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"","inputMsgField":"payload","outputMsgField":"payload","operation":"div","constant":"10","round":true,"decimals":0,"x":1085,"y":360,"wires":[["8423a005f1d484df"]],"l":false},{"id":"cbecb927e996ad01","type":"ui_lineargauge","z":"723a850f03705f70","g":"f0f6caf54c075a94","group":"2ad9686.f1b5d98","order":3,"width":1,"height":4,"name":"<font size=2>Pitch</font>","colorLowArea":"#808080","colorMidArea":"#80c0ff","colorHighArea":"#808080","unit":"°","x":990,"y":720,"wires":[]},{"id":"f2e5df03442864f3","type":"ui_artlessgauge","z":"723a850f03705f70","g":"f0f6caf54c075a94","group":"2ad9686.f1b5d98","order":7,"width":3,"height":3,"name":"Roll","icon":"","label":"Roll","unit":"°","layout":"radial","decimals":0,"differential":true,"minmax":true,"colorTrack":"#555555","style":"2,1","colorFromTheme":true,"property":"payload","secondary":"secondary","inline":true,"animate":true,"sectors":[{"val":-30,"col":"#ff8080","t":"min","dot":0},{"val":0,"col":"#80ff80","t":"sec","dot":0},{"val":30,"col":"#80ff80","t":"max","dot":0}],"lineWidth":"7","bgcolorFromTheme":true,"diffCenter":"0","x":930,"y":780,"wires":[]},{"id":"3dafb266bfc33096","type":"ui_artlessgauge","z":"723a850f03705f70","g":"f0f6caf54c075a94","group":"2ad9686.f1b5d98","order":2,"width":3,"height":1,"name":"Yaw","icon":"","label":"Yaw","unit":"°","layout":"linear","decimals":"1","differential":true,"minmax":true,"colorTrack":"#555555","style":"4,2","colorFromTheme":true,"property":"payload","secondary":"secondary","inline":true,"animate":true,"sectors":[{"val":-50,"col":"#ff8080","t":"min","dot":0},{"val":0,"col":"#80ff95","t":"sec","dot":0},{"val":50,"col":"#80ff95","t":"max","dot":0}],"lineWidth":"7","bgcolorFromTheme":true,"diffCenter":"0","x":930,"y":750,"wires":[]},{"id":"836fc6f20df974d5","type":"worldmap-tracks","z":"723a850f03705f70","g":"03810b4592173062","name":"","depth":"1000","layer":"combined","smooth":false,"x":675,"y":250,"wires":[["1e1707984d1c29ea"]],"l":false},{"id":"c38d898d15587254","type":"unit-converter","z":"723a850f03705f70","g":"b5598464a148aa0e","category":"temperature","inputUnit":"C","outputUnit":"F","inputField":"payload","outputField":"payload","inputFieldType":"msg","outputFieldType":"msg","roundOutputField":true,"outputFieldDecimals":"0","name":"","x":1415,"y":700,"wires":[["c16f7e099155e6f2"]],"l":false},{"id":"036e63eec57e3816","type":"switch","z":"723a850f03705f70","g":"b5598464a148aa0e","name":"Ship Status","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"weather","vt":"str"},{"t":"eq","v":"weatherPhrase","vt":"str"},{"t":"eq","v":"windDirectionDeg","vt":"str"},{"t":"eq","v":"temperatureDegC","vt":"str"},{"t":"eq","v":"windSpeedKmH","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":1345,"y":670,"wires":[["1fc671b7018b4510"],["d56e737dac6a04aa"],["220209abd90ce904"],["c38d898d15587254"],["6da2a2fe7ef67d1c"]],"l":false},{"id":"491c6228c2642eb6","type":"link in","z":"723a850f03705f70","g":"b5598464a148aa0e","name":"Status In","links":["63ed867f740aca8d"],"x":1245,"y":670,"wires":[["2def4bce8d2970bd"]]},{"id":"220209abd90ce904","type":"ui_gauge","z":"723a850f03705f70","g":"b5598464a148aa0e","name":"Wind Dir","group":"be0e67b7.090858","order":10,"width":2,"height":2,"gtype":"compass","title":"<font size=2>Wind</font>","label":"","format":"{{value}}°","min":0,"max":"359","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":1460,"y":670,"wires":[]},{"id":"6da2a2fe7ef67d1c","type":"calculator","z":"723a850f03705f70","g":"b5598464a148aa0e","name":"Knots","inputMsgField":"payload","outputMsgField":"payload","operation":"div","constant":"1.852","round":true,"decimals":"1","x":1415,"y":730,"wires":[["8a985bdc52d0e024"]],"l":false},{"id":"d5a905f64427c43e","type":"ui_level","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","group":"be0e67b7.090858","order":5,"width":1,"height":3,"name":"Solar Power","label":"Solar","colorHi":"#00c0ff","colorWarn":"#00c0ff","colorNormal":"#00c0ff","colorOff":"#303030","min":0,"max":"2250","segWarn":"","segHigh":"","unit":"W","layout":"sv","channelA":"","channelB":"","decimals":0,"animations":"soft","shape":"2","colorschema":"fixed","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":false,"tickmode":"off","peakmode":false,"property":"payload","peaktime":3000,"x":1140,"y":310,"wires":[],"info":"Solar power gauge limit taken from a mechanical drawing \"Uncharted - EP.01\", annotated \"SOLAR PANELS MONOCRYSTALLINE SEMI-FLEXIBLE TOTAL 2.25 KW\".\n\nHighest observed power = 1050W, 04-2022, GB vicinity."},{"id":"8423a005f1d484df","type":"ui_level","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","group":"be0e67b7.090858","order":6,"width":1,"height":3,"name":"Voltage","label":"Voltage","colorHi":"#00ff2a","colorWarn":"#ffc000","colorNormal":"#ff0000","colorOff":"#303030","min":0,"max":"60","segWarn":"35","segHigh":"45","unit":"V","layout":"sv","channelA":"","channelB":"","decimals":0,"animations":"soft","shape":"2","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":false,"tickmode":"off","peakmode":false,"property":"payload","peaktime":3000,"x":1180,"y":360,"wires":[]},{"id":"e2c9bf3d0aecedad","type":"ui_level","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","group":"be0e67b7.090858","order":7,"width":1,"height":3,"name":"Charge","label":"Charge","colorHi":"#00ff2a","colorWarn":"#ffc000","colorNormal":"#ff0000","colorOff":"#303030","min":0,"max":"100","segWarn":"33","segHigh":"66","unit":"%","layout":"sv","channelA":"","channelB":"","decimals":"2","animations":"soft","shape":"2","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":false,"tickmode":"off","peakmode":false,"property":"payload","peaktime":3000,"x":1130,"y":410,"wires":[]},{"id":"8a985bdc52d0e024","type":"ui_level","z":"723a850f03705f70","g":"b5598464a148aa0e","group":"be0e67b7.090858","order":2,"width":3,"height":1,"name":"Wind Speed","label":"","colorHi":"#ffffff","colorWarn":"#ffffff","colorNormal":"#ffffff","colorOff":"#303030","min":0,"max":"50","segWarn":"","segHigh":"","unit":"Kts","layout":"sh","channelA":"","channelB":"","decimals":0,"animations":"soft","shape":"2","colorschema":"fixed","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":false,"tickmode":"off","peakmode":false,"property":"payload","peaktime":3000,"x":1520,"y":750,"wires":[]},{"id":"c16f7e099155e6f2","type":"ui_level","z":"723a850f03705f70","g":"b5598464a148aa0e","group":"be0e67b7.090858","order":3,"width":1,"height":3,"name":"Temp","label":"°F","colorHi":"#e60000","colorWarn":"#04ff00","colorNormal":"#006eb3","colorOff":"#303030","min":0,"max":100,"segWarn":"32","segHigh":"85","unit":"","layout":"sv","channelA":"","channelB":"","decimals":0,"animations":"soft","shape":2,"colorschema":"rainbow","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":false,"tickmode":"off","peakmode":false,"property":"payload","peaktime":3000,"x":1500,"y":700,"wires":[]},{"id":"1c28a4d47d92617b","type":"ui_level","z":"723a850f03705f70","g":"f0f6caf54c075a94","group":"2ad9686.f1b5d98","order":1,"width":4,"height":1,"name":"Ship SOG","label":"","colorHi":"#0080c0","colorWarn":"#0080c0","colorNormal":"#0080c0","colorOff":"#303030","min":0,"max":"10","segWarn":"","segHigh":"","unit":"Kts","layout":"sh","channelA":"","channelB":"","decimals":0,"animations":"soft","shape":"2","colorschema":"fixed","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":false,"tickmode":"off","peakmode":false,"property":"payload","peaktime":3000,"x":940,"y":640,"wires":[]},{"id":"b96cc28319a832c8","type":"ui_level","z":"723a850f03705f70","g":"f0f6caf54c075a94","group":"2ad9686.f1b5d98","order":10,"width":5,"height":1,"name":"Depth via status","label":"Depth via /status","colorHi":"#0000ff","colorWarn":"#c000c0","colorNormal":"#600060","colorOff":"#303030","min":"0","max":"300","segWarn":"100","segHigh":"200","unit":"Fathoms","layout":"sh","channelA":"","channelB":"","decimals":0,"animations":"soft","shape":"2","colorschema":"fixed","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":false,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":960,"y":820,"wires":[]},{"id":"af97e83c723692a9","type":"switch","z":"723a850f03705f70","g":"693f162dbf677324","name":"Ship Hazard Status","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"time","vt":"str"},{"t":"eq","v":"epoch_time","vt":"str"},{"t":"eq","v":"object_name","vt":"str"},{"t":"eq","v":"object_id","vt":"str"},{"t":"eq","v":"prob","vt":"str"},{"t":"eq","v":"cam_id","vt":"str"}],"checkall":"true","repair":false,"outputs":6,"x":815,"y":1780,"wires":[["6a74725f88e29988"],["6a74725f88e29988"],["6a74725f88e29988"],["6a74725f88e29988"],["6a74725f88e29988"],["6a74725f88e29988","99694684ca63166e"]],"l":false},{"id":"6a74725f88e29988","type":"join","z":"723a850f03705f70","g":"693f162dbf677324","name":"","mode":"custom","build":"array","property":"","propertyType":"full","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"6","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":875,"y":1780,"wires":[["be088c61ac151896"]],"l":false},{"id":"be088c61ac151896","type":"ui_table","z":"723a850f03705f70","g":"693f162dbf677324","group":"a2c2c46bf05ab342","name":"Replay/Hazard","order":1,"width":21,"height":5,"columns":[{"field":"topic","title":"HIS Topic","width":"33%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"payload","title":"HIS Payload","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":0,"cts":false,"x":990,"y":1780,"wires":[]},{"id":"1727d5351040a8af","type":"ui_level","z":"723a850f03705f70","g":"f0f6caf54c075a94","group":"2ad9686.f1b5d98","order":6,"width":1,"height":4,"name":"Throttle","label":"Throttle","colorHi":"#0080c0","colorWarn":"#ffffff","colorNormal":"#ffffff","colorOff":"#303030","min":0,"max":"100","segWarn":"","segHigh":"","unit":"%","layout":"sv","channelA":"","channelB":"","decimals":0,"animations":"soft","shape":"2","colorschema":"fixed","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":false,"tickmode":"off","peakmode":false,"property":"payload","peaktime":3000,"x":940,"y":670,"wires":[]},{"id":"d95eb1cd34ece5a4","type":"link out","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"shipConnectivity Out","mode":"link","links":["3b94aaf22f2b42a9","76ef47e8cefdd686","e3b1d1c4e14bc132"],"x":1085,"y":200,"wires":[]},{"id":"ecd0e7532513094f","type":"switch","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"Replay Vectoring","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"shipLatitudeDeg","vt":"str"},{"t":"eq","v":"shipLongitudeDeg","vt":"str"},{"t":"eq","v":"shipCourseOverGroundDeg","vt":"str"},{"t":"eq","v":"shipSpeedOverGroundMS","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":635,"y":2400,"wires":[["b4542e3ebcb2838b"],["9216ee322dbb8880","eb89cb9216b25a49"],["3a7b98234da93ad8"],["85894f9f69f06550","7de3ed55f7339121"]],"l":false},{"id":"f5c354f0e9534f2d","type":"split","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":905,"y":2270,"wires":[["d8a1bf5d6a32c691"]],"l":false},{"id":"b4542e3ebcb2838b","type":"change","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"Set topic to \"lat\"","rules":[{"t":"set","p":"topic","pt":"msg","to":"lat","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"$number(msg.payload)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":725,"y":2340,"wires":[["4cf50a94dc15150b"]],"l":false},{"id":"9216ee322dbb8880","type":"change","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"","rules":[{"t":"set","p":"topic","pt":"msg","to":"name","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"MAS400","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":725,"y":2370,"wires":[["4cf50a94dc15150b"]],"l":false},{"id":"eb89cb9216b25a49","type":"change","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"Set topic to \"lon\"","rules":[{"t":"set","p":"topic","pt":"msg","to":"lon","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"$number(msg.payload)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":725,"y":2400,"wires":[["4cf50a94dc15150b"]],"l":false},{"id":"a1efcddab613b526","type":"json","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"JSONbroken","property":"payload","action":"","pretty":true,"x":855,"y":2270,"wires":[["f5c354f0e9534f2d"]],"l":false},{"id":"4cf50a94dc15150b","type":"join","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"6","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":835,"y":2340,"wires":[["78070ea13b1222f0","7d98493b02e5e93f"]],"l":false},{"id":"0a1f83d36684bb85","type":"split","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"","x":805,"y":2270,"wires":[["a1efcddab613b526"]],"l":false},{"id":"78070ea13b1222f0","type":"worldmap","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"","lat":"","lon":"","zoom":"13","layer":"OSMC","cluster":"","maxage":"","usermenu":"show","layers":"show","panit":"true","panlock":"false","zoomlock":"false","hiderightclick":"false","coords":"dms","showgrid":"true","allowFileDrop":"false","path":"/worldmap2","overlist":"DR,CO","maplist":"OSMG,OSMC,EsriC,EsriS,EsriT,EsriO,EsriDG,NatGeo,UKOS,OpTop,SW","mapname":"","mapurl":"","mapopt":"","mapwms":false,"x":990,"y":2340,"wires":[]},{"id":"7d98493b02e5e93f","type":"worldmap-tracks","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"","depth":"500","layer":"single","smooth":false,"x":885,"y":2310,"wires":[["78070ea13b1222f0"]],"l":false},{"id":"989371046986fae3","type":"switch","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"JSON EOF Error killer","property":"payload","propertyType":"msg","rules":[{"t":"nempty"}],"checkall":"true","repair":false,"outputs":1,"x":755,"y":2270,"wires":[["0a1f83d36684bb85"]],"l":false},{"id":"6ceea8a57434c1c2","type":"file in","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"","filename":"/home/pi/MAS400/log_2022.json","format":"lines","chunk":false,"sendError":false,"encoding":"none","allProps":true,"x":655,"y":2270,"wires":[["f807a5ab375f5472"]],"l":false},{"id":"65f4623a630b5c3a","type":"inject","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"Start","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"str","x":605,"y":2270,"wires":[["6ceea8a57434c1c2"]],"l":false},{"id":"3a7b98234da93ad8","type":"change","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"Set topic to \"heading\"","rules":[{"t":"set","p":"topic","pt":"msg","to":"heading","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"$number(msg.payload)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":725,"y":2430,"wires":[["4cf50a94dc15150b"]],"l":false},{"id":"85894f9f69f06550","type":"change","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"Set topic to \"speed\"","rules":[{"t":"set","p":"topic","pt":"msg","to":"speed","tot":"str"},{"t":"set","p":"payload","pt":"msg","to":"$number(msg.payload)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":725,"y":2460,"wires":[["4cf50a94dc15150b"]],"l":false},{"id":"f807a5ab375f5472","type":"delay","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"","pauseType":"rate","timeout":"100","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"0.1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"allowrate":false,"outputs":1,"x":705,"y":2270,"wires":[["989371046986fae3"]],"l":false},{"id":"d8a1bf5d6a32c691","type":"link out","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"Data Fetch Out","mode":"link","links":["efc2cf70f35c7183"],"x":955,"y":2270,"wires":[]},{"id":"efc2cf70f35c7183","type":"link in","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"Data Fetch In","links":["d8a1bf5d6a32c691"],"x":585,"y":2400,"wires":[["ecd0e7532513094f"]]},{"id":"fb9cc7df3d49177a","type":"inject","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"Reset","props":[{"p":"reset","v":"0","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","x":665,"y":2310,"wires":[["f807a5ab375f5472","51eed9e924cdce87"]],"l":false},{"id":"51eed9e924cdce87","type":"change","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"","rules":[{"t":"delete","p":"reset","pt":"msg"},{"t":"set","p":"payload","pt":"msg","to":"{\"name\":\"MAS400\",\"deleted\":true}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":725,"y":2310,"wires":[["7d98493b02e5e93f"]],"l":false},{"id":"c2f91a5c9324c430","type":"moment","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"","topic":"","input":"payload","inputType":"msg","inTz":"America/Chicago","adjAmount":0,"adjType":"days","adjDir":"add","format":"","locale":"en-US","output":"payload","outputType":"msg","outTz":"America/Chicago","x":1085,"y":230,"wires":[["0a31c45f55ed6146"]],"l":false},{"id":"aa359da50e8cee46","type":"ui_template","z":"723a850f03705f70","g":"693f162dbf677324","group":"a2c2c46bf05ab342","name":"1 = Hard Port","order":3,"width":3,"height":2,"format":"<img src={{msg.payload}}></img>\n","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","className":"","x":1100,"y":1820,"wires":[[]]},{"id":"3c15b1124590609b","type":"ui_template","z":"723a850f03705f70","g":"693f162dbf677324","group":"a2c2c46bf05ab342","name":"2 = Hard Starboard","order":4,"width":3,"height":2,"format":"<img src={{msg.payload}}></img>\n","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","className":"","x":1110,"y":1850,"wires":[[]]},{"id":"60c3bc3a769f090c","type":"ui_template","z":"723a850f03705f70","g":"693f162dbf677324","group":"a2c2c46bf05ab342","name":"3 = Port Astern","order":5,"width":3,"height":2,"format":"<img src={{msg.payload}}></img>\n","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","className":"","x":1100,"y":1880,"wires":[[]]},{"id":"3d24f0f24255a581","type":"ui_template","z":"723a850f03705f70","g":"693f162dbf677324","group":"a2c2c46bf05ab342","name":"4 = Starboard Astern","order":6,"width":3,"height":2,"format":"<img src={{msg.payload}}></img>\n","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","className":"","x":1120,"y":1910,"wires":[[]]},{"id":"6a373ee33ea68fc4","type":"ui_template","z":"723a850f03705f70","g":"693f162dbf677324","group":"a2c2c46bf05ab342","name":"6 = Port Bow","order":8,"width":3,"height":2,"format":"<img src={{msg.payload}}></img>\n","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","className":"","x":1090,"y":1970,"wires":[[]]},{"id":"937946ced567d673","type":"ui_template","z":"723a850f03705f70","g":"693f162dbf677324","group":"a2c2c46bf05ab342","name":"5 = Starboard Bow","order":7,"width":3,"height":2,"format":"<img src={{msg.payload}}></img>\n","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","className":"","x":1110,"y":1940,"wires":[[]]},{"id":"99694684ca63166e","type":"switch","z":"723a850f03705f70","g":"693f162dbf677324","name":"","property":"payload","propertyType":"msg","rules":[{"t":"eq","v":"1","vt":"str"},{"t":"eq","v":"2","vt":"str"},{"t":"eq","v":"3","vt":"str"},{"t":"eq","v":"4","vt":"str"},{"t":"eq","v":"5","vt":"str"},{"t":"eq","v":"6","vt":"str"}],"checkall":"true","repair":false,"outputs":6,"x":875,"y":1870,"wires":[["18d7fae9856cc12f"],[],[],[],[],["50584460d47f6fd8"]],"l":false},{"id":"50584460d47f6fd8","type":"change","z":"723a850f03705f70","g":"693f162dbf677324","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"https://mas-science-data-publicimages-mission1-jun21.s3.eu-gb.cloud-object-storage.appdomain.cloud/hds-run_y2021m06d16_h10m55s56_cam_6_frame_04357.png","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":965,"y":1970,"wires":[["6a373ee33ea68fc4","ee90af320510dac9"]],"l":false},{"id":"ee90af320510dac9","type":"debug","z":"723a850f03705f70","g":"693f162dbf677324","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"payload","targetType":"msg","statusVal":"","statusType":"auto","x":975,"y":1890,"wires":[],"l":false},{"id":"18d7fae9856cc12f","type":"change","z":"723a850f03705f70","g":"693f162dbf677324","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"https://mas-science-data-publicimages-mission1-jun21.s3.eu-gb.cloud-object-storage.appdomain.cloud/hds-run_y2021m06d17_h19m50s26_cam_1_frame_02377.png","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":965,"y":1820,"wires":[["aa359da50e8cee46","ee90af320510dac9"]],"l":false},{"id":"646a4ce2fa197521","type":"inject","z":"723a850f03705f70","g":"76fcb5288eb1cd8a","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"60","crontab":"","once":true,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":645,"y":2640,"wires":[["94c1424c14bca0f6"]],"l":false},{"id":"94c1424c14bca0f6","type":"exec","z":"723a850f03705f70","g":"76fcb5288eb1cd8a","command":"cat","addpay":"","append":"/proc/loadavg","useSpawn":"false","timer":"","winHide":false,"oldrc":false,"name":"/proc/loadavg","x":695,"y":2640,"wires":[["bf4b32a1fbd2ec38","08384bed2cc43501","1dfed45f55d3d772"],[],[]],"l":false},{"id":"bf4b32a1fbd2ec38","type":"change","z":"723a850f03705f70","g":"76fcb5288eb1cd8a","name":"1 Mins","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number($substring(payload,0,4))","tot":"jsonata"},{"t":"set","p":"topic","pt":"msg","to":"Minute 1","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":790,"y":2600,"wires":[["10cfdd6bd56bca72"]]},{"id":"08384bed2cc43501","type":"change","z":"723a850f03705f70","g":"76fcb5288eb1cd8a","name":"5 Mins","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number($substring(payload,5,4))","tot":"jsonata"},{"t":"set","p":"topic","pt":"msg","to":"Minute 5","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":790,"y":2630,"wires":[["10cfdd6bd56bca72"]]},{"id":"1dfed45f55d3d772","type":"change","z":"723a850f03705f70","g":"76fcb5288eb1cd8a","name":"15 Mins","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number($substring(payload,10,4))","tot":"jsonata"},{"t":"set","p":"topic","pt":"msg","to":"Minute 15","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":800,"y":2660,"wires":[["10cfdd6bd56bca72"]]},{"id":"5f9a24e0468796be","type":"mqtt out","z":"723a850f03705f70","g":"76fcb5288eb1cd8a","name":"","topic":"CoveyPi/serverLoad/vilrosbox","qos":"","retain":"","respTopic":"","contentType":"","userProps":"","correl":"","expiry":"","broker":"589377387ab13f0a","x":1070,"y":2630,"wires":[]},{"id":"10cfdd6bd56bca72","type":"join","z":"723a850f03705f70","g":"76fcb5288eb1cd8a","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":true,"timeout":"","count":"3","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":905,"y":2630,"wires":[["5f9a24e0468796be"]],"l":false},{"id":"5846da495b8549b7","type":"link in","z":"723a850f03705f70","g":"03810b4592173062","name":"Status In","links":["63ed867f740aca8d"],"x":365,"y":210,"wires":[["ba1d15ae059c0c31","449e7f8e75426203","36f546f50ab444a7","ee132bd77b2a94a7","6f7e81b6279bfddd"]]},{"id":"ba1d15ae059c0c31","type":"change","z":"723a850f03705f70","g":"03810b4592173062","name":"Latitude","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload.shipLatitudeDeg)","tot":"jsonata"},{"t":"set","p":"topic","pt":"msg","to":"lat","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":150,"wires":[["5a2629061bfccb0f"]]},{"id":"449e7f8e75426203","type":"change","z":"723a850f03705f70","g":"03810b4592173062","name":"Longitude","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload.shipLongitudeDeg)","tot":"jsonata"},{"t":"set","p":"topic","pt":"msg","to":"lon","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":180,"wires":[["5a2629061bfccb0f"]]},{"id":"36f546f50ab444a7","type":"change","z":"723a850f03705f70","g":"03810b4592173062","name":"Name","rules":[{"t":"set","p":"payload","pt":"msg","to":"MAS400","tot":"str"},{"t":"set","p":"topic","pt":"msg","to":"name","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":240,"wires":[["5a2629061bfccb0f"]]},{"id":"7a1c70a34c93403b","type":"switch","z":"723a850f03705f70","g":"f0f6caf54c075a94","name":"Status","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"shipSpeedOverGroundMS","vt":"str"},{"t":"eq","v":"shipThrottlePercentThousands","vt":"str"},{"t":"eq","v":"shipPitchDeg","vt":"str"},{"t":"eq","v":"shipRudderAnglePercentThousands","vt":"str"},{"t":"eq","v":"shipRollDeg","vt":"str"},{"t":"eq","v":"waterDepthM","vt":"str"}],"checkall":"true","repair":false,"outputs":6,"x":755,"y":720,"wires":[["db733d76c650e213"],["0ea04183ec9f7fd3"],["0c7d9f8da552d721"],["2880ccc846f2b19a"],["f2e5df03442864f3"],["b454993e3f99f668"]],"l":false},{"id":"473860ab77e94487","type":"link in","z":"723a850f03705f70","g":"f0f6caf54c075a94","name":"Status In","links":["63ed867f740aca8d"],"x":655,"y":720,"wires":[["f91234c1e07b5ee9"]]},{"id":"f91234c1e07b5ee9","type":"split","z":"723a850f03705f70","g":"f0f6caf54c075a94","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":705,"y":720,"wires":[["7a1c70a34c93403b"]],"l":false},{"id":"2def4bce8d2970bd","type":"split","z":"723a850f03705f70","g":"b5598464a148aa0e","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":1295,"y":670,"wires":[["036e63eec57e3816"]],"l":false},{"id":"b96ed3ba1795e421","type":"split","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":925,"y":290,"wires":[["8e1303931dec7873"]],"l":false},{"id":"fef4ead37857648c","type":"split","z":"723a850f03705f70","g":"693f162dbf677324","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":765,"y":1780,"wires":[["af97e83c723692a9"]],"l":false},{"id":"7497921e.79fa2c","type":"switch","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"etsMasPi1","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"cpuLoad","vt":"str"},{"t":"eq","v":"cpuClock","vt":"str"},{"t":"eq","v":"cpuTemp","vt":"str"},{"t":"eq","v":"cpuVolts","vt":"str"},{"t":"eq","v":"freeMemory","vt":"str"},{"t":"eq","v":"diskRoot","vt":"str"},{"t":"eq","v":"throttleThrottled","vt":"str"},{"t":"eq","v":"throttleFrequency","vt":"str"},{"t":"eq","v":"throttleSoftTempLimit","vt":"str"},{"t":"eq","v":"throttleUndervolt","vt":"str"}],"checkall":"true","repair":false,"outputs":10,"x":125,"y":1040,"wires":[["b4d54643.0ef488"],["ec342f6e.b988d"],["67a1fc967a871fdc"],["7762c8e.b9f2338"],["ee43616747db476e"],["e8016041.eca6c"],["22e61b63.6e6dd4"],["ca31bcf7.9556"],["7980c723.34a8d8"],["599f478a.ba57f8"]],"l":false},{"id":"e8016041.eca6c","type":"ui_text","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"36c395bf.7895fa","order":2,"width":2,"height":1,"name":"","label":"<font size=1>Disk Root: </font>","format":"{{msg.payload|number:2}}","layout":"row-left","x":350,"y":1080,"wires":[]},{"id":"599f478a.ba57f8","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":10,"group":"36c395bf.7895fa","width":2,"height":1,"label":"<i class=\"fa fa-battery-1\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Undervoltage Throttle","x":320,"y":1200,"wires":[]},{"id":"ca31bcf7.9556","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":6,"group":"36c395bf.7895fa","width":2,"height":1,"label":"<i class=\"fa fa-hourglass-2\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Frequency Throttle","x":310,"y":1140,"wires":[]},{"id":"22e61b63.6e6dd4","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":4,"group":"36c395bf.7895fa","width":2,"height":1,"label":"<i class=\"fa fa-wrench\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Currently Throttled","x":310,"y":1110,"wires":[]},{"id":"7980c723.34a8d8","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":8,"group":"36c395bf.7895fa","width":2,"height":1,"label":"<i class=\"fa fa-thermometer\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"SoftTempLimit Throttle","x":320,"y":1170,"wires":[]},{"id":"ec342f6e.b988d","type":"calculator","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"","inputMsgField":"payload","outputMsgField":"payload","operation":"mult","constant":"1000","round":true,"decimals":0,"x":235,"y":880,"wires":[["cd9bb3ea.ba28e"]],"l":false},{"id":"b4d54643.0ef488","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"36c395bf.7895fa","order":1,"width":3,"height":1,"name":"CPU Load","label":"Load","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00b33c","colorOff":"#303030","min":0,"max":"4","segWarn":"1","segHigh":"3","unit":"","layout":"sh","channelA":"","channelB":"","decimals":"2","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":290,"y":830,"wires":[]},{"id":"8c0d0baa.4c90a8","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"36c395bf.7895fa","order":5,"width":3,"height":1,"name":"CPU Temp","label":"","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00b33c","colorOff":"#303030","min":0,"max":"180","segWarn":"60","segHigh":"120","unit":"°","layout":"sh","channelA":"","channelB":"","decimals":"0","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":340,"y":930,"wires":[]},{"id":"cd9bb3ea.ba28e","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"36c395bf.7895fa","order":3,"width":3,"height":1,"name":"CPU Clock","label":"","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00c0c0","colorOff":"#303030","min":0,"max":"1500","segWarn":"500","segHigh":"1000","unit":"MHz","layout":"sh","channelA":"","channelB":"","decimals":"0","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":340,"y":880,"wires":[]},{"id":"7762c8e.b9f2338","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"36c395bf.7895fa","order":7,"width":3,"height":1,"name":"CPU V","label":"","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00c0c0","colorOff":"#303030","min":0,"max":"1.5","segWarn":"0.5","segHigh":"1","unit":"VDC","layout":"sh","channelA":"","channelB":"","decimals":"2","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":270,"y":980,"wires":[]},{"id":"3ac6ede1.1b68f2","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"36c395bf.7895fa","order":9,"width":3,"height":1,"name":"Free Mem","label":"","colorHi":"#00c000","colorWarn":"#c0c000","colorNormal":"#c00000","colorOff":"#303030","min":0,"max":"4","segWarn":"1","segHigh":"2","unit":"GB","layout":"sh","channelA":"","channelB":"","decimals":"2","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":340,"y":1030,"wires":[]},{"id":"ee593aae1a3a8e92","type":"switch","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"etsMasPi2","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"cpuLoad","vt":"str"},{"t":"eq","v":"cpuClock","vt":"str"},{"t":"eq","v":"cpuTemp","vt":"str"},{"t":"eq","v":"cpuVolts","vt":"str"},{"t":"eq","v":"freeMemory","vt":"str"},{"t":"eq","v":"diskRoot","vt":"str"},{"t":"eq","v":"throttleThrottled","vt":"str"},{"t":"eq","v":"throttleFrequency","vt":"str"},{"t":"eq","v":"throttleSoftTempLimit","vt":"str"},{"t":"eq","v":"throttleUndervolt","vt":"str"}],"checkall":"true","repair":false,"outputs":10,"x":125,"y":1450,"wires":[["44ad0d1694b2320b"],["e40dbbff9e247eaa"],["0c293f01b121cbd6"],["9a597807131908e4"],["dbbced2967e891ab"],["ca00ee395f70e32b"],["ddadbaaaf28f0702"],["43a178fad536aa62"],["8f8ed2737ba0a977"],["7cc36f792be4cec5"]],"l":false},{"id":"ca00ee395f70e32b","type":"ui_text","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"ceb7a6a0520b3d7c","order":2,"width":2,"height":1,"name":"","label":"<font size=1>Disk Root: </font>","format":"{{msg.payload|number:2}}","layout":"row-left","x":350,"y":1490,"wires":[]},{"id":"7cc36f792be4cec5","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":10,"group":"ceb7a6a0520b3d7c","width":2,"height":1,"label":"<i class=\"fa fa-battery-1\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Undervoltage Throttle","x":320,"y":1610,"wires":[]},{"id":"43a178fad536aa62","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":6,"group":"ceb7a6a0520b3d7c","width":2,"height":1,"label":"<i class=\"fa fa-hourglass-2\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Frequency Throttle","x":310,"y":1550,"wires":[]},{"id":"ddadbaaaf28f0702","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":4,"group":"ceb7a6a0520b3d7c","width":2,"height":1,"label":"<i class=\"fa fa-wrench\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Currently Throttled","x":310,"y":1520,"wires":[]},{"id":"8f8ed2737ba0a977","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":8,"group":"ceb7a6a0520b3d7c","width":2,"height":1,"label":"<i class=\"fa fa-thermometer\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"SoftTempLimit Throttle","x":320,"y":1580,"wires":[]},{"id":"e40dbbff9e247eaa","type":"calculator","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"","inputMsgField":"payload","outputMsgField":"payload","operation":"mult","constant":"1000","round":true,"decimals":0,"x":235,"y":1290,"wires":[["b48e7e9549e09cbd"]],"l":false},{"id":"44ad0d1694b2320b","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"ceb7a6a0520b3d7c","order":1,"width":3,"height":1,"name":"CPU Load","label":"Load","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00b33c","colorOff":"#303030","min":0,"max":"4","segWarn":"1","segHigh":"3","unit":"","layout":"sh","channelA":"","channelB":"","decimals":"2","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":290,"y":1240,"wires":[]},{"id":"11e04ab5848925c1","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"ceb7a6a0520b3d7c","order":5,"width":3,"height":1,"name":"CPU Temp","label":"","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00b33c","colorOff":"#303030","min":0,"max":"180","segWarn":"60","segHigh":"120","unit":"°","layout":"sh","channelA":"","channelB":"","decimals":"0","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":340,"y":1340,"wires":[]},{"id":"9a597807131908e4","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"ceb7a6a0520b3d7c","order":7,"width":3,"height":1,"name":"CPU V","label":"","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00c0c0","colorOff":"#303030","min":0,"max":"1.5","segWarn":"0.5","segHigh":"1","unit":"VDC","layout":"sh","channelA":"","channelB":"","decimals":"2","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":270,"y":1390,"wires":[]},{"id":"b48e7e9549e09cbd","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"ceb7a6a0520b3d7c","order":3,"width":3,"height":1,"name":"CPU Clock","label":"","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00c0c0","colorOff":"#303030","min":0,"max":"1500","segWarn":"500","segHigh":"1000","unit":"MHz","layout":"sh","channelA":"","channelB":"","decimals":"0","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":340,"y":1290,"wires":[]},{"id":"42e1fc378068a668","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"ceb7a6a0520b3d7c","order":9,"width":3,"height":1,"name":"Free Mem","label":"","colorHi":"#00c000","colorWarn":"#c0c000","colorNormal":"#c00000","colorOff":"#303030","min":0,"max":"4","segWarn":"1","segHigh":"2","unit":"GB","layout":"sh","channelA":"","channelB":"","decimals":"2","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":340,"y":1440,"wires":[]},{"id":"32a40b99881dd96c","type":"switch","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"etsMasPi3","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"cpuLoad","vt":"str"},{"t":"eq","v":"cpuClock","vt":"str"},{"t":"eq","v":"cpuTemp","vt":"str"},{"t":"eq","v":"cpuVolts","vt":"str"},{"t":"eq","v":"freeMemory","vt":"str"},{"t":"eq","v":"diskRoot","vt":"str"},{"t":"eq","v":"throttleThrottled","vt":"str"},{"t":"eq","v":"throttleFrequency","vt":"str"},{"t":"eq","v":"throttleSoftTempLimit","vt":"str"},{"t":"eq","v":"throttleUndervolt","vt":"str"}],"checkall":"true","repair":false,"outputs":10,"x":125,"y":1860,"wires":[["513542dc0e86934c"],["625e46bc64be7127"],["3905758b4728e741"],["c1d2ec7df051254f"],["cb5995699fa307bf"],["321872d735333d7b"],["d1ec74e9b8a034c9"],["79078a6b4b496937"],["0d29d7aa1a0ffa0b"],["f90aca2e9628c0f9"]],"l":false},{"id":"321872d735333d7b","type":"ui_text","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"895e92788f84fcd0","order":2,"width":2,"height":1,"name":"","label":"<font size=1>Disk Root: </font>","format":"{{msg.payload|number:2}}","layout":"row-left","x":350,"y":1900,"wires":[]},{"id":"f90aca2e9628c0f9","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":10,"group":"895e92788f84fcd0","width":2,"height":1,"label":"<i class=\"fa fa-battery-1\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Undervoltage Throttle","x":320,"y":2020,"wires":[]},{"id":"79078a6b4b496937","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":6,"group":"895e92788f84fcd0","width":2,"height":1,"label":"<i class=\"fa fa-hourglass-2\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Frequency Throttle","x":310,"y":1960,"wires":[]},{"id":"d1ec74e9b8a034c9","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":4,"group":"895e92788f84fcd0","width":2,"height":1,"label":"<i class=\"fa fa-wrench\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Currently Throttled","x":310,"y":1930,"wires":[]},{"id":"0d29d7aa1a0ffa0b","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":8,"group":"895e92788f84fcd0","width":2,"height":1,"label":"<i class=\"fa fa-thermometer\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"SoftTempLimit Throttle","x":320,"y":1990,"wires":[]},{"id":"625e46bc64be7127","type":"calculator","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"","inputMsgField":"payload","outputMsgField":"payload","operation":"mult","constant":"1000","round":true,"decimals":0,"x":235,"y":1700,"wires":[["82b2ba739e30624e"]],"l":false},{"id":"513542dc0e86934c","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"895e92788f84fcd0","order":1,"width":3,"height":1,"name":"CPU Load","label":"Load","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00b33c","colorOff":"#303030","min":0,"max":"4","segWarn":"1","segHigh":"3","unit":"","layout":"sh","channelA":"","channelB":"","decimals":"2","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":290,"y":1650,"wires":[]},{"id":"d8c1eee878bee35a","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"895e92788f84fcd0","order":5,"width":3,"height":1,"name":"CPU Temp","label":"","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00b33c","colorOff":"#303030","min":0,"max":"180","segWarn":"60","segHigh":"120","unit":"°","layout":"sh","channelA":"","channelB":"","decimals":"0","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":340,"y":1750,"wires":[]},{"id":"c1d2ec7df051254f","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"895e92788f84fcd0","order":7,"width":3,"height":1,"name":"CPU V","label":"","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00c0c0","colorOff":"#303030","min":0,"max":"1.5","segWarn":"0.5","segHigh":"1","unit":"VDC","layout":"sh","channelA":"","channelB":"","decimals":"2","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":270,"y":1800,"wires":[]},{"id":"82b2ba739e30624e","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"895e92788f84fcd0","order":3,"width":3,"height":1,"name":"CPU Clock","label":"","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00c0c0","colorOff":"#303030","min":0,"max":"1500","segWarn":"500","segHigh":"1000","unit":"MHz","layout":"sh","channelA":"","channelB":"","decimals":"0","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":340,"y":1700,"wires":[]},{"id":"3c3a07eaf15358eb","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"895e92788f84fcd0","order":9,"width":3,"height":1,"name":"Free Mem","label":"","colorHi":"#00c000","colorWarn":"#c0c000","colorNormal":"#c00000","colorOff":"#303030","min":0,"max":"4","segWarn":"1","segHigh":"2","unit":"GB","layout":"sh","channelA":"","channelB":"","decimals":"2","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":340,"y":1850,"wires":[]},{"id":"97f2b6682432315e","type":"switch","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"etsMasPi4","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"cpuLoad","vt":"str"},{"t":"eq","v":"cpuClock","vt":"str"},{"t":"eq","v":"cpuTemp","vt":"str"},{"t":"eq","v":"cpuVolts","vt":"str"},{"t":"eq","v":"freeMemory","vt":"str"},{"t":"eq","v":"diskRoot","vt":"str"},{"t":"eq","v":"throttleThrottled","vt":"str"},{"t":"eq","v":"throttleFrequency","vt":"str"},{"t":"eq","v":"throttleSoftTempLimit","vt":"str"},{"t":"eq","v":"throttleUndervolt","vt":"str"}],"checkall":"true","repair":false,"outputs":10,"x":125,"y":2270,"wires":[["4f01731ef6f06b05"],["ed9439567d528ae9"],["fc14a28dc53a8ac2"],["821ac293bb4424b4"],["0af6d094acfa4258"],["7af8a8f5572f3a18"],["4db0a2be4ad8e6f6"],["25d2edc972b16acd"],["1e0ef90cd9c871b2"],["bb11da1bb81e0e16"]],"l":false},{"id":"7af8a8f5572f3a18","type":"ui_text","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"e95eb65f4f9ef5b8","order":2,"width":2,"height":1,"name":"","label":"<font size=1>Disk Root: </font>","format":"{{msg.payload|number:2}}","layout":"row-left","x":350,"y":2310,"wires":[]},{"id":"bb11da1bb81e0e16","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":10,"group":"e95eb65f4f9ef5b8","width":2,"height":1,"label":"<i class=\"fa fa-battery-1\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Undervoltage Throttle","x":320,"y":2430,"wires":[]},{"id":"25d2edc972b16acd","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":6,"group":"e95eb65f4f9ef5b8","width":2,"height":1,"label":"<i class=\"fa fa-hourglass-2\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Frequency Throttle","x":310,"y":2370,"wires":[]},{"id":"4db0a2be4ad8e6f6","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":4,"group":"e95eb65f4f9ef5b8","width":2,"height":1,"label":"<i class=\"fa fa-wrench\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Currently Throttled","x":310,"y":2340,"wires":[]},{"id":"1e0ef90cd9c871b2","type":"ui_led","z":"723a850f03705f70","g":"df021e7f9c11434c","order":8,"group":"e95eb65f4f9ef5b8","width":2,"height":1,"label":"<i class=\"fa fa-thermometer\"></i>","labelPlacement":"left","labelAlignment":"right","colorForValue":[{"color":"#ff0000","value":"true","valueType":"bool"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"SoftTempLimit Throttle","x":320,"y":2400,"wires":[]},{"id":"ed9439567d528ae9","type":"calculator","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"","inputMsgField":"payload","outputMsgField":"payload","operation":"mult","constant":"1000","round":true,"decimals":0,"x":235,"y":2110,"wires":[["d5e634f71d21770a"]],"l":false},{"id":"4f01731ef6f06b05","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"e95eb65f4f9ef5b8","order":1,"width":3,"height":1,"name":"CPU Load","label":"Load","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00b33c","colorOff":"#303030","min":0,"max":"4","segWarn":"1","segHigh":"3","unit":"","layout":"sh","channelA":"","channelB":"","decimals":"2","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":290,"y":2060,"wires":[]},{"id":"52d156fe04c785c9","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"e95eb65f4f9ef5b8","order":5,"width":3,"height":1,"name":"CPU Temp","label":"","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00b33c","colorOff":"#303030","min":0,"max":"180","segWarn":"60","segHigh":"120","unit":"°","layout":"sh","channelA":"","channelB":"","decimals":"0","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":340,"y":2160,"wires":[]},{"id":"d5e634f71d21770a","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"e95eb65f4f9ef5b8","order":3,"width":3,"height":1,"name":"CPU Clock","label":"","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00c0c0","colorOff":"#303030","min":0,"max":"1500","segWarn":"500","segHigh":"1000","unit":"MHz","layout":"sh","channelA":"","channelB":"","decimals":"0","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":340,"y":2110,"wires":[]},{"id":"821ac293bb4424b4","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"e95eb65f4f9ef5b8","order":7,"width":3,"height":1,"name":"CPU V","label":"","colorHi":"#e60000","colorWarn":"#ff9900","colorNormal":"#00c0c0","colorOff":"#303030","min":0,"max":"1.5","segWarn":"0.5","segHigh":"1","unit":"VDC","layout":"sh","channelA":"","channelB":"","decimals":"2","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":270,"y":2210,"wires":[]},{"id":"5ee626d4286deb5c","type":"ui_level","z":"723a850f03705f70","g":"df021e7f9c11434c","group":"e95eb65f4f9ef5b8","order":9,"width":3,"height":1,"name":"Free Mem","label":"","colorHi":"#00c000","colorWarn":"#c0c000","colorNormal":"#c00000","colorOff":"#303030","min":0,"max":"4","segWarn":"1","segHigh":"2","unit":"GB","layout":"sh","channelA":"","channelB":"","decimals":"0","animations":"soft","shape":"1","colorschema":"valuedriven","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":true,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":340,"y":2260,"wires":[]},{"id":"3de2e218491cca39","type":"link in","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"Pi1 In","links":["5b50437cb9a4ad8a","7e5e66f941bb834e"],"x":75,"y":1040,"wires":[["7497921e.79fa2c"]]},{"id":"12d1519b46dcf437","type":"link in","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"Pi2 In","links":["4bcf02faf7a54fe1","05a188e6b8a2a396"],"x":75,"y":1450,"wires":[["ee593aae1a3a8e92"]]},{"id":"08525443ce5a87fc","type":"link in","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"Pi3 In","links":["1392182e12b47913","2adb9cdbaadf13d4"],"x":75,"y":1860,"wires":[["32a40b99881dd96c"]]},{"id":"8531b0fefc308360","type":"link in","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"Pi4 In","links":["89a7f7ab2717e15c","8c40765c42ef995e"],"x":75,"y":2270,"wires":[["97f2b6682432315e"]]},{"id":"ee132bd77b2a94a7","type":"change","z":"723a850f03705f70","g":"03810b4592173062","name":"Icon","rules":[{"t":"set","p":"payload","pt":"msg","to":"mayflower","tot":"str"},{"t":"set","p":"topic","pt":"msg","to":"icon","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":470,"y":270,"wires":[["5a2629061bfccb0f"]]},{"id":"7de3ed55f7339121","type":"change","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"","rules":[{"t":"set","p":"payload","pt":"msg","to":"mayflower","tot":"str"},{"t":"set","p":"topic","pt":"msg","to":"icon","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":725,"y":2490,"wires":[["4cf50a94dc15150b"]],"l":false},{"id":"6f7e81b6279bfddd","type":"change","z":"723a850f03705f70","g":"03810b4592173062","name":"Heading","rules":[{"t":"set","p":"payload","pt":"msg","to":"$number(payload.shipHeadingDeg)","tot":"jsonata"},{"t":"set","p":"topic","pt":"msg","to":"heading","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":210,"wires":[["5a2629061bfccb0f"]]},{"id":"67b8d6f883b73d69","type":"comment","z":"723a850f03705f70","g":"03810b4592173062","name":"Multimedia Group","info":"### Custom Dashboard CSS \nAn Internet kludge, this node effects CSS UI element colorization. \n\n### Camera Viewport and Camera Select\nMy solution to display embedded dashboard video; there may be some named function changes so current definitions may be inaccurate, but these inline-framed camera datum have been in this code since Spring of 2021:\n\nBow Camera: \n`<iframe width=\"480\" height=\"270\" src=\"https://www.ustream.tv/embed/24088054\" scrolling=\"no\" allowfullscreen webkitallowfullscreen frameborder=\"0\" style=\"border: 0 none transparent;\"></iframe>`\n\nStern Camera: \n`<iframe width=\"480\" height=\"270\" src=\"https://www.ustream.tv/embed/24088055\" scrolling=\"no\" allowfullscreen webkitallowfullscreen frameborder=\"0\" style=\"border: 0 none transparent;\"></iframe>`\n\nPort Camera: \n`<iframe width=\"480\" height=\"270\" src=\"https://www.ustream.tv/embed/24088056\" scrolling=\"no\" allowfullscreen webkitallowfullscreen frameborder=\"0\" style=\"border: 0 none transparent;\"></iframe>`\n\nStarboard Camera: \n`<iframe width=\"480\" height=\"270\" src=\"https://www.ustream.tv/embed/24088057\" scrolling=\"no\" allowfullscreen webkitallowfullscreen frameborder=\"0\" style=\"border: 0 none transparent;\"></iframe>`\n\nMultiview Cameras: \n`<iframe width=\"480\" height=\"270\" src=\"https://www.ustream.tv/embed/24088058\" scrolling=\"no\" allowfullscreen webkitallowfullscreen frameborder=\"0\" style=\"border: 0 none transparent;\"></iframe>`\n\n### UI Worldmap \nTwo ship icons display five parameters for /status topic values (latitude, longitude, name, heading and icon), and six parameters for /AIS topic values (latitude, longitude, name, heading, icon and icon color). The icon track indicates course, where orientation indicates heading.","x":440,"y":60,"wires":[]},{"id":"81385f5602613f28","type":"comment","z":"723a850f03705f70","g":"b5598464a148aa0e","name":"Meteorology Group","info":"'Meteorological' is just how this group definition feels to me to be.\n\n## Weather / Weather Phrase \nHumanesque phrasings of local atmospheric and sky conditions.\n\n## Wind Temp / Speed / Direction \nBasic localized atmospheric measurements.","x":1280,"y":610,"wires":[]},{"id":"76f5e7df9d8d7f79","type":"comment","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"Condition Group","info":"These nodes seem to form a core telemetry of local conditions and general ship status.\n\n### MQTT Connectivity\n\n**Connectivity Indicator** \nAt-a-glance indication of data stream availability. \n\nIf the broker is up, then a \"connected\" or \"disconnected\" payload restarts the timer for another\n70s \n120s \nperiod. \n\n\nIf the broker is down, a \n90s \n180s\nfree-running heartbeat provides for a \"total loss trigger\", a timer countdown to help maintain code stability:\n - Green = Connected to MQTT broker.\n - Yellow = Disconnected from MQTT broker.\n - Red = MQTT broker failure.\n\n**Expectation Timer** \nI rotate MQTT logs by a manual renaming (easy when disconnected), but problematic while connected and the flow decides to write a new record! \n\nData _typically_ occurs every ~60s, so I made a visual countdown which resets only when new data arrives, showing me the \"grace period\" when I might safely rename my log file.\n\nDuring normal operation this timer will expire but not immediately refresh since public MQTT broker delivery is not precise\n\nIf connectivity fails, this timer will expire and not refresh until connectivity is restored.\n\n**Message Rates** \nI see subscription refreshes from 10s to 70s so I have separate topic rate indicators, calibrated to messages per hour.\n\n### UTC \nThe MQTT data time stamp.\n\n### Log\nThe current size of the local MQTT data log file.\n\n### Operational Status \nAn at-a-glance indicator of the current MAS400 operational mode: Autonomous, Standby, Active, Startup or Remote.\n\n### Solar Power / Voltage / Charge\nBasic electrical status information telemetry.","x":930,"y":60,"wires":[]},{"id":"c3dd222cdd304a9f","type":"comment","z":"723a850f03705f70","g":"f0f6caf54c075a94","name":"Navigation Group","info":"More universal situational telemetry (with some imperial unit conversions).\n\n## Speed / Throttle\nFreedom of movement and propulsive power. \n\n## Pitch / Yaw / Roll\nA triad of related indicators for the three dimensions of MAS400 positional situation. \n\n## Depth\nA twin-gauge system comparing depth data from /status and /science/depth topics.\n\n## Voyage\nIndicated percentage of current mission completed.","x":720,"y":610,"wires":[]},{"id":"1e1707984d1c29ea","type":"ui_worldmap","z":"723a850f03705f70","g":"03810b4592173062","group":"1ae86b42.0ff1c5","order":6,"width":0,"height":0,"name":"","lat":"","lon":"","zoom":"6","layer":"EsriO","cluster":"","maxage":"","usermenu":"show","layers":"show","panit":"true","panlock":"false","zoomlock":"false","hiderightclick":"false","coords":"deg","showgrid":"true","allowFileDrop":"false","path":"/worldmap","overlist":"DR,CO,DN,SN,TL,HM","maplist":"OSMG,OSMC,EsriC,EsriS,EsriT,EsriO,EsriDG,UKOS","mapname":"","mapurl":"","mapopt":"","mapwms":false,"x":745,"y":290,"wires":[],"l":false},{"id":"a6ce94df2ac9f2ad","type":"ui_artlessgauge","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","group":"bbf266696379cab5","order":2,"width":3,"height":2,"name":"MQTT Expectation","icon":"","label":"MQTT","unit":"Secs","layout":"radial","decimals":0,"differential":false,"minmax":false,"colorTrack":"#555555","style":"2,2","colorFromTheme":true,"property":"payload","secondary":"secondary","inline":true,"animate":false,"sectors":[{"val":0,"col":"#ff9900","t":"min","dot":0},{"val":60,"col":"#ff9900","t":"max","dot":0}],"lineWidth":"7","bgcolorFromTheme":true,"diffCenter":"","x":1240,"y":100,"wires":[]},{"id":"e902b33c8764bc9a","type":"countdown","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"","topic":"","payloadTimerStart":"true","payloadTimerStartType":"bool","payloadTimerStop":"false","payloadTimerStopType":"bool","timer":"70","resetWhileRunning":true,"setTimeToNewWhileRunning":false,"startCountdownOnControlMessage":false,"minuteCounter":false,"x":1060,"y":100,"wires":[[],["a6ce94df2ac9f2ad"]]},{"id":"00d6b8da321e8ab6","type":"link in","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"MQTT Countdown In","links":["6e110d1007c4155e"],"x":955,"y":100,"wires":[["e902b33c8764bc9a"]]},{"id":"dcd16115ec7bcf9f","type":"change","z":"723a850f03705f70","g":"693f162dbf677324","name":"Annotation","rules":[{"t":"set","p":"payload","pt":"msg","to":"payload.annotation","tot":"msg"},{"t":"set","p":"topic","pt":"msg","to":"Annotation","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":820,"y":1710,"wires":[["fff6b1a1425fa368"]]},{"id":"fff6b1a1425fa368","type":"join","z":"723a850f03705f70","g":"693f162dbf677324","name":"","mode":"custom","build":"array","property":"","propertyType":"full","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"1","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":925,"y":1710,"wires":[["6992ef79e2df301f"]],"l":false},{"id":"6992ef79e2df301f","type":"ui_table","z":"723a850f03705f70","g":"693f162dbf677324","group":"a2c2c46bf05ab342","name":"Replay/Image","order":2,"width":21,"height":2,"columns":[{"field":"topic","title":"Topic","width":"15%","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"payload","title":"Payload","width":"","align":"left","formatter":"link","formatterParams":{"target":"_blank"}}],"outputs":0,"cts":false,"x":1040,"y":1710,"wires":[]},{"id":"4cbd39e7cb33d86c","type":"comment","z":"723a850f03705f70","name":"MAS400","info":"See also a most gracious technical compendium of publically-consumable information by Mr. James Sutton of IBM, available here: https://jpwsutton.github.io/mayflower_autonomous_ship_data/\n\nAll comment node contents are otherwise my own; distillations of various projects and other online documents. \n\nThe Mayflower Autonomous Ship is an AI powered marine research vessel built to gather critical ocean data. \n\nRadar detects to 2.5 nautical miles. Onboard cameras provide visual input to an IBM vision system for Automatic Identification System. GPS for current location, heading, speed and course. A nautical chart server for geospatial information. Weather data by The Weather Company. Attitude Sensors assess the local sea state (pitch and roll). Fathometer for depth measurements. Vehicle Management System for battery charge level, power consumption, communications, science payloads etc.\n\nUnless highly specific, I resist placing documentation in node descriptions; in a flurry of inspiration I went \"on a tear\" and deleted existing nodes invariably losing good notes I meant to keep. Thus, comment nodes are now my preferred flow documentation method.\n\nAll built according to my operating paradigm: \"I don't know what I'm doing, I'm just doing!\"","x":80,"y":30,"wires":[]},{"id":"40541555820381eb","type":"comment","z":"723a850f03705f70","g":"693f162dbf677324","name":"HIS Group","info":"### Colophon\nMerely my own construct, a hack cobbled together from ancillary data, so **not complete, necessarily correct nor sanctioned!**\n\n### Annotation\nAn uncertain implementation of code included as a bookmark for an image database depicting object id's; in the eventual I want to display the images behind annotations created as new objects are identified.\n\n### Optics\nThere are 6 cameras numbered from early available specifications as shown below:\n1. Hard Port\n2. Hard Starboard\n3. Port Astern\n4. Starboard Astern\n5. Starboard Bow\n6. Port Bow\n\nBreaking down the full URL of an evaluated HIS image with information about visual target type, the preamble of each address MUST BE:\n\n`https://mas-science-data-publicimages-mission1-jun21.s3.eu-gb.cloud-object-storage.appdomain.cloud/`\n\nThat address yields an XML history from which other images are accessed. The specific drill-down JSON topic is:\n\n`payload.ListBucketResult.Contents[arraynumber].Key[0]:`\n\nwhich yields a filename akin to:\n\n`hds-run_y2021m06d15_h12m07s20_cam_2_frame_05852.png`\n\nThus a random example of a complete image URL is:\n\nhttps://mas-science-data-publicimages-mission1-jun21.s3.eu-gb.cloud-object-storage.appdomain.cloud/hds-run_y2021m06d15_h12m07s20_cam_2_frame_05852.png","x":620,"y":1710,"wires":[]},{"id":"848965f4ac8e4f6f","type":"comment","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"Raspberry Pi Group","info":"Likely congruent across all 4 units, without task information it is unknown whether they run discretely, or as a cluster.\n\n**CPU Load** \nTotal average CPU load; a value of 4 is 4 cores operating at (or near) 100% of capability.\n\n**CPU Clock** \nThe operating speed of the Pi CPU.\n\n**CPU Temp** \nCurrent temperature of the Pi CPU.\n\n**CPU V** \nCurrent core voltage of the Pi CPU.\n\n**Free Mem** \nRemaining CPU memory currently unused by any processes.\n\n**Disk Root** \nUnknown, but possibly a value reflecting the % of the root boot drive space in use.\n\n**Currently Throttled** \nIndicates whether the CPU is being speed-restricted.\n\n**Frequency Throttle** \nIndicates the CPU was speed-restricted from a higher setting.\n\n**SoftTempLimit Throttle** \nIndicates the CPU was speed-restricted from an overheating episode.\n\n**Undervoltage Throttle** \nIndicates the CPU was speed-restricted from a lower-than-required voltage condition.","x":150,"y":790,"wires":[]},{"id":"32af042069614b76","type":"comment","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"Log Playback","info":"A node group designed to be exported / copied / pasted into other Node-RED installations on other computers to observe and analyze MQTT log files.\n\n### File I/O\nAll file nodes address local Pi storage, since I run an SSD HDD rather than an SD card.\n\n### JSON EOF Error killer\nThis is a workaround node to circumvent a peculiar End Of File error in the form of an extra empty line encountered at the end of a file playback.\n\n### Worldmap2\nThis provides up to a full-screen playback display for the log file data.","x":640,"y":2230,"wires":[]},{"id":"c16f132fef75cf7e","type":"msg-speed","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"","frequency":"hour","interval":1,"estimation":false,"ignore":false,"pauseAtStartup":false,"topicDependent":false,"x":915,"y":460,"wires":[["910987f3b400ed74"],[]],"l":false},{"id":"db074d5ae07fe758","type":"file","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"","filename":"/home/pi/MAS400/log_2022.json","appendNewline":true,"createDir":false,"overwriteFile":"false","encoding":"none","x":920,"y":2110,"wires":[[]]},{"id":"f30dd169e7f2c4f5","type":"watch","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"","files":"/home/pi/MAS400/log_2022.json","recursive":"","x":690,"y":2180,"wires":[["367fc2cb2bc8f851"]]},{"id":"ad9b7901f88a37b9","type":"ui_text","z":"723a850f03705f70","g":"98311f6f4a71c253","group":"bbf266696379cab5","order":6,"width":3,"height":1,"name":"","label":"Log=","format":"{{msg.payload}} kB","layout":"row-left","className":"","x":940,"y":2180,"wires":[]},{"id":"14d5cffdedc533ac","type":"traffic","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"","property_allow":"payload","filter_allow":"Connected","ignore_case_allow":false,"negate_allow":false,"send_allow":false,"property_stop":"payload","filter_stop":"Disconnected","ignore_case_stop":false,"negate_stop":false,"send_stop":false,"default_start":false,"differ":false,"x":690,"y":2110,"wires":[["db074d5ae07fe758","6e110d1007c4155e"]]},{"id":"3b94aaf22f2b42a9","type":"link in","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"Traffic Light In","links":["162c1b65c4067a39","63ed867f740aca8d","d95eb1cd34ece5a4","5763a9d258715bf9"],"x":575,"y":2110,"wires":[["14d5cffdedc533ac"]]},{"id":"367fc2cb2bc8f851","type":"calculator","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"Convert b to kb","inputMsgField":"size","outputMsgField":"payload","operation":"div","constant":"1024","round":true,"decimals":"0","x":855,"y":2180,"wires":[["ad9b7901f88a37b9"]],"l":false},{"id":"6e110d1007c4155e","type":"link out","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"Traffic Light Out","mode":"link","links":["00d6b8da321e8ab6"],"x":805,"y":2140,"wires":[]},{"id":"5307c263876dc53d","type":"comment","z":"723a850f03705f70","g":"98311f6f4a71c253","name":"Status Log Recording","info":"Archiving of pertinent MQTT /status topic data for later playback and research. \n\n### Traffic Light\nSince unrestrained data capture is costly on storage space, this logic inhibits data logging when MQTT connectivity is down.\n\n### File I/O\nSince my Pi runs on a SSD rather than an SD card, \nall file nodes address local Pi storage. Compare to an alternate possibility of NAS storage, if available.","x":660,"y":2070,"wires":[]},{"id":"f8b797b549a91cc6","type":"link in","z":"723a850f03705f70","g":"03810b4592173062","name":"AIS In","links":["8b9a719230cb1251"],"x":365,"y":400,"wires":[["efe96f4596300a73","9b2b5e8efd3a7524","9bfa41cc56d04d49","6dc3cc279a7a5fb5","b78112a6001422a0","7fa4a4e289b6b740","80385854e8c25d86"]]},{"id":"efe96f4596300a73","type":"change","z":"723a850f03705f70","g":"03810b4592173062","name":"AIS Latitude","rules":[{"t":"move","p":"payload.latitude","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"topic","pt":"msg","to":"lat","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":370,"wires":[["bbb47b35b772e288"]]},{"id":"9b2b5e8efd3a7524","type":"change","z":"723a850f03705f70","g":"03810b4592173062","name":"AIS Longitude","rules":[{"t":"move","p":"payload.longitude","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"topic","pt":"msg","to":"lon","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":430,"wires":[["bbb47b35b772e288"]]},{"id":"9bfa41cc56d04d49","type":"change","z":"723a850f03705f70","g":"03810b4592173062","name":"AIS Name","rules":[{"t":"set","p":"payload","pt":"msg","to":"MAS400AIS","tot":"str"},{"t":"set","p":"topic","pt":"msg","to":"name","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":340,"wires":[["bbb47b35b772e288"]]},{"id":"6dc3cc279a7a5fb5","type":"change","z":"723a850f03705f70","g":"03810b4592173062","name":"AIS Icon","rules":[{"t":"set","p":"payload","pt":"msg","to":"mayflower","tot":"str"},{"t":"set","p":"topic","pt":"msg","to":"icon","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":480,"y":310,"wires":[["bbb47b35b772e288"]]},{"id":"bbb47b35b772e288","type":"join","z":"723a850f03705f70","g":"03810b4592173062","name":"","mode":"custom","build":"object","property":"payload","propertyType":"msg","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"7","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":615,"y":310,"wires":[["1e1707984d1c29ea","ccadf2d86de0d770"]],"l":false},{"id":"b78112a6001422a0","type":"change","z":"723a850f03705f70","g":"03810b4592173062","name":"AIS Heading","rules":[{"t":"move","p":"payload.courseOverGround","pt":"msg","to":"payload","tot":"msg"},{"t":"set","p":"topic","pt":"msg","to":"heading","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":490,"y":400,"wires":[["bbb47b35b772e288"]]},{"id":"7fa4a4e289b6b740","type":"change","z":"723a850f03705f70","g":"03810b4592173062","name":"AIS Icon Color","rules":[{"t":"set","p":"payload","pt":"msg","to":"blue","tot":"str"},{"t":"set","p":"topic","pt":"msg","to":"iconColor","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":460,"wires":[["bbb47b35b772e288"]]},{"id":"ccadf2d86de0d770","type":"worldmap-tracks","z":"723a850f03705f70","g":"03810b4592173062","name":"","depth":"1000","layer":"combined","smooth":false,"x":675,"y":330,"wires":[["1e1707984d1c29ea"]],"l":false},{"id":"522e202ae4c42175","type":"link in","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"AIS In","links":["8b9a719230cb1251"],"x":865,"y":510,"wires":[["1388b8a5a621f2dd"]]},{"id":"1388b8a5a621f2dd","type":"msg-speed","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"","frequency":"hour","interval":1,"estimation":false,"ignore":false,"pauseAtStartup":false,"topicDependent":false,"x":915,"y":510,"wires":[["485b4ccb55cf1374"],[]],"l":false},{"id":"910987f3b400ed74","type":"ui_valuetrail","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","group":"bbf266696379cab5","order":3,"width":8,"height":1,"name":"","label":"","unit":" /status messages per hour","blur":true,"minmax":true,"allowtoggle":false,"showvalue":true,"decimals":0,"colorLine":"#ff0000","colorFromTheme":false,"stroke":"4","property":"payload","pointcount":"24","x":1010,"y":460,"wires":[]},{"id":"485b4ccb55cf1374","type":"ui_valuetrail","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","group":"bbf266696379cab5","order":4,"width":8,"height":1,"name":"","label":"","unit":" /AIS messages per hour","blur":true,"minmax":true,"allowtoggle":false,"showvalue":true,"decimals":0,"colorLine":"#0008ff","colorFromTheme":false,"stroke":"4","property":"payload","pointcount":"24","x":1010,"y":510,"wires":[]},{"id":"ae9b10ca52f13bdd","type":"mqtt in","z":"723a850f03705f70","g":"13cba7e2abe41be3","name":"AIS","topic":"AIS/JSON","qos":"2","datatype":"json","broker":"f12e74aa.501eb8","nl":false,"rap":false,"inputs":0,"x":100,"y":190,"wires":[["8b9a719230cb1251"]]},{"id":"1a21761f7a85df24","type":"mqtt in","z":"723a850f03705f70","g":"13cba7e2abe41be3","name":"Status","topic":"status/JSON","qos":"2","datatype":"json","broker":"f12e74aa.501eb8","nl":false,"rap":false,"inputs":0,"x":100,"y":140,"wires":[["63ed867f740aca8d"]]},{"id":"b5c6298851890342","type":"mqtt in","z":"723a850f03705f70","g":"13cba7e2abe41be3","name":"Replay Status","topic":"replay/status/JSON","qos":"2","datatype":"json","broker":"f12e74aa.501eb8","nl":false,"rap":false,"inputs":0,"x":120,"y":340,"wires":[["cf0652d131e29887"]]},{"id":"457410faa30fbad6","type":"mqtt in","z":"723a850f03705f70","g":"13cba7e2abe41be3","name":"Replay AIS","topic":"replay/AIS/JSON","qos":"2","datatype":"json","broker":"f12e74aa.501eb8","nl":false,"rap":false,"inputs":0,"x":110,"y":290,"wires":[["550e42e551ee6bbe"]]},{"id":"63ed867f740aca8d","type":"link out","z":"723a850f03705f70","g":"13cba7e2abe41be3","name":"Status out","mode":"link","links":["5846da495b8549b7","473860ab77e94487","491c6228c2642eb6","eed36892c1cdd78b","e3807fefe0ea6b3a","7a5aeb4461eddcb2","3b94aaf22f2b42a9"],"x":185,"y":140,"wires":[]},{"id":"8b9a719230cb1251","type":"link out","z":"723a850f03705f70","g":"13cba7e2abe41be3","name":"AIS out","mode":"link","links":["2fdde64cb07f56a1","cb4cbcb675fcb55a","f8b797b549a91cc6","522e202ae4c42175"],"x":185,"y":190,"wires":[]},{"id":"cf0652d131e29887","type":"link out","z":"723a850f03705f70","g":"13cba7e2abe41be3","name":"Replay Status out","mode":"link","links":[],"x":225,"y":340,"wires":[]},{"id":"550e42e551ee6bbe","type":"link out","z":"723a850f03705f70","g":"13cba7e2abe41be3","name":"Replay AIS out","mode":"link","links":[],"x":205,"y":290,"wires":[]},{"id":"6a15d91f5d144c03","type":"comment","z":"723a850f03705f70","g":"13cba7e2abe41be3","name":"MQTT Multi-point Group","info":"**Multi-point topic subscription and processing** \n\nAn aggregation approach to help me isolate intended message routing to explore timing differences.","x":160,"y":100,"wires":[]},{"id":"f7d4705ba1e96cb9","type":"split","z":"723a850f03705f70","g":"575f2d95663315b7","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":735,"y":1340,"wires":[["3c761eb551fbf89d"]],"l":false},{"id":"3c761eb551fbf89d","type":"switch","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Science Pod","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"environment","vt":"str"},{"t":"eq","v":"ups","vt":"str"},{"t":"eq","v":"experiments","vt":"str"},{"t":"eq","v":"system","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":785,"y":1340,"wires":[["6ce9808d52343868"],["7325276bb27990ea"],["14c47183b929c234"],["42af9716e3f51569"]],"l":false},{"id":"42af9716e3f51569","type":"split","z":"723a850f03705f70","g":"575f2d95663315b7","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":895,"y":1570,"wires":[["adc7155754f157ce"]],"l":false},{"id":"8c40765c42ef995e","type":"link out","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Pi4 Out","mode":"link","links":["8531b0fefc308360"],"x":1075,"y":1610,"wires":[]},{"id":"6ce9808d52343868","type":"split","z":"723a850f03705f70","g":"575f2d95663315b7","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":895,"y":1130,"wires":[["73a87c37f30040c1"]],"l":false},{"id":"7325276bb27990ea","type":"split","z":"723a850f03705f70","g":"575f2d95663315b7","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":895,"y":1270,"wires":[["8a19d7fd3a31f057"]],"l":false},{"id":"14c47183b929c234","type":"split","z":"723a850f03705f70","g":"575f2d95663315b7","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":895,"y":1430,"wires":[["e95abfa2cf66cfd8"]],"l":false},{"id":"adc7155754f157ce","type":"switch","z":"723a850f03705f70","g":"575f2d95663315b7","name":"etsMasPi","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"etsMasPi1","vt":"str"},{"t":"eq","v":"etsMasPi2","vt":"str"},{"t":"eq","v":"etsMasPi3","vt":"str"},{"t":"eq","v":"etsMasPi4","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":945,"y":1570,"wires":[["63e9e3082487d97d"],["b2879fcfb194bf45"],["c9cd81d0694043bb"],["30ea5cd6d463fd23"]],"l":false},{"id":"63e9e3082487d97d","type":"split","z":"723a850f03705f70","g":"575f2d95663315b7","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":1025,"y":1520,"wires":[["7e5e66f941bb834e"]],"l":false},{"id":"7e5e66f941bb834e","type":"link out","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Pi1 Out","mode":"link","links":["3de2e218491cca39"],"x":1075,"y":1520,"wires":[]},{"id":"b2879fcfb194bf45","type":"split","z":"723a850f03705f70","g":"575f2d95663315b7","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":1025,"y":1550,"wires":[["05a188e6b8a2a396"]],"l":false},{"id":"05a188e6b8a2a396","type":"link out","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Pi2 Out","mode":"link","links":["12d1519b46dcf437"],"x":1075,"y":1550,"wires":[]},{"id":"2adb9cdbaadf13d4","type":"link out","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Pi3 Out","mode":"link","links":["08525443ce5a87fc"],"x":1075,"y":1580,"wires":[]},{"id":"c9cd81d0694043bb","type":"split","z":"723a850f03705f70","g":"575f2d95663315b7","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":1025,"y":1580,"wires":[["2adb9cdbaadf13d4"]],"l":false},{"id":"30ea5cd6d463fd23","type":"split","z":"723a850f03705f70","g":"575f2d95663315b7","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":1025,"y":1610,"wires":[["8c40765c42ef995e"]],"l":false},{"id":"9ae49b3220d26d38","type":"trigger","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"90s Loss","op1":"","op2":"Lost","op1type":"nul","op2type":"str","duration":"90","extend":true,"overrideDelay":true,"units":"s","reset":"","bytopic":"all","topic":"topic","outputs":1,"x":1015,"y":170,"wires":[["2e95772f341b7f87"]],"l":false},{"id":"f481e904f3c00923","type":"change","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"","rules":[{"t":"set","p":"reset","pt":"msg","to":"0","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":955,"y":170,"wires":[["9ae49b3220d26d38"]],"l":false},{"id":"392cc957659bc318","type":"inject","z":"723a850f03705f70","g":"a1fbbb2c794ac7c2","name":"90s","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"90","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"str","x":955,"y":140,"wires":[["9ae49b3220d26d38"]],"l":false},{"id":"8a19d7fd3a31f057","type":"switch","z":"723a850f03705f70","g":"575f2d95663315b7","name":"UPS","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"batteryCapacity","vt":"str"},{"t":"eq","v":"batteryCharge","vt":"str"},{"t":"eq","v":"batteryVoltage","vt":"str"},{"t":"eq","v":"inputVoltage","vt":"str"},{"t":"eq","v":"outputVoltage","vt":"str"},{"t":"eq","v":"batteryTemperature","vt":"str"}],"checkall":"true","repair":false,"outputs":6,"x":945,"y":1270,"wires":[["7d72c3dade5954f7"],["9b44b436dbd35e69"],["64a8176b08ebd618"],["da8af06744375ba5"],["903d55feaedffdb1"],["718c390de1dc7611"]],"l":false},{"id":"7d72c3dade5954f7","type":"ui_gauge","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Batt Capacity","group":"31184d5abcefe97f","order":2,"width":3,"height":2,"gtype":"gage","title":"<font size=4>Batt Cap</font>","label":"%","format":"{{value}}","min":"20","max":"100","colors":["#c00000","#808000","#008000"],"seg1":"32","seg2":"80","className":"","x":1080,"y":1200,"wires":[]},{"id":"9b44b436dbd35e69","type":"ui_gauge","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Batt Charge","group":"31184d5abcefe97f","order":3,"width":3,"height":2,"gtype":"gage","title":"<font size=4>Batt Chg</font>","label":"%","format":"{{value}}","min":"20","max":"100","colors":["#c00000","#808000","#008000"],"seg1":"32","seg2":"80","x":1080,"y":1230,"wires":[]},{"id":"64a8176b08ebd618","type":"ui_gauge","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Battery Voltage","group":"31184d5abcefe97f","order":4,"width":3,"height":2,"gtype":"gage","title":"<font size=4>Batt V</font>","label":"VDC","format":"{{value}}","min":"0","max":"12","colors":["#c00000","#808000","#008000"],"seg1":"8","seg2":"10","x":1090,"y":1260,"wires":[]},{"id":"da8af06744375ba5","type":"ui_gauge","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Input Voltage","group":"31184d5abcefe97f","order":5,"width":3,"height":2,"gtype":"gage","title":"<font size=4>Input V</font>","label":"VDC","format":"{{value}}","min":"0","max":"12","colors":["#c00000","#808000","#008000"],"seg1":"8","seg2":"10","x":1080,"y":1290,"wires":[]},{"id":"903d55feaedffdb1","type":"ui_gauge","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Output Voltage","group":"31184d5abcefe97f","order":6,"width":3,"height":2,"gtype":"gage","title":"<font size=4>Output V</font>","label":"VDC","format":"{{value}}","min":"0","max":"12","colors":["#c00000","#808000","#008000"],"seg1":"8","seg2":"10","x":1090,"y":1320,"wires":[]},{"id":"718c390de1dc7611","type":"ui_gauge","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Battery Temperature","group":"31184d5abcefe97f","order":7,"width":3,"height":2,"gtype":"gage","title":"<font size=4>Batt Temp</font>","label":"°","format":"{{value}}","min":"0","max":"50","colors":["#c00000","#808000","#008000"],"seg1":"5","seg2":"10","x":1110,"y":1350,"wires":[]},{"id":"e95abfa2cf66cfd8","type":"switch","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Experiments","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"hydrophone","vt":"str"},{"t":"eq","v":"gnssimu","vt":"str"},{"t":"eq","v":"tds","vt":"str"},{"t":"eq","v":"video","vt":"str"}],"checkall":"true","repair":false,"outputs":4,"x":945,"y":1430,"wires":[["fffb53301b7b78ae"],["0cc98cdd1f1a4f36"],["6efcfd92c1767119"],["20c44b453080a64a"]],"l":false},{"id":"fffb53301b7b78ae","type":"ui_led","z":"723a850f03705f70","g":"575f2d95663315b7","order":2,"group":"3996f46131aa3d51","width":4,"height":2,"label":"Hydrophone","labelPlacement":"right","labelAlignment":"left","colorForValue":[{"color":"#008000","value":"RUNNING","valueType":"str"},{"color":"#ffff00","value":"OFFLINE","valueType":"str"},{"color":"#ff0000","value":"ERROR","valueType":"str"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Hydrophone","x":1080,"y":1390,"wires":[]},{"id":"0cc98cdd1f1a4f36","type":"ui_led","z":"723a850f03705f70","g":"575f2d95663315b7","order":4,"group":"3996f46131aa3d51","width":4,"height":2,"label":"GNSS IMU","labelPlacement":"right","labelAlignment":"left","colorForValue":[{"color":"#008000","value":"RUNNING","valueType":"str"},{"color":"#ffff00","value":"OFFLINE","valueType":"str"},{"color":"#ff0000","value":"ERROR","valueType":"str"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"GNSSIMU","x":1080,"y":1420,"wires":[]},{"id":"20c44b453080a64a","type":"ui_led","z":"723a850f03705f70","g":"575f2d95663315b7","order":8,"group":"3996f46131aa3d51","width":4,"height":2,"label":"Video","labelPlacement":"right","labelAlignment":"left","colorForValue":[{"color":"#008000","value":"RUNNING","valueType":"str"},{"color":"#ffff00","value":"OFFLINE","valueType":"str"},{"color":"#ff0000","value":"ERROR","valueType":"str"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"Video","x":1060,"y":1480,"wires":[]},{"id":"6efcfd92c1767119","type":"ui_led","z":"723a850f03705f70","g":"575f2d95663315b7","order":6,"group":"3996f46131aa3d51","width":4,"height":2,"label":"TDS","labelPlacement":"right","labelAlignment":"left","colorForValue":[{"color":"#008000","value":"RUNNING","valueType":"str"},{"color":"#ffff00","value":"OFFLINE","valueType":"str"},{"color":"#ff0000","value":"ERROR","valueType":"str"}],"allowColorForValueInMessage":false,"shape":"circle","showGlow":true,"name":"TDS","x":1060,"y":1450,"wires":[]},{"id":"b4f4d84e006a0ff5","type":"split","z":"723a850f03705f70","g":"24a68d6833825b17","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":1325,"y":920,"wires":[["55bfcb19f0eadaeb"]],"l":false},{"id":"55bfcb19f0eadaeb","type":"switch","z":"723a850f03705f70","g":"24a68d6833825b17","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"timestamp","vt":"str"},{"t":"eq","v":"temperatureDegC","vt":"str"},{"t":"eq","v":"soundSpeedms1","vt":"str"},{"t":"eq","v":"salinity","vt":"str"},{"t":"eq","v":"densitykgm3","vt":"str"},{"t":"eq","v":"pressDepth","vt":"str"}],"checkall":"true","repair":false,"outputs":6,"x":1375,"y":920,"wires":[["e4c1b8473ccac4df"],["6e5a4105d3e8c62d"],["6f2a43b4911bddfe"],["4ffeeaec66148398"],["70ae7622a4cfd47a"],["977d7ffd0ec873af"]],"l":false},{"id":"e4c1b8473ccac4df","type":"join","z":"723a850f03705f70","g":"24a68d6833825b17","name":"","mode":"custom","build":"array","property":"","propertyType":"full","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"1","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":1415,"y":850,"wires":[["7215cab95f4b1253"]],"l":false},{"id":"7215cab95f4b1253","type":"ui_table","z":"723a850f03705f70","g":"24a68d6833825b17","group":"97458735c2508590","name":"CTD","order":3,"width":8,"height":1,"columns":[{"field":"topic","title":"Topic","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"payload","title":"Value","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":0,"cts":false,"x":1500,"y":850,"wires":[]},{"id":"67a1fc967a871fdc","type":"unit-converter","z":"723a850f03705f70","g":"df021e7f9c11434c","category":"temperature","inputUnit":"C","outputUnit":"F","inputField":"payload","outputField":"payload","inputFieldType":"msg","outputFieldType":"msg","roundOutputField":false,"outputFieldDecimals":2,"name":"","x":235,"y":930,"wires":[["8c0d0baa.4c90a8"]],"l":false},{"id":"80385854e8c25d86","type":"change","z":"723a850f03705f70","g":"03810b4592173062","name":"AIS Track Color","rules":[{"t":"set","p":"payload.color","pt":"msg","to":"#00F","tot":"str"},{"t":"set","p":"topic","pt":"msg","to":"color","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":500,"y":490,"wires":[["bbb47b35b772e288"]]},{"id":"0c293f01b121cbd6","type":"unit-converter","z":"723a850f03705f70","g":"df021e7f9c11434c","category":"temperature","inputUnit":"C","outputUnit":"F","inputField":"payload","outputField":"payload","inputFieldType":"msg","outputFieldType":"msg","roundOutputField":false,"outputFieldDecimals":2,"name":"","x":235,"y":1340,"wires":[["11e04ab5848925c1"]],"l":false},{"id":"3905758b4728e741","type":"unit-converter","z":"723a850f03705f70","g":"df021e7f9c11434c","category":"temperature","inputUnit":"C","outputUnit":"F","inputField":"payload","outputField":"payload","inputFieldType":"msg","outputFieldType":"msg","roundOutputField":false,"outputFieldDecimals":2,"name":"","x":235,"y":1750,"wires":[["d8c1eee878bee35a"]],"l":false},{"id":"fc14a28dc53a8ac2","type":"unit-converter","z":"723a850f03705f70","g":"df021e7f9c11434c","category":"temperature","inputUnit":"C","outputUnit":"F","inputField":"payload","outputField":"payload","inputFieldType":"msg","outputFieldType":"msg","roundOutputField":false,"outputFieldDecimals":2,"name":"","x":235,"y":2160,"wires":[["52d156fe04c785c9"]],"l":false},{"id":"ee43616747db476e","type":"calculator","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"","inputMsgField":"payload","outputMsgField":"payload","operation":"div","constant":"1024","round":true,"decimals":0,"x":235,"y":1030,"wires":[["3ac6ede1.1b68f2"]],"l":false},{"id":"dbbced2967e891ab","type":"calculator","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"","inputMsgField":"payload","outputMsgField":"payload","operation":"div","constant":"1024","round":true,"decimals":0,"x":235,"y":1440,"wires":[["42e1fc378068a668"]],"l":false},{"id":"cb5995699fa307bf","type":"calculator","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"","inputMsgField":"payload","outputMsgField":"payload","operation":"div","constant":"1024","round":true,"decimals":0,"x":235,"y":1850,"wires":[["3c3a07eaf15358eb"]],"l":false},{"id":"0af6d094acfa4258","type":"calculator","z":"723a850f03705f70","g":"df021e7f9c11434c","name":"","inputMsgField":"payload","outputMsgField":"payload","operation":"div","constant":"1024","round":true,"decimals":0,"x":235,"y":2260,"wires":[["5ee626d4286deb5c"]],"l":false},{"id":"8a188249be3fe3c9","type":"ui_artlessgauge","z":"723a850f03705f70","g":"f0f6caf54c075a94","group":"2ad9686.f1b5d98","order":5,"width":3,"height":3,"name":"Voyage","icon":"","label":"Voyage Completion","unit":"%","layout":"radial","decimals":0,"differential":false,"minmax":true,"colorTrack":"#555555","style":"","colorFromTheme":true,"property":"payload.percent","secondary":"secondary","inline":false,"animate":false,"sectors":[{"val":0,"col":"#ffffff","t":"min","dot":0},{"val":100,"col":"#ffffff","t":"max","dot":0}],"lineWidth":"7","bgcolorFromTheme":true,"diffCenter":"","x":830,"y":980,"wires":[]},{"id":"c5f0c281539f948f","type":"ui_table","z":"723a850f03705f70","g":"40d12ce7239ed051","group":"f463284079f7c3a6","name":"O2","order":2,"width":7,"height":4,"columns":[{"field":"topic","title":"Topic","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"payload","title":"Value","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":0,"cts":false,"x":1660,"y":1460,"wires":[]},{"id":"3433d031a24eb308","type":"switch","z":"723a850f03705f70","g":"40d12ce7239ed051","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"timestamp","vt":"str"},{"t":"eq","v":"measurement1","vt":"str"},{"t":"eq","v":"measurement2","vt":"str"},{"t":"eq","v":"temperatureDegC","vt":"str"},{"t":"eq","v":"rawTemp","vt":"str"},{"t":"eq","v":"calPhaseDeg","vt":"str"},{"t":"eq","v":"tcPhaseDeg","vt":"str"},{"t":"eq","v":"c1rphDeg","vt":"str"},{"t":"eq","v":"c2rphDeg","vt":"str"},{"t":"eq","v":"c1AmpvV","vt":"str"},{"t":"eq","v":"c2AmpvV","vt":"str"},{"t":"eq","v":"o2Concentration","vt":"str"},{"t":"eq","v":"airSaturationPct","vt":"str"}],"checkall":"true","repair":false,"outputs":13,"x":1475,"y":1540,"wires":[["654f0c905a7c7f76"],["654f0c905a7c7f76"],["654f0c905a7c7f76"],["654f0c905a7c7f76"],["654f0c905a7c7f76"],["63755cb01771b633"],["63755cb01771b633"],["5537d594d77a90c5"],["5537d594d77a90c5"],["22b7a98945533917"],["22b7a98945533917"],["ad14a4e6010c36c7"],["18b5ce9318ccf98e"]],"l":false},{"id":"654f0c905a7c7f76","type":"join","z":"723a850f03705f70","g":"40d12ce7239ed051","name":"","mode":"custom","build":"array","property":"","propertyType":"full","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"5","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":1565,"y":1490,"wires":[["c5f0c281539f948f"]],"l":false},{"id":"0eaebfc3759251df","type":"ui_table","z":"723a850f03705f70","g":"f0f6caf54c075a94","group":"ea0659da39d3985f","name":"Depth","order":1,"width":9,"height":4,"columns":[{"field":"topic","title":"Topic","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"payload","title":"Value","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":0,"cts":false,"x":970,"y":890,"wires":[]},{"id":"ab9f7b41121658b8","type":"join","z":"723a850f03705f70","g":"f0f6caf54c075a94","name":"","mode":"custom","build":"array","property":"","propertyType":"full","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"5","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":885,"y":890,"wires":[["0eaebfc3759251df"]],"l":false},{"id":"f4c79784136bebc2","type":"switch","z":"723a850f03705f70","g":"f0f6caf54c075a94","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"timestamp","vt":"str"},{"t":"eq","v":"depthUnits","vt":"str"},{"t":"eq","v":"pressure","vt":"str"},{"t":"eq","v":"pressureUnits","vt":"str"},{"t":"eq","v":"depth","vt":"str"}],"checkall":"true","repair":false,"outputs":5,"x":815,"y":890,"wires":[["ab9f7b41121658b8"],["ab9f7b41121658b8"],["ab9f7b41121658b8"],["ab9f7b41121658b8"],["ab9f7b41121658b8","c34348bf198286b5"]],"l":false},{"id":"a30e14472a810836","type":"comment","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Science Pod Group","info":"A topic breakout flow for data collection from the onboard science pod. \n\n**Environment** \nThese datum appear to refer to an immediate area within the hull; the air temperature here differs significantly from the air temperature reported in the /status topic. \n\n**UPS** \nA telemetry set most likely associated with the main conditioned DC power system, but might actually be an independent power source for critical systems only. \n\n**Experiments** \nThese datum appear to refer to an immediate area within the hull; the air temperature here differs significantly from the air temperature reported in the /status topic. \n\nShows the state of the hydrophone, GNSS, TDS, VIDEO experiments as: \n- Green (RUNNING) \n- Yellow (OFFLINE) \n- Red (ERROR) \n \n","x":650,"y":1100,"wires":[]},{"id":"d93874fd5c600f8b","type":"comment","z":"723a850f03705f70","g":"76fcb5288eb1cd8a","name":"Local CPU Group","info":"**RasPi Telemetry** \n\nNot actually a part of the MAS400 project, this code merely reports the condition of the Raspberry Pi being used for my MAS400 monitor.","x":640,"y":2590,"wires":[]},{"id":"c2bc6a55783ec102","type":"split","z":"723a850f03705f70","g":"40d12ce7239ed051","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":1425,"y":1540,"wires":[["3433d031a24eb308"]],"l":false},{"id":"ba1be765ac58a545","type":"split","z":"723a850f03705f70","g":"f0f6caf54c075a94","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":765,"y":890,"wires":[["f4c79784136bebc2"]],"l":false},{"id":"ad14a4e6010c36c7","type":"ui_chart","z":"723a850f03705f70","g":"40d12ce7239ed051","name":"O2 Con","group":"f463284079f7c3a6","order":1,"width":14,"height":4,"label":"","chartType":"line","legend":"true","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"7","removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1610,"y":1610,"wires":[[]]},{"id":"18b5ce9318ccf98e","type":"ui_chart","z":"723a850f03705f70","g":"40d12ce7239ed051","name":"Air Sat","group":"f463284079f7c3a6","order":3,"width":14,"height":4,"label":"","chartType":"line","legend":"true","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"7","removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1600,"y":1640,"wires":[[]]},{"id":"ab4cc294ad07f393","type":"inject","z":"723a850f03705f70","g":"40d12ce7239ed051","name":"","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"[]","payloadType":"json","x":1565,"y":1460,"wires":[["c5f0c281539f948f"]],"l":false},{"id":"22b7a98945533917","type":"ui_chart","z":"723a850f03705f70","g":"40d12ce7239ed051","name":"AmpvV","group":"f463284079f7c3a6","order":8,"width":14,"height":4,"label":"","chartType":"line","legend":"true","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"7","removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1610,"y":1580,"wires":[[]]},{"id":"5537d594d77a90c5","type":"ui_chart","z":"723a850f03705f70","g":"40d12ce7239ed051","name":"rphDeg","group":"f463284079f7c3a6","order":13,"width":14,"height":4,"label":"","chartType":"line","legend":"true","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"7","removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1610,"y":1550,"wires":[[]]},{"id":"63755cb01771b633","type":"ui_chart","z":"723a850f03705f70","g":"40d12ce7239ed051","name":"PhaseDeg","group":"f463284079f7c3a6","order":18,"width":14,"height":4,"label":"","chartType":"line","legend":"true","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"7","removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1620,"y":1520,"wires":[[]]},{"id":"977d7ffd0ec873af","type":"ui_chart","z":"723a850f03705f70","g":"24a68d6833825b17","name":"Press Depth","group":"97458735c2508590","order":1,"width":10,"height":5,"label":"","chartType":"line","legend":"true","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"7","removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1520,"y":1000,"wires":[[]]},{"id":"70ae7622a4cfd47a","type":"ui_chart","z":"723a850f03705f70","g":"24a68d6833825b17","name":"Density","group":"97458735c2508590","order":6,"width":10,"height":5,"label":"","chartType":"line","legend":"true","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"7","removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1510,"y":970,"wires":[[]]},{"id":"4ffeeaec66148398","type":"ui_chart","z":"723a850f03705f70","g":"24a68d6833825b17","name":"Salinity","group":"97458735c2508590","order":5,"width":10,"height":5,"label":"","chartType":"line","legend":"true","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"7","removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1510,"y":940,"wires":[[]]},{"id":"6f2a43b4911bddfe","type":"ui_chart","z":"723a850f03705f70","g":"24a68d6833825b17","name":"Sound speed","group":"97458735c2508590","order":8,"width":10,"height":5,"label":"","chartType":"line","legend":"true","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"7","removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1520,"y":910,"wires":[[]]},{"id":"6e5a4105d3e8c62d","type":"ui_chart","z":"723a850f03705f70","g":"24a68d6833825b17","name":"Temp °C","group":"97458735c2508590","order":7,"width":10,"height":5,"label":"","chartType":"line","legend":"true","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"7","removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1510,"y":880,"wires":[[]]},{"id":"c34348bf198286b5","type":"calculator","z":"723a850f03705f70","g":"f0f6caf54c075a94","name":"m to fathoms","inputMsgField":"payload","outputMsgField":"payload","operation":"mult","constant":"0.54680665","round":true,"decimals":0,"x":885,"y":920,"wires":[["0f81065653f51533"]],"l":false},{"id":"0f81065653f51533","type":"ui_level","z":"723a850f03705f70","g":"f0f6caf54c075a94","group":"2ad9686.f1b5d98","order":8,"width":5,"height":1,"name":"Depth via fathometry","label":"Depth via fathometry","colorHi":"#0000ff","colorWarn":"#c000c0","colorNormal":"#600060","colorOff":"#303030","min":"0","max":"300","segWarn":"100","segHigh":"200","unit":"Fathoms","layout":"sh","channelA":"","channelB":"","decimals":0,"animations":"soft","shape":"2","colorschema":"fixed","textoptions":"default","colorText":"#eeeeee","fontLabel":"","fontValue":"","fontSmall":"","colorFromTheme":true,"textAnimations":false,"hideValue":false,"tickmode":"segments","peakmode":false,"property":"payload","peaktime":3000,"x":1020,"y":920,"wires":[]},{"id":"39215d73fd7892b3","type":"comment","z":"723a850f03705f70","g":"40d12ce7239ed051","name":"O2 Group","info":"See also https://jpwsutton.github.io/mayflower_autonomous_ship_data/docs/data-feeds/#o2\n","x":1350,"y":1420,"wires":[]},{"id":"fee15aeec1d23d8a","type":"comment","z":"723a850f03705f70","g":"24a68d6833825b17","name":"CTD Group","info":"See https://jpwsutton.github.io/mayflower_autonomous_ship_data/docs/data-feeds/#ctd","x":1260,"y":850,"wires":[]},{"id":"8934b5d021033d55","type":"mqtt in","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Science Pod","topic":"science/science_pod/JSON","qos":"2","datatype":"json","broker":"f12e74aa.501eb8","nl":false,"rap":false,"inputs":0,"x":630,"y":1340,"wires":[["f7d4705ba1e96cb9"]]},{"id":"73a87c37f30040c1","type":"switch","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Environment","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"temperatureC","vt":"str"},{"t":"eq","v":"humidity","vt":"str"},{"t":"eq","v":"pressureHPA","vt":"str"}],"checkall":"true","repair":false,"outputs":3,"x":945,"y":1130,"wires":[["f9ec7e6df6cd6981"],["9d57bfc92bfda3f9"],["2ddb6e252eb92315"]],"l":false},{"id":"f9ec7e6df6cd6981","type":"unit-converter","z":"723a850f03705f70","g":"575f2d95663315b7","category":"temperature","inputUnit":"C","outputUnit":"F","inputField":"payload","outputField":"payload","inputFieldType":"msg","outputFieldType":"msg","roundOutputField":true,"outputFieldDecimals":"1","name":"","x":1025,"y":1100,"wires":[["9a9385ba7b946036"]],"l":false},{"id":"9a9385ba7b946036","type":"ui_chart","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Air Temp","group":"9a0ac07eb089bbcd","order":1,"width":7,"height":3,"label":"Air Temp","chartType":"line","legend":"false","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"12","removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1120,"y":1100,"wires":[[]]},{"id":"9d57bfc92bfda3f9","type":"ui_chart","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Humidity","group":"9a0ac07eb089bbcd","order":2,"width":7,"height":3,"label":"Humidity","chartType":"line","legend":"false","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"12","removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1070,"y":1130,"wires":[[]]},{"id":"2ddb6e252eb92315","type":"ui_chart","z":"723a850f03705f70","g":"575f2d95663315b7","name":"Pressure","group":"9a0ac07eb089bbcd","order":3,"width":7,"height":3,"label":"Pressure","chartType":"line","legend":"false","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"12","removeOlderPoints":"","removeOlderUnit":"3600","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1070,"y":1160,"wires":[[]]},{"id":"991a75060cf52191","type":"mqtt in","z":"723a850f03705f70","g":"24a68d6833825b17","name":"CTD","topic":"science/ctd/JSON","qos":"2","datatype":"json","broker":"f12e74aa.501eb8","nl":false,"rap":false,"inputs":0,"x":1240,"y":920,"wires":[["b4f4d84e006a0ff5"]]},{"id":"f804f9ee89420800","type":"debug","z":"723a850f03705f70","g":"575f2d95663315b7","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"true","targetType":"full","statusVal":"","statusType":"auto","x":930,"y":1360,"wires":[]},{"id":"118f06c465ef5d87","type":"mqtt in","z":"723a850f03705f70","g":"40d12ce7239ed051","name":"O2","topic":"science/o2/JSON","qos":"2","datatype":"json","broker":"f12e74aa.501eb8","nl":false,"rap":false,"inputs":0,"x":1340,"y":1540,"wires":[["c2bc6a55783ec102"]]},{"id":"08ff58e1841a957f","type":"change","z":"723a850f03705f70","g":"03810b4592173062","name":"Range Rings","rules":[{"t":"set","p":"payload.arc","pt":"msg","to":"{\"ranges\":[50000,100000,150000,200000,250000],\"fov\":0,\"color\":\"#000\",\"weight\":1}","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":675,"y":220,"wires":[["1e1707984d1c29ea"]],"l":false},{"id":"d3f1f44b210f1f8b","type":"mqtt in","z":"723a850f03705f70","g":"693f162dbf677324","name":"Replay Hazard","topic":"replay/hazard/JSON","qos":"2","datatype":"json","broker":"f12e74aa.501eb8","nl":false,"rap":false,"inputs":0,"x":640,"y":1750,"wires":[["dcd16115ec7bcf9f","fef4ead37857648c"]]},{"id":"68b2ca9799d01f60","type":"mqtt in","z":"723a850f03705f70","g":"f0f6caf54c075a94","name":"Depth","topic":"science/depth/JSON","qos":"2","datatype":"json","broker":"f12e74aa.501eb8","nl":false,"rap":false,"inputs":0,"x":680,"y":890,"wires":[["ba1be765ac58a545"]]},{"id":"4d175d726b015abf","type":"mqtt in","z":"723a850f03705f70","g":"f0f6caf54c075a94","name":"Distance","topic":"distance/JSON","qos":"2","datatype":"json","broker":"f12e74aa.501eb8","nl":false,"rap":false,"inputs":0,"x":690,"y":980,"wires":[["8a188249be3fe3c9"]]},{"id":"e8472da27f2b4e27","type":"switch","z":"723a850f03705f70","g":"d5142240213ef174","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"timestamp","vt":"str"},{"t":"eq","v":"turb","vt":"str"},{"t":"eq","v":"intTemp","vt":"str"},{"t":"eq","v":"gain","vt":"str"},{"t":"eq","v":"ABS1","vt":"str"},{"t":"eq","v":"ABS2","vt":"str"},{"t":"eq","v":"ABS3","vt":"str"},{"t":"eq","v":"ABS4","vt":"str"},{"t":"eq","v":"ChlAc2","vt":"str"},{"t":"eq","v":"ChlBc2","vt":"str"},{"t":"eq","v":"ChlAc3","vt":"str"},{"t":"eq","v":"ChlBc3","vt":"str"},{"t":"eq","v":"phycoerythrin2","vt":"str"},{"t":"eq","v":"phycocyanin2","vt":"str"},{"t":"eq","v":"phycoerythrin3","vt":"str"},{"t":"eq","v":"phycocyanin3","vt":"str"}],"checkall":"true","repair":false,"outputs":16,"x":1515,"y":1210,"wires":[["29b8608e6a3f8f32"],["29b8608e6a3f8f32"],["29b8608e6a3f8f32"],["29b8608e6a3f8f32"],["b4d2744df52c75ad"],["b4d2744df52c75ad"],["b4d2744df52c75ad"],["b4d2744df52c75ad"],["ac7e0d75c01f375c"],["ac7e0d75c01f375c"],["ac7e0d75c01f375c"],["ac7e0d75c01f375c"],["a668915340ea6869"],["a668915340ea6869"],["a668915340ea6869"],["a668915340ea6869"]],"l":false},{"id":"b6581cc1addd2a00","type":"split","z":"723a850f03705f70","g":"d5142240213ef174","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":1465,"y":1210,"wires":[["e8472da27f2b4e27"]],"l":false},{"id":"80da678c71700f3d","type":"ui_table","z":"723a850f03705f70","g":"d5142240213ef174","group":"496c910cb8914c15","name":"Fluorometer","order":2,"width":7,"height":4,"columns":[{"field":"topic","title":"Topic","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"payload","title":"Value","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":0,"cts":false,"x":1690,"y":1140,"wires":[]},{"id":"29b8608e6a3f8f32","type":"join","z":"723a850f03705f70","g":"d5142240213ef174","name":"","mode":"custom","build":"array","property":"","propertyType":"full","key":"topic","joiner":"\\n","joinerType":"str","accumulate":false,"timeout":"","count":"4","reduceRight":false,"reduceExp":"","reduceInit":"","reduceInitType":"num","reduceFixup":"","x":1585,"y":1140,"wires":[["80da678c71700f3d"]],"l":false},{"id":"ac7e0d75c01f375c","type":"ui_chart","z":"723a850f03705f70","g":"d5142240213ef174","name":"Chlorophyll Group","group":"496c910cb8914c15","order":3,"width":14,"height":4,"label":"","chartType":"line","legend":"true","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"7","removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1660,"y":1240,"wires":[[]]},{"id":"b4d2744df52c75ad","type":"ui_chart","z":"723a850f03705f70","g":"d5142240213ef174","name":"ABS Group","group":"496c910cb8914c15","order":1,"width":14,"height":4,"label":"","chartType":"line","legend":"true","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"7","removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1640,"y":1190,"wires":[[]]},{"id":"a668915340ea6869","type":"ui_chart","z":"723a850f03705f70","g":"d5142240213ef174","name":"Phyco-Group","group":"496c910cb8914c15","order":8,"width":14,"height":4,"label":"","chartType":"line","legend":"true","xformat":"HH:mm","interpolate":"linear","nodata":"","dot":false,"ymin":"","ymax":"","removeOlder":"7","removeOlderPoints":"","removeOlderUnit":"86400","cutout":0,"useOneColor":false,"useUTC":false,"colors":["#1f77b4","#aec7e8","#ff7f0e","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5"],"outputs":1,"useDifferentColor":false,"className":"","x":1640,"y":1290,"wires":[[]]},{"id":"116560e0644c865f","type":"comment","z":"723a850f03705f70","g":"d5142240213ef174","name":"Fluorometry Group","info":"See https://jpwsutton.github.io/mayflower_autonomous_ship_data/docs/data-feeds/#fluorometer\n\nMeasures chlorophyll concentrations based on fluorescence by phytoplankton cell pigments, a widely-used proxy for the quantity (biomass) of microscopic algae in the water.","x":1380,"y":1100,"wires":[]},{"id":"0225ea13c8cdaa91","type":"mqtt in","z":"723a850f03705f70","g":"d5142240213ef174","name":"Fluorometer","topic":"science/fluorometer/JSON","qos":"2","datatype":"json","broker":"f12e74aa.501eb8","nl":false,"rap":false,"inputs":0,"x":1360,"y":1210,"wires":[["b6581cc1addd2a00"]]},{"id":"7f31d818603fabae","type":"link in","z":"723a850f03705f70","g":"5ce273ee75ad31e7","name":"Radar In","links":["162c1b65c4067a39","5763a9d258715bf9"],"x":75,"y":640,"wires":[["928fba2f05e06085","9e9ca0b9bf09c459"]]},{"id":"6f2772d8b2d171e4","type":"split","z":"723a850f03705f70","g":"5ce273ee75ad31e7","name":"","splt":"\\n","spltType":"str","arraySplt":1,"arraySpltType":"len","stream":false,"addname":"topic","x":185,"y":640,"wires":[["732c05fe05638238"]],"l":false},{"id":"8034aaa7bd4653c9","type":"comment","z":"723a850f03705f70","g":"5ce273ee75ad31e7","name":"AIS Radar","info":"Example as an array: \n`[{\"vesselName\":\"JOSIE JUSTIN\",\"mmsi\":\"316026978\",\"positionDate\":\"2022-06-27 23:23:16\",\"speedKts\":4.1,\"courseDeg\":128,\"distanceKm\":11.9,\"bearingDeg\":214},{\"vesselName\":\"NORWEGIAN NIGHTMARE\",\"mmsi\":\"316033853\",\"positionDate\":\"2022-06-28 06:27:26\",\"speedKts\":1.8,\"courseDeg\":47,\"distanceKm\":19.4,\"bearingDeg\":310}]`\n\nExamples as objects:\n\n`{\"vesselName\":\"QUEEN MARY 2\",\"mmsi\":\"310627000\",\"positionDate\":\"2022-06-03 17:25:35\",\"speedKts\":23.3,\"courseDeg\":255,\"distanceKm\":100.6,\"bearingDeg\":355}`\n\n`{\"vesselName\":\"ENDEAVOR\",\"mmsi\":\"303471000\",\"positionDate\":\"2022-06-04 12:34:08\",\"speedKts\":10.7,\"courseDeg\":261,\"distanceKm\":38.4,\"bearingDeg\":232}`\n\n`{\"vesselName\":\"ATLANTIC SAIL\",\"mmsi\":\"215809000\",\"positionDate\":\"2022-06-04 12:35:06\",\"speedKts\":17,\"courseDeg\":71,\"distanceKm\":98.3,\"bearingDeg\":3}`\n\n`{\"vesselName\":\"GLASGOW EXPRESS\",\"mmsi\":\"310826000\",\"positionDate\":\"2022-06-04 12:35:01\",\"speedKts\":13.1,\"courseDeg\":273,\"distanceKm\":92.8,\"bearingDeg\":40}`\n\n`{\"vesselName\":\"SKAL\",\"mmsi\":\"368228210\",\"positionDate\":\"2022-06-04 08:52:01\",\"speedKts\":2.6,\"courseDeg\":334,\"distanceKm\":94,\"bearingDeg\":23}`\n\nAs JSON Object with Array:\n`{\"topic\":\"AISradar\",\"payload\":[{\"vesselName\":\"ENDEAVOR\",\"mmsi\":\"303471000\",\"positionDate\":\"2022-06-04 12:34:08\",\"speedKts\":10.7,\"courseDeg\":261,\"distanceKm\":38.4,\"bearingDeg\":232},{\"vesselName\":\"ATLANTIC SAIL\",\"mmsi\":\"215809000\",\"positionDate\":\"2022-06-04 12:35:06\",\"speedKts\":17,\"courseDeg\":71,\"distanceKm\":98.3,\"bearingDeg\":3},{\"vesselName\":\"GLASGOW EXPRESS\",\"mmsi\":\"310826000\",\"positionDate\":\"2022-06-04 12:35:01\",\"speedKts\":13.1,\"courseDeg\":273,\"distanceKm\":92.8,\"bearingDeg\":40},{\"vesselName\":\"SKAL\",\"mmsi\":\"368228210\",\"positionDate\":\"2022-06-04 08:52:01\",\"speedKts\":2.6,\"courseDeg\":334,\"distanceKm\":94,\"bearingDeg\":23}],\"qos\":0,\"retain\":true,\"_msgid\":\"c80f35fdab2badae\",\"_event\":\"node:162c1b65c4067a39\"}` \n\n**Circles and Ellipses** \nIf the msg.payload contains a **radius:**, as well as **name:**, **lat:** and **lon:**, then it will instead draw a circle. The **radius:** is in meters. \n`msg.payload = {name\":\"A3090\", \"lat\":51.05, \"lon\":-1.35, \"radius\":3000}` \n\nLike Areas and Lines you may also specify color, fillColor, and layer (see Options below).\n`msg.payload = {\"name\": \"circle\", \"lat\": 51.515, \"lon\": -0.1235, \"radius\": 1000, \"layer\": \"drawing\", \"iconColor\": '#464646', \"stroke\": false, \"fillOpacity\": 0.8, \"clickable\": true};` \n\nIf **radius:** is an [array of two numbers], they specify minor and major radii of an ellipse in meters. A **tilt:** can be applied to rotate it in °. \n`msg.payload = { \"name\":\"Bristol Channel\", \"lat\":51.5, \"lon\":-2.9, \"radius\":[30000,70000], \"tilt\":45 };` \n\n**Arcs, Range Rings** \nYou can add supplemental arc(s) to a marker by adding an **arc:** as below. You can also specify a line using **bearing:** and **length:**. \n\n`msg.payload = { name:\"Camera01\", icon:\"fa-camera\", lat:51.05, lon:-1.35,\n bearing: 235,\n length: 2200,\n arc: {\n ranges: [500,1000,2000],\n pan: 228,\n fov: 40,\n color: '#aaaa00',\n weight: 1\n }\n}` \nRanges can be a single number or an array of arc distances from the marker. The pan is the bearing of the centre of the arc, and the fov (Field of view) specifies the angle of the arc. Defaults are shown above. \n\n**Options** \nAreas, Rectangles, Lines, Circles and Ellipses can also specify: \n- layer : declares which layer you put it on.\n- color : can set the colour of the polygon or line.\n- opacity : the opacity of the line or outline.\n- fillColor : can set the fill colour of the polygon.\n- fillOpacity : can set the opacity of the polygon fill colour.\n- dashArray : optional dash array for polyline.\n- clickable : boolean - set to true to allow click to show popup.\n- popup : html string to display in popup (as well as name).\n- editable : boolean - set to true to allow simple edit/delete right click contextmenu.\n- contextmenu : html string to display a more complex right click contextmenu.\n- weight : the width of the line or outline.\n \nhttps://www.igismap.com/formula-to-find-bearing-or-heading-angle-between-two-points-latitude-longitude/#:~:text=Here%20is%20the%20formula%20to%20find%20the%20second,cos%20Ad%20%E2%80%93%20sin%20la1%20%2A%20sin%20la2%29 \n\nFormula to find second lat lon point when bearing, distance and first lat lon is given: \n\nFind out the where a ship is, if you have range, bearing and the starting point (lat,lon)?\n\nFirst point latitude la1. \nFirst point longitude as lo1. \nd be distance. \nR as radius of Earth. \nAd as angular distance (i.e d/R) and \nθ be the bearing. \n\nHere is the formula to find the second point, when first point, bearing and distance is known:\n\nlatitude of second point = \nla2 = \nasin(sin la1 * cos Ad + cos la1 * sin Ad * cos θ), and \nlongitude of second point = \nlo2 = lo1 + atan2(sin θ * sin Ad * cos la1, cos Ad – sin la1 * sin la2)","x":120,"y":600,"wires":[]},{"id":"732c05fe05638238","type":"switch","z":"723a850f03705f70","g":"5ce273ee75ad31e7","name":"","property":"topic","propertyType":"msg","rules":[{"t":"eq","v":"vesselName","vt":"str"},{"t":"eq","v":"bearingDeg","vt":"str"}],"checkall":"true","repair":false,"outputs":2,"x":235,"y":640,"wires":[["6e3abd28838fa15b"],["9b9a0dc0764f0718"]],"l":false},{"id":"928fba2f05e06085","type":"array-splitter","z":"723a850f03705f70","g":"5ce273ee75ad31e7","name":"","topic":"","index":0,"x":135,"y":640,"wires":[["6f2772d8b2d171e4"]],"l":false},{"id":"031f44ea4d33b28f","type":"mqtt in","z":"723a850f03705f70","g":"13cba7e2abe41be3","name":"AIS Radar","topic":"AISradar","qos":"2","datatype":"json","broker":"f12e74aa.501eb8","nl":false,"rap":false,"inputs":0,"x":110,"y":240,"wires":[["162c1b65c4067a39"]]},{"id":"162c1b65c4067a39","type":"link out","z":"723a850f03705f70","g":"13cba7e2abe41be3","name":"Radar out","mode":"link","links":["4c59f8651599ac88","3b94aaf22f2b42a9","7f31d818603fabae"],"x":205,"y":240,"wires":[]},{"id":"9b9a0dc0764f0718","type":"change","z":"723a850f03705f70","g":"5ce273ee75ad31e7","name":"Bearing","rules":[{"t":"set","p":"topic","pt":"msg","to":"bearing","tot":"str"}],"action":"","property":"","from":"","to":"","reg":false,"x":285,"y":660,"wires":[["08d033e89bff5739"]],"l":false},{"id":"08d033e89bff5739","type":"ui_gauge","z":"723a850f03705f70","g":"5ce273ee75ad31e7","name":"","group":"b4cf3689ef38dc7f","order":3,"width":3,"height":2,"gtype":"compass","title":"{{vessel}}","label":"Relative","format":"{{value}}°","min":0,"max":"359","colors":["#00b500","#e6e600","#ca3838"],"seg1":"","seg2":"","className":"","x":335,"y":640,"wires":[],"l":false},{"id":"9e9ca0b9bf09c459","type":"ui_table","z":"723a850f03705f70","g":"5ce273ee75ad31e7","group":"b4cf3689ef38dc7f","name":"AIS Radar Table","order":2,"width":10,"height":"6","columns":[{"field":"vesselName","title":"Vessel","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"mmsi","title":"MMSI #","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"distanceKm","title":"Range (km)","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"courseDeg","title":"Course°","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}},{"field":"speedKts","title":"Knots","width":"","align":"left","formatter":"plaintext","formatterParams":{"target":"_blank"}}],"outputs":0,"cts":false,"x":135,"y":670,"wires":[],"l":false},{"id":"f2566b752ddd1daf","type":"inject","z":"723a850f03705f70","name":"","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"title\":\"Name\", \"field\":\"name\", \"headerVertical\":true}","payloadType":"json","x":90,"y":510,"wires":[[]]},{"id":"6e3abd28838fa15b","type":"change","z":"723a850f03705f70","g":"5ce273ee75ad31e7","name":"Bearing","rules":[{"t":"move","p":"payload","pt":"msg","to":"vessel","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":285,"y":620,"wires":[["08d033e89bff5739"]],"l":false},{"id":"774fde9724d57d91","type":"ui_spacer","z":"723a850f03705f70","name":"spacer","group":"bbf266696379cab5","order":7,"width":6,"height":1},{"id":"b70b578485dee95d","type":"ui_spacer","z":"723a850f03705f70","name":"spacer","group":"be0e67b7.090858","order":4,"width":2,"height":1},{"id":"e5a685aad57a13f8","type":"ui_spacer","z":"723a850f03705f70","name":"spacer","group":"be0e67b7.090858","order":8,"width":4,"height":1},{"id":"cf286bec7b10d1b7","type":"ui_spacer","z":"723a850f03705f70","name":"spacer","group":"be0e67b7.090858","order":9,"width":1,"height":1},{"id":"f3981886da8e2c06","type":"ui_spacer","z":"723a850f03705f70","name":"spacer","group":"be0e67b7.090858","order":11,"width":2,"height":1},{"id":"4864b07a8dc1e8a3","type":"ui_spacer","z":"723a850f03705f70","name":"spacer","group":"be0e67b7.090858","order":12,"width":4,"height":1},{"id":"87d797ec8dd6bb63","type":"ui_spacer","z":"723a850f03705f70","name":"spacer","group":"be0e67b7.090858","order":13,"width":1,"height":1},{"id":"cdc06134ffd567a4","type":"ui_spacer","z":"723a850f03705f70","name":"spacer","group":"be0e67b7.090858","order":14,"width":2,"height":1},{"id":"7475ddd9f2ab71aa","type":"ui_spacer","z":"723a850f03705f70","name":"spacer","group":"be0e67b7.090858","order":15,"width":4,"height":1},{"id":"fe02610e2d303520","type":"ui_spacer","z":"723a850f03705f70","name":"spacer","group":"2ad9686.f1b5d98","order":4,"width":5,"height":1},{"id":"ce23678412819fbe","type":"ui_spacer","z":"723a850f03705f70","name":"spacer","group":"2ad9686.f1b5d98","order":9,"width":5,"height":1},{"id":"ad9d95409a6e9610","type":"ui_spacer","z":"723a850f03705f70","name":"spacer","group":"2ad9686.f1b5d98","order":11,"width":3,"height":1},{"id":"3e25ee8d05f9af32","type":"ui_spacer","z":"723a850f03705f70","name":"spacer","group":"2ad9686.f1b5d98","order":12,"width":9,"height":1},{"id":"701f5a06bc717034","type":"ui_spacer","z":"723a850f03705f70","name":"spacer","group":"b4cf3689ef38dc7f","order":1,"width":3,"height":1},{"id":"56baef80b19028db","type":"ui_spacer","z":"723a850f03705f70","name":"spacer","group":"b4cf3689ef38dc7f","order":4,"width":3,"height":1},{"id":"1ae86b42.0ff1c5","type":"ui_group","name":"Multimedia","tab":"70f2c40b.c48e2c","order":1,"disp":false,"width":10,"collapse":false,"className":""},{"id":"bbf266696379cab5","type":"ui_group","name":"Connectivity","tab":"70f2c40b.c48e2c","order":2,"disp":false,"width":13,"collapse":false,"className":""},{"id":"be0e67b7.090858","type":"ui_group","name":"Condition","tab":"70f2c40b.c48e2c","order":4,"disp":false,"width":13,"collapse":false},{"id":"2ad9686.f1b5d98","type":"ui_group","name":"Navigation","tab":"70f2c40b.c48e2c","order":5,"disp":false,"width":13,"collapse":false},{"id":"a2c2c46bf05ab342","type":"ui_group","name":"HIS","tab":"f7cba8b9e7ecfc73","order":1,"disp":true,"width":21,"collapse":false,"className":""},{"id":"589377387ab13f0a","type":"mqtt-broker","name":"","broker":"192.168.1.101","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""},{"id":"36c395bf.7895fa","type":"ui_group","name":"RPi1","tab":"255e1f38.ed7ac","order":1,"disp":true,"width":5,"collapse":false,"className":""},{"id":"ceb7a6a0520b3d7c","type":"ui_group","name":"RPi2","tab":"255e1f38.ed7ac","order":2,"disp":true,"width":5,"collapse":false,"className":""},{"id":"895e92788f84fcd0","type":"ui_group","name":"RPi3","tab":"255e1f38.ed7ac","order":3,"disp":true,"width":5,"collapse":false,"className":""},{"id":"e95eb65f4f9ef5b8","type":"ui_group","name":"RPi4","tab":"255e1f38.ed7ac","order":4,"disp":true,"width":5,"collapse":false,"className":""},{"id":"f12e74aa.501eb8","type":"mqtt-broker","name":"","broker":"mqtt.mas400.com","port":"1883","clientid":"","autoConnect":true,"usetls":false,"protocolVersion":"4","keepalive":"60","cleansession":true,"birthTopic":"","birthQos":"0","birthPayload":"","birthMsg":{},"closeTopic":"","closeQos":"0","closePayload":"","closeMsg":{},"willTopic":"","willQos":"0","willPayload":"","willMsg":{},"sessionExpiry":""},{"id":"31184d5abcefe97f","type":"ui_group","name":"UPS","tab":"255e1f38.ed7ac","order":7,"disp":false,"width":"21","collapse":false,"className":""},{"id":"3996f46131aa3d51","type":"ui_group","name":"Experiments","tab":"255e1f38.ed7ac","order":6,"disp":false,"width":"21","collapse":false,"className":""},{"id":"97458735c2508590","type":"ui_group","name":"CTD","tab":"e51f8bfd4c2d0117","order":9,"disp":false,"width":20,"collapse":false,"className":""},{"id":"f463284079f7c3a6","type":"ui_group","name":"Oxygen","tab":"a5b76fe899e24a1f","order":11,"disp":false,"width":"21","collapse":false,"className":""},{"id":"ea0659da39d3985f","type":"ui_group","name":"Fathometry","tab":"7080c9a0320bcd66","order":8,"disp":true,"width":"9","collapse":false,"className":""},{"id":"9a0ac07eb089bbcd","type":"ui_group","name":"Environment","tab":"255e1f38.ed7ac","order":5,"disp":false,"width":21,"collapse":false,"className":""},{"id":"496c910cb8914c15","type":"ui_group","name":"Fluorometry","tab":"646b06576dee549e","order":10,"disp":false,"width":"21","collapse":false,"className":""},{"id":"b4cf3689ef38dc7f","type":"ui_group","name":"AIS Radar","tab":"70f2c40b.c48e2c","order":5,"disp":false,"width":"13","collapse":false,"className":""},{"id":"70f2c40b.c48e2c","type":"ui_tab","name":"Para-ECDIS","icon":"dashboard","order":1,"disabled":false,"hidden":false},{"id":"f7cba8b9e7ecfc73","type":"ui_tab","name":"Replay","icon":"dashboard","order":7,"disabled":false,"hidden":false},{"id":"255e1f38.ed7ac","type":"ui_tab","name":"Science - Pod","icon":"dashboard","order":2,"disabled":false,"hidden":false},{"id":"e51f8bfd4c2d0117","type":"ui_tab","name":"Science - CTD","icon":"dashboard","order":5,"disabled":false,"hidden":false},{"id":"a5b76fe899e24a1f","type":"ui_tab","name":"Science - O2","icon":"dashboard","order":3,"disabled":false,"hidden":false},{"id":"7080c9a0320bcd66","type":"ui_tab","name":"Science - Fathometry","icon":"dashboard","order":6,"disabled":false,"hidden":false},{"id":"646b06576dee549e","type":"ui_tab","name":"Science - Fluorometry","icon":"dashboard","order":4,"disabled":false,"hidden":false}]