Custom Integration: HDHomeRun

Thank you for your continued effort on this!

No problem. I thought it needed some love again.

1 Like

There were no complaints from the beta release so 2023.4.1 has now been released. Details as per: here

2 Likes

@uvjim are you running the 2023.6.x version of HA Core yet? With that version, all of the entities except for the tuner count, reset button and tuners themselves are unavailable.

These are the only records in the logs:

Error fetching hdhomerun_tuner_status_12313041 data: Device not found ([ip address redacted])
_async_data_coordinator_tuner_status_update (12313041) --> Device not found ([ip address redacted])
Forced update failed. Entity update.hdhomerun_hd_homerun_update not found.

The device itself is still working and its IP address has not changed (DHCP reserved).

I have one of the betas running as Iā€™ve just been moving the development environment over to docker. I havenā€™t tested this integration in it yet mind you.

Iā€™ll take a look today.

Absolutely no rush. Iā€™ll do some digging and more restarting in the meantime.

Iā€™ve had a quick look and there is something funky happening in the new versions of Home Assistant. Iā€™ll have a look when I get time as there seems to be some issues around translations for the Config Flow as well. When I add a new device it defaults to using the UDP method to poll the tuners and fails the HTTP method even though it should be available. Iā€™ll dig in a little deeper when I get the time.

UPDATE: if you need it the main branch should have a fix for devices that are in HTTP mode. Iā€™m still looking into what is happening with the config flow.

UPDATE 2: turns out the Config Flow problem was between keyboard and seat. There is another update that I need to put in and then I should have a release out for you.

1 Like

2023.6.1 of this integration has now been released which should address the issue you reported @WhimsySpoon.

Working perfectly now, thank you!

Is HTTP preferable over udp for these devices? I think mine is operating in http mode.

The discovery should be automatic. Putting SSDP discovery aside, when you add the integration, whether you provide an IP address or not, itā€™ll use UDP to ensure the tuner is there. The discovery process then checks to see if the tuner can be reached using HTTP. If it can can, it should use HTTP for all future things.

When using HTTP mode there are more entities available to you as the integration can gather more information from the HTTP API.

You can find which mode youā€™re in by looking at the device in Home Assistant (I decided to put the mode in there - see below).

Not all tuners have the HTTP API available, I donā€™t have any of those, but have hopefully made it so they can still be used - I did my testing by stopping discovery from attempting HTTP querying.

Hopefully that explains a bit more about how that process works.

As a side note, I now know why the issue you saw occured, it was down to the bump in Python version to 3.11 and the way the HTTP API URLs were being built. They should be fine now for all versions of Python but, Iā€™ll leave a note in the code to switch to the built-in StrEnum (now standard in 3.11) at some point in the future. It was this PEP that did it: PEP 663 ā€“ Standardizing Enum str(), repr(), and format() behaviors | peps.python.org

Thank you for the detailed explanation, that all makes sense. Mine is reporting HTTP so Iā€™m pleased itā€™s using the preferred one!

Thank you again for all of your efforts on this.

Thank you very much for this integration and the Lovelace card code! I have it installed on my HDHomeRun DUO and it works great! I have one question: what size should I make the icon files? I have been messing around with 256x256 and other sizes, and canā€™t seem to get one that fits properly.

Thank you again!

I donā€™t use that functionality Iā€™m afraid. The size would be dependant on which card you were using and how it frames that in the location for the picture.

AHA! :bulb:

Thank you for the prompt reply!

I keep learning about HA, even after 2+ years using it. I suppose the icon representation will also depend on how Lovelace shrinks the card to show multiple columns. Back to the drawing board!

Thank you!

Iā€™ve been looking for a way to quickly tune my TV to a certain channel. Is that possible with this?

Example, I know at 8:00 tonight thereā€™s a show on Fox I want to watch. At 7:59 I sit down and trigger an automation (trigger doesnā€™t really matter what it is) but then it turns on my Roku TV and navigates to the hdhomerun app (easy to do), and then this integration tunes to Fox and it starts playing on the Roku app.

Is that possible? Any thoughts on how to do that?

It seems the only control this app has is to reboot or scan channels (how often are you all doing that?) But maybe Iā€™m missing something.

Thank You

Thanks for this nice integration. It was super easy to implement it.
Iā€™m using it with HD Home Run Quattro and is it nice to see it is up to date and how many channel are used. :+1:

1 Like

Does this no longer work?

* Unexpected exception importing platform custom_components.hdhomerun.binary_sensor
* Unexpected exception importing platform custom_components.hdhomerun.select
* Unexpected exception importing platform custom_components.hdhomerun.sensor
* Unexpected exception importing platform custom_components.hdhomerun.update

I havenā€™t updated to the February release yet, but itā€™s still working for me under HA Core 2024.1.6. Maybe the Python 3.12 version change in 2024.2.0 has broken something if youā€™re running the latest release?

I think mine has been broken for a while now.

I have it running here on HA Core 2024.2.1 and integration version 2024.1.1 without any issue.