Core et Types Génériques

Petit sujet pour les développeurs de plugins utilisant les types génériques.

A ma connaissance :

  • Mobile
  • Homebridge
  • Jeemate
  • Alexa
  • Google

Dernièrement en Core 4.2 nous avons :

  • Ajouté une page Outils / Types d’équipements qui permet de typer très facilement les équipements et leurs commandes.
    Typer les équipements n’a pas de réel utilité, toutefois tout était déjà dans le core (class, DB etc) et çà permet de ranger ses équipements, éviter la confusion, et permet la fonction de typage automatique. Bien sûr on peux mettre un generic de Prise sur un équipement typé Lumière etc. Alors quand on a déjà tous de paramétré çà ne sert pas à grand chose, mais pour la compréhension par des utilisateurs ne maitrisant pas les types génériques c’est beaucoup plus clair. Et çà évite d’avoir un tiroir avec tous les équipements dedans. A voir plus tard si on s’en sert ailleurs.
    Bien sûr, certains capteur comme des détecteurs de mouvements ont aussi des température etc. Rien n’empêche de typer l’équipement dans environnement, ou autre, çà n’a pas d’influence dans les plugins mais çà reste plus clair. Et forcément le auto types ne proposera pas grand chose puisqu’il ne peux que se baser sur le type d’equipement puis les type/subtype de commandes et enfin leur nom pour deduire quelque chose… Il y a toujours des cas particuliers …


    Doc avec la liste des génériques du Core

  • Une fonction à intégrer dans les plugins qui ont besoin d’ajouter leurs propres types génériques. Actuellement Jeemate l’a intégré et le Core affiche bien les types propre à Jeemate sur la page Types et la modale de config de commande.


    doc

  • La gestion des genericType() en déclencheur de scénario, expression, action. Mais ce n’est pas le sujet ici.

Hier, j’ai ajouté deux choses :

  • Un bouton ‹ Liste › sur la page type pour lister tout les types génériques du Core+Plugins installés. Plus complet que la doc, accessible facilement, et toujours actualisée …
  • Un champ commentaire sur les types generiques, permettant d’avoir une description de ceux ci. Ce n’est qu’une proposition, à voir si çà reste.
    ex:
'LIGHT_TOGGLE' => array(
			'name' => __('Lumière Toggle',__FILE__),
			'familyid' => 'Light',
			'family' => __('Lumière',__FILE__),
			'type' => 'Action',
			'subtype' => array('other'),
			'comment'=>__('Inverse l\'état on/off d\'une lumière.',__FILE__)),

Ce qui nous donne:

_____So …

Dans la liste des génériques du Core, 9 types ont plusieurs (2) subtype de commande possible. Exemple, LIGHT_STATE qui peut être 'subtype' => array('binary','numeric')

Donc si je comprend bien, un user peux mettre ce type sur une commande binaire ou numerique, du coup dans un plugin, comment traitez vous çà ?
Ne faudrai-t-il pas autoriser seulement un subtype de commande par generic ?
Ici on a LIGHT_STATE_BOOL possible que sur du binaire, donc LIGHT_STATE devrait être que numeric non ? Comme çà tous les plugins savent qu’elle type de données ils vont recevoir ?

De plus certains generics n’ont aucun subtype renseigné, est-ce logique / acceptable ??

Pour info les paramètres type et subtype d’un generic permettent dans Jeedom d’attribuer ce generic sur telle ou telle commande. Un generic de subtype binaire ne sera pas proposé sur une commande de subtype numeric, etc.

Ne serait-il pas opportun aussi de nettoyer un peu cette liste, ajouter certains type communément utilisés mais pas dans le Core, etc ?

Comment améliorer sans tout casser en 4.2 ? Quitte à intégrer certains choses en 4.3 et l’anticiper sur les plugins ?

2 « J'aime »

Bonjour,

Suite à un autre sujet je commence à comprendre l’utilité des types génériques… Bien que je n’en n’ai pas encore l’usage, mais ça devrait être un facilitateur pour la configuration de… tout (!), en particulier les app mobiles (galère à paramétrer) les assistants vocaux. Est-ce que le core gère aussi les génériques, genre il affiche différemment une prise et une ampoule?

Dans le principe, un type générique devrait être automatiquement associé à son widget correspondant, qui regroupe les infos & actions de l’équipement. Ainsi, un plugin qui crée un objet de type « clim » s’affiche automatiquement avec les actions et infos de base d’une clim. Tout en laissant au plugin la possibilité d’ajouter des infos & actions supplémentaires spécifiques si besoin, mais qui ne sont alors pas pris en charge par l’aspect « générique » de la clim.

Selon ce principe, il y a à mon avis beaucoup trop de types génériques. Et aussi on devrait voir le type générique appliqué sur l’objet dans la page principale de l’objet, et pas comme c’est fait aujourd’hui dans un panel d’options avancées d’une commande particulière. Je ne comprends pas comment une commande pourrait être d’un type générique si l’objet lui-même ne l’est pas ?

Dans cette optique donc, pas de sous-type générique, je n’en comprends pas l’utilité, mais par contre on pourrait affecter plusieurs types génériques à un objet. Par exemple c’est une prise et elle sait mesurer (type prise et electricity). Pour ma clim, ça serait un chauffage ET un ventilateur. Avec ce principe, on peut cumuler les infos & actions de 2 types génériques. Cela reste optionnel et n’empêche pas le plugin de définir ses propres infos & actions supplémentaires sur ma clim si besoin. Par contre, c’est bizarre que ce soit modifiable par l’utilisateur si c’est correctement géré par le plugin(?)

Par principe il faut virer les types « autre » et « générique » qui ne veulent rien dire, ça n’apporte rien un type générique « générique », ce ne doit être que de l’information supplémentaire apportée sur l’objet.

Je vais pas reprendre la suite du coup. Peu être un coup d’œil sur la doc avant de tout remettre en cause ? https://doc.jeedom.com/fr_FR/concept/summary

Vue le manque d’intérêt pour ce sujet j’ai supprimé hier les commentaires sur les generic. On ne va plus y toucher en 4.2 je pense.

Si on ne remet pas en cause l’existant, on n’avancera pas. En l’état les génériques ça ne sert à rien non ? Donc, il faut remettre en cause :smiley:
pas forcément pour la 4.2 si elle est fixée, mais remettre en cause pour la suite c’est important pour évoluer.

Ça sert à rien ? Je vois pas trop comment tu peux dire ça, c’est quand même osé…

Ça sert pour tous les plugins d’assistant vocaux, pour les applications mobile et en 4.2 pour les scénarios.

1 « J'aime »

@kiboost, je n avais pas repondu car je ne me sentais pas le « principal interessé ». Ou en tt cas le mieux placé pour repondre.
Mais j etais plutot aligné avec les propositions que tu faisais.

Visiblement l’explication qu on lui a donné dans l autre sujet dont il parle n’etait peut etre pas suffisament claire…

Je soulevais certains points dans ce sujet, entre autre savoir comment gérer les generiques sur une clim ?

Ainsi que où et comment discuter pour ajouter certains types inexistants aujourdhui, mais qui pourtant devrait etre interessant.

Ca me semblait pertinent d avoir un sujet dédié, mais si vous preferez on peut fusionner !?

1 « J'aime »

Pour clim je vois l’intérêt il y a déjà tout ceux pour le thermostat qui répondent parfaitement au besoin.

Par contre si d’autre sont manquants aucun soucis pour en discuter et faire l’ajout si nécessaire

J imagine du coup qu’il doit manquer un « pas » dans ta réponse…!? :thinking:

du coup … « parfaitement » je ne suis pas d’accord avec toi, désolé.
comme je l’indique dans l’autre sujet … perso ma clim (comme bcp j’imagine !?) souffle de l’air avec différentes vitesses possibles. Or il me semble que cet élément n’est pas disponible dans les générique thermostat !?
=> l’autre question que je posais dans ce cas : est ce qu’il est bon de « mélanger les genres » sur un même équipement !? (ie : thermostat + ventilateur)
comment est ce que l’appli mobile (ou autre) arrive à faire la différence entre un thermostat et une clim dans ce cas …?

ce sujet est donc le bon pour partager ces items pour en discuter ?!
je ne voudrai pas flooder le sujet de @kiboost , qui a un certain nombre de questions encore ouverte ici …

On peut en discuter la pas de soucis.

Et aucun problème pour mélanger les génériques c’est fait pour. Donc dans ton cas c’est thermostat pour les commandes thermostat et pour la commande de ventilation mettre ventilation. Tout simplement…

finalement pas si simple que ça :confused:
il existe (sur bcp de modèles) un mode de ventilation « automatique », qui ne match pas avec le type proposé info/numeric :
image

Je comprends pas auto c’est pas une vitesse c’est un mode donc faut prendre mode.

Dis différemment, tu peux récupérer (en info donc) les valeurs de la vitesse actuelle : 1, 2, 3, 4, 5, auto

(et dans mon cas, il ne s’agit que de string (low, medium, high, auto), pas de numeric)

Oui tu touches ici quelques limites des types génériques existants… mais ce n’est pas si simple non plus.

ces types génériques n’existent pas actuellement, mais imaginons que tu veuilles ajouter FAN_MODE étant une info/String et FAN_SET_MODE étant une Action/Default.

il faudra respecter quelques rêgles… (comme le font le plugin thermostat et le plugin alarme pour leurs modes) :

  1. la valeur de l’info devra contenir une chaine ayant le nom de la commande FAN_SET_MODE (pour pouvoir les lier)
  2. il faut une référence setValue dans la commande pour aller vers la commande FAN_MODE
  3. il faudra indique à tous les dev Homebridge, Alexa, GSH, Jeedom mobile, jeemate, JC etc qu’il y a un nouveau type et indiquer son fonctionnement afin que ceux-ci l’ajoutent à leur settings. (et il faudra indiquer qqpart si c’est fait ou pas, pour que les utilisateurs sachent que tel type n’est pas compatible avec telle interface)
  4. imaginons un autre FAN qui aurait « bas », « moyen », « haut », « auto », ou justement 1,2,3,4 comment on fait (mais ne pas confondre vitesse et mode en effet) ?

edit : j’ai modifié quelques phrases pour être plus clair

(nos msg se sont croisés. ma problématique là n’est pas sur un mode. mais ton exemple n’en reste pas moins intéressant)

c’est bien cette partie là qui m’ennuie ! :confused:
si on multiplie les sources (où l’info est dispo), et que chacun fait ce qu’il veut pour un « vraie générique » (j’exclus donc les type spécifique à un plugin, comme par exemple JEEMATE_WALLPAPER comme on voit sur le msg de kiboost) on ne va plus s’y retrouver …

d’où ma question initiale pour lister ce qu’il manque et créer un vrai « générique » utilisable par tous et surtout connus de tous.
Perso je ne trouve pas que mélanger les types (ou « torchons et serviettes » pour reprendre une fameuse expression) soit la meilleur façon de s’assurer qu’on reste ‹ générique ›.

les types génériques sont un problème complèxe et vraiment vaste !

je pense qu’il faut définir un groupe de travail là dessus, plutot que chacun faire sa popotte de son coté…

je travaille sur les types génériques depuis 4 ans maintenant, j’ai déjà défini pas mal de comportements que j’ai observé selon les plugins et les valeurs déjà indiquées à bcp d’endroits, on avait déjà commencé un travail de définition avec les dev de jeemate (@Thibaut_T et @scalz) . Mais je pense qu’il faut plus de têtes pour amener plus d’idées…

1 « J'aime »

visiblement on est donc alignés :slight_smile:

1 « J'aime »

Hello,

Quelques idées en vrac:

  • Est-ce qu’il ne faudrait pas / ne serait pas utile d’avoir des méthodes (js) équivalentes à (ou rajouter des options dans celles-ci) jeedom.cmd.getSelectModal et jeedom.eqLogic.getSelectModal pour récupérer les équipements et cmd ayant tel type générique? (pouvoir chercher sur un array serait mieux) plutot que de chercher sur base de type et subtype?
  • Pourrait-on avoir un type générique:
    • CAMERA_URL_SNAPSHOT en plus de CAMERA_URL (qui lui sert pour le flux vidéo)?
    • pour l’ouverture partielle/ piéton sur un portail? genre GB_OPEN_PARTIAL
    • pour le pré-déclenchement de l’alarme (appelé « statut immédiat » dans le plugin alarm) genre ALARM_TRIGGER ou ALARM_IMMED? (ALARM_STATE étant pour le déclenchement confirmé après la période de x secondes laissé pour désarmer)
1 « J'aime »

super idée !

même problématique, il faut que le « producteur » (plugin gérant un portail) puisse le mettre mais surtout qu’il soit supporté par les « consommateurs » (plugin d’interface)

Je suis bien d’accord (ainsi que ce que tu dis dans les posts précédents) et de fait même si les types génériques existent depuis longtemps et sont utiles depuis longtemps! (même si certains l’ignoraient :wink:) on sent bien qu’ici l’usage s’accélère.
Mais on a déjà dans ce post pas mal des personnes impliquées donc on va bien arriver à s’aligner non?