meri-imperiumi / signalk-logbook

Semi-automatic electronic logbook for sailing vessels running Signal K
11 stars 5 forks source link

Semi-automatic logbook for Signal K

Status: ready for the first test runs

This application provides both a server-side plugin and the user interface for maintaining semi-automatic logbooks with Signal K. Just like traditional logbooks, you can write an entry at any time. However, there are several things that are done automatically for you:

User interface

The logbook presents a web-based user interface as part of the Signal K administration interface. The features should work fine on both desktop and mobile browsers.

Adding a log entry: Add entry

Traditional logbook view: Logbook as table Editing an entry

Log entries on a map: Map view

Registering sail changes: Sails editor

Data storage and format

This logbook app writes the logs to disk using YAML format which combines machine readability with at least some degree of human readability.

Logs are stored on a file per day basis at ~/.signalk/plugin-config-data/signalk-logbook/YYYY-MM-DD.yml If there are no entries for a given day, no file gets written.

Note: unlike Signal K itself, the log entries are written using "human-friendly" units, so degrees, knots, etc. They look something like:

- datetime: 2014-08-15T19:00:19.546Z
  position:
    longitude: 24.7363006
    latitude: 59.7243978
    source: GPS
  heading: 202
  course: 198
  speed:
    stw: 12.5
    sog: 11.8
  log: 9.6
  waypoint: null
  barometer: 1008.71
  wind:
    speed: 13.7
    direction: 283
  engine:
    hours: 405
  category: navigation
  text: Set 1st reef on mainsail
  author: bergie

It is a good idea to set up automatic backups of these files off the vessel, for example to GitHub or some other cloud storage service. How to handle this backup is out of the scope of this plugin.

Source data

The following SignalK paths are used by this logbook.

SingleK path Timeline name YAML path Notes
navigation.datetime Time /datetime Falls back to system time if not present. Display timezone can be configured.
navigation.courseOverGroundTrue Course /course
navigation.headingTrue Heading /heading
navigation.speedThroughWater /speed/stw
navigation.speedOverGround Speed /speed/sog
environment.wind.directionTrue Wind /wind/direction
environment.wind.speedOverGround Wind /wind/speed
environment.outside.pressure Baro /barometer
environment.water.swell.state Sea /observations/seaState
navigation.position Coordinates /position/longitude /position/latitude
navigation.gnss.type Fix /position/source Defaults to "GPS".
navigation.log Log /log
propulsion.*.runTime Engine /engine/hours
sails.inventory.* Sail changes are logged.
communication.crewNames /crewNames Crew changes are logged.
steering.autopilot.state Autopilot changes are logged.
navigation.state If present, used to start and stop automated hourly entries. Changes are logged.
propulsion.*.state Propulsion changes are logged.
communication.vhf.channel /vhf
navigation.courseRhumbline.nextPoint.position /waypoint

The signalk-derived-data and signalk-path-mapper plugins are both useful to remap available data to the required canonical paths.

API

Other applications can also use the logbook API for retrieving and writing log entries. This can be useful for automations with Node-Red or NoFlo etc.

Ideas

Some additional ideas for the future:

Changes