Home / Learn / Guides / Starlink + Home Assistant monitoring
Marine network integration · 15 min read

Integrating Starlink with Home Assistant.

Your Starlink dish already knows when it's obstructed, throttled, or about to reboot — it just doesn't tell you until the connection is gone. This guide pulls that telemetry into Home Assistant on the boat: obstruction, throughput, latency, ping drop rate, power draw, and a dozen alert flags, on the same dashboard as your batteries and bilge. Three approaches, the bypass-mode gotcha nobody warns you about, and the automations that turn monitoring into an actual outage alert.

Updated · July 2026 Approaches · 3 Data source · Local gRPC
Editorial independence SmartBoats.org is reader-supported. When you buy through links on this page, we may earn a small commission. As an Amazon Associate we earn from qualifying purchases. That money keeps the directory free and non-commercial — it never determines our recommendations, and vendors cannot pay for placement. Here's how we pick.
Share
★ Start here · Native
HA Starlink integration
The built-in Home Assistant integration. Config-flow setup, local polling of the dish's gRPC API, and the full telemetry set — throughput, ping, drop rate, obstruction, power, and a dozen alert sensors — with zero scripting. In HA core since 2023.
Cost
Free
Type
HA core
Setup
~5 min
Scripting
None
Power user · Logging
starlink-grpc-tools
Python toolkit that hits the same dish endpoint and ships data to InfluxDB, MQTT, SQLite, or Prometheus — plus second-by-second history and obstruction-map images. The route for long-term Grafana dashboards beyond what HA keeps.
Cost
Free
Runtime
Python 3
Outputs
Influx/MQTT/SQL
History
Per-second
Failover · Connectivity
HA Ping + router failover
The connectivity layer. HA's Ping integration watches whether the internet is actually reachable — independent of the dish — and drives outage alerts and cellular failover. Works even when you can't reach the dish's local API.
Cost
Free
Type
HA core
Needs dish route
No
Pairs with
Multi-WAN
Aspect HA Starlink integration starlink-grpc-tools Ping + failover
What it is Native HA core integration Python logging toolkit HA connectivity monitor
Data source Dish gRPC (local) Dish gRPC (local) ICMP ping / router API
Setup effort ~5 min, no code Python + broker, ~1 hr ~10 min, YAML
Needs dish route (bypass) Yes Yes No
Long-term history HA recorder (weeks) Influx/SQLite (years) Uptime only
Best for Almost everyone Grafana + deep logging Outage alerts + failover

What's in this guide

  1. Why monitor Starlink in Home Assistant — the boat case
  2. What telemetry you can actually read from the dish
  3. Three approaches, in detail
  4. The bypass-mode gotcha — reaching 192.168.100.1
  5. Automations worth building — alerts & failover
  6. Install walkthrough — the native integration in 5 minutes
  7. Pitfalls: bypass routes, polling load, false alerts
  8. Frequently asked questions

Why monitor Starlink in Home Assistant — the boat case

On land, Starlink is a set-and-forget appliance. On a boat it is a moving, power-hungry, weather-exposed piece of gear that fails in ways your MFD will never tell you about: a boom swings into the field of view and drops the link, the dish quietly thermal-throttles in the Florida sun, or it reboots for a firmware update in the middle of a passage. By the time you notice, the connection is already gone and you're guessing at why.

Home Assistant closes that gap. If you already run Home Assistant on the boat for batteries, bilge, and temperature, adding Starlink puts the dish's own diagnostics on the same dashboard — and lets you act on them automatically. The dish keeps a running record of obstruction, throughput, latency, ping drop rate, uptime, and a dozen alert conditions, and it exposes all of it over a local API on your own network. No cloud, no login, no data charge. Home Assistant just reads it.

Three things this unlocks that the Starlink app alone does not:

The dish already knows it's obstructed, throttled, or rebooting. Monitoring in Home Assistant is just the difference between the dish knowing and you knowing.

What telemetry you can actually read from the dish

Every dish exposes a local gRPC API at 192.168.100.1 on port 9200 — the same endpoint the official Starlink app uses for its statistics screen. That is the source for everything below, whether you read it through the native Home Assistant integration or the community Python tools. The query is entirely local: it works when the satellite link is down, because the dish is still sitting on your boat network answering questions about itself.

The built-in Home Assistant Starlink integration surfaces that data as a rich set of entities. The exact list tracks the integration's releases, but as of 2026 it includes:

Sensors

Binary sensors (the alert flags)

Controls

That "Thermal throttle" flag alone justifies the whole exercise on a hot-climate boat — it is the difference between "the internet is slow for no reason" and "the dish is too hot and is deliberately backing off." Pair the obstruction and drop-rate figures with a good marine mount and you can actually tune dish placement with data instead of guesswork.

Power draw: read the sensor, trust the shunt

The Power entity is genuinely useful for at-a-glance monitoring, but it is the dish's own estimate. For solar and battery budgeting where the number matters, a dedicated DC shunt like the Victron SmartShunt on the Starlink circuit measures actual current — and shows up in Home Assistant right alongside the dish telemetry. See our battery monitor guide.

Three approaches, in detail

These are not competitors so much as three layers. Most boats want the native integration; power users add the Python tools for history; everyone should have the ping-based failover layer as a backstop.

starlink-grpc-tools — the power-user logging route

Projectgithub.com/sparky8512/starlink-grpc-tools
RuntimePython 3
OutputsInflux / MQTT / SQLite
HistoryPer-second
CostFree
Installpip / Docker

When you want more history than Home Assistant keeps, or a proper Grafana dashboard, this is the toolkit. It queries the same 192.168.100.1:9200 endpoint and hands the data off to whatever you point it at: dish_grpc_influx2.py for InfluxDB 2.x, dish_grpc_mqtt.py for an MQTT broker, dish_grpc_sqlite.py for a local database, dish_grpc_prometheus.py for Prometheus, and dish_grpc_text.py for plain CSV. There is even dish_obstruction_map.py, which renders the dish's obstruction map to a PNG so you can see exactly where the sky is blocked. The clean pattern on a boat is grpc-tools → MQTT → Home Assistant: the Python script publishes to your broker, and Home Assistant subscribes. That way you get the deep per-second history in InfluxDB and the same values live in HA, without the two fighting over the dish. It is more setup — Python, a broker, a database — but it is the only way to answer "how bad was obstruction across the whole passage last week?"

Strengths
  • Second-by-second history, retained as long as you want
  • Writes to InfluxDB, MQTT, SQLite, Prometheus, or text
  • Obstruction-map PNG export for tuning dish placement
  • Complements the HA integration via MQTT — not either/or
  • Docker images available for headless boxes
Trade-offs
  • Real setup: Python, a broker, and a time-series database
  • Community project — you own the maintenance
  • Same bypass-mode route requirement as the native integration
  • Overkill if you only want a dashboard and alerts

HA Ping + router failover — the connectivity backstop

TypeHome Assistant core
MethodICMP ping
Needs dish routeNo
Pairs withMulti-WAN router
CostFree
Setup~10 min

Dish telemetry tells you what the dish thinks; it does not tell you whether the internet actually works. Home Assistant's built-in Ping integration fills that gap: point it at a reliable external host such as 1.1.1.1 and it reports a simple up/down binary sensor plus round-trip time. That single sensor is the trigger for the automations that matter — a push notification the instant reachability fails, and, if you run a multi-WAN router like a GL.iNet Flint 2 or a Peplink, an alert when it fails over from Starlink to cellular. The best part: Ping needs no route to the dish, so it works even on boats where you can't or won't open the bypass route. Run it alongside the native integration and you have both halves — why Starlink dropped (dish alerts) and whether you're actually offline (ping). See our marine network security guide for the router side.

Strengths
  • Measures real reachability, not just dish self-report
  • No dish route required — works in any network mode
  • Drives failover alerts with a multi-WAN router
  • Trivial to set up; built into HA core
Trade-offs
  • No dish diagnostics on its own — pair it with the integration
  • Hardware failover needs a multi-WAN router (extra cost)
  • A blocked ICMP host can cause false "down" readings — pick a reliable target
Don't run Home Assistant? A standalone option

All three approaches above assume you're running Home Assistant on the boat. If you're not — and don't want to — Nexus Telemetry is a paid cross-platform desktop app (macOS, Windows, Linux) that reads the same local dish telemetry into one dashboard: connection health, throughput, latency, obstruction maps, and satellite tracking, plus session recording and network diagnostics in the Pro tier. It reads the dish locally over your own network — no cloud account — and is a one-time purchase (Home £24.99 / Pro £99.99) rather than a subscription. We haven't put it through a full hands-on test yet, but it's the cleanest turnkey answer we've seen for boaters who want dish diagnostics without standing up Home Assistant or scripting Python.

The bypass-mode gotcha — reaching 192.168.100.1

This is the one thing that turns a five-minute setup into an afternoon of head-scratching, so it's worth understanding before you start. Everything that reads the dish — the HA integration, grpc-tools, even the Starlink app — talks to the dish's management IP, 192.168.100.1. Whether that address is reachable depends entirely on how your boat network is wired.

Standard router mode: it just works

If you're using the Starlink router (or its Ethernet adapter feeding a device directly), clients on the network can already reach 192.168.100.1 — the Starlink router routes to it for you. Add the integration, done. Nothing else to configure.

Bypass mode: you must add a route

Most connected boats eventually turn on bypass mode, which disables the Starlink router so your own router — a GL.iNet or Peplink — can take over routing, VPN, and cellular failover. The moment you do, your router's WAN gets a normal public/CGNAT address and 192.168.100.1 is no longer on any subnet your LAN knows about. Home Assistant polls it and gets nothing. Home Assistant's own documentation is blunt about this: if your Starlink is in bypass mode, you must open a route to it or the integration will not work.

The fix is a one-time static route on your router: send traffic for 192.168.100.0/24 out the WAN interface (the one connected to the dish). On a GL.iNet running OpenWrt this is a single static-route entry; on most consumer routers it's under Advanced → Routing. Once that route exists, 192.168.100.1 is reachable again from your LAN, and both the integration and grpc-tools spring to life. This is also what makes the Starlink app work again from devices behind your own router.

Quick test before you configure HA

From any device on the boat network, open http://192.168.100.1 or ping it. If it responds, Home Assistant will reach it too. If it times out and you're in bypass mode, add the static route first — don't waste time debugging the integration.

Automations worth building — alerts & failover

Monitoring is only half the value; the payoff is the boat telling you instead of the other way around. Four automations cover almost everyone.

1. Push alert on obstruction or thermal throttle

Trigger on the Obstructed or Thermal throttle binary sensor turning on for more than 60 seconds; action is a mobile notification. The debounce matters — a passing obstruction of a few seconds is normal and you don't want a buzzing phone every time the boat swings at anchor.

2. Notify on unexpected reboot

Watch the Last restart / uptime sensor. If uptime resets when you didn't reboot the dish, that's a firmware update or a fault — worth a heads-up, especially mid-passage.

3. Internet-down alert (the ping layer)

Trigger on the Ping binary sensor going off for 30+ seconds against 1.1.1.1. This catches the cases dish telemetry misses — a CGNAT hiccup, a router problem, a Starlink-side outage that the dish itself doesn't flag.

4. Cellular failover + notify

If you run a multi-WAN router, it handles the actual failover in hardware. Home Assistant's job is to watch which WAN is live and tell you: "Starlink down — now on cellular." That one message saves you from discovering the switch three days later via a data-overage warning. Log every failover to a history graph and you'll quickly learn how reliable your Starlink placement really is.

The goal isn't a prettier dashboard. It's your phone buzzing "Starlink obstructed" the moment it happens — and the boat quietly failing over to cellular while it does.

Install walkthrough — the native integration in 5 minutes

Assuming Home Assistant is already running on the boat (a Raspberry Pi 5 or Home Assistant Green is the usual host — see the HA marine guide):

  1. Confirm the dish is reachable. From a device on the boat network, ping 192.168.100.1. If you're in bypass mode and it times out, add the static route for 192.168.100.0/24 first (see above).
  2. Add the integration. Settings → Devices & Services → Add Integration → search "Starlink." Confirm the dish address when prompted.
  3. Check the entities. Open the new Starlink device. You should see throughput, ping, drop rate, obstruction, uptime, power (if reported), and the alert binary sensors populating within a minute.
  4. Add a dashboard card. Drop the key sensors onto a card next to your battery and bilge data. An "Entities" card with obstruction, drop rate, downlink, and power is a good start.
  5. Build one automation. Start with the obstruction/thermal-throttle push alert. Add the ping-based internet-down alert once you've confirmed the sensors are stable.

Power users: after the native integration is working, add starlink-grpc-tools pointed at the same dish, publishing to MQTT or InfluxDB, for long-term history and Grafana. The two coexist happily — they're just two read-only clients of the same local API.

Pitfalls — bypass routes, polling load, false alerts

Three failure modes worth seeing coming.

Forgetting the bypass route (the big one)

By far the most common "it won't connect" cause. If you're in bypass mode and haven't added the 192.168.100.0/24 route, nothing that reads the dish will work — not HA, not grpc-tools, not the app. Test 192.168.100.1 reachability first, every time, before blaming the software.

Chatty polling on a metered link

The dish query itself is local and free, but if you also run grpc-tools shipping per-second data to a cloud InfluxDB or a remote MQTT broker, that traffic goes out over your (possibly metered) connection. Keep the broker and database on the boat. Local telemetry should never cost you data.

False "internet down" alerts

If your ping target is occasionally rate-limited or blocked, you'll get spurious outage alerts. Use a reliable, ICMP-friendly host (1.1.1.1 or 8.8.8.8), add a 30–60 second debounce, and consider pinging two hosts and only alerting when both fail. That kills nearly all false positives.

Ninety percent of "the Starlink integration won't connect" reports are one missing static route in bypass mode. Test 192.168.100.1 first.

Frequently asked questions

Does the Home Assistant Starlink integration work in bypass mode?

Yes, but only if you open a network route to the dish. Home Assistant polls the dish's local API at 192.168.100.1. In Starlink's default router mode, clients can already reach that address, so it just works. In bypass mode — where your own router replaces the Starlink router — 192.168.100.1 is no longer on your LAN subnet, so you must add a static route for 192.168.100.0/24 out the WAN interface. Home Assistant's documentation states plainly that in bypass mode you must open a route or the integration will not work.

What IP and port does the Starlink dish use for its local API?

The dish exposes a gRPC API at 192.168.100.1 on port 9200. This is the same local endpoint the official Starlink app uses for dish stats, and it's what both the Home Assistant integration and the community starlink-grpc-tools project connect to. No account login, no cloud call — the query is local to your boat network and works even when the internet link is down.

Can Home Assistant show Starlink power draw?

Yes, on dishes whose firmware reports it. The core Home Assistant Starlink integration exposes a Power sensor (last measured draw, in watts) and an Energy sensor (cumulative kWh) alongside the network metrics, so you can watch the dish's draw on the same dashboard as your battery monitor. For a fully independent, hardware-verified figure — useful for solar and battery budgeting — a dedicated DC shunt such as the Victron SmartShunt on the Starlink circuit is still the gold standard, since it measures actual current rather than the dish's self-reported estimate.

Do I need the Starlink app running for Home Assistant to read the dish?

No. The integration uses local polling — it queries the dish's gRPC endpoint directly and independently. The Starlink app doesn't need to be open, and nothing runs through Starlink's cloud. That's the same reason it keeps working during an outage: even when the satellite link drops, the dish is still on your local network reporting obstruction, alerts, and uptime, so Home Assistant can tell you why you lost connectivity.

Can I automate failover to cellular when Starlink drops?

Yes. The cleanest approach is a multi-WAN router (a GL.iNet Flint 2 or a Peplink) that handles failover in hardware, with Home Assistant watching which WAN is active and sending you an alert. If your router doesn't do multi-WAN, HA's built-in Ping integration can watch an external host such as 1.1.1.1 and trigger an automation — send a push notification, flip a smart plug powering a cellular modem, or just log the outage — the moment reachability fails. The dish telemetry tells you why Starlink dropped; the ping monitor tells you the internet is actually down.

Does any of this cost money or use my data allowance?

No. Both the Home Assistant Starlink integration and starlink-grpc-tools are free and open source, and both query the dish over the local network — no cloud API, no subscription, and no measurable data usage. The only cost is the hardware you already need to run Home Assistant on the boat, such as a Home Assistant Green or a Raspberry Pi 5. Keep any logging database and MQTT broker on the boat and the telemetry stays entirely local and free.

The short version, by use case

You want dish alerts on your boat dashboard, fast: the built-in Home Assistant Starlink integration. Five-minute config flow, full telemetry, no scripting. Just remember the bypass-mode route if you run your own router.

You want years of history and Grafana: add starlink-grpc-tools pointed at the same dish, publishing to a local MQTT broker or InfluxDB. It complements the integration rather than replacing it.

You want real outage alerts and failover: the HA Ping integration against 1.1.1.1, paired with a multi-WAN GL.iNet Flint 2. Dish stats say why; ping says whether; the router does something about it.

The general rule: run all three layers. They're free, they're local, and together they turn Starlink from a black box into the best-instrumented device on the boat.

Monitoring Starlink in Home Assistant on your boat? Share your dashboard and automations on r/smartboats or email hello@smartboats.org.
Liked this guide?

Get new guides in your inbox.

When we publish a new buyer's guide, you get it first with a short note on why it matters. About one email a month, sometimes less. No spam, no sponsored nonsense, one-click unsubscribe. You can also download our free 12-point checklist directly — no signup needed.

Subscribe Free · Unsubscribe anytime
Last updated · July 2026 Entity names, the bypass-mode requirement, and the dish gRPC endpoint were verified against the official Home Assistant Starlink integration documentation and the sparky8512/starlink-grpc-tools repository at time of publication. Home Assistant's entity set can change between releases and Starlink firmware evolves; check the integration docs before relying on a specific sensor. If you notice a link or claim error, please email hello@smartboats.org and we'll correct it.
Share