Comme annoncé, ce forum est passé en lecture seule au 1er janvier 2020. Désormais nous vous invitons à vous rendre sur notre nouvelle page communauté :
Image

A très bientôt !

Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

nordix
Actif
Messages : 858
Inscription : 02 déc. 2014, 13:29

Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par nordix » 30 déc. 2018, 17:50

J'avais posté ce message dans le forum Multimédia avant de m'aperçevoir qu'il existait un forum spécifiquement pour cela. Voici mon message original donc
Je viens proposer à la communauté de dev de Jeedom de plancher sur un un emulateur de Roku comme celui que Home Assistant propose:

https://community.home-assistant.io/t/e ... mony/21491

Cet émulateur étant vu et intégéré par les télécommandes multimédia qui sont capables de commander un Roku via son API en IP, telle que la Harmony HUB ou Premium.

Le gros avantage est que maintenanant avec un tel plugin, la télécommande Harmony devient une vraie télécommande de domotique en même temps, permettant de commander n'importe quel module.
Le plugin agirait dans ce cas comme un proxy entre la télécommande Harmony et les différents modules gérés par Jeedom. On pourrait associer tous les boutons du Roku émulé de la télécommande, vus comme des évnements, avec des commandes ou des scénarios; Bref une super intégration d'une télécommande pour tout faire, lancer un film sur Netflix par exemple et tamiser les lumières par la suite.

La Harmony Hub effectivement intrègre quelques objets domotiques comme la Hue, mais celle se limite à des scénarios HUE seulement et ne propose que 2 boutons pour cela.
Je suis persuadé que les possesseurs de télécommandes Harmony comme moi et ils sont nombreux, seraient fortement interréssés par un tel plugin.
Et pour commencer, une grosse partie du dev est faite pour l'émulateur, puisque celui-ci a été dévelopé sous forme d'API:

https://gitlab.com/mindig.marton/emulated_roku

Bref, ce serait un gros plus pour la plateforme Jeedom et ses multiples capacités d'intégration déjà existantes.

nordix
Actif
Messages : 858
Inscription : 02 déc. 2014, 13:29

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par nordix » 30 déc. 2018, 18:48

Entre temps, donc entre hier et aujourd'hui, j'ai développé un semblant d'intégration sous forme de script que l'on peut lancer comme un daemon au besoin. Voici les étapes pour cela, en espérant qu'un dev de la communauté s'y interresse et puisse l'intégrer comme plugin.

Voici donc mon Tuto, le tout fonctionne Nickel en passant:

Requis:

- Python 3.5 minimum

Procédure:

0- Créer un objet virtuel via le plugin virtuel avec une seule commande de type Info/Autre. Notez la valeur de l'ID de la commande.
Screenshot 2018-12-30 at 12.05.54.png
Screenshot 2018-12-30 at 12.05.54.png (56.52 Kio) Consulté 4029 fois
1- Installer l'API à la version 0.1.4, les versions ultérieures sont dans un mode que je n'arrive pas à intégrer:
pip3 install 'emulated-roku==0.1.4'

2- Installer les modules requis:
pip3 install urllib.request asyncio

3- Créer ce script (roku.py par exemple) dans un répertoire accessible à l'usager www-data si vous voulez l'executer comme daemon, sinon n'importe quel autre répertoire:

Remplacer les valeurs xx.xx.xx.xx et par l'IP de votre Jeedom, la valeur de aaabbbcccddd par la clé API de votre box et zzzzz avec la valeur de l'ID du virtuel crée au début. Vous pouvez aussi mettre le script en mode débug à la ligne 11 comme ceci: logging.basicConfig(level=logging.DEBUG) le temps de tester.

Code : Tout sélectionner

#!/usr/bin/python3
"""Example script for using the Emulated Roku api."""

if __name__ == "__main__":
    import socket
    import asyncio
    import logging
    import emulated_roku
    import os
    import urllib.request
    
    logging.basicConfig(level=logging.INFO)

    loop = asyncio.get_event_loop()

    servers = []

    DEFAULT_HOST_IP =  "xx.xx.xx.xx"
    DEFAULT_LISTEN_PORTS = "8060"
    JEEDOM_URL = "http://xx.xx.xx.xx/core/api/jeeApi.php?apikey=aaabbbbccccddd&type=virtual&id=zzzzz&value="
    
    DEFAULT_UPNP_BIND_MULTICAST = True

    class SENDRokuCommandHandler(emulated_roku.RokuCommandHandler):
        """Emulated Roku command handler."""
        def send(self, event, usn, message):
            urllib.request.urlopen(JEEDOM_URL + key)

        def on_keydown(self, roku_usn, key):
            urllib.request.urlopen(JEEDOM_URL + key)

        def on_keyup(self, roku_usn, key):
            urllib.request.urlopen(JEEDOM_URL + key)

        def on_keypress(self, roku_usn, key):
            print(roku_usn)
            urllib.request.urlopen(JEEDOM_URL + key)

        def launch(self, roku_usn, app_id):
            urllib.request.urlopen(JEEDOM_URL + app_id)


    @asyncio.coroutine
    def init(loop):
        handler = SENDRokuCommandHandler()
        discovery_endpoint, roku_api_endpoint = emulated_roku.make_roku_api(
            loop=loop,
            handler=handler,
            host_ip=DEFAULT_HOST_IP,
            listen_port=DEFAULT_LISTEN_PORTS,
            advertise_ip=DEFAULT_HOST_IP,
            advertise_port=DEFAULT_LISTEN_PORTS,
            bind_multicast=DEFAULT_UPNP_BIND_MULTICAST) 
            
        discovery_transport, _ = yield from discovery_endpoint
        api_server = yield from roku_api_endpoint

        servers.append(discovery_transport)
        servers.append(api_server)

    loop.run_until_complete(init(loop))

    loop.run_forever()
4- Ajouter un attribut executable via chmod+x roku.py

5- lancer le script et démmarrez ensuite l'application Harmony sur votre Android ou Iphone.

6- Ajoutez un dispositif Multimédia de type Roku modèle Roku 4. L'application devrait le trouver facilement.

7- Créer une activité Harmony avec comme seul dispositif, le Roku précédemment ajouté. Cette étape est optionnelle et n'est nécessaire que si vous avez comme moi une télécommande de type Companion qui ne peut executer que des commandes via une activité.

8 Créer finalement un scénario dans Jeedom de type provoqué avec la commande du virtuel crée au début comme déclencheur et qui execute des commande selon la valeur du bouton pressé sur la Harmony:
Screenshot 2018-12-30 at 12.34.33.png
Screenshot 2018-12-30 at 12.34.33.png (117 Kio) Consulté 4029 fois
Les valeurs possibles recupérées via le virtuel et pouvant êytre utilisées dans le scénario sont (selon la télécommande):

Code : Tout sélectionner

KEY_HOME = 'Home'
    KEY_REV = 'Rev'
    KEY_FWD = 'Fwd'
    KEY_PLAY = 'Play'
    KEY_SELECT = 'Select'
    KEY_LEFT = 'Left'
    KEY_RIGHT = 'Right'
    KEY_DOWN = 'Down'
    KEY_UP = 'Up'
    KEY_BACK = 'Back'
    KEY_INSTANTREPLAY = 'InstantReplay'
    KEY_INFO = 'Info'
    KEY_BACKSPACE = 'Backspace'
    KEY_SEARCH = 'Search'
    KEY_ENTER = 'Enter'
    KEY_FINDREMOTE = 'FindRemote'
    KEY_VOLUMEDOWN = 'VolumeDown'
    KEY_VOLUMEMUTE = 'VolumeMute'
    KEY_VOLUMEUP = 'VolumeUp'
    KEY_POWEROFF = 'PowerOff'
    KEY_CHANNELUP = 'ChannelUp'
    KEY_CHANNELDOWN = 'ChannelDown'
    KEY_INPUTTUNER = 'InputTuner'
    KEY_INPUTHDMI1 = 'InputHDMI1'
    KEY_INPUTHDMI2 = 'InputHDMI2'
    KEY_INPUTHDMI3 = 'InputHDMI3'
    KEY_INPUTHDMI4 = 'InputHDMI4'
    KEY_INPUTAV1 = 'InputAV1'

Certe ce n'est pas très optimal comme intégration et pour cette raison je pense qu'un plugin serait mieux adapté. Par exemple au lieu de passer par un scénario, on pourrait directement via un plugin contenant toutes les commandes possibles, executer des commandes via l'option native dans Jeedom ou déclencher d'autres scénarios.

En attendant, certains je crois trouveront une utilité à cette petite intégration.

Avatar de l’utilisateur
lunarok
Actif
Messages : 6704
Inscription : 08 août 2014, 12:48
Localisation : Anjou

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par lunarok » 01 janv. 2019, 21:43

Hello,

J'ai un plugin en beta sur le market a testé.
Les commandes sont mappées comme des infos binaires qui passent à 1 quand activées.
Mais de base, elles permettent de saisir des actions et scénarios en configuration qui sont éxécutés directement.
Mon Blog | Xiaomi Home
Pour contribuer au développement des plugins (don ou achat de matériel) : Paypal
Aides nous à t'aider : les logs, détails du soucis, la doc, recherche sur le forum ...
PS : pas de support par MP, je ne répondrais pas

Idaho947
Actif
Messages : 1281
Inscription : 30 mai 2017, 21:36

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par Idaho947 » 05 janv. 2019, 12:20

Bonjour Lunarock,

Je souhaiterais testé ton plug-in. J'ai juste du mal a comprendre comment ma télécommande Harmony Elite peut intéragir avec jeedom une fois le module installé ?

Avatar de l’utilisateur
lunarok
Actif
Messages : 6704
Inscription : 08 août 2014, 12:48
Localisation : Anjou

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par lunarok » 05 janv. 2019, 13:28

Depuis ton harmony tu dois pouvoir lancer un scan a la recherche d'équipements compatibles. Il va trouver un Roku sur l'iPhone de jeedom
Mon Blog | Xiaomi Home
Pour contribuer au développement des plugins (don ou achat de matériel) : Paypal
Aides nous à t'aider : les logs, détails du soucis, la doc, recherche sur le forum ...
PS : pas de support par MP, je ne répondrais pas

Idaho947
Actif
Messages : 1281
Inscription : 30 mai 2017, 21:36

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par Idaho947 » 05 janv. 2019, 14:24

Ok je vois de quoi tu parle. je tente ça merci!

Idaho947
Actif
Messages : 1281
Inscription : 30 mai 2017, 21:36

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par Idaho947 » 06 janv. 2019, 11:09

Ca fonctionne nickel. Par contre pourquoi je ne vois pas les commande Power on, sleep et certaine autre dans mon objet. Car elle n'ont pas de commande API ?

Avatar de l’utilisateur
lunarok
Actif
Messages : 6704
Inscription : 08 août 2014, 12:48
Localisation : Anjou

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par lunarok » 06 janv. 2019, 11:44

Oui c'est que c'est pas dans l'API. D'ailleurs ces boutons je les vois pas sur robyte (l'appli télécommande que j'utilise pour tester, la Smart remote ne trouvant rien elle)
Mon Blog | Xiaomi Home
Pour contribuer au développement des plugins (don ou achat de matériel) : Paypal
Aides nous à t'aider : les logs, détails du soucis, la doc, recherche sur le forum ...
PS : pas de support par MP, je ne répondrais pas

Idaho947
Actif
Messages : 1281
Inscription : 30 mai 2017, 21:36

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par Idaho947 » 06 janv. 2019, 12:00

Ok. en tout cas merci pour le boulot !

nordix
Actif
Messages : 858
Inscription : 02 déc. 2014, 13:29

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par nordix » 07 janv. 2019, 13:43

@Lunarok, merci pour le taf! Je m'absente 5 jours du topic et une révolution a eu lieu :D

Bref je vais pouvoir tester, peux-tu m'envvoyer un lien pour télécharger ton plugin?

Merci

nordix
Actif
Messages : 858
Inscription : 02 déc. 2014, 13:29

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par nordix » 07 janv. 2019, 13:48

Pour le commandes disponibles, seules celles supportée par le roku existent sur Harmony. Je ne pense pas exemple que la commande Power ou sleep existe sur Roku par exemple. Ce sont des fonctions qui ne sont pas supportées par le matériel et donc inéxistantes sur Harmony.
Par contre si vous n'avaez pas de Roku physiquement connu du hub, il sera possible de mapper des commandes liées à des applications. Il y a 10 applications virtuelles dans l'API. Bref assez de commandes pour remplir les boutons de la télécommande ou presque.

nordix
Actif
Messages : 858
Inscription : 02 déc. 2014, 13:29

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par nordix » 10 janv. 2019, 03:46

Voilà c'est testé et ça fonctionne Nickel, les commandes binaires sur les appels sont parfaites pour ce type de besoin,

Merci encore pour le boulot!

jackasscouille
Timide
Messages : 8
Inscription : 22 nov. 2015, 11:35

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par jackasscouille » 16 janv. 2019, 22:38

salut ton plugin fonctionne t' il sur rpi3 merci?

Avatar de l’utilisateur
lunarok
Actif
Messages : 6704
Inscription : 08 août 2014, 12:48
Localisation : Anjou

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par lunarok » 16 janv. 2019, 23:00

Pas de raison qu'il fonctionne moins sur Pi que sur autre chose
Mon Blog | Xiaomi Home
Pour contribuer au développement des plugins (don ou achat de matériel) : Paypal
Aides nous à t'aider : les logs, détails du soucis, la doc, recherche sur le forum ...
PS : pas de support par MP, je ne répondrais pas

jeromebri
Timide
Messages : 134
Inscription : 08 févr. 2018, 12:01

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par jeromebri » 17 janv. 2019, 20:49

Bonjour. Je viens de voir que le plugin est dispo sur le market.
Par contre je ne visualise pas du coup à quoi ça sert...
En gros, un Roku c'est comme une box Android, on installé des applis dessus (Netflix, Prime, Plex, YouTube...). Et on l'a branché sur la TV et on regarde.
Là, le plugin sur Jeedom il va servir à quoi ? Il faut un Roku et il va le contrôler ?
Il faut pas de Roku? Dans ce cas là que peut on faire avec le plugin ?
J'ai regardé la documentation, mais ça ne me parle pas...
Merci

Avatar de l’utilisateur
lunarok
Actif
Messages : 6704
Inscription : 08 août 2014, 12:48
Localisation : Anjou

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par lunarok » 17 janv. 2019, 22:17

En gros : tu appuies sur lecture et bien tu peux déclencher tout ce que jeedom sait faire
Mon Blog | Xiaomi Home
Pour contribuer au développement des plugins (don ou achat de matériel) : Paypal
Aides nous à t'aider : les logs, détails du soucis, la doc, recherche sur le forum ...
PS : pas de support par MP, je ne répondrais pas

jackasscouille
Timide
Messages : 8
Inscription : 22 nov. 2015, 11:35

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par jackasscouille » 18 janv. 2019, 00:08

en gros si j'ai tout compris pour controler jeedom avec une harmony elite, il n'y a pas d'autres solutions???

Idaho947
Actif
Messages : 1281
Inscription : 30 mai 2017, 21:36

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par Idaho947 » 18 janv. 2019, 12:20

Si tu a un périphérique qui transfère les commande infrarouge à jeedom. C'est du enocean.

jeromebri
Timide
Messages : 134
Inscription : 08 févr. 2018, 12:01

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par jeromebri » 18 janv. 2019, 15:58

Ok. Donc le plugin permet de contrôler les actions de Jeedom avec une télécommande Harmony et un Hub.
Du coup rien à voir avec les clefs de streaming Roku.
Et si je prends le plugin, suis obligé de faire la dernière mise à jour du plugin Harmony car je ne l'ai pas fait pour éviter les soucis rencontrés dernièrement.
Merci

Avatar de l’utilisateur
lunarok
Actif
Messages : 6704
Inscription : 08 août 2014, 12:48
Localisation : Anjou

Re: Idée pour le dev d'un nouveau plugin - Emulateur de ROKU

Message par lunarok » 18 janv. 2019, 16:33

Non les deux ne sont pas liés. Pas de dépendances.
Moi je me sers du plugin avec une télécommande Android pour Roku par exemple. J'ai pas de harmony (mais j'y songe)
Mon Blog | Xiaomi Home
Pour contribuer au développement des plugins (don ou achat de matériel) : Paypal
Aides nous à t'aider : les logs, détails du soucis, la doc, recherche sur le forum ...
PS : pas de support par MP, je ne répondrais pas

Répondre

Revenir vers « Suggestions de Plugins »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 0 invité