MediaPlayer - Android Intent VLC (Android TV et App Home Assistant)

Bonsoir,

La questions semble compliquée, alors je la fait simple et je laisse le détails en réponse pour ceux que cela intéresserait.

Mon Code

action:
  - variables:
      upnpPath: "{{trigger.data['upnp']}}"
      upnpServer: http://192.168.XXX.XXX:AAAAA/FreeMi/
  - service: notify.mobile_app_mr_oneplus_t8_kb2003
    data:
      message: command_activity
      data:
        intent_package_name: org.videolan.vlc
        intent_class_name: org.videolan.vlc.gui.video.VideoPlayerActivity
        intent_action: android.intent.action.VIEW
        intent_uri: "{{ '\\''+ upnpServer + '%2F0' + upnpPath + '%2F0' + '\\''}}"
        intent_type: video/*

Mon problème

L’intent ne charge pas l’uri envoyée, il ouvre bien vlc mais il ne fait que réouvrir le dernier media chargé. (Uri générée et testée dans vlc directement >> marche bien.)

Si quelqu’un à une piste , je suis preneur car j’ai déjà tenté une 50aine d’intent et celle-ci est la plus proche d’un résultat concluant mais ce n’est pas le cas …

Par avance merci

Très bonne journée à tous

Ma configuration


System Information

version core-2024.3.0
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.12.2
os_name Linux
os_version 6.1.73-haos-raspi
arch aarch64
timezone Europe/Paris
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 5000
Installed Version 1.34.0
Stage running
Available Repositories 1405
Downloaded Repositories 9
HACS Data ok
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 12.0
update_channel stable
supervisor_version supervisor-2024.02.1
agent_version 1.6.0
docker_version 24.0.7
disk_total 55.7 GB
disk_used 9.0 GB
healthy true
supported true
board rpi4-64
supervisor_api ok
version_api ok
installed_addons Home Assistant Google Drive Backup (0.112.1), Samba share (12.3.0), Studio Code Server (5.15.0), Let’s Encrypt (5.0.15), Cloudflared (5.1.5), Advanced SSH & Web Terminal (17.2.0), Mosquitto broker (6.4.0), Node-RED (17.0.7)
Dashboards
dashboards 1
resources 4
views 21
mode storage
Recorder
oldest_recorder_run 2 mars 2024 à 01:15
current_recorder_run 9 mars 2024 à 02:52
estimated_db_size 82.80 MiB
database_engine sqlite
database_version 3.44.2
___

Version longue

(pour les plus motivés et si cela peut servir) :wink:

Bonjour à tous,

Objectif et ce qui marche

J’essaye de piloter des players vlc pour lire des flux video via un server local DLNA (FreeMi). Par contre, même si cela marche bien en ouvrant vlc et en navigant jusqu’au dossier fichier souhaité, je cherche à lancer cela à partir d’une page web de gestion (dev perso) qui est chargé dans un panel.

la page web est géré en ajax avec derrière un script php pour faire une requête curl et ainsi générer un call sur un webhooks avec les data voulues que voici

WeebHook Android TV : (utilise le service android debug bridge)

alias: WebHook_media_Base_content_To_playOnTV
description: ...
trigger:
  - platform: webhook
    allowed_methods:
      - POST
    local_only: false
    webhook_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
condition: []
action:
  - variables:
      upnpPath: "{{trigger.data['upnp']}}"
      upnpServer: http://192.168.XXX.XXX:AAAAA/FreeMi/
      upnpRender: org.videolan.vlc/org.videolan.vlc.gui.video.VideoPlayerActivity
      upnpCmd: >-
        {{ ' am start -a android.intent.action.VIEW -d ' +'\''+ upnpServer + '%2F0'
        + upnpPath + '%2F0' + '\''+ ' -n ' + upnpRender }}
  - service: androidtv.adb_command
    data:
      command: am force-stop org.videolan.vlc
    target:
      entity_id: media_player.android_tv_192_168_xxx_xxx
    enabled: true
  - delay:
      hours: 0
      minutes: 0
      seconds: 2
      milliseconds: 0
    enabled: true
  - service: androidtv.adb_command
    data:
      command: "{{upnpCmd}}"
    target:
      entity_id: media_player.android_tv_192_168_xxx_xxx
    enabled: true
mode: single

WeebHook Android VLC sur smartphone : (utillise l’app homeassistant sur le portable)

alias: WebHook_media_Base_content_To_playOnPhone
description: ...
trigger:
  - platform: webhook
    allowed_methods:
      - POST
    local_only: false
    webhook_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
condition: []
action:
  - variables:
      upnpPath: "{{trigger.data['upnp']}}"
      upnpServer: http://192.168.XXX.XXX:AAAAA/FreeMi/
      upnpRenderUser: "{{trigger.data['user']}}"
      upnpRenderPackage: org.videolan.vlc
      upnpRenderAction: android.intent.action.VIEW
      upnpRenderClass: org.videolan.vlc.gui.video.VideoPlayerActivity
      upnpRenderURI: "{{ '\\''+ upnpServer + '%2F0' + upnpPath + '%2F0' + '\\''}}"
      upnpRenderType: video/*
  - service: persistent_notification.create
    metadata: {}
    data:
      title: WebHook MediaBase Phone (Debug notif)
      message: "{{upnpRenderUser}}"
    enabled: true
  - if:
      - condition: template
        value_template: "{{upnpRenderUser == 2 }}"
    then:
      - service: persistent_notification.create
        metadata: {}
        data:
          title: WebHook MediaBase Phone MR (Debug notif)
          message: "{{upnpRenderURI}}"
        enabled: true
      - service: notify.mobile_app_mr_oneplus_t8_kb2003
        data:
          message: command_activity
          data:
            intent_package_name: "{{upnpRenderPackage}}"
            intent_class_name: "{{upnpRenderClass}}"
            intent_action: "{{upnpRenderAction}}"
            intent_uri: "{{upnpRenderURI}}"
            intent_type: "{{upnpRenderType}}"
        enabled: true
mode: single

(le upnpRenderUser et le if permette juste de passer une variable d’identification de l’utilisateur pour choisir le portable devant lancer vlc)

jusque la tout va très bien… mais … et oui il en faut bien un …

Mon problème

L’intent fonctionne parfaitement sur la TV : lancement vlc, connexion au media, lecture … rien à redire.
Par contre l’intent sur le portable ne me charge pas l’uri envoyée, il ouvre bien vlc mais il ne fait que réouvrir le dernier media chargé.
J’ai testé en copiant directement l’uri générée et transmise dans vlc et dans ce cas tout marche bien.

Si quelqu’un à une piste , je suis preneur car j’ai déjà tenté une 50aine d’intent et celle-ci est la plus proche d’un résultat concluant mais ce n’est pas le cas …

Par avance merci

Très bonne journée à tous