Repository navigation
Releases
v1.30.2 — no Install popup while Home Assistant updates; keep-alive example
English
Two fixes for a PiPup screen that took over while someone was watching (PiPup #76, reported by @Ltek).
- Fixed: the app's own "PiPup x.y available" popup no longer appears while automatic updates are on (app ≥ 0.30.1). Its Install button takes the remote's focus, so an OK meant for Plex or Prime Video started an install, and on Android < 12 the install confirmation then took over the screen. Every request now tells the app whether Home Assistant installs its updates (
X-HA-PiPup-Auto-Update: on|off). It saysononly when the nightly update can actually install on that TV: switched on, and ADB or a silent app self-update. The nightly run uses the same test. On the TV,/state.update.haManagedshows it. - Docs: the TCL keep-alive example only runs on the home screen. The restart opens PiPup and then presses Home. The old example skipped only a TV that was
playing, but the Android TV integration decides that per app, so a film in an app it does not recognise could be cut off. The condition is now theapp_idof the launcher, which also stops the automation from switching a TV in standby on. If you copied the example, update your automation. The section now starts with the app's accessibility service, which usually makes the automation unnecessary.
Nederlands
Twee fixes voor een PiPup-scherm dat het beeld overnam terwijl er gekeken werd (PiPup #76, gemeld door @Ltek).
- Opgelost: de eigen popup "PiPup x.y beschikbaar" van de app verschijnt niet meer zolang automatische updates aan staan (app ≥ 0.30.1). De Install-knop pakt de focus van de afstandsbediening, dus een OK voor Plex of Prime Video startte een installatie, en op Android < 12 nam het bevestigingsscherm daarna het beeld over. Elk verzoek vertelt de app nu of Home Assistant de updates installeert (
X-HA-PiPup-Auto-Update: on|off). Het is alleenonals de nachtelijke update op die tv ook echt kan installeren: aangezet, en ADB of een stille update door de app zelf. De nachtelijke run gebruikt dezelfde toets. Op de tv laat/state.update.haManagedhet zien. - Docs: het TCL-keep-alive-voorbeeld draait alleen nog op het startscherm. De herstart opent PiPup en drukt daarna op Home. Het oude voorbeeld sloeg alleen een tv over die
playingwas, maar de Android TV-integratie bepaalt dat per app, dus een film in een app die hij niet herkent kon worden afgebroken. De voorwaarde is nu deapp_idvan de launcher, waardoor de automation ook geen tv in standby meer aanzet. Heb je het voorbeeld overgenomen, pas je automation dan aan. De sectie begint nu met de accessibility-service van de app, die de automation meestal overbodig maakt.
Full changelog: CHANGELOG.md
v1.30.1 — ADB install on slower TVs
English
- Fixed: the ADB install broke off after 10 seconds on TVs where
pm installtakes longer (a TCL Smart TV on Android 11: 12.7 s). The 2-minute wait passed since 1.29.0 was silently cut to 10 s by the ADB library (it caps the wait for the next bytes at its read timeout). Home Assistant then reported "the ADB connection dropped" while the TV finished the install on its own, and the overlay/install permissions were not granted again. Both timeouts are now 2 minutes, and a TV that closes the connection is reported at once instead of keeping Home Assistant busy until the timeout. Fire TVs (≈5 s) were not affected.
Nederlands
- Opgelost: de ADB-install brak na 10 seconden af op tv's waar
pm installlanger duurt (een TCL Smart TV op Android 11: 12,7 s). De wachttijd van 2 minuten sinds 1.29.0 werd door de ADB-library stilletjes afgekapt tot 10 s (die begrenst de wachttijd op de volgende bytes tot zijn read-timeout). Home Assistant meldde dan "the ADB connection dropped" terwijl de tv de installatie zelf afmaakte, en de overlay- en installrechten werden niet opnieuw gezet. Beide timeouts zijn nu 2 minuten, en een tv die de verbinding sluit wordt meteen gemeld in plaats van Home Assistant tot de timeout bezig te houden. Fire TV's (≈5 s) hadden er geen last van.
Full changelog: CHANGELOG.md
v1.30.0 — automatic updates
English
- Automatic updates in Advanced install (gear icon), off by default (#49). A new PiPup app release is installed by itself inside a quiet window (default 03:00–05:00 local time; it may cross midnight):
- one TV at a time, once a night, only when the TV is reachable and no popup is on screen;
- on a TV that is on, the app is never opened: the install only restarts PiPup, and if the app does not come back by itself it starts the next time the TV is switched on;
- the app's own update where it is silent (Android 12+), the built-in ADB install from 1.29.0 below that; the options refuse automatic updates on a TV where the app's own update would wait for the remote;
- a skipped version is left alone.
- A success only writes a logbook entry (PiPup app updated 0.29.2 → 0.30.0 (ADB)). A failure retries the next night; a repair appears after three failed nights, or at once when something on the TV needs fixing, and disappears after the next successful update (also one done by hand).
- New attributes on the update entity:
auto_update,last_auto_update,auto_update_failures, restored after a restart (a restart inside the window does not cause a second attempt that night).
Nederlands
- Automatische updates in Geavanceerd installeren (tandwieltje), standaard uit (#49). Een nieuwe release van de PiPup-app wordt vanzelf geïnstalleerd binnen een rustig venster (standaard 03:00–05:00 lokale tijd; mag over middernacht lopen):
- één tv tegelijk, één keer per nacht, alleen als de tv bereikbaar is en er geen popup in beeld staat;
- op een tv die aan staat wordt de app nooit geopend: de installatie herstart alleen PiPup, en komt de app niet vanzelf terug, dan start hij de volgende keer dat de tv aangaat;
- de eigen update van de app waar die stil is (Android 12+), daaronder de ingebouwde ADB-install uit 1.29.0; de opties weigeren automatische updates op een tv waar de eigen update van de app op de afstandsbediening zou wachten;
- een overgeslagen versie blijft staan.
- Een geslaagde update komt alleen in het logboek (PiPup app updated 0.29.2 → 0.30.0 (ADB)). Een mislukte wordt de volgende nacht opnieuw geprobeerd; na drie mislukte nachten, of meteen als er op de tv iets opgelost moet worden, verschijnt een repair. Die verdwijnt na de volgende geslaagde update (ook een handmatige).
- Nieuwe attributen op de update-entiteit:
auto_update,last_auto_update,auto_update_failures, die een herstart overleven (een herstart binnen het venster geeft geen tweede poging die nacht).
Full changelog: CHANGELOG.md
v1.29.0 — Advanced install: built-in ADB install
English
- Advanced install in the integration's options (gear icon), a collapsed section per TV: install method (App self-update, the default and the old behaviour; Auto: app on Android 12+, ADB below; ADB), ADB port and ADB key (PiPup's own
pipup_adbkey, or the Android TV integration's key). Choosing Auto or ADB tests the connection when you save, and walks you through Allow debugging from this computer? on the TV. - Install over ADB: on Android < 12 the update entity's Install no longer needs a press on the remote (PiPup #76, #49). The same steps as
install.sh, in pure Python, so it works on Home Assistant OS: the APK is checked against the release's sha256, installed withpm install -r, and the overlay/install permissions (plusauto_starton TCL and the accessibility service if it was on) are granted again. It never uninstalls the app. New attributeinstall_methodon the update entity;requires_remoteis false with ADB. - Needs network debugging (ADB) on the TV. Opt-in, off by default: nothing changes until you pick Auto or ADB.
- Automatic nightly updates follow in a later version (#49).
Nederlands
- Geavanceerd installeren in de opties van de integratie (tandwieltje), een inklapbare sectie per tv: installatiemethode (Self-update van de app, de standaard en het oude gedrag; Automatisch: app op Android 12+, ADB daaronder; ADB), ADB-poort en ADB-sleutel (de eigen
pipup_adbkeyvan PiPup, of de sleutel van de Android TV-integratie). Kies je Automatisch of ADB, dan wordt de verbinding bij opslaan getest en word je door Foutopsporing toestaan vanaf deze computer? op de tv geleid. - Installeren via ADB: op Android < 12 hoeft er bij Installeren op de update-entiteit niet meer op de afstandsbediening gedrukt te worden (PiPup #76, #49). Dezelfde stappen als
install.sh, in puur Python, dus het werkt ook op Home Assistant OS: het APK wordt gecontroleerd tegen de sha256 van de release, geïnstalleerd metpm install -r, en de overlay- en installrechten (plusauto_startop TCL en de toegankelijkheidsdienst als die aan stond) worden opnieuw gezet. De app wordt nooit verwijderd. Nieuw attribuutinstall_methodop de update-entiteit;requires_remoteis false bij ADB. - Vereist netwerkfoutopsporing (ADB) op de tv. Opt-in, standaard uit: er verandert niets tot je Automatisch of ADB kiest.
- Automatische nachtelijke updates volgen in een latere versie (#49).
Full changelog: CHANGELOG.md
v1.28.1 — fullscreen (app ≥ 0.29.1)
English
fullscreeninpipup.show(app ≥ 0.29.1): the popup window covers the whole screen, status and navigation bars included, with the popup centred (PiPup #73).grid_fullscreensets it too, so a camera wall is no longer clipped on a device with system bars. An older app ignores the field.
Nederlands
fullscreeninpipup.show(app ≥ 0.29.1): het popupvenster bedekt het hele scherm, inclusief status- en navigatiebalk, met de popup gecentreerd (PiPup #73).grid_fullscreenzet het ook, dus een cameramuur wordt op een apparaat met systeembalken niet meer afgeknipt. Een oudere app negeert het veld.
Full changelog: CHANGELOG.md
v1.28.0 — TV control, camera wall, blueprints (app ≥ 0.29.0)
English
TV control, a camera wall and two blueprints. Needs PiPup app 0.29.0 on the TV for the new features; everything else works as before with older apps.
- Media player per TV: the installed TV apps as sources (pick one to start it), play/pause/stop/next/previous, volume up/down/mute, a volume slider where the box owns its volume, and on/off through the screen routes. It only appears for TVs on app 0.29.0 or newer.
pipup.launch_app(package and/or deep link) andpipup.send_key(media keys, home, back). A TV on an older app gets an error naming the version it needs; the other TVs still get the call.- Camera wall:
gridinpipup.showtakes up to nine WHEP URLs (orwhep_url+label+poster_url), withgrid_columns,grid_fullscreenandgrid_labels. - Blueprints (import buttons in the README):
- Info card on the TV (script): set the look once, call it with only the text, e.g. the weather or today's calendar.
- Appliance done (automation): a card when the washing machine, dryer or dishwasher has finished, from its power meter. A helper remembers "running" across a restart, and a 5-minute check catches a finish whose quiet period was interrupted.
- English and Dutch labels for everything new.
Nederlands
Tv-bediening, een cameramuur en twee blueprints. Voor de nieuwe functies is PiPup-app 0.29.0 op de tv nodig; de rest werkt met oudere apps zoals voorheen.
- Mediaspeler per tv: de geïnstalleerde tv-apps als bronnen (kies er een om hem te starten), afspelen/pauzeren/stoppen/volgende/vorige, volume omhoog/omlaag/dempen, een volumeschuif waar de box zijn eigen volume heeft, en aan/uit via de schermroutes. Verschijnt alleen voor tv's met app 0.29.0 of nieuwer.
pipup.launch_app(pakket en/of deeplink) enpipup.send_key(mediatoetsen, home, terug). Een tv met een oudere app krijgt een foutmelding met de benodigde versie; de andere tv's krijgen de opdracht wel.- Cameramuur:
gridinpipup.showneemt tot negen WHEP-URL's (ofwhep_url+label+poster_url), metgrid_columns,grid_fullscreenengrid_labels. - Blueprints (importknoppen in de README):
- Infokaart op de tv (script): stel de look één keer in en roep hem aan met alleen de tekst, bijv. het weer of de agenda van vandaag.
- Apparaat klaar (automation): een kaart als de wasmachine, droger of vaatwasser klaar is, op basis van de vermogensmeter. Een helper onthoudt "draait" over een herstart heen, en een controle elke 5 minuten vangt een einde op waarvan de stille periode werd onderbroken.
- Engelse en Nederlandse labels voor alles wat nieuw is.
Full changelog: CHANGELOG.md
v1.27.0 — camera popup look, button style, video height (app ≥ 0.28.0)
English
Camera popup look, button style and a video height for pipup.show. Companion: PiPup app v0.28.0. Every field is sent only when set, and an older app ignores it.
live_badge(+live_badge_color,live_badge_position),media_full_bleedandbuttons_inline(#44).button_color,button_focus_color,button_text_color,button_border_color,button_corner_radius(#43).media_heightnow also applies to video popups (camera_entitystream/mjpeg andvideo_url) (#42). Only a per-call value is sent; the per-TV default would otherwise change every existing video popup.
action: pipup.show
data:
device_id: <tv>
popup_id: doorbell
title: Front door
message: Motion
camera_entity: camera.doorbell
corner_radius: 24
media_full_bleed: true
live_badge: true
buttons_inline: true
buttons: [{ id: close, label: "✕" }]Thanks
@pelkiegr for all three PRs, each with tests and English and Dutch labels (#42, #43, #44).
Nederlands
Camerapopup-look, knopstijl en een videohoogte voor pipup.show. Hoort bij PiPup-app v0.28.0. Elk veld wordt alleen meegestuurd als het gezet is, en een oudere app negeert het.
live_badge(+live_badge_color,live_badge_position),media_full_bleedenbuttons_inline(#44).button_color,button_focus_color,button_text_color,button_border_color,button_corner_radius(#43).media_heightgeldt nu ook voor videopopups (camera_entitystream/mjpeg envideo_url) (#42). Alleen een waarde per oproep wordt meegestuurd; de standaardwaarde per tv zou anders elke bestaande videopopup veranderen.
Bedankt
@pelkiegr voor alle drie de PR's, elk met tests en Engelse en Nederlandse labels (#42, #43, #44).
Full changelog: CHANGELOG.md
v1.26.0 — popup stacking (app ≥ 0.27.0)
English
Popup stacking from Home Assistant. Companion: PiPup app v0.27.0.
stack: vertical | horizontal | noneinpipup.show(app ≥ 0.27.0). The popup lines up with the other stacking popups at the same position instead of overlapping them, so two camera popups on the right edge sit one above the other. The rest moves up when one closes. Not forcenter.- Per-TV default under Configure → Default stacking.
stack: noneoverrides it for one call. - No version gate. An older app ignores the field and the popups overlap as before.
- English and Dutch labels.
action: pipup.show
data:
device_id: <tv>
popup_id: doorbell
position: top_right
stack: vertical
title: DoorbellThanks
@bboykaos for the idea and the use case (PiPup #64).
Nederlands
Popups stapelen vanuit Home Assistant. Hoort bij PiPup-app v0.27.0.
stack: vertical | horizontal | noneinpipup.show(app ≥ 0.27.0). De popup sluit aan bij de andere stapelende popups op dezelfde positie in plaats van eroverheen, dus twee camerapopups aan de rechterrand staan onder elkaar. Sluit er één, dan schuift de rest op. Niet voorcenter.- Standaardwaarde per tv onder Configureren → Standaard stapelen.
stack: noneoverschrijft die voor één oproep. - Geen versiecontrole. Een oudere app negeert het veld en de popups overlappen zoals voorheen.
- Engelse en Nederlandse labels.
Bedankt
@bboykaos voor het idee en de use case (PiPup #64).
Full changelog: CHANGELOG.md
v1.25.0 — center left / center right (app ≥ 0.26.0)
English
Two new positions, nothing else. Companion: PiPup app v0.26.0.
position: center_leftandcenter_right(app ≥ 0.26.0) — the 3×3 grid is complete (PiPup #62). Available inpipup.show, in the device's default-position option and on the overlay entities, with English and Dutch labels.- Gated like
top_center/bottom_center: on a TV whose app is older than 0.26.0 the action reports an error for that TV instead of sending an ordinal its JSON parser would reject (which used to fail the whole popup silently). - Tests pin the ordinal table against the app enum and the 0.26.0 gate.
Nederlands
Twee nieuwe posities, verder niets. Hoort bij PiPup-app v0.26.0.
position: center_leftencenter_right(app ≥ 0.26.0) — het 3×3-raster is compleet (PiPup #62). Beschikbaar inpipup.show, in de standaardpositie-optie van het apparaat en op de overlay-entiteiten, met Engelse en Nederlandse labels.- Afgeschermd zoals
top_center/bottom_center: op een tv met een app ouder dan 0.26.0 meldt de actie een fout voor die tv in plaats van een ordinaal te sturen die de JSON-parser afwijst (wat voorheen de hele popup stil liet mislukken). - Tests leggen de ordinaaltabel tegen de app-enum vast, plus de 0.26.0-grens.
v1.24.1 — audit fixes
English
Audit round (security + robustness), no new features. Companion: PiPup app v0.25.1.
- Button callbacks are bound to their token. The
pipup_buttonevent is built from what HA showed (popup id, issued buttons, TV), not from the callback body; a button id HA did not issue is rejected. Matters when a button opens a door. - Diagnostics no longer contain the push webhook id.
- Removing an overlay (or the whole PiPup device) takes its popup off the TV and clears the TV's webhook and the overlay store.
pipup.show/pipup.dismissrun per TV in parallel; one sleeping TV no longer holds up the others. For apps with push (≥ 0.24.0) the extra/stateread after the call is skipped.- Update entity no longer spins "installing" for 15 min after a successful install when GitHub was unreachable; release lookups are serialised and failures cached for 15 min.
- Version gates accept
0.25.0-rc1-style builds as 0.25.0; an unparseable app version no longer breaks the hourly update check. - Overlay listener no longer hits a
KeyErrorbetween removing an overlay and the reload; the "cannot set webhook" warning is logged once instead of every minute.
Nederlands
Auditronde (security + robuustheid), geen nieuwe functies. Hoort bij PiPup-app v0.25.1.
- Knop-callbacks zijn gebonden aan hun token. Het
pipup_button-event wordt opgebouwd uit wat HA toonde (popup-id, uitgegeven knoppen, tv), niet uit de callback-body; een knop-id dat HA niet uitgaf wordt geweigerd. Van belang als een knop een deur opent. - Diagnostics bevatten de push-webhook-id niet meer.
- Een overlay (of het hele PiPup-apparaat) verwijderen haalt de popup van de tv en wist de webhook op de tv en de overlay-opslag.
pipup.show/pipup.dismissdraaien per tv parallel; één slapende tv houdt de rest niet meer op. Bij apps met push (≥ 0.24.0) vervalt de extra/state-read na de aanroep.- Update-entiteit blijft niet meer 15 min op "bezig met installeren" hangen na een geslaagde installatie als GitHub onbereikbaar was; release-opvragingen lopen na elkaar en mislukkingen worden 15 min gecachet.
- Versiecontroles accepteren builds als
0.25.0-rc1als 0.25.0; een onleesbare app-versie breekt de uurlijkse updatecheck niet meer. - Overlay-listener loopt niet meer op een
KeyErrortussen het verwijderen van een overlay en de herlaad; de "cannot set webhook"-waarschuwing komt één keer in plaats van elke minuut.