Instruction manual: How to install and launch PiPup on android?

I decided to create this post for the reason that PiPup installation documentation not detailed, has no illustrative examples of how to put. The instructions are clear only to the author of the Popup, and others need to spend a lot of time reading the forum branches in order to understand how it works.

Why do I need a PiPup?
Watch video

How to install PiPup on android?

  1. If you don’t have an addon SSH & Web Terminal, then you need to install it. Through this addon we will install on android PiPup

  2. Download all possible apk PiPup, as not all of them work correctly

  1. Create in the folder /config any folder with any name, for example distributive

  2. We put the downloaded file app-debug.apk in the distributiv folder and rename it with a clear name for ourselves
    image

  3. Open the addon terminal SSH & Web Terminal and do the following:

To work with ADB, you need to install android-tools with the command

apk --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ add android-tools

After installing android-tools, we can connect to android. We connect with the command

adb connect xxx.xxx.xxx.xxx

Specify the IP address of your android device. If successful, you will receive a notification about the successful connection

Install the package that we put in the distributive folder. I renamed the package app-debug.apk to pipup_webpopup_03.09.2022.apk. I repeat, you can give any package name, the main thing is to specify the path to this package and specify this name

adb install /config/distributiv/pipup_webpopup_03.09.2022.apk

Package installation was successful

The installed PiPup application should appear on android

Output a list of installed packages with the command. This is necessary in order to find our package and give permission for notification

adb shell pm list packages

We find a pipup in the list, there may be different names before the word pipup, it is important to find a pipup. PiPup may look like de.banner.pipup or nl.rogro82.pipup. In the screenshot, the package name is nl.rogro82.pipup

After learning the package name nl.rogro82.pipup* we give permission to display over all windows with the command

adb shell appops set nl.rogro82.pipup SYSTEM_ALERT_WINDOW allow

image

You can enable the display permission on top of all windows visually

That’s it, the installation is finished. Now we need to launch PiPup

Creating automation, where we create two androidtv.adb_command in action.

Create the first service androidtv.adb_command and specify the command

ps -ef | grep -v grep | grep pipup || am start nl.rogro82.pipup/.MainActivity

Create a second service androidtv.adb_command and specify the command

input keyevent KEYCODE_WAKEUP

Create a button in the auxiliary element. I have created an auxiliary button input_button.pipup and which is a trigger for calling pipup to the TV screen from android

Full automation

alias: PipUP
description: ""
trigger:
  - platform: state
    entity_id:
      - input_button.pipup
condition: []
action:
  - service: androidtv.adb_command
    data:
      command: >-
        ps -ef | grep -v grep | grep pipup || am start
        nl.rogro82.pipup/.MainActivity
    target:
      entity_id: media_player.android_tv_192_168_1_129
  - service: androidtv.adb_command
    data:
      command: input keyevent KEYCODE_WAKEUP
    target:
      entity_id: media_player.android_tv_192_168_1_129
  - service: rest_command.pipup
    data:
      title: Video Eyes
      message: Live broadcast of the doorbell
      width: 480
      height: 340
      url: http://192.168.1.86:8081
mode: single
  1. Add it to configuration.yaml or create a file with any name and throw it into packages
rest_command:
  pipup: # You can specify any name, for example, the name of your TV
    url: http://192.168.1.129:7979/notify #Specify the android IP address
    content_type: 'application/json'
    verify_ssl: false
    method: POST
    timeout: 20
    payload: >
        {
          "duration": {{ duration | default(20) }},
          "position": {{ position | default(0) }},
          "title": "{{ title | default('') }}",
          "titleColor": "{{ titleColor | default('#50BFF2') }}",
          "titleSize": {{ titleSize | default(10) }},
          "message": "{{ message }}",
          "messageColor": "{{ messageColor | default('#fbf5f5') }}",
          "messageSize": {{ messageSize | default(14) }},
          "backgroundColor": "{{ backgroundColor | default('#0f0e0e') }}",
          "media": { 
            "web": {
              "uri": "{{ url }}", 
              "width": {{ width | default(640) }},
              "height": {{ height | default(480) }}
            }
          }
        }
  1. To broadcast the video stream to PiPup without delay, we will use the motionEye addon . Add a camera to the motionEye addon and turn on the http stream, and then click on the Streaming URL, where a window with a link will open.

Copy it and paste it into rest_command.pipup

  - service: rest_command.pipup
    data:
      title: Video Eyes
      message: Live broadcast of the doorbell
      width: 480
      height: 340
      url: http://192.168.1.86:8081
Текст на русском (Text in Russian)

Этот пост я решил создать по той причине, что документация по установке PiPup не подробная, не имеет наглядных примеров как надо ставить. Инструкция понятна только самому автору PiPup, а другим нужно потратить уйму времени, почитать ветки форумов для того, чтобы понять как это работает.

Зачем нужен PiPup?
Смотрим видео

Как установить PiPup на android?

  1. Если у вас не стоит аддон SSH & Web Terminal, то нужно его установить. Через этот аддон мы будем устанавливать на android PiPup

  2. Скачать все возможные apk PiPup, так как не все они корректно работают

  1. Создаем в папке /config любую папку с любым именем, например distributiv

  2. Скачанный файл app-debug.apk кладем в папку distributiv и переименовываем для себя понятным именем
    image

  3. Открываем терминал аддона SSH & Web Terminal и делаем следующее:

Для работы ADB нужно установить android-tools командой

apk --update-cache --repository http://dl-3.alpinelinux.org/alpine/edge/testing/ add android-tools

После установки android-tools можем подключиться к android. Подключаемся командой

adb connect xxx.xxx.xxx.xxx

Указываем IP адрес вашего android устройства. Если успех, то получите уведомление об успешном подключении

Устанавливаем пакет который мы положили в папку distributiv. Я переименовал пакет app-debug.apk в pipup_webpopup_03.09.2022.apk. Повторюсь, имя пакета можете дать любое, главное нужно указать путь к этому пакету и указать это имя

adb install /config/distributiv/pipup_webpopup_03.09.2022.apk

Установка пакета прошла успешно

На android должно появиться установленное приложение PiPup

Выводим список установленных пакетов командой. Это нужно для того, чтобы найти наш пакет и дать разрешение для уведомления

adb shell pm list packages

Находим в списке pipup, до слова pipup могут быть разные имена, важно найти pipup. pipup может выглядеть de.begner.pipup или nl.rogro82.pipup. На скриншоте имя пакета nl.rogro82.pipup

Узнав имя пакета nl.rogro82.pipup мы даем разрешение на показ поверх всех окон командой

adb shell appops set nl.rogro82.pipup SYSTEM_ALERT_WINDOW allow

image

Вы можете включить разрешение на показ поверх всех окон визуально

Все, на этом установка закончена. Теперь нам нужно запустить PiPup

Создаем автоматизацию, где в действии создаем две службы androidtv.adb_command.

Создаем первую службу androidtv.adb_command и указываем команду

ps -ef | grep -v grep | grep pipup || am start nl.rogro82.pipup/.MainActivity

Создаем вторую службу androidtv.adb_command и указываем команду

input keyevent KEYCODE_WAKEUP

Создайте кнопку во вспомогательном элементе. Я создал вспомогательную кнопку input_button.pipup и которая является триггером для вызова pipup на экран ТВ с android

Полная автоматизация

alias: PipUP
description: ""
trigger:
  - platform: state
    entity_id:
      - input_button.pipup
condition: []
action:
  - service: androidtv.adb_command
    data:
      command: >-
        ps -ef | grep -v grep | grep pipup || am start
        nl.rogro82.pipup/.MainActivity
    target:
      entity_id: media_player.android_tv_192_168_1_129
  - service: androidtv.adb_command
    data:
      command: input keyevent KEYCODE_WAKEUP
    target:
      entity_id: media_player.android_tv_192_168_1_129
  - service: rest_command.pipup
    data:
      title: Видеоглазок
      message: Прямая трансляция дверного звонка
      width: 480
      height: 340
      url: http://192.168.1.86:8081
mode: single
  1. Добавляем в configuration.yaml или создаем файлик с любым именем и закидываем в packages
rest_command:
  pipup: # Имя можете указать любое, например название вашего ТВ
    url: http://192.168.1.129:7979/notify #Указываем IP адрес android
    content_type: 'application/json'
    verify_ssl: false
    method: POST
    timeout: 20
    payload: >
        {
          "duration": {{ duration | default(20) }},
          "position": {{ position | default(0) }},
          "title": "{{ title | default('') }}",
          "titleColor": "{{ titleColor | default('#50BFF2') }}",
          "titleSize": {{ titleSize | default(10) }},
          "message": "{{ message }}",
          "messageColor": "{{ messageColor | default('#fbf5f5') }}",
          "messageSize": {{ messageSize | default(14) }},
          "backgroundColor": "{{ backgroundColor | default('#0f0e0e') }}",
          "media": { 
            "web": {
              "uri": "{{ url }}", 
              "width": {{ width | default(640) }},
              "height": {{ height | default(480) }}
            }
          }
        }
  1. Для трансляции видеопотока на PiPup без задержки, будем использовать аддон motionEye. Добавьте в аддон motionEye камеру и включите http стрим, а после нажмите на Streaming URL, где у вас откроется окно со ссылкой.

Скопируйте ее и вставьте ее в rest_command.pipup

  - service: rest_command.pipup
    data:
      title: Video Eyes
      message: Live broadcast of the doorbell
      width: 480
      height: 340
      url: http://192.168.1.86:8081
6 Likes

We output the video stream from AgentDVR to PiPup. It turns out that AgentDVR has an API so you can output the stream directly to the PiPup, change the video resolution, change the background color

Read more about the AgentDVR API here

Below is an example of how to specify commands. We specify the IP address of the AgentDVR server, in my case it is 192.168.1.50:8090

http://192.168.1.50:8090/video.mjpg?oid=1&size=640x480&maintainAR=true&backColor=0,0,0

where:

  • http://192.168.1.50:8090 - AgentDVR server address
  • video.mjpg - we broadcast the video
  • oid=1 - camera number, where each camera has its own number 1.2.3.4.5 … Specify the number of the camera we need. If you need to output camera 3, then specify oid=3
  • size=640x480 - resolution of the output image
  • backColor=0,0,0 - background color, I specified black color

Knowing the path of video streaming from AgentDVR to PiPup, we can add the path here

  - service: rest_command.pipup
    data:
      title: Video Eyes
      message: Live broadcast of the doorbell
      width: 480
      height: 340
      url: http://192.168.1.50:8090/video.mjpg?oid=1&size=640x480&maintainAR=true&backColor=0,0,0
Текст на русском (Text in Russian)

Выводим видеострим с AgentDVR на PiPup. Оказывается у AgentDVR есть API благодаря чему можно выводить стрим прямо в PiPup, менять разрешение видео, менять цвет фона

Подробности про API AgentDVR читаем здесь

Ниже пример как нужно указывать команды. Указываем IP адрес сервера AgentDVR, в моем случае это 192.168.1.50:8090

http://192.168.1.50:8090/video.mjpg?oid=1&size=640x480&maintainAR=true&backColor=0,0,0

где:

  • http://192.168.1.50:8090 - адрес сервера AgentDVR
  • video.mjpg - транслируем видео
  • oid=1 - номер камеры, где у каждой камеры есть свой номер 1.2.3.4.5 … Указываем номер нужной нам камеры. Если нужно вывести камеру 3, то указываем oid=3
  • size=640x480 - разрешение выводимой картинки
  • backColor=0,0,0 - цвет фона, я указал черный цвет

Зная путь видеостриминга с AgentDVR на PiPup, можем добавить путь сюда

  - service: rest_command.pipup
    data:
      title: Video Eyes
      message: Live broadcast of the doorbell
      width: 480
      height: 340
      url: http://192.168.1.50:8090/video.mjpg?oid=1&size=640x480&maintainAR=true&backColor=0,0,0
1 Like

Much appreciated and a very well documented guide !

@DivanX10
One question, I very often experience that the notification is fired, but nothing is shown on the Nvidia Shield. It feels like the app is closed after xx amount of seconds (maybe minutes).

So I have to fire the command: ps -ef | grep -v grep | grep pipup || am start nl.rogro82.pipup/.MainActivity in order to be able to get the notifications again.
But every time I do this, this pipup software stops other apps. Is it not possible to open the software in the background and keep it alive somehow?

I think you’d better ask the author of this program himself

Sure - unfortunately it doesn’t look like there is much going on anymore.
Quick question though - in the video you have in your first post - how do you get the full transparency for the notification?

The video is not mine, but I think I need to play with the line

“titleColor”: “{{ titleColor | default(’#50BFF2’) }}” - responsible for the color of the title title
“backgroundColor”: “{{ backgroundColor | default(’#0f0e0e’) }}” - this is responsible for the background color

The code itself is listed above

1 Like

Is this works when i installed PipUp in android tv and playstore?

I tried to do like you manual says, but no luck so far.