Algunas pistas para la práctica MVP para depuradora (curso 2019-2020)

De binefa.com
Salta a la navegació Salta a la cerca

Código para recoger datos en formato JSON

En el código IoT-02_altitude_00 se han añadido estos temas en IoT-02_mqttTopics.h:

#define TOPIC_REQUEST_JSON "/jsonReq"
#define TOPIC_JSON "/json"

El código IoT-02_altitude_00 responde al la solicitud /[MAC]/jsonReq con el tema /[MAC]/json conteniendo una cadena JSON con este aspecto:

{"T":26.690000534057617,"RH":43.029998779296875,"P":1003.4299926757812,"A":82.069999694824219,"L":2367}

Siendo T la temperatura, RH la humedad relativa, P la presión atmosférica, A la altitud realtiva considerando la presión a nivel del mar a 1013.25 hPa y L el valor de la LDR (entre 0 y 4095).

IoT-02_altitude_00.zipIoT-02_altitude_00 en GitHub

Tratamiento del JSON recibido de la placa IoT-02 en NodeRED

Recepción de un JSON en formato texto

Flujo depuradora

Flujo de NodeRED importable

Conversión de un texto JSON a un objeto JSON

Flujo depuradora

Flujo de NodeRED importable

Graficación en NodeRED de la altura relativa

Flujo depuradora

Flujo de NodeRED importable

Función Init:

flow.set("FIRST_TIME",1);
flow.set("DIFF",0.0);
return msg;

Función [fT,fRH,fP,fA,nL]:

var fT = {payload: msg.payload.T};
var fRH = {payload: msg.payload.RH};
var fP = {payload: msg.payload.P};
var fA = {payload: msg.payload.A};
var nL = {payload: msg.payload.L};
return [fT,fRH,fP,fA,nL]

Función Manage Diff:

var bFirstTime = flow.get("FIRST_TIME");
if(bFirstTime){
    flow.set("FIRST_TIME",0);
    flow.set("DIFF",parseFloat(msg.payload));
}
var fDiff = parseFloat(flow.get("DIFF"));
var fAltitud = parseFloat(parseInt(10.0*(parseFloat(msg.payload) - fDiff))/10);
msg.payload = fAltitud;
if(fAltitud > -3.0 && fAltitud < 3.0)
    return msg;
Panel de control depuradora