[V4] Réflexion intégration télécommande

@Jean34, j’ai le Broadlink RM3 Pro Plus, et je le vois bien dans Discover devices.
Tu aurais peut-être des logs utiles ?
Sinon pour info, j’utilise la même librairie que celle du module de Gladys V3.

Salut, bon après reboot du pi il a bien trouvé ma rm pro 3,cool.
Ensuite je configure les boutons de la télécommande que je souhaite, en faisant le test via le bouton ça fonctionne bien, mais pas contre la télécommande ne s’affiche pas dans l’interface de Gladys. J’ai essayé vite fait hier soir et je ai pas pu me pencher dessus plus que ça… Et je part demain en vacance alors si j’ai 10mn je check les logs Gladys et navigateur pour te les fournir… J’ai bien sûr essayé sur Mozilla et chrome.

J’aime les bonnes nouvelles :slight_smile:
Tu as bien ajouté la box sur le dashboard ?

Salut
J’ai pris le temps de tester la partie telecommande tv
Ca fonctionne au poil :grin:
a part un detail pour ma tv il y a 2 bouttons differents pour l’allumage et l’extinction et rien n’est prevu sur la télécommande pour on dirait
Sinon tu prevois un modele type clim ? LA mienne est pilotable ( comme la plupart ) en Rf et avec gladys 3 je la pilotais avec le module broad

Merci

Edit en attente de l’autre modele j’utilise celle de la lamp en detournement pour la clim du coup ca fonctionne aussi :sweat_smile:

1 « J'aime »

Oui je pense bien l’avoir activée… Faut il configurer Tous les boutons pour la voire s’afficher ?

Non, un seul suffit.

Salut @AlexTrovato

Ou est est cette intégration ainsi que le service broadlink ?

Elle est a revoir entièrement pour tenter d’améliorer les devices télécommande. Ne sois pas pressé.

Je ne suis pas pressé ^^, je trouve juste dommage que les infos ne soit pas transmise sur chaque post :slight_smile:.
Quand je lis les commentaire on a l’impression qu’on est bien avancé et c’est infos date d’il y a 7 mois …
D’ou ma question.

En revanche tu ne m’as pas répondu par rapport au service Broadlink.
As tu fais quelque chose dessus ?

Lol ok, je n’avais pas vu que ta phrase avait 2 parties, car un service sur la v4 se nomme aussi intégration. Donc rien à évoluer, ni les features broadlink, ni sa préparation de fusion dans la v4.
D’après mes souvenirs, il était question de pouvoir gérer une lampe avec broadlink tel que les autres lampes sont gérée. Mais je pense que ce sera compliqué de faire correspondre une lampe classique avec une lampe télécommande IR.

Hello !

En me baladant dans l’integration MQTT pour ajouter mes sonos, je me suis rendu compte que des libelles lié a la télévision sont présente.

image

Du coup je voulais savoir si la reflexion avait aboutit a quelque chose ? et s’il est possible d’ajouter actuellement des intégrations tel que sony brava, lg webos, panasonic, broadlink etc ?

Broadlink en cours… pour les autres, amusez-vous :wink:

@pierre-gilles je reprends la discussion qu’on a commencé sur la PR z2m https://github.com/GladysAssistant/Gladys/pull/1383

La question est : quelle est le moyen le plus approprié pour stocker le mapping entre les valeurs des features Gladys et les valeurs (ici) à envoyer au module Broadlink ?

Aujourd’hui, dans le service Broadlink en cours de finalisation, j’utilise les device.params pour stocker les valeurs des actions des features.
Je me retrouve avec beaucoup de params liés aux features.

L’exemple que j’exlpoite dans le mode démo (sachant que les valeurs sont de longs code IR - chaînes de caractères non lisibles) :

{
  "name": "TV Remote",
  "model": "television",
  "selector": "broadlink-8008bda3ae44",
  "external_id": "broadlink:8008bda3ae44",
  "should_poll": false,
  "poll_frequency": null,
  "created_at": "2019-02-12T07:49:07.556Z",
  "updated_at": "2019-02-12T07:49:07.556Z",
  "features": [
    {
      "name": "Power",
      "external_id": "broadlink:8008bda3ae44:binary",
      "selector": "broadlink-8008bda3ae44-binary",
      "category": "television",
      "type": "binary",
      "min": 0,
      "max": 1,
      "read_only": false,
      "has_feedback": true
    },
    {
      "name": "Source",
      "external_id": "broadlink:8008bda3ae44:source",
      "selector": "broadlink-8008bda3ae44-source",
      "category": "television",
      "type": "source",
      "min": 0,
      "max": 1,
      "read_only": false,
      "has_feedback": true
    },
    {
      "name": "Channel",
      "external_id": "broadlink:8008bda3ae44:channel",
      "selector": "broadlink-8008bda3ae44-channel",
      "category": "television",
      "type": "channel",
      "min": 0,
      "max": 1,
      "read_only": false,
      "has_feedback": true
    }
  ],
  "params": [
    {
      "name": "peripheral",
      "value": "8008bda3ae44"
    },
    {
      "name": "code_binary-1",
      "value": "POWER"
    },
    {
      "name": "code_source",
      "value": "SOURCE"
    },
    {
      "name": "code_channel-0",
      "value": "CHANNEL_0"
    },
    {
      "name": "code_channel-1",
      "value": "CHANNEL_1"
    },
    {
      "name": "code_channel-2",
      "value": "CHANNEL_2"
    },
    {
      "name": "code_channel-3",
      "value": "CHANNEL_3"
    },
    {
      "name": "code_channel-4",
      "value": "CHANNEL_4"
    },
    {
      "name": "code_channel-5",
      "value": "CHANNEL_5"
    },
    {
      "name": "code_channel-6",
      "value": "CHANNEL_6"
    }
  ]
}

Voila l’état des lieux.


Maintenant je me demande s’il ne serait pas lisible de rapprocher ses valeurs aux features plutôt qu’aux devices, par exemple :

{
  "name": "TV Remote",
  "model": "television",
  "selector": "broadlink-8008bda3ae44",
  "external_id": "broadlink:8008bda3ae44",
  "should_poll": false,
  "poll_frequency": null,
  "created_at": "2019-02-12T07:49:07.556Z",
  "updated_at": "2019-02-12T07:49:07.556Z",
  "features": [
    {
      "name": "Power",
      "external_id": "broadlink:8008bda3ae44:binary",
      "selector": "broadlink-8008bda3ae44-binary",
      "category": "television",
      "type": "binary",
      "min": 0,
      "max": 1,
      "read_only": false,
      "has_feedback": true,
      "value_mapping": {
        "1": "POWER"
      }
    },
    {
      "name": "Source",
      "external_id": "broadlink:8008bda3ae44:source",
      "selector": "broadlink-8008bda3ae44-source",
      "category": "television",
      "type": "source",
      "min": 0,
      "max": 1,
      "read_only": false,
      "has_feedback": true,
      "value_mapping": {
        "default": "SOURCE"
      }
    },
    {
      "name": "Channel",
      "external_id": "broadlink:8008bda3ae44:channel",
      "selector": "broadlink-8008bda3ae44-channel",
      "category": "television",
      "type": "channel",
      "min": 0,
      "max": 1,
      "read_only": false,
      "has_feedback": true,
      "value_mapping": {
        "0": "CHANNEL_0",
        "1": "CHANNEL_1",
        "2": "CHANNEL_2",
        "3": "CHANNEL_3",
        "4": "CHANNEL_4",
        "5": "CHANNEL_5",
        "6": "CHANNEL_6"
      }
    }
  ],
  "params": [
    {
      "name": "peripheral",
      "value": "8008bda3ae44"
    }
  ]
}

Parlons en :smiley:

Je reprend ma remarque de la PR du coup: pourquoi ce n’est pas stocké dans le code ?

Comment fonctionne le broadlink ?

@AlexTrovato Je viens de voir ton message sur Github, je comprend mieux du coup.

Question bête, pourquoi ce n’est pas le job du « external_id » ?

Dans la plupart des intégrations, le external_id c’est l’identifiant « externe ».

Après bon, du coup ça présuppose qu’une feature = un message IR en fait… pas fou.

Ok non du coup ( je réfléchis en tapant :stuck_out_tongue: )

En fait ce qui me fait peur à l’idée de créer un mapping dans device_feature, c’est 2 choses :

  • Pour l’instant j’ai un peu l’impression qu’on a pas encore eu beaucoup de cas qui nécessitent ce genre de mapping dynamique, et je veux être sûr de bien comprendre tous les cas qu’on peut avoir, avant de mettre en place une solution générique (car quand on code un fonctionnement DB dans SQLite, pas de retour en arrière possible).
  • Les champs JSON dans la DB créé par les intégrations, ça me fait très très peur :smiley: Il faut que côté core la validation soit ultra béton. D’ailleurs en y pensant c’est pas forcément à stocker en mode JSON, ça peut-être plutôt stocké en relationnel (device_feature_mapping).

Si c’est juste ça qui te fait peur, je vois pas le problème de mon côté.

Pour moi la principale raison de passer à un stockage par feature, ce serait si on a des cas de collision entre feature (si une feature A et une feature B ont besoin d’un même mapping mais avec des valeurs différentes), sinon je pense que le stockage dans les params est le plus adapté, et le plus robuste ( c’est stocké proprement dans du relationnel, c’est bétonné côté core )

C’est vrai que modifier la DB, c’est pas le top.
Et en JSON encore moins…

Restons dans ce mode pour le moment, si le besoin se rend plus fort, on y réfléchira à nouveau.

1 « J'aime »

Ça me va !

Est ce que tu prévois de rajouter des catégories, comme pour les clims, ampoules, ???
Ou on pourra le faire dans Gladys ?
Comment cela va se matérialiser pour une télécommande de clim avec

  • température +
  • température -
  • ventilateur +
  • ventilateur -
  • mode: clim, chauffage, ventilation, …

Je pense qu’il a pensé plus média style tv.
A mon avis ce que tu demande c’est un autre besoin :grinning:

1 « J'aime »