PiPup - Android TV app for notifications

Hey,

I finally got this one working and it seems to be running better than “Notifications for Android”, at least for me.

I can get the image and web working, but not video. Maybe I misunderstood the video capability, but is it possible somehow to show a love feed of my UniFi Protect cameras?

Thanks.

1 Like

Hi all, I just finally got this configured using this blog post with the go2rtc addon. When I push the notifications to my Nvidia Shield Pro (2019) box that is attached to my TV I got an error message the pop up displays a “Clear Text Not Permitted” error. From my research it seems like it is due to me using only http instead of https. Is there anyway to use just http as I’m only using this internally to my LAN and have no desire to use it externally?

Appreciate any advice I can get.

I have same problem. Any ideas how to resolve this issue? Maybe @seanblanchfield knows the answer.

It’s nearly a year since I did this work, so my memory is a bit fuzzy. I don’t recall ever seeing the “Clear Text Not Permitted” error, but @Insearchofth1ngs’s analysis that it’s related to HTTPS sounds right. In particular, this issue in the PiPup repository describes it and links to a stackoverflow discussion about this issue more generally on Android 9+. This PR on the PiPup repository aims to fix the problem along the lines discussed in that stackoverflow post. The PR doesn’t seem to have been merged, but a build is provided. I see that @droso-hass has a fork merging both that PR and another important PR to allow javascript support, but I don’t see a build. Perhaps one of the many PiPup forks includes both of the big PRs and also provides a build.

I think I didn’t encounter this issue myself because of how I have Home Assistant set up for external access. There is a callout box in my blog post discussing how I use the Nginx Proxy Manager to allow remote access to HA with HTTPS (while maintaining local access via HTTP). I think Nginx Proxy Manager is a particularly good solution here because of how the traffic flows. HTTPS means we must to use a public domain name, but that domain name resolves to my router’s WAN IP address, where TLS port 443 is port forwarded back to Nginx Proxy Manager. When my Nvidia Shield connects to that domain to download the video stream, the traffic hairpins at my router, and never leaves my LAN. It’s basically as optimal as you could hope for, with no additional latency or bandwidth costs. It is also optimal for accessing HA remotely, and it doesn’t interfere with HA being available over cleartext HTTP inside the LAN.

So I think there’s two way forward:

  1. Try the build provided in the PR discussed above (which might be missing the javascript fix), or find another fork/build that fixes it, or fork it yourself and build it (and share the build if you do this work!).
  2. Use the Nginx Proxy Manager addon like me.

I hope that helps a bit!

1 Like

I’m not sure exactly how you are trying to display your camera stream, but direct RTSP etc is not supported by PiPup. However, if you can display the stream in a webpage, then you can make PiPup display that web page. Typically, this would mean embedding a WebRTC video in a webpage that streams from a WebRTC proxy server inside your LAN (the WebRTC Camera integration can do this for you).

See the conversation on this issue in the PiPup repository about this.
I also have a pretty detailed write up of a configuration that works well for me here: Real-Time Picture-in-Picture Camera Feeds on your TV with Home Assistant | Sean Blanchfield

1 Like

Try using this version of PiPup which should support http
Releases · desertblade/PiPup (github.com)

I had this working using Sean’s original tutorial but I found the video feed froze and stuttered a lot. I’m not sure if it was because in order to use https I had to use the external url which was then sending the feed to the web and streaming it from there. But in a 15s popup there would only be about 3-4s of actual video and the rest was freezing and stuttering.

I switched to using frigate’s MJPEG stream as described in this post. I’m using the apk linked above, http and an internal ip address.

Now my video stream is very smooth with minimal lag

2 Likes

Thanks @seanblanchfield, I’m using the go2rtc addon to translate my RTSP camera feeds coming from blue iris to WebRTC feeds. I installed the one apk in rogro82 #34 pull request, but I don’t think that has the allow clear text attribute set, so everything needs to be HTTPS. I found one that wasbuild in this my-ugly-code’s repo. I’ll probably give that a try when I get home.

Edit: The apk provided in my-uggly-code’s repo worked like a charm for me. I can finally display my doorbell cameras feed on my TV when the doorbell is pressed.

Indeed, HA doesn’t need to be running, and if you are running zwavejs2mqtt on a different device, like a raspberry PI located in the best place for Zwave connectivity, you can even set the codes in the lock directly through the web frontend, though its a bit clunky, as you have to go into the device control page in the user code section.

I’d also like to know if it’s possible to kill the stream.

I’m hoping to use this as a baby monitor, so it’d be ideal if I could turn it on until I want to turn it off!

Edit: figured out a workaround. If you send a new stream, it replaces the old stream. I set the initial stream to play for 2 hours, then send a subsequent stream for 1 second. Effectively kills it on demand.

Love this so much. Thanks for the hard work – it works so well!

2 Likes

I followed the guide but nothing happens when i send a rest command. im running the pipup app on my google tv dongle.

it shows up as a restful command in Developer service.

when i try to send command in service, it shows sendt.

is there a way to see some log or how to identify the problem?

Hi, I have the same issue, i have:

  • installed Pipup on TV
  • created the services in HA (able to see it on Dev tools, and call the service successfully)
  • successfully did the “adb shell appops set nl.rogro82.pipup SYSTEM_ALERT_WINDOW allow” to my TV

Did all above but still nothing shows on TV at all i.e. no popup or anything at all after calling service

Any ideas people - I have tried all/various options.
Thanks

what is this doing? and how ?

Scroll down to the side loading section…it is explained there.

ah okay , does that also applies if you have installed it through the play store ?

You should remove the playstore version and sideload the modified version. This is likely why you have nothing popping up.

I would also recommend this version
Releases · desertblade/PiPup (github.com)

It’s forked from the one linked above to allow for http instead of just https. This makes it much easier to keep the feed local to your network without having to setup dns rewrites at the router level.

1 Like

I will definitely try that out , thank you very much

Hi, I am using the desertblade pipup install - but absolutely nothing shows on TV i.e. no popup, no text, no image … zero (the service call is successful from HA, but nothing happens on TV … I have no clue why sigh

And did you execute:

“adb shell appops set nl.rogro82.pipup SYSTEM_ALERT_WINDOW allow”

as @larsvb88 already asked what was happening when executing. Because this command should allow the pop up.

1 Like

It all works now after sideload the apk

only thing I struggle with is to show my cam, but that is because I only have rtsp stream

1 Like