signalk / freeboard-sk Goto Github PK
View Code? Open in Web Editor NEWChartplotter implementation for Signal K servers
License: Apache License 2.0
Chartplotter implementation for Signal K servers
License: Apache License 2.0
It would be great to have the option to show the name of each vessel on the map, so that for a number of vessels, the user does not need to click each one to identify them
There appears to be some unused dependencies with very old version numbers like
Not being familiar with the code I just grepped for usages and found none, but did not start removing them.
These old versions use dependencies that use native extensions, which makes clunky to use with modern Node environment, like when installing freeboard with npm in Node server.
I had a few questions on installation and using freeboard-sk:
I have signalk-server-node already running on my system. Can I use that instead?
Can I run freeboard-sk on my linux machine, or does it have to be on Windows?
I've gotten through npm install and npm start, but what port is it listening on?
Thanks!
Great work! I know it must be challenging to maintain what many think of as the replacement of the chart plotter. So take this request as merely a suggestion.
I think it would be a valuable extension to be able to overlay dynamic grib files or weather charts. I have some local current maps that I would like to use, but they do not fit in the normal chart structure because they are associated with a date and time. I'm thinking of something similar to the scroll bar in opencpn, where you can select a time for the overlay gribs to appear.
npm install works ok, but npm start fails with 'cant find module signalk-client'.
Node 8.9.3 on raspbian
Install and start logs attached
install.log
start.log
I know there was an issue with the sk client (https://groups.google.com/forum/#!topic/signalk/2CUa0TbaiCg) but this is using the 0.1.4 client. Even installing it manually doesn't seem to fix the issue.
Used by us here in NZ :-)
The current measure feature measures rhumb line distance in km. For longer distances, this deviates quite a bit from great circle. As this feature is not so often in use, it could make sense to default to great circle (https://en.wikipedia.org/wiki/Haversine_formula). Also, NM is more commonly used than km
Perhaps this would be a better default layer for freeboard-sk?
The error I get from the one map I have stored states that it is looking for [server]/signalk/v1/api/resources/charts/L6-8-24-24-8_1/%7Bz%7D/%7Bx%7D/%7By%7D/tilemapresource.xml
Shouldn't it look in [server]/signalk/v1/api/resources/charts/L6-8-24-24-8_1/tilemapresource.xml
instead ? That is where freeboard-installer placed the xml file
Hi Rob,
I have been following your project and now I am moving to SK. I´m happy to see freeboard also moving to SK. But I can´t make sense of the installation procedure. If I already have a node server running, I should be able to install freeboard for SK directly?
SignalK/maptracker#15
Lay lines could come from performance.beatAngle and/or performance.gybeAngle. Any route suggestions would need a way to get the full polar table/diagram, not currently represented in the schema. Repeating the linked issue for clarity: Another great feature would be to be able to suggest routes based on vessel polar diagram. See http://zezo.org/sodebo/chart.pl? for example. this requires polars (obviously), grib files and a definition of coastlines, eg. from OpenStreetMap.
Apparently the protocol is hard coded to ws - should take into account also the protocol where it was loaded from.
As some AIs data may be old, or vessel switch off their transponders, there should be a timeout for indicating old positions. A question mark over the vessel arrow, grey icon or something.
The latest code seems to be confused when trying to identify your own vessel, and will post it as an AIS target instead. This is because the code expects the selfId to just be the uuid, whereas it actually comes in as 'vessels'.uuid
There could be a number of fixes, but the quickest seems to be to change line 211 in index.js from:
window.ownVessel = data
to something like:
window.ownVessel = data.split(".")[1]
The dependencies of Freeboard are seriously outdated and there are critical vulnerabilities in the dependencies. Stuff like ancient JQuery and Openlayers.
Hi,
I noted in another issue that we need to edit lib/addlayers in order to use other map formats. Does that extend to the .mbtiles that are now being quilted and distributed by NOAA? I see that these automatically appear in the Charts List, but I am not able to see anything when clicking Show/Hide buttons.
AIS targets progressively displayed as updates received after un-hiding AIS targets.
All available targets should be immediately displayed.
Currently Freeboard allows the selection of a "preferred heading value" ( heading Magnetic
or headingTrue
) which it uses when both values are available.
If the preferred heading value=headingMagnetic
but that value is not present in the received data and headingTrue
is, freeboard will use the headingTrue
value.
Is this this "falling back" appropriate behaviour or should no heading value be displayed / used if the preferred is not available?
Also if the preferred heading value is headingMagnetic
should Freeboard assume that magnetic
versions of other values be used as well e.g. environment.wind.directionMagnetic
, etc?
I know this is on the drawing board, I just wanted to share some thoughts. Instead of using radio buttons for each map instance, perhaps they could have check boxes, and that the plotter chooses the tile with the best resolution for the zoom level?
The heading and bearing lines are broken for me as I do not yet use an electronic compass.
The code in freeboard-sk is a bit confusing and I don't know if it is wrong or if I don't understand it.
If the sentences navigation.headingTrue or navigation.headingMagnetic are never received, headingT and headingM are never calculated and the heading/bearing lines are not drawn.
The code uses an integer key, cog, to mark if the data is navigation.headingTrue (cog = 0), navigation.headingMagnetic (cog = 3), navigation.courseOverGroundMagnetic (cog = 2) or navigation.courseOverGroundTrue (cog = 1).
The way the code is written, the data with the largest cog value is written to the displays.
I believe that all of these navigation sentences should result in the calculation of headingT and headingM.
After updating to version 1.5.1 (Signalk Server Node Version 1.17), my Webapp is stuck at the loading screen. Shift + reload does not help.
Only uuid is currently supported
At a scale that allows for the chart display to encompass up to 3-4nm, add wind indicator/heading/course lines to the sk-enabled AIS targets that provide such data.
Exchanging data between between vessels is enabled by signalk and plugins. This means that sailing clubs can streamline their operations on the water by automating the exchange of wind sensor data. With this data displayed on a chart for race committee officials, accuracy is improved and radio communications traffic is reduced.
freeboard-sk already displays AIS targets' position and vessel name/mmsi. This new feature would add wind indicator lines similar to those seen on the 'self' vessel for the ais targets that have the data available. Considering that the density of ais traffic is of course highly variable at this scale, it might be preferable to display these sk-enabled 'AIS+' targets in a different color scheme (orange or green shades?) or have an option to display them exclusively apart from standard ais targets.
Hi,
is it possible to add the control on map with keys from keyboard?
+, - , Right, Left, Up, Down, PageUp, PageDown
Regards
free-x
From the left menu, I can see charts listed, but none of the buttons hide
, show
or delete
seem to do anything
Great work in the transition. I have discovered that my old converted maps (TMS with tilemapresource.xml) still work, but they override the default maps even when there is no scale defined for my TMS maps. I have a set with zoom levels 5-10, but freeboard still wants to load these on top of OSM in zoom level 14. The tilemapresource.xml looks like this
<TileMap version="1.0.0" tilemapservice="http://tms.osgeo.org/1.0.0">
<Title>temp.vrt</Title>
<Abstract></Abstract>
<SRS>EPSG:900913</SRS>
<BoundingBox minx="57.32652119567997" miny="3.51562499999999" maxx="62.91523299999943" maxy="9.14062498400509"/>
<Origin x="57.32652119567997" y="3.51562499999999"/>
<TileFormat width="256" height="256" mime-type="image/png" extension="png"/>
<TileSets profile="mercator">
<TileSet href="5" units-per-pixel="4891.96980937500030" order="5"/>
<TileSet href="6" units-per-pixel="2445.98490468750015" order="6"/>
<TileSet href="7" units-per-pixel="1222.99245234375007" order="7"/>
<TileSet href="8" units-per-pixel="611.49622617187504" order="8"/>
<TileSet href="9" units-per-pixel="305.74811308593752" order="9"/>
<TileSet href="10" units-per-pixel="152.87405654296876" order="10"/>
</TileSets>
</TileMap>
The resulting screen looks like this
Friends of me where testing my chartplotter, and the falsely reported that freeboard-sk was broken
There was no internet connection or local charts in signalk-server at the time.
So they where only seeing a grey screen, tried to zoom and pan but "nothing moved". so they got confused into thinking it was not responding.
Althrou this is not a bug, it seem like it's not what people where expecting from it.
Maybe it should have a under layer with a small zoom 0 worldmap or a message that stipulate that no layer are displayed.
and after a while
as you can see from the timestamps and blocked times it is spending most of the time executing js.
And it gets worse.
Originally posted by @tkurki in #51 (comment)
I get catcher.js:197 GET http://172.29.128.22/signalk/v1/api/resources/routes/routes 404 (Not Found)
, seems like a duplication (http://172.29.128.22/signalk/v1/api/resources/routes
is valid)
The waypoints are currently saved with a put as follows:
{
"jwtToken": "eyJhbGciOiJIUzUxMiJ9.eyJ....CgUqKz1HGUQ1FZuO7Q",
"put": [{
"path": "resources.waypoints",
"value": {
"urn:mrn:signalk:uuid:66d09101-ba07-4d35-96cc-fada83094f83": {
"feature": {
"geometry": {
"coordinates": [173.24395051320428, -41.25098796004664],
"type": "Point"
},
"id": "",
"type": "Feature",
"properties": {
"name": "Nelson",
"cmt": "Nelson Entrance"
}
},
"position": {
"latitude": -41.25098796004664,
"longitude": 173.24395051320428
}
}
},
"timestamp": "2019-01-24T22:12:31.537Z"
}]
}
The effect of this is to set the key resources.waypoints
to the object in value
.
While this works for one waypoint, if another is writtem it will overwrite the current one. The message should be:
{
"jwtToken": "eyJhbGciOiJIUzUxMiJ9.eyJ....CgUqKz1HGUQ1FZuO7Q",
"put": [{
"path": "resources.waypoints.urn:mrn:signalk:uuid:66d09101-ba07-4d35-96cc-fada83094f83",
"value": {
"feature": {
"geometry": {
"coordinates": [173.24395051320428, -41.25098796004664],
"type": "Point"
},
"id": "",
"type": "Feature",
"properties": {
"name": "Nelson",
"cmt": "Nelson Entrance"
}
},
"position": {
"latitude": -41.25098796004664,
"longitude": 173.24395051320428
}
},
"timestamp": "2019-01-24T22:12:31.537Z"
}]
}
This creates a new waypoint named urn:mrn:signalk:uuid:66d09101-ba07-4d35-96cc-fada83094f83
. As other waypoints are added/edited/deleted they wont affect this one.
Is there a possibility of adding offline maps? I have tried multiple ways of offline maps using openlayers but have not found a possiblity. Maybe i am just making mistakes.
Freeboard-sk has the same basic functionality as most SK client apps: bootstrap server connection from /signalk, fetch self id and connect delta.
All this is available in signalk-js-client, where different utilities and connection related logic should migrate.
Freeboard already uses npm & bundling, so using the js client should not bee too hard.
Example: freeboard supports only uuid self id.
Using artemis server/firefox browser.
If I open freeboard-sk v1.0.7, go to settings, and set Kip as my instruments, refresh, then open the sidepanel, I get an error.
The current url is https://localhost:8443/@signalk/freeboard-sk/package/public/index.html
The attempted sidebar page is https://localhost:8443/Kip
but the app actually exists at https://localhost:8443/@mxtommy/kip/
, hence the failure. Same effect with other choices.
I could hardcode a redirect on the artemis server, but it would be better to have a more portable way to define available apps.
One way would be to allow {Name,url} pairs to be specified in freeboard-sk, or to make a call to /signalk/v1/app/list
to get available app choices.
From their readme: For use with webpack, Rollup, Browserify, or other module bundlers, install the ol package
Hello,
The gauge show the sog in m/s not in knot.
I found already this bug in app simple gauge.
Best Regards.
It would be neat to download the routes in gpx or kml format.
Also, when it comes to navigation software, I think routes are usually a list waypoints you plan to travel and "tracks" may be a more appropriate term for the historical location data?
For 'vessel up', the vessel is positioned below centre, so you can see more of what is coming ahead. This does not make as much sense with 'north up'. Perhaps it could be centered or similarly positioned off center to the north if on a southerly route? Positioning so much to the opposite of the course may be a bit disturbing if on an unstable course
Hi,
i'm trying to use freeboard. How I can to zoom in this WebAPP? I can't find "+"/"-" buttons. And I haven't any responce to "+"/"-" on keyboard. Only scrollmouse works fine....
Regards
free-x
Using v1.0.0, connecting to artemis server. The default subscribe message is:
{
"subscribe": [{
"path": "none",
"playbackRate": -1.0,
"period": 1000,
"minPeriod": 1000,
"format": "delta",
"startTime": "1970-01-01T00:00:00.000Z",
"policy": "ideal"
}],
"context": "vessels.self"
}
path=none caused a failure as its not a vaid signalk path. Is 'none' a valid request? I would normally use '*' or just "", which has an implicit * (in artemis at least)
playbackRate is not required for normal api, but doesnt hurt. -1.0 as value is reasonable, Ive done the same, but better if its not there.
startTime is also not needed. The default unix epoch start (1970) caused an attempt to playback from then :-) No value or blank would be better
In panaaj/angular branch:
Chart layers need to be placed in a sorted order based on the chart scale
parameter, The smaller scale chart goes to the top of the stack just below the vessel, draw,measure,etc layers.
This makes charts with more detail overlay those with less detail.
The map should have a white background layer at the bottom of the stack, and all chart layers should be transparent. This allows us to see the through a detailed chart to the next lrger scale chart giving a seamless effect across the viewport.
In panaaj/angular branch I get security alerts:
Known high severity security vulnerability detected in cryptiles < 4.1.2 defined in package-lock.json.
--
package-lock.json update suggested: cryptiles ~> 4.1.2
and
Known high severity security vulnerability detected in parsejson <=0.0.3 defined in package-lock.json.
OpenStreetMap tiles are now always being fetched, even if you have area local map available and you are zoomed in and the local map covers it. With a constrained net connections this makes zero sense, as you use up resources to fetch something that is never shown.
How about treating OSM just like all the other chart layers, with the option not to show it?
Another optimisation would be to disable it when you have a raster map available and the viewport is within its bounding box. Doesn't work if the raster chart has transparent areas, though.
Hello
I am having a problem with freeboard-sk
When I try to activate a route, an error message 'Server could not Activate Route' occurs
I have tried both loading a GPX file, plus creating a route in freeboard-sk
I would be thankful if anyone can assist me. thanks
Andrew
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.