Índice

Default dashboard

El default dashboard es el que se utilizará para mostrar datos en tiempo real y widgets de control, como ser el switch que abre o cierra la escotilla manualmente.

El dashboard puede ser importado desde el repositorio del proyecto.


Dashboard de Set up

Para la modificación de parámetros fijos como el peso estándar de un pasajero o el nivel máximo de CO2 permitido, se creó el dashboard de setup.

El dashboard puede ser importado desde el repositorio del proyecto.


Dashboard de Debug

Este dashboard fue creado para facilitar la detección de errores en el funcionamiento del sistema, ya que se pueden ver todos los atributos y telemetría de los dispositivos.

El dashboard puede ser importado desde el repositorio del proyecto.


Creación de Entity View y Alias

El entity view es a veces utilizado para elegir de donde vienen los datos a mostrar en los widgets del dashboard. Notar que acá también hay que setear para que sea público.

El alias se crea dentro del widget cuando se requiere, el nombre que se le dio para este proyecto es: BondIoT-ESP8266-AliasDevice pero podría variar sin problemas.

Creación de Device y Device profile

  • Nombre del device principal: BondIoT-ESP8266-Dev
  • Nombre del device sniffer: BondIoT-ESP8266-01-Dev
  • Tiene que ser público para poder ser visualizado en el dashboard por cualquiera que no sea dueño del dashboard.
  • En la pestaña Attributes se agregaron los atributos, en la imagen se muestran algunos atributos de servidor. Es importante mantener los nombres como aquí se muestra para que funcionen las Rule Chains y Widgets que dependen de estos atributos.

    BondIoT-ESP8266-Dev

    Los atributos agregados son:
    Server attributes:
    • passengersLoadcell (integer)
    • standardWeight (integer)
    • passengersDoors (integer)
    • maxPassengers (integer)
    • maxCO2 (integer)
    Client attributes:
    • Se agregan automáticamente cuando el ESP publica en el topic de atributos.
    Shared attributes:
    • alarmCO2 (boolean)
    • reachedMaxPass (boolean)
    • calibrationModeLoadCell (String, vale ON u OFF)
    • weightForCalibration (integer)
    • weightVariation (integer)
    • busMessage (String)
    • busNameNum (String)
    • loadCellTimeOut (integer)

    BondIoT-ESP8266-01-Dev

    Los atributos agregados son:
    Server attributes:
    • passengersMAC (integer)
    • passengersRead (integer)
    Client attributes:
    • Se agregan automáticamente cuando el ESP publica en el topic de atributos.
    Shared attributes:
    • Ninguno

El perfil del device principal, es decir, BondIoT-ESP8266-Dev, es BondIoT-ESP8266-Prof. No tiene ninguna configuración en particular, fue definido simplemente para utilizarlo en la rule chain del Asset. El dispositivo BondIoT-ESP8266-Dev-01 en este caso lo dejamos en el default.

Assets

La creación del asset es necesaria para poder combinar los datos de los dos devices del sistema. Esta combinación se refleja con una relación definida en el asset y se implementa en la rule chain BondIoT-ESP8266-Asset_Rule.

El Asset type puede ser cualquiera a los efectos de este proyecto, en este caso se llama igual que el Asset y se define en el momento de creación, en la misma ventana.

Para que la rule chain funcione las relaciones se crean como se muestra en la imagen. La dirección es FROM y se agrega una por cada device involucrado.

Rule chains

Root rule

Nombre de la regla: BondIoT-ESP8266-RootRule

Esta rule chain puede ser importada del repositorio en Github.

Esta es la rule chain que maneja los llamados a todas las demás rule chains del sistema.


CO2 rule

Nombre de la rule chain: BondIoT-ESP8266-C02Thresh

Esta rule chain puede ser importada del repositorio en Github.

Flujo:

  1. Agregar a la metadata el atributo shared alarmCO2 y el atributo de servidor maxCO2
  2. Verificar si la telemetría recibida de CO2 supera el máximo permitido
  3. Si lo supera, alarmCO2 = TRUE. Si no lo supera, alarmCO2 = FALSE.
  4. Se guarda el atributo.


Load cell rule

Nombre de la rulechain: BondIoT-ESP8266-Passengers_by_weight

Esta rule chain puede ser importada del repositorio en Github.

Flujo:

  1. Agregar a la metadata los atributos de servidor: standardWeight y passengersLoadcell
  2. La telemetría recibida de la celda de carga se divide entre el peso estándar de un pasajero para obtener la cantidad de personas abordo. El resultado se guarda en passengersLoadcell
  3. Se guarda el atributo.


MAC address rule

En este caso tenemos dos rule chain que se encargan de manejar las MAC.

Nombre de la rulechain: BondIoT-ESP8266-Passengers_MAC

Se recibe en esta rule chain desde el ESP8266-01 una cadena de direcciones MAC delimitadas por dos strings: "New reading" y "End of reading". Cuando llega un "New reading" la rule chain reinicia el contador, cuando llega un "End of reading" se termina de contar y se guarda el resultado en un atributo. Mientras se está en el estado intermedio se consume la API por cada dirección MAC que haya llegado.

Nombre de la rulechain: BondIoT-ESP8266-Mac_vendors_API

El input de esta rule chain es una única dirección MAC. Esta dirección se pasa como parámetro al bloque naranja que se encarga de consumir la API de macvendors.co. El primer script verifica en el cuerpo del response si la dirección MAC corresponde con un fabricante, es decir, es una dirección real de un teléfono conectado a la red del ómnibus. En caso de ser así, se suma 1 al contador de pasajeros y se guarda el atributo.

Total passengers rule

Nombre de la rulechain: BondIoT-ESP8266-Total_Passengers

Esta rule chain confirma que los datos de pasajeros sean coherentes y no nulos y procede a hacer un promedio con aquellos datos que sean correctos. Este promedio nos da el número total de pasajeros a bordo del sistema y es con este atributo que se maneja si el ómnibus va o no lleno.

El bloque "change originator" del principio toma la información del Asset enviada desde la rule chain BondIoT-ESP8266-Asset y cambia el originator a Device. Sin este bloque toda la rule chain trabaja correctamente pero los cambios en el atributo donde se guarda el resultado no son reflejados en el device que lo contiene.

Full bus rule

Nombre de la rulechain: BondIoT-ESP8266-Notify_full_bus

Esta rule chain puede ser importada del repositorio en Github.

Flujo:

  1. Agregar a la metadata el atributo shared reachedMaxPass y los atributos de servidor passengersTOTAL y maxPassengers
  2. Se verifica si la cantidad de pasajeros total alcanzó la máxima permitida.
  3. Se guarda el atributo.


Doors rule

Nombre de la rulechain: BondIoT-ESP8266-Passengers_Doors

El propósito de esta rule chain es únicamente guardar en un atributo la cantidad de pasajeros según las puertas que llega por telemetría en el campo doors.

Asset rule

Nombre de la rulechain: BondIoT-ESP8266-Asset

Esta rule chain fue creada para unir en un mismo message los atributos de cantidad de pasajeros del device principal (pasajeros según celda de carga y según puertas) con el atributo de pasajeros según direcciones MAC proventiente del dispositivo que se utiliza como Sniffer.

Desde acá se llama entonces, teniendo la información agrupada en un mismo mensaje, a la rule chain encargada de ponderar los datos para determinar el número de pasajeros total.