NMEA 0183 to Home Assistant: Wi-Fi, Signal K & Serial (Complete Guide)

Build a central boat computer with Signal K (TCP) or USB (Serial) โ€” no YAML.

Iโ€™ve built two integrations to streamline NMEA 0183 โ†’ Home Assistant. They aim for a near plug-and-play experience: no YAML, menu-driven setup, and full sensor autodiscovery via HACS.

  • ๐Ÿ“ถ Smart0183 TCP (wireless) โ€” TCP/Wi-Fi connectivity (works with Signal K and NMEA 0183-over-TCP gateways). Ingest data over the network without extra cables.
  • ๐Ÿ”Œ Smart0183 Serial (cabled) โ€” Direct USB-to-RS232/RS422 connection for reliable hard-wired feeds.

๐Ÿงญ What Youโ€™ll Learn

  • โœ… Smart0183 TCP: add the HACS repo, install, restart HA, enter a device name, IP and port (10110 default for Signal K), then start streaming.
  • โœ… Smart0183 Serial: wire RS232/RS422 to a USB adapter, detect ports (/dev/ttyUSB0, /dev/ttyUSB1), set baud, begin decoding.
  • โœ… Baud rates: typical 4800 (standard instruments), 9600 (some talkers) and 38400 for AIS.
  • โœ… Auto entities: parses sentences like HDM, GLL, MWV, DBT and auto-creates sensors grouped by function (GPS, wind, depth, etc.).
  • โœ… Dashboards & automations: one-click add to a dashboard; build rules for TTS/siren on wind shifts > 30 s, speed changes, depth limits, reefing cues, and more.

๐Ÿ”ง Quick Wiring & Setup Tips

  • โœ… RS232 (USB adapter): Talker TX โ†’ DB9 pin 2, GND โ†’ pin 5.
  • โœ… RS422 (USB adapter): TX+ โ†’ RX+, TXโˆ’ โ†’ RXโˆ’ (ground not needed for a listener). RS422 is preferred for longer runs.
  • โœ… Verify data flow: use a serial monitor (minicom -D /dev/ttyUSB0 -b 4800) to confirm readable sentences before configuring the integration.
  • โœ… Multiple hubs: split GPS vs instruments on separate serial hubs for clarity and performance.

๐Ÿ“Œ Use Cases

  • โœ… Navigation: combine wind, depth, speed, heading and GPS into Home Assistant for rules & alerts.
  • โœ… Safety: TTS or siren for wind-limit, shallow water, or course-deviation alarms.
  • โœ… Sailing logic: reef prompts from sailing angle plus sustained wind thresholds; speed-trend notifications when conditions change.

๐Ÿ‘€ How Discovery & Naming Works

  • โœ… Auto-grouped devices: sensors grouped logically (e.g., Global Positioning, Wind, Depth) for quick access.
  • โœ… Human-readable entities: each NMEA 0183 sentence becomes one or more HA sensors with clear names/units.
  • โœ… Reconfigure anytime: change IP/port (TCP) or port/baud (Serial) via Configure โ€” no YAML required.
  • โœ… โ€œAdd to dashboardโ€ shortcut: device page โ†’ Add to dashboard to bulk-add gauges/cards.

๐Ÿงพ Sentence โ†’ Sensor Examples

  • ๐Ÿงญ HDM โ€” Magnetic heading โ†’ single heading sensor (degrees).
  • ๐Ÿ“ก GLL / RMC / VTG โ€” Position & speed โ†’ latitude/longitude, COG, SOG.
  • ๐ŸŒฌ๏ธ MWV โ€” Wind angle & speed โ†’ angle (ยฐ) and speed (knots or m/s).
  • ๐ŸŒŠ DBT / DPT โ€” Depth below transducer / depth plus offset.
  • ๐ŸŒก๏ธ MTW โ€” Water temperature (ยฐC/ยฐF).

The integrations parse fields and expose the useful ones as Home Assistant entities.

๐Ÿ“ถ Integration 1 โ€” Smart0183 TCP (Wi-Fi/TCP)

Why TCP? If you already run a Signal K server or use a Wi-Fi gateway, NMEA 0183 sentences are broadcast over TCP on port 10110. This avoids long cable runs and works even when instruments are remote.

โš™๏ธ Setup

  • โœ… Add the repository โ€” HA โ†’ HACS โ†’ Integrations โ†’ โ‹ฎ โ†’ Custom repositories โ†’ paste the Smart0183 TCP GitHub URL (from the Smart Boat Innovations site) โ†’ Category: Integration โ†’ Add. Download and restart HA.
  • โœ… Configure โ€” Settings โ†’ Devices & Services โ†’ Add Integration โ†’ search โ€œ0183โ€ โ†’ Smart0183 TCP โ†’ name it (e.g., Signal K), enter IP and port (10110 default). Submit to start streaming.
  • โœ… Dashboard โ€” Use Add to dashboard to seed gauges (heading, wind, depth, GPS, water temp).

๐Ÿ”Œ Integration 2 โ€” Smart0183 Serial (USB / RS232 / RS422)

Why Serial? Many instruments still output NMEA 0183 over wires. The serial integration reads through a USB-to-serial adapter. Typical settings: 4800 baud, 8 data bits, no parity, 1 stop bit. RS422โ€™s balanced signalling helps over long runs.

โš™๏ธ Setup

  • โœ… Wire the adapter โ€” RS232: talker TX โ†’ DB9 pin 2, GND โ†’ pin 5. RS422: TX+ โ†’ RX+, TXโˆ’ โ†’ RXโˆ’ (no ground for listener).
  • โœ… Detect the port โ€” Terminal add-on: ls -l /dev | grep ttyUSB before/after plugging in; new device (usually /dev/ttyUSB0) is your port.
  • โœ… Verify with minicom โ€” minicom -D /dev/ttyUSB0 -b 4800. If garbled, try 9600 or 38400 (AIS).
  • โœ… Add the repository โ€” HACS โ†’ Integrations โ†’ โ‹ฎ โ†’ Custom repositories โ†’ add Smart0183 Serial โ†’ download โ†’ restart HA.
  • โœ… Configure โ€” Add the Smart0183 Serial integration; set a name, port (e.g., /dev/ttyUSB0), and baud (default 4800). For more feeds, Add hub (e.g., /dev/ttyUSB1).
  • โœ… Dashboard & automations โ€” Add device groups to dashboards; build automations (wind shifts, reefing cues, depth alerts) just like TCP.

๐Ÿค– Practical Automations You Can Build

  • โœ… Wind-shift guard: if true wind angle shifts outside your limit for > 30 s, announce via TTS + notification.
  • โœ… Reefing reminders: combine sailing angle + sustained wind to trigger โ€œreef now.โ€
  • โœ… Depth safety: if depth drops below a threshold, sound siren + mobile alert; auto-clear when safe.
  • โœ… Speed/course events: notify on large COG changes or sudden speed jumps.

๐Ÿ› ๏ธ Troubleshooting

  • โœ… No devices/entities: confirm data is arriving. For TCP, use a Signal K monitor; for serial, check minicom and verify port/baud.
  • โœ… Garbled values: default is 4800 baud; some devices use 9600 or 38400 (AIS).
  • โœ… Multiple feeds: add a separate hub for each serial port (split GPS from instruments).
  • โœ… TCP unreachable: ensure port 10110 is open/reachable between your gateway and HA.

๐Ÿš€ Next Steps

Refine dashboards with gauges & history graphs, layer additional automations, and expand with more TCP sources or serial hubs as your network grows. These integrations turn your boatโ€™s data bus into a powerful, locally controlled automation platformโ€”no proprietary software or subscriptions.

๐ŸŽฌ Video Transcript

Introduction

In this video I introduce two new integrations that bring standard marine data into a Home Assistant-based โ€œsmart boatโ€ system. Both integrations are designed for the NMEA 0183 protocol, which is still widely used in marine electronics. One integration receives NMEA 0183 sentences over a TCP or Wi-Fi link, while the other reads the same sentences over a physical serial cable. Each integration is menu-driven and does not require any YAML configuration. When installed, they automatically create sensors for every NMEA 0183 sentence they receive and continue to discover new sentences as devices are added to your boat.

Why Use These Integrations?

Bringing instrument data into Home Assistant allows you to build dashboards, set alarms and automate responses. For example, you can create rules to notify you when the wind shifts while sailing downwind, when the wind speed or boat speed changes, or even to help decide when to reef sails. Because the integrations automatically create sensors and group them by manufacturer and sentence type, they simplify the process of turning raw NMEA 0183 data into readable gauges and automations.

Installing the Smart 0183 TCP Integration

To start, open Home Assistant and go to HACS. Click โ€œIntegrations,โ€ then select the three dots at the top-right corner and choose Custom repositories. On my website there is a Smart 0183 TCP page under the โ€œCodeโ€ section; copy the URL of the GitHub repository from that page. Back in HACS, paste the URL into the repository field, select Integration as the category and click Add. The integration will appear in the list with a note that a restart is pending. Restart Home Assistant to enable it.

After restarting, go to Settings โ†’ Integrations โ†’ Add Integration and search for โ€œ0183.โ€ Select Smart 0183 TCP from the list. In the configuration dialog enter a name (for example โ€œSignal Kโ€ if you are using a Signal K server) along with the IP address and port number of your data source. Signal K exposes NMEA 0183 sentences over TCP on port 10110 by default, so leave the port unchanged unless your gateway uses a different port. Click Submit. The integration will immediately start discovering sentences from your boat network and creating sensors for them. In my demonstration it found 12 devices and 81 entities right away.

Exploring Sensors and Devices

When you click on the Smart 0183 TCP integration you will see a list of devices grouped by manufacturer or sentence type. Each device contains one or more sensors. For example, the HDM (heading โ€” magnetic) sentence has one field and creates a single sensor showing the current magnetic heading. A GLL (geographic position โ€” latitude and longitude) sentence contains several fields, so it creates multiple sensors for latitude, longitude and direction. The model name of each device corresponds to the NMEA 0183 sentence ID.

To visualize the data, create a new dashboard in Home Assistant. Click Add to dashboard on any device to add all its sensors at once. You can then refine the dashboard by editing each card individually. In my example I added gauges for magnetic heading, water temperature and wind speed. The integration also allows you to reconfigure a device to change the IP address or reload the sensors, or to delete the integration if you no longer need it.

Installing the Smart 0183 Serial Integration

The serial integration is for boats whose instruments output NMEA 0183 over physical wires. You will need a USB-to-RS-232 or USB-to-RS-422 adapter connected to a Raspberry Pi. The typical NMEA 0183 serial connection uses a 4800 baud rate. RS-232 cables have three wires (transmit, receive and ground) while RS-422 cables use four wires and differential signalling. Connect the positive (transmit) wire from your NMEA 0183 cable to pin 2 (receive) on the DB9 connector of the RS-232 adapter and the ground wire to pin 5. For RS-422, connect your instrumentโ€™s transmit + and transmit โˆ’ wires to the adapterโ€™s receive + and receive โˆ’ terminals. If you are converting from NMEA 2000, use a commercial N2K โ†’ 0183 converter and follow the same wiring for its output.

Before adding the serial integration, itโ€™s useful to check that data is actually arriving. Open the terminal in Home Assistant. Run ls -l /dev | grep ttyUSB to see which virtual serial port appears when you plug in the adapter. It will usually be /dev/ttyUSB0 for the first device. Next, install the minicom application (either through Home Assistantโ€™s Terminal add-on or via your host OS). Run minicom -D /dev/ttyUSB0 -b 4800 to view the incoming NMEA sentences. If the output is garbled, try baud rates of 9600 or 38400 โ€” AIS devices use 38 400 baud. When finished, exit minicom with Ctrl+A, then X.

Adding the Serial Integration through HACS

Installing the serial integration follows the same pattern as the TCP version. In HACS choose Custom repositories, paste the Smart 0183 Serial GitHub URL from my website, select the Integration category and add it. Download the integration and restart Home Assistant. Then go to Settings โ†’ Integrations โ†’ Add Integration and search for โ€œ0183.โ€ Select Smart 0183 Serial. In the configuration dialog, provide a name, the serial port (such as /dev/ttyUSB0) and the baud rate (4800 by default). If you have multiple serial sources, click Add hub for each additional adapter (for example /dev/ttyUSB1). After submission the integration will discover the same instruments and sensors as the TCP version and group them by hub.

Building Dashboards and Automations

Once sensors are in place, you can add them to dashboards just like with the TCP integration. More importantly, you can create automations that act on these sensors. For instance, you might configure Home Assistant to speak a text-to-speech alert when the wind shifts more than 30 seconds while sailing downwind, or to notify you when wind speed or boat speed rises or falls sharply. Combining sailing angle, wind speed and other parameters can even suggest when to reef. Because the sensors update continuously, Home Assistant can provide real-time alarms and actions.

Conclusion

These Smart 0183 integrations make it easy to bring NMEA 0183 data into Home Assistant without writing a line of YAML. Whether you use Signal K over TCP or connect instruments directly through a serial adapter, the integrations automatically create sensors, organize them logically and let you build dashboards and automations. With the ability to monitor your boatโ€™s data and respond to changes, your smart-boat system becomes more than just a set of digital gauges โ€” it becomes a proactive tool for safer and more enjoyable boating.