Aller au contenu

Développement Lua / Guidelines / Architecture


thibaud

Recommended Posts

Bonjour à  tous, je suis nouveau sur HC2, j'ai tenté de faire un scénario simple à  base de Bloc mais j'avoue que je ne suis pas vraiment convaincu...

 

Développeur de métier (principalement JAVA/Android) je me suis dis que le LUA allé forcément être plus sympa, mais comme pour tout nouveau langage à  appréhender, j'essaye de me documenter sur les Bests pratices et Guidelines du langage.

Pour le LUA, j'ai trouvé quelques docs, qui reprennent ce que l'on retrouve dans un peu tous les langages (identation, nommage des variables, ect) :

http://lua-users.org/wiki/LuaStyleGuide

http://dev.minetest.net/Lua_code_style_guidelines

 

Maintenant ce que je cherche c'est plutôt de la doc au niveau Fibaro...

J'ai suivi quelques tutos mais ça ne parle pas de l'architecture globale du moteur de script, comment agencer ses scènes, ses plugins, etc.

Sur pas mal de sites on retrouve des liens qui pointent vers http://docs.fibaro.com qui n'est plus accessible, du coup je me demande où est-ce que je pourrais trouver de la doc.

J'ai déjà  fait un tour ici http://domotique-home.fr/docs-fibaro-francais-index-des-fonctions-thematique/ mais c'est plus comme un JavaDoc, et moi je cherche plus quelque chose qui "explique" un peu comme ce qu'on peut trouver pour faire du dev android ou iOS (https://developer.android.com/design/patterns/navigation.html).

 

Du coup je viens poser mes questions ici, car pas mal de points sont encore abstraits pour moi.

 

 

1/ En LUA et en mode Bloc une scène peut être déclenchée à  l'aide de trigger. Je sais qu'en LUA on peut faire un "while true" pour vérifier certaines conditions régulièrement, mais je n'ai pas trouvé comment faire ceci en bloc ? C'est fait automatiquement quand on coche scene active ? Là  encore je n'ai trouvé aucun tuto qui explique à  quoi sert cette option et comment s'en servir, dans quels cas, etc.

 

2/ En LUA vous préferez faire un while true par scène ou plutôt des triggers ?

 

3 / Comment organisez vous vos scènes ? J'ai vu des tutos ou ils faisaient des scènes à  tout va pour définir des variables présence, absence, jour, nuit, etc, est-ce vraiment necessaire ?

 

4 / Je m'attendais à  quelque chose d'un peu mieux au niveau de l'IDE (environnement de développement),

 - Je suis obligé d'enregistrer mon code, ce qui recharge la page, avant de pouvoir le démarrer, mais à  quoi sert le bouton démarrer sous le code du coup ???

- Je suis habitué à  l'autoindentation, autocompletion, aide intégrée, et j'en passe qu'on retrouve dans les différents IDE modernes (eclipse, ou  IntelliJ)

Est-ce que certains d'entre vous ont essayé le plugin eclipse ou intellij pour coder en LUA ? Il y aurait possibilité d'intégrer les API fibaro pour avoir la doc, etc ?

http://eclipse.org/koneki/ldt/   ---    https://plugins.jetbrains.com/plugin/5055?pr=dbe

 

5/ Est-ce qu'il y a la possibilité de développer des librairies type : mamaison:isLightOn() ou encore mesapihttpperso:cleanDatabase() que je pourrais réutiliser dans mes scènes ? Un peu comme des plugins peut être ?

 

6/ J'ai vaguement entendu parlé des plugins, j'ai la même question que pour les scènes, est-ce qu'il y a une documentation sur l'architecture quelque part ? des guidelines, etc ?

 

7 / Je ne crois pas avoir vu de liste de variables globales utilisables en LUA comme pour le timer du mode bloc, comme "Lorsque le soleil est couché", etc. Je pensais trouver une liste exhaustive ici par exemple : http://domotique-home.fr/fonction-fibarogetglobalvarname/

 

8 / Exemple concret :

Je n'ai pas encore beaucoup de modules du coup j'essaye de faire quelque chose d'assez simple pour me faire la main, et j'aimerai savoir quelle architecture vous aurriez choisi pour faire ça (simple trigger, while true, bloc, etc) ?

 

Le scénario sera utilisé pour une (plusieurs un jour) petite lampe d'appoint/de décoration qui se trouve dans la chambre à  coucher.

a / Je ne veux pas qu'elle s'allume lorsque je dort

b / Je ne veux pas qu'elle s'allume en pleine journée

c/ Je veux qu'elle s'allume le soir si je suis dans la chambre et s'il fait nuit dehors, et le matin quand je suis reveillé et qu'il n'y a pas encore la lumière du jour.

 

Voici donc l'algo que je compte implémenter

 

 

Si je suis présent et il fait nuit dehors et heure inférieur à  22h et supérieure à  8h

    alors j'allume pendant 5minutes

 

Si dans les 5 minutes j'ai detecté un nouveau mouvement je repousse l'arrêt de 5 minutes.

 

J'ai quelques soucis avec cet algo car le motion est plus ou moins précis et ne semble pas être utilisable en tant que detecteur de présence, mais je ferai un autre post sur ce sujet après avoir fait quelques essais si besoin.

 

 

Merci d'avance pour vos conseils!

Lien vers le commentaire
Partager sur d’autres sites

Je ne sais clairement pas répondre a tout, mais voici quelques réponses en vrac :

- il y a une traduction française des commandes LUA mises a disposition par Fibaro en v3 sur ce forum, regarde dans les menus de l'entête de la page. Sache quand même que Fibaro a bridé beaucoup de commandes LUA standard.

- pour la v4, regarde par ici : https://developer.fibaro.com

- tu peux créer tes librairies, mais elles doivent être incluses dans chaque scène ou module virtuel que tu vas utiliser. Un peu lourd. Pour un exemple, recherche le Toolkit HC2 de Krikroff.

- tu devrais rechercher GEA de Steven sur ce forum pour écrire très simplement tes scénarios, en gros c'est un moteur d'exécution de règles.

Lien vers le commentaire
Partager sur d’autres sites

×
×
  • Créer...