Starlink - Dish and network stats

Thanks for your reply @ArcherNE.

I would be more than happy to do that - but I’d need some tips on how to enable logging for this custom component. At the minute I don’t see anything in the logs other than the following warning.

2022-11-08 12:28:12.385 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration starlink which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant

Thanks!

Hi @ArcherNE,

I have just bumped the logging to debug for the full Home Assistant, instead of increasing it for just the component. This is what I can see.

Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/aiohttp/web_protocol.py", line 435, in _handle_request
    resp = await request_handler(request)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/web_app.py", line 504, in _handle
    resp = await handler(request)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/web_middlewares.py", line 117, in impl
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 82, in ban_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 236, in auth_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle
    result = await result
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 180, in post
    return await super().post(request, flow_id)
  File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 73, in wrapper
    result = await method(view, request, data, *args, **kwargs)
  File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 110, in post
    result = await self._flow_mgr.async_configure(flow_id, data)
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 280, in async_configure
    result = await self._async_handle_step(
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 367, in _async_handle_step
    result: FlowResult = await getattr(flow, method)(user_input)
  File "/usr/src/homeassistant/homeassistant/helpers/config_entry_flow.py", line 71, in async_step_confirm
    has_devices = await cast(
  File "/config/custom_components/starlink/config_flow.py", line 14, in _async_has_devices
    devices = await api_client.get()
  File "/config/custom_components/starlink/__init__.py", line 174, in get
    response = _dish_grpc_text.main(obj)
  File "/config/custom_components/starlink/dish_grpc_text.py", line 288, in main
    lines.append(self.loop_body(opts, gstate, print_file))
  File "/config/custom_components/starlink/dish_grpc_text.py", line 239, in loop_body
    rc, status_ts, hist_ts = self._dish_common.get_data(opts,
  File "/config/custom_components/starlink/dish_common.py", line 233, in get_data
    rc, status_ts = self.get_status_data(
  File "/config/custom_components/starlink/dish_common.py", line 274, in get_status_data
    groups = starlink_grpc.status_data(context=gstate.context)
  File "/usr/local/lib/python3.10/site-packages/starlink_grpc.py", line 765, in status_data
    "wedges_fraction_obstructed[]": status.obstruction_stats.wedge_abs_fraction_obstructed,
AttributeError: 'DishObstructionStats' object has no attribute 'wedge_abs_fraction_obstructed'

I guess the key is probably the following error:

AttributeError: 'DishObstructionStats' object has no attribute 'wedge_abs_fraction_obstructed'

Would you have any suggestion as if there is a way to overcome this, please?

Thanks!

@kavejo this appears to have surfaced after the ee39beae-c399-4648-a7d6-949193d8c910.uterm.release update. It is being looked at, at a library level. Once it is fixed there I’ll be able to update here.

Roger that, thanks @ArcherNE!

I have pushed the library update, so after you update the integration it should now work.

1 Like

Thank you, it works now!

@ArcherNE thanks for this it works great!

I see there’s now an addon, seems to work but I was a bit confused at this line in the documentation:

“Your Starlink must not be in bypass mode.”

Is that old or am I just not following why that matters? Seems to work fine for me running pfSense.

I’ve been using ArcherNE’s Starlink integration for a few weeks. Its really nice and gives some good data so first off I would like to say thanks. The Dish Latitude, Longitude and Altitude are the only data points not working. This is installed in my Motorhome and I would really like to tie these to my Home location so it dynamically updates as I move. Is anyone else getting these to values to update?

(Optional) Enable Location

This step is only required if you want to see the latitude, longitude, and altitude in homeassistant (otherwise those sensors will just be blank).

Access to location data must be enabled per dish and currently (2022-Sep), this can only be done using the Starlink mobile app, version 2022.09.0 or later. It cannot be done using the browser app. To enable access, you must be logged in to your Starlink account. You can log in by pressing the user icon in the upper left corner of the main screen of the app. Once logged in, from the main screen, select SETTINGS, then select ADVANCED, then select DEBUG DATA. Scroll down and you should see a toggle switch for “allow access on local network” in a section labelled STARLINK LOCATION, which should be off by default. Turn that switch on to enable access or off to disable it. This may move in the future, and there is no guarantee the ability to enable this feature will remain in the app.

Note that the Starlink mobile app can be pretty finicky and painfully slow. It’s best to wait for the screens to load completely before going on to the next one.

Just sharing in case this becomes of any use to somebody.

I had this custom component running since November 2022 - and my recorder is set to retain 730 days of data (2 years).
Approximately 4 months after enabling the custom component I have found out my HA database was 10 GB, and upon inspecting the content with SQLite Web I have noticed that the vast majority of the space was occupied by 4 sensors coming from this integration (ping drop rate, ping latency, uplina dna ddownlink throughput). There were about 11.000.000 states of each.

I had excluded these sensors from the recorder, however the recorder.purge service was not completing in a night, therefore I manually deleted the entries via SQL queries. Only then I was able to run recorder.purge successfully and repack the database, which has shrunk to 135 MB now.

Just saying, if you happen to record the data for long term, you might want to exclude these 4 sensors from the recorder.

@ArcherNE,

Quick curiosity, I have seen on Starlink - Home Assistant (home-assistant.io) that now Starlink can be integrated with an official integration. Is this based on yours?

Just curious as for me, despite I’m on HA 2023.3.5, the official integration does not show up, therefore I was wondering if yours through HACS and the official one are basically the same.

Thanks!

Sorry if this is clearly addressed elsewhere or if I am missing something but I cannot get the GPS coordinates to load.

I have the Starlink integration installed and get 19 entities. I performed the Optional Enable Location and have verified it is still on after rebooting the starlink satellite and router.

Do I ALSO need to install the grpc tools? (GitHub - sparky8512/starlink-grpc-tools: Random scripts and other bits for interacting with the SpaceX Starlink user terminal hardware)

You are using the “official” Starlink integration, the one that comes shipped in HomeAssistant now. Those directions and GPS coordinates would come from the custom “Starlink Statistics and Alerts” integration, which can be installed manually through HACS.

Awesome, thank you. I thought one had transitioned to the other. Installed via HACS and am now getting those sensors!

Trying to get @GCustom’s location update to work now.

I am seeing my current coordinates reported by the starlink add-on and can see that the automation is running and retrieving the same coordinates. However, HA is not updating the ‘Home’ location.

Do I need to change a setting somewhere or add a location?

My Starlink is in bypass mode, how can I open a route to it?

The official integration says, " If your Starlink is in bypass mode, you will need to open a route to it so that the local API can be accessed. Otherwise, this integration will not work."

This is something you need to do in your Firewall drive often. I believe the target IP address is:

100.64.0.1

Unfortunately, each firewall device has a unique set of commands and/or menus that you need to setup to get this done. If you share the brand and model of your firewall device, perhaps someone will have similar.

Good hunting!