UI with selectable AIS ship target list

lookup a single mmsi
$flowContext("shipData")[mmsi=$$.payload]
feed in payload with the mmsi id.
output will be the whole mmsi object for that id.

return an array of all mmsi's
$flowContext(topic).mmsi
so every time the AIS payload updates you can feed that into a ui-dropdown .
AIS payload >>
append and store to shipData >>
use payload to update ui-dropdown (or similar} >>
use slected dropdown to lookup data.

You should look at @dceejay world map flow. You could post all that data on there and update the map on each AIS payload append(). you could make boats clickable and have a context menu showing all data for said boat. You could post boats speed and direction live on map.

I store 211667590 into flow.ship and tried:

$append([$.ship],$flowContext("shipData")[mmsi = $$.ship])

it's working, when I replace $$.ship with 211667590...

any suggestion?

it's not really working with flows? only with payloads?

$$ references the msg, so it looks for msg.ship. where is ship?

best show an inject example then all info is there
[edit
if its in flow.ship then
$flowContext("ship")
but best pass it in msg unless flow is only way.]

I see. and can I call a msg, which is not linked to a flow? But it is in the same tab...

Design the flow to pass message, here is a simple flow that would
take new input >> update storage >> output array of mmsi and set a dropdown >> selected dropdown used to lookup object >> display object.

All that needs to use flow is the storage so its there at all times. The other msg's can be passed along.

This is a simple example, you can use html, css and javascript in the ui template

[{"id":"54f72a77.00363c","type":"inject","z":"129a88e7.1187ef","name":"newShip211667860","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"mmsi\":211667860,\"navigationStatus\":\"Under way using engine\",\"rateOfTurn\":0,\"speedOverGround\":0,\"longitude\":9.920658333333334,\"latitude\":53.54305333333333,\"courseOverGround\":290,\"trueHeading\":268,\"timeStampSeconds\":14,\"date\":1621999253342,\"isoDate\":\"2021-05-20 17:54:13\",\"source\":\"!AIVDM,1,1,,A,139o;<0000PeJLFN`kR;E8HL0@7h,0*7A\\r\\n\"}","payloadType":"json","x":230,"y":540,"wires":[["d1dd044f.5430c8"]]},{"id":"d1dd044f.5430c8","type":"change","z":"129a88e7.1187ef","name":"append create options","rules":[{"t":"set","p":"payload","pt":"msg","to":"$append([$.payload],$flowContext(\"shipData\")[mmsi != $$.payload.mmsi ])","tot":"jsonata"},{"t":"set","p":"shipData","pt":"flow","to":"payload","tot":"msg"},{"t":"set","p":"options","pt":"msg","to":"$flowContext(\"shipData\").mmsi","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"payload[0].mmsi","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":540,"wires":[["e4fcf557.a66988","2e015745.147cc8"]]},{"id":"e4fcf557.a66988","type":"ui_dropdown","z":"129a88e7.1187ef","name":"dropdown of mmsi's","label":"Pick mmsi","tooltip":"","place":"Select option","group":"8b5cde76.edd58","order":4,"width":0,"height":0,"passthru":false,"multiple":false,"options":[],"payload":"","topic":"topic","topicType":"msg","x":300,"y":640,"wires":[["858a3a37.72653"]]},{"id":"2e015745.147cc8","type":"debug","z":"129a88e7.1187ef","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":790,"y":580,"wires":[]},{"id":"858a3a37.72653","type":"change","z":"129a88e7.1187ef","name":"find mssi object","rules":[{"t":"set","p":"payload","pt":"msg","to":"$flowContext(\"shipData\")[mmsi=$$.payload]","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":580,"y":640,"wires":[["7e822423.73fab4","2e015745.147cc8"]]},{"id":"7e822423.73fab4","type":"template","z":"129a88e7.1187ef","name":"Format object for display","field":"template","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<pre>MMSI {{payload.mmsi}} STATUS {{payload.navigationStatus}}  \nTURN RATE {{payload.rateOfTurn}} SPEED {{payload.speedOverGround}} \nLON {{payload.longitude}} LAT {{payload.latitude}}\nCOARSE {{payload.courseOverGround}} HEADING {{payload.trueHeading}}\nDATE {{payload.date}}</pre>","output":"str","x":360,"y":700,"wires":[["d20371ce.50c358"]]},{"id":"d20371ce.50c358","type":"ui_template","z":"129a88e7.1187ef","group":"8b5cde76.edd58","name":"display formated object","order":6,"width":"12","height":"5","format":"","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","x":630,"y":700,"wires":[[]]},{"id":"8b5cde76.edd58","type":"ui_group","name":"","tab":"8f03e639.85956","order":1,"disp":true,"width":"12","collapse":false},{"id":"8f03e639.85956","type":"ui_tab","name":"Home","icon":"dashboard","disabled":false,"hidden":false}]

Ok, am I correct: by passing msg.options you set the options used for the dropdown menu?
(I would never have thought of that...)

Due to the list is updated, the entries in the dropdown jumped ... looks like the list is initialized every run ando the selection is removed as well... the ships .speedOverGround is only passed in the second, the mmsi is selected from the list
I added a flow.ship, which holds the selection from the dropdown... that worked fine.

little bug: after selecting the mmsi in the dropdown, it's not shown at the dashboard any more. But that's not so important anyway...

flows.json (35.1 KB)

I did the same i also added a slightly different storage structure as i like to be able to copy whole data in one go.

I also added a inject that creates random data 20 mssi with date and time stamp and a random speed, for testing.

[{"id":"54f72a77.00363c","type":"inject","z":"129a88e7.1187ef","name":"newShip211667860","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"mmsi\":($ceil($random()*20)+211667800),\t\"navigationStatus\":\"Under way using engine\",\t\"rateOfTurn\":0,\"speedOverGround\":$round($random()*10, 1),\t\"longitude\":9.920658333333334,\"latitude\":53.54305333333333,\t\"courseOverGround\":290,\"trueHeading\":268,\t\"timeStampSeconds\":14,\"date\":($millis()),\t\"isoDate\":($moment().tz(\"Europe/London\").format(\"YYYY/MM/DD HH:mm:ss\")),\"source\":\"!AIVDM,1,1,,A,139o;<0000PeJLFN`kR;E8HL0@7h,0*7A\\r\\n\"}","payloadType":"jsonata","x":230,"y":540,"wires":[["d1dd044f.5430c8"]]},{"id":"d1dd044f.5430c8","type":"change","z":"129a88e7.1187ef","name":"append create options","rules":[{"t":"set","p":"data","pt":"msg","to":"$append(\t   [$.payload],\t   $flowContext(\"ship.data\")[\t       mmsi != $$.payload.mmsi and date > ($millis() - 60*60*1000)\t   ]\t)","tot":"jsonata"},{"t":"set","p":"ship.data","pt":"flow","to":"data","tot":"msg"},{"t":"set","p":"options","pt":"msg","to":"$flowContext(\"ship.data\").mmsi","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"ship.selected","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":540,"wires":[["2e015745.147cc8","e4fcf557.a66988"]]},{"id":"2e015745.147cc8","type":"debug","z":"129a88e7.1187ef","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":790,"y":580,"wires":[]},{"id":"e4fcf557.a66988","type":"ui_dropdown","z":"129a88e7.1187ef","name":"dropdown of mmsi's","label":"Pick mmsi","tooltip":"","place":"Select option","group":"c73316c8.045538","order":4,"width":0,"height":0,"passthru":false,"multiple":false,"options":[],"payload":"","topic":"topic","topicType":"msg","x":280,"y":620,"wires":[["858a3a37.72653"]]},{"id":"858a3a37.72653","type":"change","z":"129a88e7.1187ef","name":"find mssi object","rules":[{"t":"set","p":"payload","pt":"msg","to":"$flowContext(\"ship.data\")[mmsi=$$.payload]","tot":"jsonata"},{"t":"set","p":"ship.selected","pt":"flow","to":"payload.mmsi","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":540,"y":620,"wires":[["7e822423.73fab4","2e015745.147cc8"]]},{"id":"7e822423.73fab4","type":"template","z":"129a88e7.1187ef","name":"Format object for display","field":"template","fieldType":"msg","format":"handlebars","syntax":"mustache","template":"<pre>MMSI {{payload.mmsi}} STATUS {{payload.navigationStatus}}  \nTURN RATE {{payload.rateOfTurn}} SPEED {{payload.speedOverGround}} \nLON {{payload.longitude}} LAT {{payload.latitude}}\nCOARSE {{payload.courseOverGround}} HEADING {{payload.trueHeading}}\nDATE {{payload.isoDate}}</pre>","output":"str","x":290,"y":700,"wires":[["d20371ce.50c358"]]},{"id":"d20371ce.50c358","type":"ui_template","z":"129a88e7.1187ef","group":"c73316c8.045538","name":"display formated object","order":6,"width":"0","height":"0","format":"","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","x":630,"y":700,"wires":[[]]},{"id":"c73316c8.045538","type":"ui_group","name":"Ship","tab":"36b4d85b.74f5a","order":1,"disp":true,"width":"12","collapse":false},{"id":"36b4d85b.74f5a","type":"ui_tab","name":"Ship","icon":"dashboard","disabled":false,"hidden":false}]

Looked at yours but have missing nodes so can not run it.

Can you say which nodes you don't have? I think the ais decoder...?

it might be the ais-decoder node. I can provide a log file created from this node. When you can you read line by line (with 1 second delay), than it's pretty much reality...

ais.txt (498.6 KB)

I would just need a copy of an output from the AIS node then i could construct a inject node to create a random out put at 1 second intervals

[edit
I ran your flow with my inject node set to 10 second interval the SOG issue is that you are not in series and the flow has to wait till next input
wire as below and set selected and payload for gauge in the last change
eg.

[{"id":"54f72a77.00363c","type":"inject","z":"129a88e7.1187ef","name":"newShip211667860","props":[{"p":"payload"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"{\"mmsi\":($ceil($random()*20)+211667800),\t\"navigationStatus\":\"Under way using engine\",\t\"rateOfTurn\":0,\"speedOverGround\":$round($random()*10, 1),\t\"longitude\":9.920658333333334,\"latitude\":53.54305333333333,\t\"courseOverGround\":290,\"trueHeading\":268,\t\"timeStampSeconds\":14,\"date\":($millis()),\t\"isoDate\":($moment().tz(\"Europe/London\").format(\"YYYY/MM/DD HH:mm:ss\")),\"source\":\"!AIVDM,1,1,,A,139o;<0000PeJLFN`kR;E8HL0@7h,0*7A\\r\\n\"}","payloadType":"jsonata","x":230,"y":540,"wires":[["d1dd044f.5430c8"]]},{"id":"d1dd044f.5430c8","type":"change","z":"129a88e7.1187ef","name":"append create options","rules":[{"t":"set","p":"data","pt":"msg","to":"$append(\t   [$.payload],\t   $flowContext(\"ship.data\")[\t       mmsi != $$.payload.mmsi and date > ($millis() - 60*60*1000)\t   ]\t)","tot":"jsonata"},{"t":"set","p":"ship.data","pt":"flow","to":"data","tot":"msg"},{"t":"set","p":"options","pt":"msg","to":"$flowContext(\"ship.data\")^(mmsi).mmsi","tot":"jsonata"},{"t":"set","p":"payload","pt":"msg","to":"ship.selected","tot":"flow"}],"action":"","property":"","from":"","to":"","reg":false,"x":520,"y":540,"wires":[["2e015745.147cc8","e4fcf557.a66988"]]},{"id":"2e015745.147cc8","type":"debug","z":"129a88e7.1187ef","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":790,"y":580,"wires":[]},{"id":"e4fcf557.a66988","type":"ui_dropdown","z":"129a88e7.1187ef","name":"dropdown of mmsi's","label":"Pick mmsi","tooltip":"","place":"Select option","group":"c73316c8.045538","order":4,"width":0,"height":0,"passthru":false,"multiple":false,"options":[],"payload":"","topic":"topic","topicType":"msg","x":280,"y":620,"wires":[["858a3a37.72653"]]},{"id":"858a3a37.72653","type":"change","z":"129a88e7.1187ef","name":"find mssi object","rules":[{"t":"set","p":"payload","pt":"msg","to":"$flowContext(\"ship.data\")[mmsi=$$.payload]","tot":"jsonata"},{"t":"set","p":"ship.selected","pt":"flow","to":"payload.mmsi","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":540,"y":620,"wires":[["2e015745.147cc8","a2ba5c32.a45fd"]]},{"id":"a2ba5c32.a45fd","type":"ui_gauge","z":"129a88e7.1187ef","name":"","group":"c73316c8.045538","order":1,"width":0,"height":0,"gtype":"gage","title":"","label":"kn","format":"{{msg.payload.speedOverGround}}","min":0,"max":"13","colors":["#00b500","#e6e600","#ca3838"],"seg1":"8","seg2":"10","x":360,"y":820,"wires":[]},{"id":"c73316c8.045538","type":"ui_group","name":"Ship","tab":"36b4d85b.74f5a","order":1,"disp":true,"width":"12","collapse":false},{"id":"36b4d85b.74f5a","type":"ui_tab","name":"Ship","icon":"dashboard","disabled":false,"hidden":false}]

my append is set to delete ships older than a hour that can be edited to longer or removed. Add an interval to the inject and it will produce random AIS's for 20 ships. I sort the options with orderby then select mmsi to get sorted array.

Tested the RasPI on the bridge in real "environment" last night.

I even set the storage time to 60s due to in the port of Hamburg (or any other place in the world with massive ship traffic) the RasPI has to process tons of data and becomes slow (when interacting with e.g. the dopdownlist). Anyway: if data is older than 1min it's not reliable anymore and can't be trusted. Maybe I will work another "update" which checks the age of the data and returns a warning if it's older than 30s or something like this.

I had to change the dorpdown list to a textinput node again. The dropdown list gets very long, when recognizing many ships. While searching for the desired mmsi, the list gets updated and jumps back to the top entry. So I don't have enough time to find and select an entry in the lower part of the list. Anyway, it's not that problem: I get the desired mmsi from another monitor and can be sure it's entered correct and I didn't accidentally choose a wrong one from the list. Another update could be a simple check whether the mmsi is in the shipData list to prevent typos. This could also be combined with the check, if the data is "old" -> if the ship isn't in the list anymore, show a warning... but that should be easy

I can't says right now, if the gauge was showing "0" or no data, when the ship isn't found in the shipData. Will check this next time... should be "empty"...

I am off now for two weeks and will come back then. Thank you very much for your assistance and lectures! Do you gain any credits, when I set one of your post as "solution"? Otherwise I would post a summary with a short description and the final flow in two weeks and set this as solution...

Hello once again,

finally I am very satisfied with the dashboard. I changed the layout again, but the main data processing is still the same. So basically the $append() command and the $flowContext() command were the very big helpers on my topic.

A very big "Thank you!" to E1cid for all the help and teaching. It made node-red very interesting to me.

Attached you'll find my final flow, still having some nodes inactive, which can be deactivated if necessary. Enjoy ^^

[{"id":"f34f5927.1fe798","type":"tab","label":"AIS-SOG-Dashboard","disabled":false,"info":""},{"id":"2c4a3e0d.65fb2a","type":"tcp in","z":"f34f5927.1fe798","name":"","server":"client","host":"localhost","port":"10110","datamode":"stream","datatype":"utf8","newline":"","topic":"","base64":false,"x":490,"y":240,"wires":[["c27df744.61125"]]},{"id":"c27df744.61125","type":"ais","z":"f34f5927.1fe798","name":"signal to object {}","x":750,"y":240,"wires":[["95816b15.1b3938","5f287e41.bd187"]],"info":"ais decoder"},{"id":"90709f4e.93b988","type":"ui_gauge","z":"f34f5927.1fe798","d":true,"name":"","group":"ec0af77a.9f2568","order":1,"width":4,"height":1,"gtype":"gage","title":"","label":"kn","format":"{{msg.payload}}","min":0,"max":"13","colors":["#00b500","#e6e600","#ca3838"],"seg1":"8","seg2":"10","x":1790,"y":500,"wires":[]},{"id":"71b073ba.a232e4","type":"change","z":"f34f5927.1fe798","name":"","rules":[{"t":"set","p":"ui_control.options.valueMinFontSize","pt":"msg","to":"200","tot":"str"},{"t":"delete","p":"payload","pt":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1230,"y":400,"wires":[["90709f4e.93b988"]]},{"id":"1f63130c.05fb9d","type":"ui_ui_control","z":"f34f5927.1fe798","name":"","x":460,"y":400,"wires":[["976c7847.8cd378","4462fde0.727254","f32af0fa.645518"]]},{"id":"8a9670a7.18ed","type":"comment","z":"f34f5927.1fe798","name":"To send options when dashboard connects","info":"","x":560,"y":360,"wires":[]},{"id":"f32af0fa.645518","type":"delay","z":"f34f5927.1fe798","name":"","pauseType":"delay","timeout":"40","timeoutUnits":"milliseconds","rate":"1","nbRateUnits":"1","rateUnits":"second","randomFirst":"1","randomLast":"5","randomUnits":"seconds","drop":false,"x":1030,"y":400,"wires":[["71b073ba.a232e4"]]},{"id":"3f0d6df1.93d7ba","type":"comment","z":"f34f5927.1fe798","name":"Let gauge to be initialized before change any options","info":"There will be browser errors otherwise ","x":930,"y":360,"wires":[]},{"id":"cef96ea3.a09f68","type":"comment","z":"f34f5927.1fe798","name":"Change the options","info":"gauge scales according to predefined card size\ndefined font sizes are not absolute values but minimum values\nFor example if you make your gauge smaller, the changed font sizes may happen to be too large and will overlap.\n\nminLabelMinFontSize - minimum size of min field // number\nmaxLabelMinFontSize - minimum size of max field // number\nlabelMinFontSize - minimum size of units field // numbert\n\ndelete msg.payload cos it does not contain proper value","x":1230,"y":360,"wires":[]},{"id":"95816b15.1b3938","type":"change","z":"f34f5927.1fe798","name":"append...","rules":[{"t":"set","p":"payload","pt":"msg","to":"$append([$.payload],$flowContext(\"shipData\")[mmsi != $$.payload.mmsi and date > ($millis() - 30*1000)])","tot":"jsonata"},{"t":"set","p":"shipData","pt":"flow","to":"payload","tot":"msg"},{"t":"set","p":"options","pt":"msg","to":"$sort($flowContext(\"shipData\").mmsi)","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":960,"y":240,"wires":[["a97bfadb.b4a5b","bac573e7.58ca48"]]},{"id":"976c7847.8cd378","type":"change","z":"f34f5927.1fe798","name":"","rules":[{"t":"set","p":"shipData","pt":"flow","to":"[]","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":670,"y":460,"wires":[[]]},{"id":"88949c23.98c208","type":"comment","z":"f34f5927.1fe798","name":"AIS decoder","info":"","x":730,"y":200,"wires":[]},{"id":"dc66964f.70c8a8","type":"comment","z":"f34f5927.1fe798","name":"appending the incoming msg to the shipData list","info":"","x":980,"y":160,"wires":[]},{"id":"a97bfadb.b4a5b","type":"change","z":"f34f5927.1fe798","name":"$flowContext(\"shipData\")[mmsi=$flowContext(\"ship\")].speedOverGround","rules":[{"t":"set","p":"payload","pt":"msg","to":"$flowContext(\"shipData\")[mmsi=$flowContext(\"ship\")].speedOverGround","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1380,"y":240,"wires":[["76165e5e.7aa1d","90709f4e.93b988","9f650a4c.b8bbd8","68c0cf29.d6ef7"]]},{"id":"76165e5e.7aa1d","type":"debug","z":"f34f5927.1fe798","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1750,"y":240,"wires":[]},{"id":"79b08dfc.19a01c","type":"change","z":"f34f5927.1fe798","name":"set flow.ship to selected mmsi","rules":[{"t":"set","p":"ship","pt":"flow","to":"payload","tot":"msg"}],"action":"","property":"","from":"","to":"","reg":false,"x":1470,"y":140,"wires":[["e8ed8628.6d27c"]]},{"id":"e8ed8628.6d27c","type":"debug","z":"f34f5927.1fe798","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1750,"y":140,"wires":[]},{"id":"4462fde0.727254","type":"change","z":"f34f5927.1fe798","name":"","rules":[{"t":"set","p":"ship","pt":"flow","to":"211876000","tot":"num"}],"action":"","property":"","from":"","to":"","reg":false,"x":660,"y":500,"wires":[[]],"info":"the mmsi of the own ship"},{"id":"526d8ed5.dff208","type":"comment","z":"f34f5927.1fe798","name":"setting the flows on startup of ui","info":"","x":710,"y":420,"wires":[]},{"id":"7ca430f3.68c128","type":"comment","z":"f34f5927.1fe798","name":"extracting the speed of the selected ship","info":"","x":1280,"y":200,"wires":[]},{"id":"b8f62ed7.905928","type":"comment","z":"f34f5927.1fe798","name":"storing the selection of mmsi","info":"","x":1460,"y":100,"wires":[]},{"id":"c3c24d34.58dd68","type":"ui_text_input","z":"f34f5927.1fe798","name":"","label":"","tooltip":"","group":"5a5f89e5.d3854","order":1,"width":12,"height":3,"passthru":true,"mode":"number","delay":"0","topic":"topic","topicType":"msg","x":1190,"y":100,"wires":[["79b08dfc.19a01c"]]},{"id":"9f650a4c.b8bbd8","type":"ui_text","z":"f34f5927.1fe798","group":"5a1af3bc.7cd31c","order":1,"width":"8","height":5,"name":"other ship","label":"<font size = 5px>other","format":"{{msg.payload}}","layout":"row-spread","x":1800,"y":280,"wires":[]},{"id":"357a1fc3.bc546","type":"ui_text","z":"f34f5927.1fe798","group":"5a1af3bc.7cd31c","order":2,"width":"8","height":5,"name":"own ship","label":"<font size = 5px; color = green>own","format":"<font color = green>{{msg.payload}}","layout":"row-spread","x":1800,"y":400,"wires":[]},{"id":"bac573e7.58ca48","type":"change","z":"f34f5927.1fe798","name":"$flowContext(\"shipData\")[mmsi=211876000].speedOverGround","rules":[{"t":"set","p":"payload","pt":"msg","to":"$flowContext(\"shipData\")[mmsi=211876000].speedOverGround","tot":"jsonata"}],"action":"","property":"","from":"","to":"","reg":false,"x":1350,"y":320,"wires":[["357a1fc3.bc546","37e17c25.ed04dc"]]},{"id":"25c106fc.0c1bca","type":"comment","z":"f34f5927.1fe798","name":"extracting the speed of the own ship","info":"","x":1260,"y":280,"wires":[]},{"id":"68c0cf29.d6ef7","type":"ui_template","z":"f34f5927.1fe798","group":"5a1af3bc.7cd31c","name":"","order":3,"width":0,"height":0,"format":"<style>\n*.nr-dashboard-text {\n    font-size: 200px !important;\n}\n\n}\n</style>","storeOutMessages":true,"fwdInMessages":true,"resendOnRefresh":true,"templateScope":"local","x":1800,"y":320,"wires":[[]]},{"id":"c1e3c890.6e7478","type":"comment","z":"f34f5927.1fe798","name":"processing ais data","info":"","x":910,"y":460,"wires":[]},{"id":"bfab3857.1e1f28","type":"comment","z":"f34f5927.1fe798","name":"input from ui","info":"","x":890,"y":500,"wires":[]},{"id":"37e17c25.ed04dc","type":"debug","z":"f34f5927.1fe798","name":"","active":true,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":1750,"y":360,"wires":[]},{"id":"5f287e41.bd187","type":"debug","z":"f34f5927.1fe798","name":"","active":false,"tosidebar":true,"console":false,"tostatus":false,"complete":"false","statusVal":"","statusType":"auto","x":970,"y":300,"wires":[]},{"id":"ec0af77a.9f2568","type":"ui_group","name":"other","tab":"24a7075b.b1d0b8","order":3,"disp":true,"width":"6","collapse":false},{"id":"5a5f89e5.d3854","type":"ui_group","name":"MMSI","tab":"24a7075b.b1d0b8","order":2,"disp":false,"width":12,"collapse":false},{"id":"5a1af3bc.7cd31c","type":"ui_group","name":"Gauge","tab":"24a7075b.b1d0b8","order":1,"disp":false,"width":"8","collapse":false},{"id":"24a7075b.b1d0b8","type":"ui_tab","name":"SpeedGauge","icon":"dashboard","disabled":false,"hidden":false}]
2 Likes

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.