Title: Boat Position
Author: Niels Olsen
Published: <strong>Èbìbí  31, 2026</strong>
Last modified: Èbìbí  31, 2026

---

Ṣàwárí àwọn plugin

![](https://ps.w.org/boat-position/assets/banner-772x250.png?rev=3555344)

![](https://ps.w.org/boat-position/assets/icon-256x256.png?rev=3555344)

# Boat Position

 Láti ọwọ́ [Niels Olsen](https://profiles.wordpress.org/pcio/)

[Ṣe ìgbàsílẹ̀](https://downloads.wordpress.org/plugin/boat-position.zip)

 * [Àwọn àlàyé](https://yor.wordpress.org/plugins/boat-position/#description)
 * [Àwọn àgbéyẹ̀wò](https://yor.wordpress.org/plugins/boat-position/#reviews)
 *  [Ìgbéwọlẹ̀](https://yor.wordpress.org/plugins/boat-position/#installation)
 * [Ìdàgbàsókè](https://yor.wordpress.org/plugins/boat-position/#developers)

 [Ìrànlọ́wọ́](https://wordpress.org/support/plugin/boat-position/)

## Àpèjúwe

Boat Position turns your WordPress site into a live tracking and logbook service
for your boat.

The plugin is designed around the Teltonika RUTX50 router (*), a compact Linux-based
5G router with built-in GPS.
 A shell script on the router sends a position to your
site every minute. The plugin stores each position, runs a state machine to group
positions into trips and legs, and serves two public pages:

 * **Live map** (`/boat-position/map`) — shows the current position on an OpenStreetMap/
   OpenSeaMap map with a rotating arrow icon when underway and an idle indicator
   when stopped.
 * **Logbook** (`/boat-position/history`) — calendar sidebar with trip history. 
   Click any day to see the full route on the map. Logged-in editors can label harbour
   names and merge incorrectly split trips.

Over 150 Danish harbours are included as seed data so harbour names are detected
automatically from GPS coordinates.

No third-party services or API keys are required beyond your own WordPress site.
Maps are rendered using the free Leaflet.js library with OpenStreetMap and OpenSeaMap
tiles.

(*) There are other alternatives to using the RTUTX50 router, any device that has
access to a GPS and the internet can be configured as the source of position data.

E.g. a linux machine like Rasberry PI connected to either its own GPS or the boat
NMEA data.

## Àwọn àwòrán ìbòjú

 * [[
 * Live map — current boat position with directional arrow on OpenSeaMap.
 * [[
 * Logbook — calendar sidebar, trip list, and route drawn on the map.

## Ìgbéwọlẹ̀

 1. Upload the `boat-position` directory to `/wp-content/plugins/`.
 2. Activate the plugin in **Plugins** in the WordPress admin.
 3. Go to **Settings  Boat Position** to set a secret API key and find the router configuration
    instructions.
 4. Follow the router setup guide in **Plugins  Boat Position  About** to configure
    your routerÌtumọ̀ Yorùbá: ’s `sendgps.sh` script and cron job.
 5. Send a test position from a command prompt to verify the endpoint is working before
    installing on the boat.

After activation, if `/boat-position/map` returns a 404, go to **Settings  Permalinks**
and click **Save Changes** to flush the rewrite rules.

## FAQ

### How do I use this plugin?

Install and activate the plugin, then go to **Settings  Boat Position**. Set a secret
API key, then follow the router configuration guide in the About page to set up 
your routerÌtumọ̀ Yorùbá: ’s cron job.

### Does it only work with the RUTX50 router?

No. Any device that can send an HTTP POST request with `lat`, `lon`, `speed`, `course`,
and `gps_time` fields to the REST endpoint will work. The About page documents the
exact format.

### Where are the public pages?

The plugin registers two pages automatically — no WordPress pages or shortcodes 
are needed:

 * Live map: `https://yoursite.com/boat-position/map`
 * Logbook: `https://yoursite.com/boat-position/history`

### Can I avoid storing the secret key in the database?

Yes. Define the key as a constant in `wp-config.php`:

define( ‘PCIO_BOAT_POSITION_API_KEY’, ‘your-secret-key-here’ );

When this constant is present, the database option is ignored and the settings field
is shown as read-only.

### The logbook is empty — no trips appear.

Check that the router is sending data by looking at your databaseÌtumọ̀ Yorùbá: ’
s `wp_boat_positions` table. If rows are present but no trips appear, the trip engine
may not have processed them yet — visit the ingest endpoint directly or check the
About page for the manual trigger curl command.

## Àwọn àgbéyẹ̀wò

Kò sí àwọn àgbéyẹ̀wò fún plugin yìí.

## Àwọn Olùkópa & Olùgbéejáde

“Boat Position” jẹ́ ètò ìṣàmúlò orísun ṣíṣí sílẹ̀. Àwọn ènìyàn wọ̀nyí ti ṣe ìkópa
sí plugin yìí.

Àwọn Olùkópa

 *   [ Niels Olsen ](https://profiles.wordpress.org/pcio/)

[Túmọ̀ “Boat Position” sí èdè rẹ.](https://translate.wordpress.org/projects/wp-plugins/boat-position)

### Ṣe o nífẹ̀ẹ́ sí ìdàgbàsókè?

[Ṣàwárí koodu](https://plugins.trac.wordpress.org/browser/boat-position/), ṣàyẹ̀wò
[ibi ìpamọ́ SVN](https://plugins.svn.wordpress.org/boat-position/), tàbí ṣe àgbékalẹ̀
sí [àkọsílẹ̀ ìdàgbàsókè](https://plugins.trac.wordpress.org/log/boat-position/) 
nípasẹ̀ [RSS](https://plugins.trac.wordpress.org/log/boat-position/?limit=100&mode=stop_on_copy&format=rss).

## Àkọsílẹ̀ àwọn àyípadà

#### 1.0

 * Initial release.

## Àkójọpọ̀ Meta

 *  Ẹ̀yà **1.0.0**
 *  Ìgbàgbọ́hùn tó kẹ́yìn **ọ̀sẹ̀ 1 sẹ́yìn**
 *  Àwọn ìgbéwọlẹ̀ tó ṣiṣẹ́ **Tó kéré sí 10**
 *  Ẹ̀yà WordPress ** 6.2 tàbí ju bẹ́ẹ̀ lọ **
 *  Dánwò dé **7.0**
 *  Ẹ̀yà PHP ** 8.1 tàbí ju bẹ́ẹ̀ lọ **
 *  Èdè
 * [English (US)](https://wordpress.org/plugins/boat-position/)
 * Àwọn àmì
 * [Boat](https://yor.wordpress.org/plugins/tags/boat/)[gps](https://yor.wordpress.org/plugins/tags/gps/)
   [logbook](https://yor.wordpress.org/plugins/tags/logbook/)[map](https://yor.wordpress.org/plugins/tags/map/)
   [tracking](https://yor.wordpress.org/plugins/tags/tracking/)
 *  [Ìwòye Tó Péye](https://yor.wordpress.org/plugins/boat-position/advanced/)

## Àwọn ìbò

Kò sí ìwádìí tí a tíì fi ránṣẹ́.

[Your review](https://wordpress.org/support/plugin/boat-position/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/boat-position/reviews/)

## Àwọn Olùkópa

 *   [ Niels Olsen ](https://profiles.wordpress.org/pcio/)

## Ìrànlọ́wọ́

Nǹkan wà tí o fẹ́ sọ? Ṣé o nílò ìrànlọ́wọ́?

 [Wo àpéjọ ìrànlọ́wọ́](https://wordpress.org/support/plugin/boat-position/)

## Ṣe ìtọrẹ

Ṣé o fẹ́ ṣe àtìlẹ́yìn fún ìlọsíwájú plugin yìí?

 [ Ṣe ìtọrẹ sí plugin yìí ](https://www.paypal.com/donate/?hosted_button_id=DFM2JV8JKTTM6)