[Complemento] Acciones y Eventos


#1

Este es un tutorial complementario, así que sólo me centro en la explicación sobre los conceptos. Una explicación diferente de acciones y eventos se encuentra en el Día 3 del Curso en línea. Tutorial Día 3

#Acciones
De manera sencilla, una acción hará que aparezca un botón en el Hub (la interfaz web). Dicho botón te permitirá ejecutar la acción programada en el Altair.
También, las acciones las pueden ver los demás Altair y hacer que las haga.

#Eventos
Imagina que te caes en un agujero, lo primero que haces es pedir ayuda, ¿no? Gritas que te caíste para hacerte escuchar y que alguien te ayude. Algo similar ocurre aquí, el Altair al que le ocurrió algo “grita” que acaba de acontecer algo en sus sensores, para que los demás hagan algo al respecto.

#Interacciones
Es justamente lo que une las acciones y los eventos de los Altair. Volvamos a la Analogía sobre que caíste en un agujero, aunque quizá suene cruel. Los primero en ayudarte serían tus amigos, los demás te van a ignorar. De nuevo, algo similar ocurre por aquí. Los Altair sólo van a reaccionar antes sus amigos. No tomes a mal esto, todos los Altair son amigos, es más ninguno de los eventos son porque alguno esté sufriendo, no hay nada moralmente incorrecto. :slight_smile:

De hecho, estas interacciones se hacen a través del Hub (la interfaz web). Lo que hacen es encadenar las acciones a los eventos (como expliqué con la analogía).

Ahora, la interfaz web podrá verse muy bonita, pero en la parte del código tendrás que meter las manos al lodo para hacer que todo funcione perfectamente.

Está redactado explicando en dónde va cada parte del código. Se verá feo, te advierto. Pero es bastante sencillo, sólo es entender qué está pasando.

##Acciones

Definición; esto va antes del setup. Será la función como tal, lo que pasará ya que hayas presionado el botón.

bool miAccion (uint8_t param, bool gotParam)
{
//Hacer algo
}

Inscripción; Vendría siendo cómo aparecerá en el HUB seguido del “acceso directo” a la función que te expliqué arriba.

Aquila.addAction("Nombre de accion", miAccion);

##Eventos

Definición; va antes del setup. Una varible del tipo Evento. No te preocupes, el Altair se encarga de interpretarla.

Event miEvento;

Inscripción; va dentro del setup.

miEvento = Aquila.addEvent ("Nombre de evento");

Detonante; Es justo lo que hace que el Altair “grite” que algo pasó (un Evento); lo colocas donde se te antoje (aunque trata de que no esté por ahí suelto en el loop o podrías saturar el hub y provocar fallos).

Aquila.emit (miEvento);

Puede que se vea muy confuso (sobretodo las acciones), pero si te basas en los ejemplos que encuentras aquí se te hará mucho más fácil entenderlo.

Archivo > Ejemplos > AquilaProtocol

Una cosa más, según la última actualización, en las cabeceras deberás añadir como cabeceras

#include <Mesh.h>
#include <AquilaProtocol.h>

y en la parte del loop deberás añadir siempre

  Mesh.loop();
  Aquila.loop();

NOTA: Recuerda que estas últimas dos líneas de código deberán reproducirse lo más seguido posible. No uses delay, o evita usarlo; de esa forma se reproducen lo más seguido posible. Aquí te dejo una guía sobre cómo NO usar Delay.