laurent a écrit :On peut déjà, en l'état, quasiment tout faire.
C'est tout à fait vrai. Parfois de manière fort tordue, mais c'est vrai.
Repensant à ce que tu disais sur le fait que les variables peuvent être déclarées dans le script du connecteur, j'ai déclaré une fonction dans ce même script, espérant qu'elle serait disponible pour tous les équipements du connecteur. Malheureusement ca n'a pas l'air d'être le cas. Dommage car cela aurait pu être bien pratique.
Par contre, dans l'état actuel, le fait de pouvoir modifier une variable appartenant à un autre équipement du même connecteur pourrait en définitive avoir un intérêt mais sincèrement je préfèrerais pouvoir interagir directement sur un autre équipement depuis du code JS.
D'ailleurs voici une liste de choses (non-exhaustive) qu'il serait bon d'améliorer pour le moteur JS de LD:
1) chaque équipement JS d'un même connecteur doit pouvoir avoir des variables/états qui lui sont propres, quitte à utiliser le terme de "privé" et "public" comme cela a été fait pour les variables des modules logiques
2) avoir de nouveaux types de variables/états, notamment "booléen" et, si possible, array. Bien entendu intégrer le support ces types dans le WISEE/WIDO et les automates
3) pouvoir accéder aux éléments des variables/états de type "liste" depuis le WISEE/WIDO et les automates. Ce type de variable est un peu tordu à gérer (ce n'est pas un vrai "array") mais je l'ai déjà détourné des dizaines de fois de son utilité primaire de "gestion de liste de lecture" pour y stocker (et afficher !) 1000 infos différentes (qui n'ont rien à voir avec de l'audio). Le principal problème étant l'exploitation d'un élément particulier de la variable "liste".
Tiens à propos du widget "liste", un truc qui serait vraiment bien c'est que lorsqu'on change d'écran et que le nouvel écran contient un widget liste, la ligne sélectionnée dans ce widget soit directement visible (par ex si c'est la ligne 18 sur 40 et que le widget n'affiche que 10 lignes à la fois, le widget "scrolle tout seul" jusque la ligne 18 de manière à l'afficher en première position).
4) trouver un moyen pour pouvoir piloter un équipement depuis un autre équipement, donc accéder à ses commandes, mais aussi pouvoir lire ses états, à travers du code JS. L'idéal serait qu'on puisse le faire quel que soit le type d'équipement (JS ou pur KNX !) mais si c'est juste pour les équipements JS ce sera déjà un GRAND bond :). Pour l'instant je le fais en faisant du "ping-pong" entre le JS et les modules logiques mais ce serait bien de pouvoir éviter ca.
5) Avoir la possibilité d'ajouter du code et des états JS même pour un équipement classique, notamment KNX. Cela permettrait de coder des comportements complexes sans passer par le module logique.
6) Intégrer des déclencheurs dans le moteur JS (ceci afin de ne plus devoir le faire dans le module logique). Non, je n'ai rien contre le module logique en soi :) mais le champ des possibilités est beaucoup plus grand en JS.
7) le moteur JS devrait au mieux être réellement multitâche (ce qu'il n'a pas l'air d'être d'après les quelques tests que j'ai pu faire) et à défaut utiliser une file d'attente d'exécution (ce qu'il a l'air de faire pour le moment du moins pour les événements très rapprochés).
8) Avoir la possibilité d'utiliser des "librairies" de fonctions ou au moins une "réserve" de fonctions communes faites maison sans devoir les recopier dans chaque commande d'équipement.
9) Avoir un éditeur de code JS digne de ce nom, avec au minimum une police de caractères de taille fixe (genre Lucida Console ou Courier) et une zone d'édition plus grande l'actuelle (plein écran ou presque ?). Le fin du fin serait du "syntax highlighting" bien sur, mais sincèrement ce n'est pas nécessaire à ce stade.
10) Permettre un copier/coller d'équipements JS qui copie les scripts de commande et les variables
Je sais ca fait beaucoup ... :D
Mais apparemment je ne suis pas le seul à deviner la puissance que le JS pourrait libérer. A l'instar d'un Home Center de Fibaro (qui utilise du Lua) ou d'un EibPort de Babtec (qui utilise Java), la Lifedomus aurait (enfin ?) un moteur de programmation évolué.