signalk-server
Version:
An implementation of a [Signal K](http://signalk.org) server for boats.
222 lines (188 loc) • 45.9 kB
HTML
<html class="default" lang="en" data-base="../../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>Autopilot API | Signal K</title><meta name="description" content="Documentation for Signal K"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../../assets/style.css?cache=1767726585343"/><link rel="stylesheet" href="../../assets/highlight.css?cache=1767726585343"/><script defer src="../../assets/main.js?cache=1767726585343"></script><script async src="../../assets/icons.js?cache=1767726585343" id="tsd-icons-script"></script><script async src="../../assets/search.js?cache=1767726585343" id="tsd-search-script"></script><script async src="../../assets/navigation.js?cache=1767726585343" id="tsd-nav-script"></script><script async src="../../assets/hierarchy.js?cache=1767726585343" id="tsd-hierarchy-script"></script><link rel="stylesheet" href="../../assets/theme.css"/></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar"><div class="tsd-toolbar-contents container"><a href="../../index.html" class="title"><img src="../../assets/logo.svg" alt="Signal K"/></a><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-search"></use></svg><span class="visible@s">Search</span></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/><ul role="listbox" id="tsd-search-results"></ul><div id="tsd-search-status" aria-live="polite" aria-atomic="true"><div>Preparing search index...</div></div></dialog><div id="tsd-toolbar-links"><a href="https://discord.gg/uuZrwz4dCS" target="_blank" rel="noopener" class="toolbar-icon visible@s" aria-label="Discord"><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path d="M524.5 69.8a1.5 1.5 0 0 0 -.8-.7A485.1 485.1 0 0 0 404.1 32a1.8 1.8 0 0 0 -1.9 .9 337.5 337.5 0 0 0 -14.9 30.6 447.8 447.8 0 0 0 -134.4 0 309.5 309.5 0 0 0 -15.1-30.6 1.9 1.9 0 0 0 -1.9-.9A483.7 483.7 0 0 0 116.1 69.1a1.7 1.7 0 0 0 -.8 .7C39.1 183.7 18.2 294.7 28.4 404.4a2 2 0 0 0 .8 1.4A487.7 487.7 0 0 0 176 479.9a1.9 1.9 0 0 0 2.1-.7A348.2 348.2 0 0 0 208.1 430.4a1.9 1.9 0 0 0 -1-2.6 321.2 321.2 0 0 1 -45.9-21.9 1.9 1.9 0 0 1 -.2-3.1c3.1-2.3 6.2-4.7 9.1-7.1a1.8 1.8 0 0 1 1.9-.3c96.2 43.9 200.4 43.9 295.5 0a1.8 1.8 0 0 1 1.9 .2c2.9 2.4 6 4.9 9.1 7.2a1.9 1.9 0 0 1 -.2 3.1 301.4 301.4 0 0 1 -45.9 21.8 1.9 1.9 0 0 0 -1 2.6 391.1 391.1 0 0 0 30 48.8 1.9 1.9 0 0 0 2.1 .7A486 486 0 0 0 610.7 405.7a1.9 1.9 0 0 0 .8-1.4C623.7 277.6 590.9 167.5 524.5 69.8zM222.5 337.6c-29 0-52.8-26.6-52.8-59.2S193.1 219.1 222.5 219.1c29.7 0 53.3 26.8 52.8 59.2C275.3 311 251.9 337.6 222.5 337.6zm195.4 0c-29 0-52.8-26.6-52.8-59.2S388.4 219.1 417.9 219.1c29.7 0 53.3 26.8 52.8 59.2C470.7 311 447.5 337.6 417.9 337.6z"></path></svg></a><a href="https://github.com/SignalK/signalk-server" target="_blank" rel="noopener" class="toolbar-icon visible@s" aria-label="Discord"><svg width="24" height="24" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 496 512"><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3 .3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6zm-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5 .3-6.2 2.3zm44.2-1.7c-2.9 .7-4.9 2.6-4.6 4.9 .3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9zM244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8zM97.2 352.9c-1.3 1-1 3.3 .7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1zm-10.8-8.1c-.7 1.3 .3 2.9 2.3 3.9 1.6 1 3.6 .7 4.3-.7 .7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3 .7zm32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3 .7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1zm-11.4-14.7c-1.6 1-1.6 3.6 0 5.9 1.6 2.3 4.3 3.3 5.6 2.3 1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2z"></path></svg></a><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-menu"></use></svg></a></div></div></header><div class="container container-main"><div class="col-content"><div class="tsd-page-title"><ul class="tsd-breadcrumb" aria-label="Breadcrumb"><li><a href="../../Developing.html">Developing</a></li><li><a href="../REST_APIs.html">REST APIs</a></li><li><a href="" aria-current="page">Autopilot API</a></li></ul></div><div class="tsd-panel tsd-typography"><h1 id="autopilot-api" class="tsd-anchor-link">Autopilot API<a href="#autopilot-api" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h1><p>The Autopilot API defines the <code>autopilots</code> path under <code>self</code> <em>(e.g. <code>/signalk/v2/api/vessels/self/autopilots</code>)</em> for representing information from one or more autopilot devices.</p>
<p>The Autopilot API provides a mechanism for applications to issue requests to autopilot devices to perform common operations. Additionally, when multiple autopilot devices are present, each autopilot device is individually addressable.</p>
<p><em>Note: Autopilot provider plugins are required to enable the API operation and provide communication with autopilot devices. See <a href="../Plugins/Autopilot_Providers.html">Autopilot Provider Plugins</a> for details.</em></p>
<h2 id="common-operations" class="tsd-anchor-link">Common Operations<a href="#common-operations" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h2><p>The following operations are supported:</p>
<ul>
<li>Setting the operating mode</li>
<li>Engaging / Disengaging the pilot</li>
<li>Setting / adjusting the course</li>
<li>Dodging port / starboard</li>
<li>Tacking / Gybing</li>
</ul>
<h2 id="the-default-autopilot" class="tsd-anchor-link">The <em>Default</em> Autopilot<a href="#the-default-autopilot" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h2><p>To ensure a consistent API calling profile and to simplify client operations, the Autopilot API will assign a <em>default</em> autopilot device which is accessible using the path <code>/signalk/v2/api/vessels/self/autopilots/_default</code>.</p>
<ul>
<li>
<p>When only one autopilot is present, it will be automatically assigned as the <em>default</em>.</p>
</li>
<li>
<p>When multiple autopilots are present, and a <em>default</em> is yet to be assigned, one will be assigned when:</p>
<ul>
<li>An update is received from a provider plugin, the autopilot which is the source of the update will be assigned as the <em>default</em>.</li>
<li>An API request is received, the first autopilot device registered, is assigned as the <em>default</em>.</li>
<li>A request is sent to the <code>/_providers/_default</code> API endpoint <em>(see <a href="#setting-the-default-provider">Setting the Default Autopilot</a>)</em>.</li>
</ul>
</li>
</ul>
<h3 id="getting-the-default-autopilot-identifier" class="tsd-anchor-link">Getting the Default Autopilot Identifier<a href="#getting-the-default-autopilot-identifier" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><p>To get the id of the <em>default</em> autopilot, submit an HTTP <code>GET</code> request to <code>/signalk/v2/api/vessels/self/autopilots/_providers/_default</code>.</p>
<p><em>Example:</em></p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">GET</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/_providers/_default"</span>
</code><button type="button">Copy</button></pre>
<p><em>Response:</em></p>
<pre><code class="JSON"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-3">"id"</span><span class="hl-0">:</span><span class="hl-4">"raymarine-id"</span><br/><span class="hl-0">}</span>
</code><button type="button">Copy</button></pre>
<h3 id="setting-an-autopilot-as-the-default" class="tsd-anchor-link">Setting an Autopilot as the Default<a href="#setting-an-autopilot-as-the-default" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><p>To set / change the <em>default</em> autopilot, submit an HTTP <code>POST</code> request to <code>/signalk/v2/api/vessels/self/autopilots/_providers/_default/{id}</code> where <code>{id}</code> is the identifier of the autopilot to use as the <em>default</em>.</p>
<p><em>Example:</em></p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">POST</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/_providers/_default/raymarine-id"</span>
</code><button type="button">Copy</button></pre>
<p>The autopilot with the supplied id will now be the target of requests made to <code>/signalk/v2/api/vessels/self/autopilots/_default/*</code>.</p>
<h2 id="listing-the-available-autopilots" class="tsd-anchor-link">Listing the available Autopilots<a href="#listing-the-available-autopilots" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h2><p>To retrieve a list of installed autopilot devices, submit an HTTP <code>GET</code> request to <code>/signalk/v2/api/vessels/self/autopilots</code>.</p>
<p>The response will be an object containing all the registered autopilot devices, keyed by their identifier, detailing the <code>provider</code> it is registered by and whether it is assigned as the <em>default</em>.</p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">GET</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots"</span>
</code><button type="button">Copy</button></pre>
<p><em>Example: List of registered autopilots showing that <code>pypilot-id</code> is assigned as the default.</em></p>
<pre><code class="JSON"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-3">"pypilot-id"</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-3">"provider"</span><span class="hl-0">:</span><span class="hl-4">"pypilot-provider"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"isDefault"</span><span class="hl-0">: </span><span class="hl-2">true</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-3">"raymarine-id"</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-3">"provider"</span><span class="hl-0">:</span><span class="hl-4">"raymarine-provider"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"isDefault"</span><span class="hl-0">: </span><span class="hl-2">false</span><br/><span class="hl-0"> }</span><br/><span class="hl-0">}</span>
</code><button type="button">Copy</button></pre>
<h2 id="autopilot-deltas" class="tsd-anchor-link">Autopilot Deltas<a href="#autopilot-deltas" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h2><p>Deltas emitted by the Autopilot API will have the base path <code>steering.autopilot</code> with the <code>$source</code> containing the autopilot device identifier.</p>
<p>Deltas are emitted for the following paths:</p>
<ul>
<li><code>steering.autopilot.defaultPilot</code></li>
<li><code>steering.autopilot.engaged</code></li>
<li><code>steering.autopilot.state</code></li>
<li><code>steering.autopilot.mode</code></li>
<li><code>steering.autopilot.target</code></li>
<li><code>steering.autopilot.availableActions</code></li>
</ul>
<p><em>Example: Deltas for <code>autopilot.engaged</code> from two autopilots (<code>raymarine-id</code>).</em></p>
<pre><code class="JSON"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-3">"context"</span><span class="hl-0">:</span><span class="hl-4">"vessels.self"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"updates"</span><span class="hl-0">:[</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">"$source"</span><span class="hl-0">:</span><span class="hl-4">"pypilot-id"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"timestamp"</span><span class="hl-0">:</span><span class="hl-4">"2023-11-19T06:12:47.820Z"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"values"</span><span class="hl-0">:[</span><br/><span class="hl-0"> {</span><span class="hl-3">"path"</span><span class="hl-0">:</span><span class="hl-4">"steering.autopilot.engaged"</span><span class="hl-0">,</span><span class="hl-3">"value"</span><span class="hl-0">:</span><span class="hl-2">false</span><span class="hl-0">}</span><br/><span class="hl-0"> ]</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">"$source"</span><span class="hl-0">:</span><span class="hl-4">"raymarine-id"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"timestamp"</span><span class="hl-0">:</span><span class="hl-4">"2023-11-19T06:12:47.820Z"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"values"</span><span class="hl-0">:[</span><br/><span class="hl-0"> {</span><span class="hl-3">"path"</span><span class="hl-0">:</span><span class="hl-4">"steering.autopilot.engaged"</span><span class="hl-0">,</span><span class="hl-3">"value"</span><span class="hl-0">:</span><span class="hl-2">true</span><span class="hl-0">}</span><br/><span class="hl-0"> ]</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> ]</span><br/><span class="hl-0">}</span>
</code><button type="button">Copy</button></pre>
<h2 id="autopilot-notifications" class="tsd-anchor-link">Autopilot Notifications<a href="#autopilot-notifications" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h2><p>The Autopilot API will provide notifications under the path <code>notifications.steering.autopilot</code> with the <code>$source</code> containing the autopilot device identifier.</p>
<p>A set of normalised notification paths are defined to provide a consistant way for client apps to receive and process alarm messages.</p>
<ul>
<li><code>waypointAdvance</code></li>
<li><code>waypointArrival</code></li>
<li><code>routeComplete</code></li>
<li><code>xte</code></li>
<li><code>heading</code></li>
<li><code>wind</code></li>
</ul>
<p><em>Example:</em></p>
<pre><code class="JSON"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-3">"context"</span><span class="hl-0">:</span><span class="hl-4">"vessels.self"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"updates"</span><span class="hl-0">:[</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">"$source"</span><span class="hl-0">:</span><span class="hl-4">"pypilot-id"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"timestamp"</span><span class="hl-0">:</span><span class="hl-4">"2023-11-19T06:12:47.820Z"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"values"</span><span class="hl-0">:[</span><br/><span class="hl-0"> {</span><br/><span class="hl-0"> </span><span class="hl-3">"path"</span><span class="hl-0">: </span><span class="hl-4">"notifications.steering.autopilot.waypointAdvance"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"value"</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-3">"state"</span><span class="hl-0">: </span><span class="hl-4">"alert"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"method"</span><span class="hl-0">: [</span><span class="hl-4">"sound"</span><span class="hl-0">],</span><br/><span class="hl-0"> </span><span class="hl-3">"message"</span><span class="hl-0">: </span><span class="hl-4">"Waypoint Advance"</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> ]</span><br/><span class="hl-0"> }</span><br/><span class="hl-0"> ]</span><br/><span class="hl-0">}</span><br/>
</code><button type="button">Copy</button></pre>
<h2 id="autopilot-offline--unreachable" class="tsd-anchor-link">Autopilot offline / unreachable<a href="#autopilot-offline--unreachable" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h2><p>If an autopilot device is not connected or unreachable, the provider for that autopilot device will set the <code>state</code> of the device to <code>off-line</code>.</p>
<h2 id="autopilot-actions" class="tsd-anchor-link">Autopilot Actions<a href="#autopilot-actions" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h2><p>The Autopilot API allows providers to list all the "actions" that are supported by the device <em>(e.g. tack, gybe, etc)</em> and their availability in the current state of operation.</p>
<p>A set of normalised actions are defined to simplify client processing and UI trimming:</p>
<ul>
<li><code>dodge</code></li>
<li><code>tack</code></li>
<li><code>gybe</code></li>
<li><code>courseCurrentPoint</code></li>
<li><code>courseNextPoint</code></li>
</ul>
<pre><code class="JSON"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-3">"options"</span><span class="hl-0">: {</span><br/><span class="hl-0"> </span><span class="hl-3">"states"</span><span class="hl-0">: [</span><span class="hl-7">...</span><span class="hl-0">],</span><br/><span class="hl-0"> </span><span class="hl-3">"modes"</span><span class="hl-0">: [</span><span class="hl-7">...</span><span class="hl-0">],</span><br/><span class="hl-0"> </span><span class="hl-3">"actions"</span><span class="hl-0">: [</span><br/><span class="hl-0"> {</span><span class="hl-3">"id"</span><span class="hl-0">: </span><span class="hl-4">"tack"</span><span class="hl-0">, </span><span class="hl-3">"name"</span><span class="hl-0">: </span><span class="hl-4">"Tack"</span><span class="hl-0">, </span><span class="hl-3">"available"</span><span class="hl-0">: </span><span class="hl-2">true</span><span class="hl-0">},</span><br/><span class="hl-0"> {</span><span class="hl-3">"id"</span><span class="hl-0">: </span><span class="hl-4">"gybe"</span><span class="hl-0">, </span><span class="hl-3">"name"</span><span class="hl-0">: </span><span class="hl-4">"Gybe"</span><span class="hl-0">, </span><span class="hl-3">"available"</span><span class="hl-0">: </span><span class="hl-2">false</span><span class="hl-0">}</span><br/><span class="hl-0"> ]</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-3">"state"</span><span class="hl-0">: </span><span class="hl-4">"disabled"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"mode"</span><span class="hl-0">: </span><span class="hl-4">"wind"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"target"</span><span class="hl-0">: </span><span class="hl-2">0.43</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"engaged"</span><span class="hl-0">: </span><span class="hl-2">true</span><br/><span class="hl-0">}</span>
</code><button type="button">Copy</button></pre>
<h2 id="autopilot-operations" class="tsd-anchor-link">Autopilot Operations<a href="#autopilot-operations" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h2><p>All API operations are invoked by issuing requests to:</p>
<ol>
<li><code>/signalk/v2/api/vessels/self/autopilots/_default/*</code></li>
</ol>
<p>Targets the default autopilot device.</p>
<p>OR</p>
<ol start="2">
<li><code>/signalk/v2/api/vessels/self/autopilots/{id}/*</code></li>
</ol>
<p>Target the autopilot with the supplied <code>{id}</code></p>
<p><em>Example:</em></p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">GET</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/_default/state"</span><br/><br/><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">GET</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/pypilot-id/mode"</span>
</code><button type="button">Copy</button></pre>
<h3 id="retrieving-autopilot-status" class="tsd-anchor-link">Retrieving Autopilot Status<a href="#retrieving-autopilot-status" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><p>To retrieve the current autopilot configuration as well as a list of available options for <code>state</code> and <code>mode</code> selections, submit an HTTP <code>GET</code> request to <code>/signalk/v2/api/vessels/self/autopilots/{id}</code>.</p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">GET</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}"</span>
</code><button type="button">Copy</button></pre>
<p><em>Response:</em></p>
<pre><code class="JSON"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-3">"options"</span><span class="hl-0">:{</span><br/><span class="hl-0"> </span><span class="hl-3">"state"</span><span class="hl-0">:[</span><span class="hl-4">"enabled"</span><span class="hl-0">,</span><span class="hl-4">"disabled"</span><span class="hl-0">],</span><br/><span class="hl-0"> </span><span class="hl-3">"mode"</span><span class="hl-0">:[</span><span class="hl-4">"gps"</span><span class="hl-0">,</span><span class="hl-4">"compass"</span><span class="hl-0">,</span><span class="hl-4">"wind"</span><span class="hl-0">]</span><br/><span class="hl-0"> },</span><br/><span class="hl-0"> </span><span class="hl-3">"state"</span><span class="hl-0">:</span><span class="hl-4">"disabled"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"mode"</span><span class="hl-0">:</span><span class="hl-4">"gps"</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"target"</span><span class="hl-0">: </span><span class="hl-2">0</span><span class="hl-0">,</span><br/><span class="hl-0"> </span><span class="hl-3">"engaged"</span><span class="hl-0">: </span><span class="hl-2">false</span><br/><span class="hl-0">}</span>
</code><button type="button">Copy</button></pre>
<p>Where:</p>
<ul>
<li><code>options</code> contains arrays of valid <code>state</code> and <code>mode</code> selection options</li>
<li><code>state</code> represents the current state of the device</li>
<li><code>mode</code> represents the current mode of the device</li>
<li><code>target</code> represents the current target value with respect to the selected <code>mode</code></li>
<li><code>engaged</code> will be true when the autopilot is actively steering the vessel.</li>
</ul>
<h3 id="setting-the-autopilot-state" class="tsd-anchor-link">Setting the Autopilot State<a href="#setting-the-autopilot-state" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Autopilot state can be set by submitting an HTTP <code>PUT</code> request to the <code>/signalk/v2/api/vessels/self/autopilots/{id}/state</code> endpoint containing a value from the list of available states.</p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">PUT</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/state"</span><span class="hl-0"> {</span><span class="hl-4">"value"</span><span class="hl-0">: </span><span class="hl-4">"disabled"</span><span class="hl-0">}</span>
</code><button type="button">Copy</button></pre>
<h3 id="getting-the-autopilot-state" class="tsd-anchor-link">Getting the Autopilot State<a href="#getting-the-autopilot-state" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><p>The current autopilot state can be retrieved by submitting an HTTP <code>GET</code> request to the <code>/signalk/v2/api/vessels/self/autopilots/{id}/state</code> endpoint.</p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">GET</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/state"</span>
</code><button type="button">Copy</button></pre>
<p><em>Response:</em></p>
<pre><code class="JSON"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-3">"value"</span><span class="hl-0">:</span><span class="hl-4">"enabled"</span><span class="hl-0">,</span><br/><span class="hl-0">}</span>
</code><button type="button">Copy</button></pre>
<h3 id="setting-the-autopilot-mode" class="tsd-anchor-link">Setting the Autopilot Mode<a href="#setting-the-autopilot-mode" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Autopilot mode can be set by submitting an HTTP <code>PUT</code> request to the <code>/signalk/v2/api/vessels/self/autopilots/{id}/mode</code> endpoint containing a value from the list of available modes.</p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">PUT</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/mode"</span><span class="hl-0"> {</span><span class="hl-4">"value"</span><span class="hl-0">: </span><span class="hl-4">"gps"</span><span class="hl-0">}</span>
</code><button type="button">Copy</button></pre>
<h3 id="getting-the-autopilot-mode" class="tsd-anchor-link">Getting the Autopilot Mode<a href="#getting-the-autopilot-mode" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><p>The current autopilot mode can be retrieved by submitting an HTTP <code>GET</code> request to the <code>mode</code> endpoint.</p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">GET</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/mode"</span>
</code><button type="button">Copy</button></pre>
<p><em>Response:</em></p>
<pre><code class="JSON"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-3">"value"</span><span class="hl-0">:</span><span class="hl-4">"gps"</span><span class="hl-0">,</span><br/><span class="hl-0">}</span>
</code><button type="button">Copy</button></pre>
<h3 id="setting-the-target-value" class="tsd-anchor-link">Setting the Target value<a href="#setting-the-target-value" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><p>Autopilot target value can be set by submitting an HTTP <code>PUT</code> request to the <code>/signalk/v2/api/vessels/self/autopilots/{id}/target</code> endpoint containing the desired value.</p>
<p><em>Note: The value supplied should be a number within the valid range for the selected <code>mode</code>.</em></p>
<pre><code class="typescript"><span class="hl-6">// Set target to 129 degrees</span><br/><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">PUT</span><span class="hl-0"> </span><span class="hl-4">"signalk/v2/api/vessels/self/autopilots/{id}/target"</span><span class="hl-0"> {</span><span class="hl-4">"value"</span><span class="hl-0">: </span><span class="hl-2">129</span><span class="hl-0">, </span><span class="hl-4">"units"</span><span class="hl-0">: </span><span class="hl-4">"deg"</span><span class="hl-0">}</span><br/><br/><span class="hl-6">// Set target to 0.349066 radians (20 degrees)</span><br/><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">PUT</span><span class="hl-0"> </span><span class="hl-4">"signalk/v2/api/vessels/self/autopilots/{id}/target"</span><span class="hl-0"> {</span><span class="hl-4">"value"</span><span class="hl-0">: </span><span class="hl-2">0.349066</span><span class="hl-0">}</span>
</code><button type="button">Copy</button></pre>
<p>The target value can be adjusted a +/- value by submitting an HTTP <code>PUT</code> request to the <code>/signalk/v2/api/vessels/self/autopilots/{id}/target/adjust</code> endpoint with the value to add to the current <code>target</code> value.</p>
<pre><code class="typescript"><span class="hl-6">// Adjust target 2 degrees port</span><br/><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">PUT</span><span class="hl-0"> </span><span class="hl-4">"signalk/v2/api/vessels/self/autopilots/{id}/target/adjust"</span><span class="hl-0"> {</span><span class="hl-4">"value"</span><span class="hl-0">: </span><span class="hl-1">-</span><span class="hl-2">2</span><span class="hl-0">, , </span><span class="hl-4">"units"</span><span class="hl-0">: </span><span class="hl-4">"deg"</span><span class="hl-0">}</span><br/><br/><span class="hl-6">// Adjust target 0.0349066 radians (2 degrees) starboard</span><br/><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">PUT</span><span class="hl-0"> </span><span class="hl-4">"signalk/v2/api/vessels/self/autopilots/{id}/target/adjust"</span><span class="hl-0"> {</span><span class="hl-4">"value"</span><span class="hl-0">: </span><span class="hl-2">0.0349066</span><span class="hl-0">}</span>
</code><button type="button">Copy</button></pre>
<h3 id="getting-the-current-target-value" class="tsd-anchor-link">Getting the current Target value<a href="#getting-the-current-target-value" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><p>The current autopilot target value <em>(in radians)</em> can be retrieved by submitting an HTTP <code>GET</code> request to the <code>target</code> endpoint.</p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">GET</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/target"</span>
</code><button type="button">Copy</button></pre>
<p><em>Response:</em></p>
<pre><code class="JSON"><span class="hl-0">{</span><br/><span class="hl-0"> </span><span class="hl-3">"value"</span><span class="hl-0">: </span><span class="hl-2">2.2345</span><span class="hl-0">,</span><br/><span class="hl-0">}</span>
</code><button type="button">Copy</button></pre>
<h3 id="engaging--disengaging-the-autopilot" class="tsd-anchor-link">Engaging / Disengaging the Autopilot<a href="#engaging--disengaging-the-autopilot" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><h4 id="engaging-the-autopilot" class="tsd-anchor-link">Engaging the autopilot<a href="#engaging-the-autopilot" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h4><p>An autopilot can be engaged by <a href="#setting-the-state">setting it to a speciifc <code>state</code></a> but it can also be engaged more generically by submitting an HTTP <code>POST</code> request to the <code>/signalk/v2/api/vessels/self/autopilots/{id}/engage</code> endpoint.</p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">POST</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/engage"</span>
</code><button type="button">Copy</button></pre>
<p><em>Note: The resultant <code>state</code> into which the autopilot is placed will be determined by the <strong>provider plugin</strong> and the autopilot device it is communicating with.</em></p>
<h4 id="disengaging-the-autopilot" class="tsd-anchor-link">Disengaging the autopilot<a href="#disengaging-the-autopilot" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h4><p>An autopilot can be disengaged by <a href="#setting-the-state">setting it to a speciifc <code>state</code></a> but it can also be disengaged more generically by submitting an HTTP <code>POST</code> request to the <code>/signalk/v2/api/vessels/self/autopilots/{id}/disengage</code> endpoint.</p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">POST</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/disengage"</span>
</code><button type="button">Copy</button></pre>
<p><em>Note: The resultant <code>state</code> into which the autopilot is placed will be determined by the <strong>provider plugin</strong> and the autopilot device it is communicating with.</em></p>
<h3 id="perform-a-tack" class="tsd-anchor-link">Perform a Tack<a href="#perform-a-tack" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><p>To send a command to the autopilot to perform a tack in the required direction, submit an HTTP <code>POST</code> request to <code>./autopilots/{id}/tack/{direction}</code> where <em>direction</em> is either <code>port</code> or <code>starboard</code>.</p>
<p><em>Example: Tack to Port</em></p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">POST</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/tack/port"</span>
</code><button type="button">Copy</button></pre>
<p><em>Example: Tack to Starboard</em></p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">POST</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/tack/starboard"</span>
</code><button type="button">Copy</button></pre>
<h3 id="perform-a-gybe" class="tsd-anchor-link">Perform a Gybe<a href="#perform-a-gybe" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><p>To send a command to the autopilot to perform a gybe in the required direction, submit an HTTP <code>POST</code> request to <code>/signalk/v2/api/vessels/self/autopilots/{id}/gybe/{direction}</code> where <em>direction</em> is either <code>port</code> or <code>starboard</code>.</p>
<p><em>Example: Gybe to Port</em></p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">POST</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/gybe/port"</span>
</code><button type="button">Copy</button></pre>
<p><em>Example: Gybe to Starboard</em></p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">POST</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/gybe/starboard"</span>
</code><button type="button">Copy</button></pre>
<h3 id="steer-to-current-destination" class="tsd-anchor-link">Steer to current destination<a href="#steer-to-current-destination" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><p>When a course has been set to a GPS position or waypoint (<code>APB</code>, <code>RMB</code>, etc data is available) submitting an HTTP <code>POST</code> request to <code>./autopilots/{id}/courseCurrentPoint</code> will send commands to the autopilot to:</p>
<ol>
<li>Set the autopilot to the appropriate mode</li>
<li>Activate / engage the autopilot.</li>
</ol>
<p><em>Example:</em></p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">POST</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/courseNextPoint"</span>
</code><button type="button">Copy</button></pre>
<h3 id="advancing-waypoint" class="tsd-anchor-link">Advancing Waypoint<a href="#advancing-waypoint" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><p>To send a command to the autopilot to advance to the next waypoint on a route, submit an HTTP <code>POST</code> request to <code>./autopilots/{id}/courseNextPoint</code>.</p>
<p><em>Example:</em></p>
<pre><code class="typescript"><span class="hl-2">HTTP</span><span class="hl-0"> </span><span class="hl-2">POST</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/courseNextPoint"</span>
</code><button type="button">Copy</button></pre>
<h3 id="dodging-obstacles" class="tsd-anchor-link">Dodging Obstacles<a href="#dodging-obstacles" aria-label="Permalink" class="tsd-anchor-icon"><svg viewBox="0 0 24 24" aria-hidden="true"><use href="../../assets/icons.svg#icon-anchor"></use></svg></a></h3><p>To address the various methods that the <code>dodge</code> function could be invoked on pilot devices, the API provides the following endpoints to provide the widest coverage possible:</p>
<p><strong>To enter dodge mode at the current course</strong></p>
<pre><code class="typescript"><span class="hl-2">POST</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/dodge"</span>
</code><button type="button">Copy</button></pre>
<p><strong>To enter dodge mode and change course by 5 degrees starboard</strong></p>
<pre><code class="typescript"><span class="hl-2">PUT</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/dodge"</span><span class="hl-0"> {</span><span class="hl-4">"value"</span><span class="hl-0">: </span><span class="hl-2">5</span><span class="hl-0">, </span><span class="hl-4">"units"</span><span class="hl-0">: </span><span class="hl-4">"deg"</span><span class="hl-0">}</span>
</code><button type="button">Copy</button></pre>
<p><strong>To enter dodge mode and change course by 5 degrees port</strong></p>
<pre><code class="typescript"><span class="hl-2">PUT</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/dodge"</span><span class="hl-0"> {</span><span class="hl-4">"value"</span><span class="hl-0">: </span><span class="hl-1">-</span><span class="hl-2">5</span><span class="hl-0">, </span><span class="hl-4">"units"</span><span class="hl-0">: </span><span class="hl-4">"deg"</span><span class="hl-0">}</span>
</code><button type="button">Copy</button></pre>
<p><strong>To cancel dodge mode</strong></p>
<pre><code class="typescript"><span class="hl-2">DELETE</span><span class="hl-0"> </span><span class="hl-4">"/signalk/v2/api/vessels/self/autopilots/{id}/dodge"</span>
</code><button type="button">Copy</button></pre>
</div></div><div class="col-sidebar"><div class="page-menu"><details open class="tsd-accordion tsd-page-navigation"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../../assets/icons.svg#icon-chevronDown"></use></svg><h3>On This Page</h3></summary><div class="tsd-accordion-details"><a href="#common-operations"><span>Common <wbr/>Operations</span></a><a href="#the-default-autopilot"><span>The <wbr/>Default <wbr/>Autopilot</span></a><ul><li><a href="#getting-the-default-autopilot-identifier"><span>Getting the <wbr/>Default <wbr/>Autopilot <wbr/>Identifier</span></a></li><li><a href="#setting-an-autopilot-as-the-default"><span>Setting an <wbr/>Autopilot as the <wbr/>Default</span></a></li></ul><a href="#listing-the-available-autopilots"><span>Listing the available <wbr/>Autopilots</span></a><a href="#autopilot-deltas"><span>Autopilot <wbr/>Deltas</span></a><a href="#autopilot-notifications"><span>Autopilot <wbr/>Notifications</span></a><a href="#autopilot-offline--unreachable"><span>Autopilot offline / unreachable</span></a><a href="#autopilot-actions"><span>Autopilot <wbr/>Actions</span></a><a href="#autopilot-operations"><span>Autopilot <wbr/>Operations</span></a><ul><li><a href="#retrieving-autopilot-status"><span>Retrieving <wbr/>Autopilot <wbr/>Status</span></a></li><li><a href="#setting-the-autopilot-state"><span>Setting the <wbr/>Autopilot <wbr/>State</span></a></li><li><a href="#getting-the-autopilot-state"><span>Getting the <wbr/>Autopilot <wbr/>State</span></a></li><li><a href="#setting-the-autopilot-mode"><span>Setting the <wbr/>Autopilot <wbr/>Mode</span></a></li><li><a href="#getting-the-autopilot-mode"><span>Getting the <wbr/>Autopilot <wbr/>Mode</span></a></li><li><a href="#setting-the-target-value"><span>Setting the <wbr/>Target value</span></a></li><li><a href="#getting-the-current-target-value"><span>Getting the current <wbr/>Target value</span></a></li><li><a href="#engaging--disengaging-the-autopilot"><span>Engaging / <wbr/>Disengaging the <wbr/>Autopilot</span></a></li><li><a href="#perform-a-tack"><span>Perform a <wbr/>Tack</span></a></li><li><a href="#perform-a-gybe"><span>Perform a <wbr/>Gybe</span></a></li><li><a href="#steer-to-current-destination"><span>Steer to current destination</span></a></li><li><a href="#advancing-waypoint"><span>Advancing <wbr/>Waypoint</span></a></li><li><a href="#dodging-obstacles"><span>Dodging <wbr/>Obstacles</span></a></li></ul></div></details></div><div class="site-menu"><nav class="tsd-navigation"><a href="../../modules.html">Signal K</a><ul class="tsd-small-nested-navigation" id="tsd-nav-container"><li>Loading...</li></ul></nav></div></div></div><footer><p class="tsd-generator">Generated using <a href="https://typedoc.org/" target="_blank">TypeDoc</a></p></footer><div class="overlay"></div></body></html>