Je travaille sur un projet domotique en Arduino qui prend en compte des scénarios basé sur une centrale. Un GUI permet d'envoyer des informations à cette centrale par ethernet.
J'aimerai que le GUI permette de créer des scénarios qui seront stocké au niveau de la centrale (afin de ne pas dépendre du GUI et laisser la centrale tourner). Ces scénarios peuvent être fait de manière assez basique (if then else, parfois avec plusieurs conditions).
Si je ne me trompe pas, cela nécessite une création dynamique de condition dans l'arduino... je ne veux pas avoir à recharger le pde à chaque fois dans la centrale. Est t'il possible de faire ce genre de chose (j'ai un protocole définit en ethernet qui envoie les données que je veux)
Si je ne suis pas assez clair, n'hésitez pas.. ce n'est pas très facile à expliquer :~
Si je ne me trompe pas, cela nécessite une création dynamique de condition dans l'arduino... je ne veux pas avoir à recharger le pde à chaque fois dans la centrale
En fait tu prends le problème par le mauvais bout.
Tu n'as pas besoin de refaire le programme à chaque fois que tu change le scénario. Tu as besoin d'un programme qui interprète tes scénarios et qui les exécute.
Il faut que tu définisses une grammaire que tu utiliseras pour écrire tes scénarios. Et ton programme comprend la grammaire et exécute les scénarios.
Dans un ce type de projet il serait plus intelligent de faire un systéme qui interprète la config stocké sur une carte SD plutôt que de devoir reprogrammé la carte sans cesse.
Pour faire simple :
GUI -ethernet → central → SD
SD → central → interpréteur → action
Suivant la flexibilité que tu veux donner à ton systéme tu va devoir soit faire un systéme “simple” qui réagit juste pour quelque cas prédéfini ou sinon un vrai mini-cpu émulé (avec opcode, …) un peu comme le systéme de scripting de bitlash.
en gros tu a des commande de base, avec des options qui font faire plusieurs chose
par exemple dans le robot que je construit, je peut envoyer la commande “rotate”, qui agis sur les chenille du robot pour en effectuer la rotation
rotate {} {left | right} {}
must be between 0 and 100
must be 1 or 2
1 if you want slow rotation, only one side
2 if you want quick rotation, both side
mais comme on le vois dans le descriptif il y a 2 mode a la commande
tu peut donc baser ta grammaire sur un système a commande dans ce genre
par exemple (comme c’est de la domotique)
la commande “light” pour éteindre ou allumer les lumière
light {<room_id>} {<light_id>} {on | off}
<room_id> id de la pièce
<light_id> id de la lampe
du coup avec ce genre de système tu n’a plus qu’a faire un adressage de tes lampes ^^
et combiner avec des registre a décalage et des multiplexeur, tu peut avoir autant de sorti (d’adresse) que tu veux sur un simple arduino UNO