Båd GPS Tracker

Et WordPress-plugin der modtager live GPS-positioner fra en båd, gemmer dem i en database og viser et live-kort samt en historisk logbog.

Sider

Live-kort — /boat-position/map

Logbog — /boat-position/history

REST API-endepunkter

POST /wp-json/boat-position/v1/ingest — Indsend position

Kaldes af routeren på båden. Kræver API-nøgle-godkendelse.

POST-felter:

FeltTypeBeskrivelse
apikeystringHemmelig nøgle — indstil under Indstillinger → Båd GPS eller som PCIO_BOAT_POSITION_API_KEY i wp-config.php
latfloatBreddegrad (−90 til 90)
lonfloatLængdegrad (−180 til 180)
speedfloatFart i knob (≥ 0)
coursefloatKurs i grader (valgfrit, standard 0.0)
gps_timestringGPS-tidsstempel (ISO 8601 / UTC)

Svar: 200 OK med {"status":"ok","id":N} ved succes, eller et WP REST-fejlobjekt ved fejl.

GET /wp-json/boat-position/v1/latest — Aktuel position

Returnerer den seneste positionsregistrering som JSON.

{
  "lat": 55.123,
  "lon": 12.456,
  "speed": 5.2,
  "course": 270.0,
  "time": 1716400000
}

GET /wp-json/boat-position/v1/trips — Sejlturdata

RuteBeskrivelse
GET /tripsAlle afsluttede sejlture, nyeste først
GET /trips/active-datesArray af ÅÅÅÅ-MM-DD-strenge med mindst én sejltur (bruges til at fremhæve kalenderdage)
GET /trips/{id}/pointsAlle etapper med waypoints for en sejltur (bruges til at tegne ruten på kortet)
POST /trips/{id}/harboursOpdater havnenavne for en sejltur (kræver WP-redaktørrolle)
POST /trips/mergeFlet to sejlture til én (kræver WP-redaktørrolle)
GET /harboursAlle kendte havne med koordinater og radius
GET /legs/{id}/pointsRå waypoints for en enkelt etape

Sejltur-maskinens tilstandsmaskine

Klassen class-pcio-bp-trip-engine behandler rå positioner (hvor leg_id IS NULL) og tildeler dem til sejlture og etapper.

Diagram over sejltur-maskinens tilstandsmaskine

Justeringskonstanter (definer i wp-config.php for at tilsidesætte standardværdier):

KonstantStandardBeskrivelse
PCIO_BP_SPEED_UNDERWAY_KN1.5Knob over hvilken båden anses for at sejle
PCIO_BP_STOP_CONFIRM_COUNT3Antal på hinanden følgende langsomme aflæsninger nødvendige for at afslutte en sejltur
PCIO_BP_NO_DATA_GAP_SECS180Pause (sekunder) der udløser en estimeret etape
PCIO_BP_TRIP_END_GAP_SECS28800Pause (sekunder) der lukker sejlturen helt (8 t)
PCIO_BP_BATCH_SIZE500Maks. positioner der behandles pr. kald

Databasetabeller

Alle tabeller bruger WordPress-tabelpræfikset (standard wp_).

TabelBeskrivelse
wp_boat_positionsRå GPS-positioner (lat, lon, speed, course, gps_time_utc, leg_id)
wp_boat_tripsÉn række pr. sejltur (started_at, ended_at, distance_nm, harbour_start, harbour_end, state)
wp_boat_legsIndividuelle etapper inden for en sejltur; estimerede etapper markeres til visning som stiplede linjer
wp_boat_harboursKendte havne brugt til at mærke sejlturenes start-/slutpunkter

Konfiguration

API-nøglen kan indstilles under Indstillinger → Båd GPS, eller hardkodes i wp-config.php:

define( 'PCIO_BOAT_POSITION_API_KEY', 'din-hemmelige-nøgle' );

Når konstanten er defineret, vises indstillingsfeltet som skrivebeskyttet og databaseindstillingen ignoreres.

Sider (oversigt)

Begge URL'er registreres automatisk ved aktivering af pluginnet. Hvis de returnerer 404, gå til Indstillinger → Permalinks og klik Gem ændringer for at rydde omskrivningsreglerne.