signalk-server
Version:
An implementation of a [Signal K](http://signalk.org) server for boats.
448 lines (407 loc) • 34.7 kB
HTML
<html lang="en" class="sidebar-visible no-js light">
<head>
<!-- Book generated using mdBook -->
<meta charset="UTF-8">
<title>Anchor Alarm - Signal K Server Documentation</title>
<!-- Custom HTML head -->
<meta name="description" content="A Guide for users and developers.">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="theme-color" content="#ffffff" />
<link rel="shortcut icon" href="../../favicon.png">
<link rel="stylesheet" href="../../css/variables.css">
<link rel="stylesheet" href="../../css/general.css">
<link rel="stylesheet" href="../../css/chrome.css">
<link rel="stylesheet" href="../../css/print.css" media="print">
<!-- Fonts -->
<link rel="stylesheet" href="../../FontAwesome/css/font-awesome.css">
<link rel="stylesheet" href="../../fonts/fonts.css">
<!-- Highlight.js Stylesheets -->
<link rel="stylesheet" href="../../highlight.css">
<link rel="stylesheet" href="../../tomorrow-night.css">
<link rel="stylesheet" href="../../ayu-highlight.css">
<!-- Custom theme stylesheets -->
</head>
<body>
<div id="body-container">
<!-- Provide site root to javascript -->
<script>
var path_to_root = "../../";
var default_theme = window.matchMedia("(prefers-color-scheme: dark)").matches ? "navy" : "light";
</script>
<!-- Work around some values being stored in localStorage wrapped in quotes -->
<script>
try {
var theme = localStorage.getItem('mdbook-theme');
var sidebar = localStorage.getItem('mdbook-sidebar');
if (theme.startsWith('"') && theme.endsWith('"')) {
localStorage.setItem('mdbook-theme', theme.slice(1, theme.length - 1));
}
if (sidebar.startsWith('"') && sidebar.endsWith('"')) {
localStorage.setItem('mdbook-sidebar', sidebar.slice(1, sidebar.length - 1));
}
} catch (e) { }
</script>
<!-- Set the theme before any content is loaded, prevents flash -->
<script>
var theme;
try { theme = localStorage.getItem('mdbook-theme'); } catch(e) { }
if (theme === null || theme === undefined) { theme = default_theme; }
var html = document.querySelector('html');
html.classList.remove('no-js')
html.classList.remove('light')
html.classList.add(theme);
html.classList.add('js');
</script>
<input type="checkbox" id="sidebar-toggle-anchor" class="hidden">
<!-- Hide / unhide sidebar before it is displayed -->
<script>
var html = document.querySelector('html');
var sidebar = null;
var sidebar_toggle = document.getElementById("sidebar-toggle-anchor");
if (document.body.clientWidth >= 1080) {
try { sidebar = localStorage.getItem('mdbook-sidebar'); } catch(e) { }
sidebar = sidebar || 'visible';
} else {
sidebar = 'hidden';
}
sidebar_toggle.checked = sidebar === 'visible';
html.classList.remove('sidebar-visible');
html.classList.add("sidebar-" + sidebar);
</script>
<nav id="sidebar" class="sidebar" aria-label="Table of contents">
<div class="sidebar-scrollbox">
<a href="/" style="width:155px;height:30px;background-image:url(/signal-k-logo-image-text.svg);display:inline-block;background-repeat:no-repeat;background-position:center center;background-size:150px auto;"></a>
<ol class="chapter"><li class="chapter-item expanded affix "><a href="../../index.html">Introduction</a></li><li class="chapter-item expanded affix "><li class="part-title">Getting Started</li><li class="chapter-item expanded "><a href="../../installation/install.html"><strong aria-hidden="true">1.</strong> Installation</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../installation/raspberry_pi_installation.html"><strong aria-hidden="true">1.1.</strong> Installing on Raspberry Pi</a></li><li class="chapter-item expanded "><a href="../../installation/updating.html"><strong aria-hidden="true">1.2.</strong> Updating your installation</a></li><li class="chapter-item expanded "><a href="../../installation/command_line.html"><strong aria-hidden="true">1.3.</strong> Runtime environment & options</a></li></ol></li><li class="chapter-item expanded "><a href="../../security.html"><strong aria-hidden="true">2.</strong> Security</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../setup/generating_tokens.html"><strong aria-hidden="true">2.1.</strong> Generating tokens</a></li></ol></li><li class="chapter-item expanded "><li class="part-title">Setup</li><li class="chapter-item expanded "><a href="../../setup/configuration.html"><strong aria-hidden="true">3.</strong> Configuration</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../setup/seatalk/seatalk.html"><strong aria-hidden="true">3.1.</strong> Seatalk Connections</a></li></ol></li><li class="chapter-item expanded "><li class="part-title">Feature How Tos</li><li class="chapter-item expanded "><a href="../../features/anchoralarm/anchoralarm.html" class="active"><strong aria-hidden="true">4.</strong> Anchor Alarm</a></li><li class="chapter-item expanded "><a href="../../features/navdataserver/navdataserver.html"><strong aria-hidden="true">5.</strong> NMEA0183 Server</a></li><li class="chapter-item expanded "><a href="../../features/datalogging/datalogging.html"><strong aria-hidden="true">6.</strong> Data Logging</a></li><li class="chapter-item expanded affix "><li class="part-title">Support</li><li class="chapter-item expanded "><a href="../../support/help.html"><strong aria-hidden="true">7.</strong> Help & Support</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../support/faq.html"><strong aria-hidden="true">7.1.</strong> FAQs</a></li></ol></li><li class="chapter-item expanded "><a href="../../support/sponsor.html"><strong aria-hidden="true">8.</strong> Sponsor</a></li><li class="chapter-item expanded affix "><li class="part-title">Develop</li><li class="chapter-item expanded "><a href="../../develop/developer_notes.html"><strong aria-hidden="true">9.</strong> Notes for Developers</a></li><li class="chapter-item expanded "><a href="../../whats_new.html"><strong aria-hidden="true">10.</strong> What's New in V2</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../breaking_changes.html"><strong aria-hidden="true">10.1.</strong> Changes & Deprecations</a></li></ol></li><li class="chapter-item expanded "><a href="../../develop/webapps.html"><strong aria-hidden="true">11.</strong> WebApps</a></li><li class="chapter-item expanded "><a href="../../develop/plugins/server_plugin.html"><strong aria-hidden="true">12.</strong> Plugins</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../develop/plugins/deltas.html"><strong aria-hidden="true">12.1.</strong> Processing Data</a></li><li class="chapter-item expanded "><a href="../../develop/plugins/server_plugin_api.html"><strong aria-hidden="true">12.2.</strong> Server API</a></li><li class="chapter-item expanded "><a href="../../develop/plugins/resource_provider_plugins.html"><strong aria-hidden="true">12.3.</strong> Resource Providers</a></li><li class="chapter-item expanded "><a href="../../develop/rest-api/course_calculations.html"><strong aria-hidden="true">12.4.</strong> Course Providers</a></li><li class="chapter-item expanded "><a href="../../develop/plugins/autopilot_provider_plugins.html"><strong aria-hidden="true">12.5.</strong> Autopilot Providers</a></li></ol></li><li class="chapter-item expanded "><a href="../../develop/plugins/publishing.html"><strong aria-hidden="true">13.</strong> Publishing to the AppStore</a></li><li class="chapter-item expanded "><a href="../../develop/rest-api/open_api.html"><strong aria-hidden="true">14.</strong> REST APIs</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../develop/rest-api/course_api.html"><strong aria-hidden="true">14.1.</strong> Course API</a></li><li><ol class="section"><li class="chapter-item expanded "><a href="../../develop/rest-api/course_calculations.html"><strong aria-hidden="true">14.1.1.</strong> Course Calculations</a></li></ol></li><li class="chapter-item expanded "><a href="../../develop/rest-api/resources_api.html"><strong aria-hidden="true">14.2.</strong> Resources API</a></li><li class="chapter-item expanded "><a href="../../develop/rest-api/notifications_api.html"><strong aria-hidden="true">14.3.</strong> Notifications API</a></li><li class="chapter-item expanded "><a href="../../develop/rest-api/autopilot_api.html"><strong aria-hidden="true">14.4.</strong> Autopilot API</a></li><li class="chapter-item expanded "><a href="../../develop/rest-api/anchor_api.html"><strong aria-hidden="true">14.5.</strong> Anchor API</a></li></ol></li><li class="chapter-item expanded "><a href="../../develop/contributing.html"><strong aria-hidden="true">15.</strong> Contribute</a></li></ol>
</div>
<div id="sidebar-resize-handle" class="sidebar-resize-handle"></div>
</nav>
<!-- Track and set sidebar scroll position -->
<script>
var sidebarScrollbox = document.querySelector('#sidebar .sidebar-scrollbox');
sidebarScrollbox.addEventListener('click', function(e) {
if (e.target.tagName === 'A') {
sessionStorage.setItem('sidebar-scroll', sidebarScrollbox.scrollTop);
}
}, { passive: true });
var sidebarScrollTop = sessionStorage.getItem('sidebar-scroll');
sessionStorage.removeItem('sidebar-scroll');
if (sidebarScrollTop) {
// preserve sidebar scroll position when navigating via links within sidebar
sidebarScrollbox.scrollTop = sidebarScrollTop;
} else {
// scroll sidebar to current active section when navigating via "next/previous chapter" buttons
var activeSection = document.querySelector('#sidebar .active');
if (activeSection) {
activeSection.scrollIntoView({ block: 'center' });
}
}
</script>
<div id="page-wrapper" class="page-wrapper">
<div class="page">
<div id="menu-bar-hover-placeholder"></div>
<div id="menu-bar" class="menu-bar sticky">
<div class="left-buttons">
<label id="sidebar-toggle" class="icon-button" for="sidebar-toggle-anchor" title="Toggle Table of Contents" aria-label="Toggle Table of Contents" aria-controls="sidebar">
<i class="fa fa-bars"></i>
</label>
<button id="theme-toggle" class="icon-button" type="button" title="Change theme" aria-label="Change theme" aria-haspopup="true" aria-expanded="false" aria-controls="theme-list">
<i class="fa fa-paint-brush"></i>
</button>
<ul id="theme-list" class="theme-popup" aria-label="Themes" role="menu">
<li role="none"><button role="menuitem" class="theme" id="light">Light</button></li>
<li role="none"><button role="menuitem" class="theme" id="rust">Rust</button></li>
<li role="none"><button role="menuitem" class="theme" id="coal">Coal</button></li>
<li role="none"><button role="menuitem" class="theme" id="navy">Navy</button></li>
<li role="none"><button role="menuitem" class="theme" id="ayu">Ayu</button></li>
</ul>
<button id="search-toggle" class="icon-button" type="button" title="Search. (Shortkey: s)" aria-label="Toggle Searchbar" aria-expanded="false" aria-keyshortcuts="S" aria-controls="searchbar">
<i class="fa fa-search"></i>
</button>
</div>
<h1 class="menu-title">Signal K Server Documentation</h1>
<div class="right-buttons">
<a href="../../print.html" title="Print this book" aria-label="Print this book">
<i id="print-button" class="fa fa-print"></i>
</a>
<a href="https://github.com/SignalK/signalk-server/tree/master/docs/src" title="Suggest an edit" aria-label="Suggest an edit">
<i id="git-edit-button" class="fa fa-edit"></i>
</a>
</div>
</div>
<div id="search-wrapper" class="hidden">
<form id="searchbar-outer" class="searchbar-outer">
<input type="search" id="searchbar" name="searchbar" placeholder="Search this book ..." aria-controls="searchresults-outer" aria-describedby="searchresults-header">
</form>
<div id="searchresults-outer" class="searchresults-outer hidden">
<div id="searchresults-header" class="searchresults-header"></div>
<ul id="searchresults">
</ul>
</div>
</div>
<!-- Apply ARIA attributes after the sidebar and the sidebar toggle button are added to the DOM -->
<script>
document.getElementById('sidebar-toggle').setAttribute('aria-expanded', sidebar === 'visible');
document.getElementById('sidebar').setAttribute('aria-hidden', sidebar !== 'visible');
Array.from(document.querySelectorAll('#sidebar a')).forEach(function(link) {
link.setAttribute('tabIndex', sidebar === 'visible' ? 0 : -1);
});
</script>
<div id="content" class="content">
<main>
<h1 id="feature-anchor-alarm"><a class="header" href="#feature-anchor-alarm">Feature: Anchor Alarm</a></h1>
<h2 id="contents"><a class="header" href="#contents">Contents</a></h2>
<ul>
<li><a href="#prerequisites">Prerequisites</a></li>
<li><a href="#configuration">Configuration</a></li>
<li><a href="#using-the-anchor-alarm">Using the Anchor Alarm</a></li>
<li><a href="#alarms--notifications">Alarms & Notifications</a></li>
<li><a href="#alternatives-to-wilhelmsk">Alternatives to WilhelmSK</a></li>
</ul>
<h2 id="introduction"><a class="header" href="#introduction">Introduction</a></h2>
<p>This document describes how to setup an anchor alarm using Signal K Server and the WilhelmSK app that:</p>
<ul>
<li>Uses the GPS data from your navigation system, not your phone</li>
<li>Has a graphical map + satellite view</li>
<li>Vessel movement is saved and displayed as Track on a map</li>
<li>Provides the ability to move the anchor location</li>
<li>Sends push notifications to your iPhone (not Android), both remotely via the Internet and locally on the boat</li>
<li>Sound an audible alarm on a Fusion stereo or via a common speaker connected to a Yacht Devices N2K device</li>
<li>Does not depend on your phone having enough battery, GPS reception to wake you up</li>
</ul>
<img src="wsk.png" width=400px>
<p><em>Image: WilhelmSK App on iPad.</em></p>
<h2 id="prerequisites"><a class="header" href="#prerequisites">Prerequisites</a></h2>
<ul>
<li>SignalK server installed, for example on a Victron GX device or RaspberryPi. See <a href="../../installation/install.html">Installation</a> for details.</li>
<li><a href="https://itunes.apple.com/us/app/wilhelmsk/id1150499484?mt=8">WilhelmSK iOS App</a></li>
</ul>
<p>For use with other Apps (Android, web apps, etc) see <a href="#alternatives-to-wilhelmsk">Alternatives to WilhelmSK</a>.</p>
<h2 id="configuration"><a class="header" href="#configuration">Configuration</a></h2>
<p><strong>Step 1.</strong> Configure the Vessel data in SignalK server:
<img src="vesseldata.png" width=600px></p>
<p>Be sure to set:</p>
<ul>
<li>Boat length</li>
<li>GPS Distance from Bow</li>
<li>GPS Distance from Center.</li>
</ul>
<h4 id="step-2-install-required-signal-k-server-plugins"><a class="header" href="#step-2-install-required-signal-k-server-plugins">Step 2. Install required Signal K Server plugins:</a></h4>
<ul>
<li>Open the Signal K Admin UI and if necessary <em>Login</em></li>
<li>Select <em>Appstore -> Available</em> from the menu</li>
<li>Under <em>Available Apps</em> select <em>All</em> from the dropdown</li>
</ul>
<img src="appstore_available.png" width=600px>
<p>Locate and install each of the following plugins:</p>
<ul>
<li><strong>signalk-anchoralarm-plugin</strong></li>
<li><strong>signalk-push-notifications</strong></li>
<li><strong>signalk-alarm-silencer</strong></li>
<li><strong>@signalk/tracks-plugin</strong></li>
</ul>
<p>After installation is complete, restart the server.</p>
<p><em>Note: The <em>Restart</em> button only appears at the upper right of the screen when security has been enabled. (See <a href="../../security.html#enabling-security">Enabling Security</a> for details.)</em></p>
<h4 id="step-3-configure-the-plugins"><a class="header" href="#step-3-configure-the-plugins">Step 3 Configure the plugins:</a></h4>
<p>Each of the plugins you installed in the previous step need to be configured and enabled. To do this:</p>
<ul>
<li>Select `Server -> Plugin Config`` from the menu</li>
<li>Locate the plugin</li>
<li>Set the appropriate configuration values</li>
<li>Click <em>Submit</em>.</li>
<li>Ensure the plugin is <em>Enabled</em>.</li>
</ul>
<p>Following are details of how to configure each plugin:</p>
<p><strong><em>Anchor Alarm plugin:</em></strong></p>
<p>This plugin only needs to be enabled.</p>
<p>No configuration is required as the settings values are populated by WilhelmSK.</p>
<img src="./anchoralarmplugin.jpg" width=600px>
<p><strong><em>Alarm Silencer plugin:</em></strong></p>
<p>This plugin only needs to be enabled.</p>
<p>No configuration options available.</p>
<img src="./alarmsilencer.jpg" width=600px>
<p><strong><em>Push Notifications plugin:</em></strong></p>
<ul>
<li>To send notifications via an Internet connection check <em>Enable Remote Push</em>.</li>
</ul>
<p><em>Note: The WilhelmSK app uses an Amazon RDS service to deliver push notifications. No additional accounts, etc are required as they are included with purchase.</em></p>
<ul>
<li>
<p><em>Local Push SSIDs</em>: Enter the SSID(s) of the WiFi network(s) on your boat which the devices that are to receive notifications are connected.</p>
</li>
<li>
<p><em>Local Push Port</em> specifies the port number that WilhelmSK app will receive the local push notifications.
The default value is <em>3001</em> and only needs to be changed if that port number is already in use by another app / plugin on the Signal K Server.</p>
</li>
</ul>
<p><em>Note: It is not necessary to set the same value in the WilhelmSK app, it auto configures itself.</em></p>
<img src="./pushnotificationplugin.jpg" width=350px>
<p><strong><em>Tracks plugin</em></strong></p>
<p>This plugin keeps track of the position of vessels visible to the Signal K Server. This enables apps to display a track of vessel movements.</p>
<p>The configuration values chosen will determince the amount of resource required run the plugin (and potentially the performance of the Signal K Server) so please consider this when making entries.</p>
<p>The following settings represent conservative values that are suitable for use with an anchor alarm:</p>
<ul>
<li>Track resolution: 60000 (60 seconds)</li>
<li>Points to keep: 240 (4 hours)</li>
<li>Max idle time: 600 (10 minutes)</li>
<li>Max Radius: 1 meter (no other vessels).</li>
</ul>
<p><em>Note: This plugin stores the track all the time, not only when on anchor. Which comes in handy when you enable the the anchor alarm a while after having dropped the anchor.</em></p>
<img src="./tracks.jpg" width=350px>
<p><strong><em>Step 4.</em></strong> Connect WilhelmSK to your SignalK server</p>
<p>After installing the WilhelmSK app, go to the iOS settings screen and check that it has network access permissions.</p>
<img src="./wsk_ios.jpg" width=350px>
<p>Also ensure that Background App Refresh also enabled as it is required for local push notifications and to raise an alarm while WilhelmSK app in not open on your phone or tablet.</p>
<p>Once network access has been enabled, start the WilhelmSK app and go to the connections menu.</p>
<img src="./connections.jpg" width=350px>
<p>Your boat's name <em>(as entered in the vessel data, in step 1 above)</em> and suffixed with (Discovered) should appear in the list. <em>(If you can’t see it please ensure WilhelmSK has been granted network access permissions.)</em></p>
<p>Select your boat from the list and the configuration screen is displayed:</p>
<img src="./wsk_connections.jpg" width=350px>
<ul>
<li>
<p>Enter the user name and password that you use when logging into Signal K Server.</p>
</li>
<li>
<p>Select <em>AutoConnect On This Network</em>. This will cause WilhelmSK to auto-select this connection when on the currently connected WiFi network.</p>
</li>
</ul>
<p>With regards to the other available config options:</p>
<ul>
<li><em>Request Admin Access</em> provides an alternative to using user name and password using a security token instead. Selecting this option sends an <a href="../../setup/generating_tokens.html#access-requests">Access Request</a> to the SignalK Server. The request will then need to be approved in the <em>Security -> Access Requests</em> screen of the Signal K Admin UI .</li>
<li><em>Port</em>: 3000 is the standard port.</li>
<li><em>AutoConnect Default</em> is used for a remote connection, which is out of scope of this manual.</li>
</ul>
<p>Finally, verify your connection. Swipe left to back to the main menu and select the same connection:</p>
<img src="./wsk_connection.jpg" width=350px>
<p><strong><em>Step 5.</em></strong> Enable WilhelmSK to receive push notifications</p>
<p>From the <em>Settings</em> menu select <em>Notifications</em>.</p>
<img src="./wsk_notifications.jpg" width=350px>
<p>Note that the actual monitoring of the GPS coordinates is done by Signal K Server itself, not the WilhelmSK app. The app is only used to configure the anchor location, enable the alarm and to receive the alarm notifications.</p>
<p>It is also possible, and highly recommended, to add other notifications. For example via Fusion stereo, if installed, or by using a dry contact with audible alarm. <em>(These are out of scope of this manual.)</em></p>
<p><em>Tip: For using the Fusion stereo: search the server plugins with the keyword Fusion.</em></p>
<h2 id="using-the-anchor-alarm"><a class="header" href="#using-the-anchor-alarm">Using the Anchor Alarm</a></h2>
<p>Now that the connections have been configured, go to the main screen of the WilhelmSK App where you’ll see something similar to the following screenshot.</p>
<p>If data is being received from the Signal K server, green dots are displayed in the top right of each gauge to indicate that the value displayed is current.</p>
<img src="./wsk_screen.png" width=300px>
<p>In case of incorrect username and/or password or other connection errors, these will be displayed at the top of the screen as warning.</p>
<img src="./wsk_error.jpg" width=300px>
<p>With an established connection and data being received, swipe to the right a few times to display the anchor watch page.</p>
<img src="./wsk_phone.png" width=400px>
<p>Clicking the anchor on the top left of screen (next to the menu button), cycles through the sequence of arming / disarming the alarm:</p>
<ul>
<li>White anchor indicates disarmed. Click when dropping the anchor and the color will change to yellow.</li>
<li>Yellow anchor indicates that the rode length is being calculated. Click when you have finished letting out the anchor and the colour will change to green.</li>
<li>Green anchor means the alarm is armed and ready.</li>
</ul>
<p>Use the “four arrows icon” on the top left of screen to move the anchor location.</p>
<p>You can also change the alarm radius.</p>
<p>Clicking the green anchor will prompt you to confirm that you want to disarm the alarm / raise the anchor.</p>
<p><em>TIP: To return to other pages (i.e. COG and AWA gauges) swipe left by holding the Course up/Head up/North up menu.</em></p>
<hr />
<h2 id="alarms--notifications"><a class="header" href="#alarms--notifications">Alarms & Notifications</a></h2>
<p>For most use cases, push notifications shouldn’t be the only means of receiving alarms as the phone can decide to hide notifications, etc so additional means of sounding the alarm should be employed.</p>
<p>Following are some alternatives.</p>
<h3 id="audible-alarms-using-the-raspberry-pi-audio-connector"><a class="header" href="#audible-alarms-using-the-raspberry-pi-audio-connector">Audible alarms using the Raspberry Pi audio connector</a></h3>
<p>To have the Signal K Server produce audible notifications using a speaker connected directly to the Raspberry Pi audio connector install the <a href="https://www.npmjs.com/package/@meri-imperiumi/signalk-audio-notifications">signalk-audio-notifications</a> plugin.</p>
<h3 id="alarm-to-nmea2000-network"><a class="header" href="#alarm-to-nmea2000-network">Alarm to NMEA2000 network</a></h3>
<p>To have the Signal K Server forward the alarm to the NMEA2000 network to appear on connected devices, install and configure the <a href="https://www.npmjs.com/package/signalk-to-nmea2000">signalk-to-nmea2000</a> plugin.</p>
<h4 id="raymarine-alarm-compatibility"><a class="header" href="#raymarine-alarm-compatibility">Raymarine alarm compatibility</a></h4>
<p>With the Raymarine options enabled in the <em>signalk-to-nmea2000</em> plugin, an audible alarm will be generated on the Raymarine SeaTalkNG Auxiliary Alarm Buzzer - A8061 and will display on Raymarine Axiom plotters.</p>
<p>_Note: The anchor alarm will be displayed as a “Shallow anchor alarm” on Raymarine, as that is the most suitable alarm type. Interpret that as just an anchor alarm, which has nothing to do with shallow. Here is how it looks on the Raymarine plotter:</p>
<img src="./mfd_notification.png" >
<h4 id="garmin-alarm-compatibility"><a class="header" href="#garmin-alarm-compatibility">Garmin alarm compatibility</a></h4>
<p>Compatible</p>
<h4 id="navico-bg-simrad-lowrance-alarm-compatibility"><a class="header" href="#navico-bg-simrad-lowrance-alarm-compatibility">Navico (B&G, Simrad, Lowrance) alarm compatibility</a></h4>
<p>Not compatible</p>
<h4 id="yacht-devices-compatibility"><a class="header" href="#yacht-devices-compatibility">Yacht Devices compatibility</a></h4>
<p>The <a href="https://www.yachtd.com/products/alarm_button.html">YDAB-01</a> is a very flexible and configurable device sold by Yacht Devices.</p>
<p>It is connected to the NMEA2000 network and has a 10W audio amplifier which can output sound via a 4 or 8 Ohm speaker which directly connected. It has bank of 28 sound signals can be configured to sound on receipt of the anchor alarm.</p>
<h4 id="additional-information"><a class="header" href="#additional-information">Additional information</a></h4>
<p>The following post on Panbo is a great resource with regards to the N2K Alert PGNs:
<a href="https://panbo.com/nmea-2000-network-alert-pgns-seem-great-so-why-are-they-hardly-used/">Link</a></p>
<h3 id="remote-notifications"><a class="header" href="#remote-notifications">Remote notifications</a></h3>
<p>There are a number of Signal K Server plugins which enable notifications to be sent remotely, following are just a few:</p>
<h4 id="signalk-pushover-notification-relay"><a class="header" href="#signalk-pushover-notification-relay">signalk-pushover-notification-relay</a></h4>
<p>This plugin listens for a change of state in Signal K notifications and sends the updates to the Pushover App which is available for both Apple and Android phones and tablets.</p>
<p>This is a paid service from <a href="https://pushover.net/">Pushover</a>.</p>
<p><em>Plugin:</em> <a href="https://www.npmjs.com/package/signalk-pushover-notification-relay">signalk-pushover-notification-relay</a></p>
<h4 id="signalk-notifications-manager"><a class="header" href="#signalk-notifications-manager">signalk-notifications-manager</a></h4>
<p>This plugin also works with <a href="https://pushover.net/">Pushover</a> to deliver notifications as push messages on your phone or tablet, but it also:</p>
<ul>
<li>Keeps a history of alerts stored in a local database</li>
<li>Includes a Signal K web app to manage the notifications.</li>
</ul>
<p><em>Plugin:</em> <a href="https://www.npmjs.com/package/signalk-notifications">signalk-notifications-manager</a></p>
<h4 id="signalk-clicksend-notifications-relay"><a class="header" href="#signalk-clicksend-notifications-relay">signalk-clicksend-notifications-relay</a></h4>
<p>This plugin forwards notifications via the (paid) Clicksend SMS gateway, which can deliver notifications to your phone.</p>
<p><em>Plugin:</em> <a href="https://www.npmjs.com/package/signalk-clicksend-notification-relay">signalk-clicksend-notifications-relay</a></p>
<h3 id="switching-a-relay"><a class="header" href="#switching-a-relay">Switching a relay</a></h3>
<p>Operating a switch or relay provides a range of options for sounding an alarm but will require diving a bit deeper into the various (and extensive) automation options made available by Signal K Server.</p>
<p>A good place to start is the <a href="https://github.com/sbender9/signalk-switch-automation">signalk-switch-automation</a> plugin.</p>
<hr />
<h2 id="alternatives-to-wilhelmsk"><a class="header" href="#alternatives-to-wilhelmsk">Alternatives to WilhelmSK</a></h2>
<p>As the data processing to "watch" the anchor and generate the alarm messages is performed by the Signal K Server,
client applications, any client application that supports the <em>anchor-alarm</em> plugin can be used to arm / disarm and configure it.</p>
<p>Listed below are some other apps and supported operations:</p>
<div class="table-wrapper"><table><thead><tr><th>Client App</th><th>Arm / disarm</th><th>Set radius</th><th>Move location</th><th> See track</th><th>Plays sound</th></tr></thead><tbody>
<tr><td><strong>Wilhelm SK</strong><br>(iOS)</td><td>yes</td><td>yes</td><td>yes</td><td>yes</td><td>yes</td></tr>
<tr><td><strong>Anchor alarm plugin</strong><br>(web app)</td><td>yes</td><td>yes</td><td>yes</td><td>yes</td><td>no</td></tr>
<tr><td><strong>Freeboard SK</strong><br>(web app)</td><td>yes</td><td>yes</td><td>yes</td><td>yes</td><td>yes</td></tr>
<tr><td><strong>Aqua Map</strong><br>(iOS & Android)</td><td>?</td><td> ?</td><td> ?</td><td> ?</td><td>?</td></tr>
</tbody></table>
</div>
<h3 id="anchor-alarm-plugin"><a class="header" href="#anchor-alarm-plugin">Anchor Alarm Plugin</a></h3>
<p>The anchor alarm plugin provides a web user interface available under <em>WebApps</em> in the Signal K Server Admin UI.</p>
<p>It provides the ability to arm / disarm, set the radius and shift the anchor but does not display the alarm on screen or play a sound.</p>
<img src="./anchor_alarm_plugin_ui.png" width=300px>
<h3 id="freeboard-sk"><a class="header" href="#freeboard-sk">Freeboard SK</a></h3>
<p>Freeboard SK provides a "sequence" driven user interface to "step" through the setting of the anchor alarm.</p>
<p>It provides the ability to drop / raise the anchor, set / adjust the alarm radius and shift the anchor position via the <em>Anchor Watch</em> feature in the main menu.</p>
<p>When set, it will:</p>
<ul>
<li>Display the alarm radius on the map</li>
<li>Show the vessel track whilst anchored</li>
</ul>
<p>When alarm is triggered:</p>
<ul>
<li>Display an alarm notification on screen</li>
<li>Play a sound</li>
</ul>
<p>It is available under <em>WebApps</em> in the Signal K Server Admin UI.</p>
<img src="./freeboardsk_anchor_watch.png" width=300px>
<img src="./freeboardsk_anchor_alarm.png" width=300px>
</main>
<nav class="nav-wrapper" aria-label="Page navigation">
<!-- Mobile navigation buttons -->
<a rel="prev" href="../../setup/seatalk/seatalk.html" class="mobile-nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next" href="../../features/navdataserver/navdataserver.html" class="mobile-nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
<div style="clear: both"></div>
</nav>
</div>
</div>
<nav class="nav-wide-wrapper" aria-label="Page navigation">
<a rel="prev" href="../../setup/seatalk/seatalk.html" class="nav-chapters previous" title="Previous chapter" aria-label="Previous chapter" aria-keyshortcuts="Left">
<i class="fa fa-angle-left"></i>
</a>
<a rel="next" href="../../features/navdataserver/navdataserver.html" class="nav-chapters next" title="Next chapter" aria-label="Next chapter" aria-keyshortcuts="Right">
<i class="fa fa-angle-right"></i>
</a>
</nav>
</div>
<script>
window.playground_copyable = true;
</script>
<script src="../../elasticlunr.min.js"></script>
<script src="../../mark.min.js"></script>
<script src="../../searcher.js"></script>
<script src="../../clipboard.min.js"></script>
<script src="../../highlight.js"></script>
<script src="../../book.js"></script>
<!-- Custom JS scripts -->
</div>
</body>
</html>