Perus-gateway (kuten Actisense EMU-1, Yacht Devices YDEM-01) tuo moottoridatan NMEA 2000:een. Edistynyt valvonta tuo:
---
| Osa | Perus vs Edistynyt | Edistynyt ominaisuus |
| Gateway | PGN-mappaus | Reaaliaikainen analytiikka, historian tallennus, MQTT/HTTP API |
| Visualisointi | Plotterin engine monitor | Grafana dashboardit, Signal K dashboard, VRM Portal, custom app |
| Alarmit | Perusvaroitukset (ölypaine, lämpö) | Trendi-alarmit, ennustavat alarmit, eskalointi (SMS/Email/Push) |
| Analytiikka | Ei | Polttoainekulutus vs nopeus, öljyn laadun trendi, moottorin teho-käyrä |
| Ennakoiva huolto | Ei | Öljynvaihtovälit reaaliaikaisesti, suodattimien tila, injectoreiden tila |
---
| Osanumero | Tuote | OEM-numero | Hinta | |
|---|---|---|---|---|
| ACT-EMU1 | OEM-osa | |||
| YD-YDEM01 | OEM-osa | |||
| GAR-GNE10 | OEM-osa | |||
| MTR-J2K100 | OEM-osa |
| Gateway | Historiatallennus | Analytiikka | API | MQTT/HTTP | Hinta | Soveltuvuus |
| Actisense EMU-1 | Ei (vain reaaliaika) | Ei (vain PGN) | PC Tool | Ei | 449 € | Perus-gateway, tarvitsee erillisen serverin analytiikkaan |
| Yacht Devices YDEM-01 | Ei (vain reaaliaika) | Ei | Web UI | Ei | 299 € | Perus-gateway |
| Yacht Devices YDEM-02 | Ei | Ei | Web UI | Kyllä (MQTT) | 349 € | MQTT -> MQTT broker -> Grafana |
| Actisense EMU-1 + NMEA Reader + Logger | Kyllä (CSV/JSON log) | Perus (NMEA Reader) | PC Tool | Ei | 449 € + PC | Perus historian tallennus |
| Yacht Devices YDNM-02 + MQTT Broker | Kyllä (MQTT -> InfluxDB) | Kyllä (Grafana) | Web UI | Kyllä (MQTT) | 189 € + broker | DIY edistynyt |
| Maretron J2K100 + N2KView/N2KAnalyzer | Kyllä (N2KView log) | Kyllä (N2KAnalyzer) | PC Tool | Ei | 599 € | Ammattilainen, N2KView |
| Signal K Server + Gateway (YDEM-02/EMU-1) | Kyllä (Signal K log + InfluxDB) | Kyllä (Grafana, SK plugins) | REST/WebSocket/MQTT | Kyllä | Gateway + Pi | Suositus: DIY edistynyt |
| Cerbo GX + VRM Portal | Kyllä (VRM Portal, 30 vrk historia) | Kyllä (VRM Advanced, Grafana Cloud) | REST API | Kyllä (MQTT, Modbus TCP) | 500 € + GX | Valmis, luotettava, cloud |
---
| Tarve | Suositus |
| Helppo alku, perusvalvonta | YDEM-01 + Plotteri (realtime) |
| DIY edistynyt (historian tallennus + Grafana) | YDEM-02 (MQTT) + Raspberry Pi 4 + Mosquitto MQTT + InfluxDB + Grafana + Signal K Server |
| Valmis, luotettava, cloud | Cerbo GX + GX Touch 50 + VRM Portal + Grafana Cloud + RuuviTagit + YDWG-02 |
| Ammattilainen (teollinen/laiva) | Maretron J2K100 + N2KView/N2KAnalyzer + N2KAnalyzer Server + Maretron N2KView Server |
#### 2.1 Laitteistot
#### 2.2 Ohjelmistot (Docker Compose suositus)
`yaml
# docker-compose.yml
version: '3.8'
services:
mosquitto:
image: eclipse-mosquitto:2
ports: ["1883:1883", "9001:9001"]
volumes: ["./mosquitto:/mosquitto/config", "./mosquitto/data:/mosquitto/data", "./mosquitto/log:/mosquitto/log"]
influxdb:
image: influxdb:2.7
ports: ["8086:8086"]
volumes: ["./influxdb:/var/lib/influxdb"]
environment: [DOCKER_INFLUXDB_INIT_MODE=setup, DOCKER_INFLUXDB_INIT_USERNAME=admin, DOCKER_INFLUXDB_INIT_PASSWORD=password, DOCKER_INFLUXDB_INIT_ORG=myorg, DOCKER_INFLUXDB_INIT_BUCKET=boatdata]
grafana:
image: grafana/grafana:10.2
ports: ["3000:3000"]
volumes: ["./grafana:/var/lib/grafana", "./grafana/provisioning:/etc/grafana/provisioning"]
environment: [GF_INSTALL_PLUGINS=grafana-piechart-panel,grafana-worldmap-panel]
depends_on: [influxdb]
signalk:
image: signalk/signalk-server-node:latest
ports: ["3000:3000"]
volumes: ["./signalk:/data"]
environment: [SIGNALK_CONFIG=/data/settings.json]
devices: ["/dev/ttyUSB0:/dev/ttyUSB0"] # VE.Direct adapter
depends_on: [mosquitto]
`
#### 2.3 YDEM-02 konfigurointi (MQTT)
http://ydem-02.local -> MQTT Settings:mqtt://mosquitto:1883ydem02_${MAC}boat/engine#### 2.4 Signal K Server konfigurointi
http://signalk.local:3000 -> Plugins -> Enable:signalk-mqtt (subscribe boat/engine/# -> Signal K paths)signalk-to-influxdb (write to InfluxDB)signalk-autopilot-plugin (autopilot data)signalk-alarm-plugin (alarms)#### 2.5 InfluxDB + Grafana konfigurointi
boatdata, Retention 30d/365d/foreverMitä mitataan:
| Parametri | PGN/SPN | Yksikkö | Optimointitavoite |
| RPM | PGN 127488 / SPN 190 | RPM | Optimaalinen RPM-ikkuna (torque peak) |
| Polttoainekulutus | PGN 127489 / SPN 183 | L/h | Minimi L/nm |
| Nopeus (SOG/STW) | PGN 128259 / 128267 | kn | Kohdennettu nopeus |
| Polttoainepaine | SPN 94 | kPa | Optimaalinen paine (injikaatio) |
| Boost-paine | SPN 102 | kPa | Turbo-tehokkuus |
| Trimmi | PGN 127506 | % | Optimaalinen trimmi (planaus) |
Optimointialgoritmi (esimerkki):
`python
# L/nm = (Fuel Rate L/h) / (SOG kn)
# Etsi RPM joka minimoi L/nm annetulla nopeudella
optimal_rpm = minimize(lambda rpm: fuel_rate(rpm, speed) / speed, bounds=(1000, max_rpm))
`
Grafana-alert: Jos L/nm > 1.2 * baseline -> alert "Polttoainekulutus poikkeaa normaalista"
Mitä seurataan:
| Komponentti | Parametrit | Ennustemalli | Huoltoväliaika |
| Moottoriöljy | Öljylämpötila, öljypaine, RPM-historia, käyttö tunnit | Öljyn viskositeetin laskennallinen lasku | 100 h / 1 vuosi (säädytetty lämpö/paine/RPM) |
| Öljynsuodatin | Öljypaineen putoaminen, RPM | Suodattimen tupeneminen | Öljynvaihdon yhteydessä |
| Polttoainesuodatin | Polttoainepaine, RPM, kulutus | Suodattimen tupeneminen | 200 h / 2 vuosi |
| Injectorit | Polttoainekulutus, RPM, rough running (SPN 111) | Injectorin vaimentuminen | 1000–2000 h |
| Turbo | Boost-paine, öljylämpö, RPM | Turbo-lagerien kuluminen | 2000–4000 h |
| Vesipumppu (impeller) | Vedennestelämpö, RPM, tunnit | Kuminaulan kuluminen | 200 h / 2 vuosi |
| Anodit | Aika, vesi-tyyppi (suola/ete), anodityyppi | Kulumisnopeus | 1 vuosi (tarkistus) |
Ennustemalli (esimerkki öljy):
`
Oil_Life_Remaining = 100% - (Engine_Hours / Base_Interval_Hours) * Stress_Factor
Stress_Factor = f(Max_Oil_Temp, Avg_Oil_Temp, RPM_Above_80%, Cold_Starts)
`
Grafana-alertit:
Tallennusstrategia:
| Data | Resoluutio | Retentio | Tallennusmuoto |
| RPM, lämpötilat, paineet (realtime) | 1 Hz | 7 d (hot), 90 d (warm), 10 a (cold) | InfluxDB (TSDB) |
| Polttoainekulutus, nopeus, trimmi | 0.1 Hz | 30 d / 1 a | InfluxDB |
| Huoltotapahtumat, alarmit | Event-driven | 10 a | PostgreSQL / SQLite |
| Huoltoraportit (PDF/CSV) | Event-driven | 10 a | MinIO / S3 / paikallinen |
Raportit (automaattiset):
---
| Ratkaisu | Laitteisto | Ohjelmisto | Hinta (n.) | Ylläpito | Soveltuvuus |
| DIY Minimaalinen | YDEM-02 + Pi 4 + SD | Mosquitto + InfluxDB + Grafana + Signal K | 350 € | Itse (1–2 h/vko) | DIY-harrastaja, taitoinen |
| DIY Edistynyt | YDEM-02 + Pi 4 + InfluxDB + Grafana + Signal K + MQTT + Alarmit (SMS/Email) | Sama + Alertmanager + ntfy/Telegram | 400 € | Itse (0.5 h/vko) | Tekninen harrastaja |
| Valmis (Cerbo GX + VRM) | Cerbo GX + GX Touch 50 + RuuviTagit + YDWG-02 | VRM Portal + Grafana Cloud + VRM App | 1200 € | Minimaalinen (automaattiset päivitykset) | Ammattilainen / helpotus |
| Ammattilainen (Maretron) | J2K100 + N2KView Server + N2KAnalyzer | N2KView + N2KAnalyzer + Export | 2000 €+ | Ammattilainen tuki | Teollinen / Suuri vene |
---
Mitä on "Predictive Maintenance" ja miten se eroaa perushuollosta?
Miten "Fuel Efficiency" (L/nm) lasketaan reaaliaikaisesti?
L/nm = Fuel_Rate_L_per_h / SOG_kn -> Plotteri/Grafana laskee reaaliaikaisesti. Optimaalinen RPM = min(L/nm) annetulla nopeudella.
Mitä "Engine Instance" on ja miksi se on tärkeä?
Jos veneessä on kaksi moottoria (port/stbd) -> jokaisella eri Engine Instance (0, 1). Plotteri/Grafana erottaa ne -> "Port Engine RPM", "Stbd Engine RPM". Pakollinen kaksimoskarissa.
Miksi MQTT on parempi kuin HTTP/REST datan siirrossa?
Mitä "Predictive Maintenance" vaatii minimissään?
Voinko käyttää Cerbo GX:ää ilman Victron-akkua?
Kyllä. Cerbo GX toimii muidenkin laitteiden gatewayinä (YDWG-02 NMEA 2000 -> WiFi, RuuviTagit Bluetooth, MQTT broker, Signal K Server, VRM Portal). Victron-akku on valinnainen (mutta suositeltava jos on akkujärjestelmä).
---
---
Mallikohtaisen käyttöohjeen saat moottorin valmistajan sivuilta:
Laaja valikoima erikoisosia. Toimitus Suomeen 5-7 arkipäivää. SVB Marine