Paso 5: Código explicado
El id de dispositivo y el dispositivo secreto se utilizan para autenticar el objeto físico (como Edison, Arduino, Raspberri PI,..) con Lelylan. Para obtener las credenciales del dispositivo abierto la consola, seleccione el dispositivo recién creado, haga clic en configuración y copiar el ID del dispositivo y el dispositivo secreto.
/ * Configuración del dispositivo * /
dispositivo de var = {id: '' secreto: ''}
Usos de Lelylan MQTT, una publicación suscripción protocolo para Internet de las cosas. Hacer Lelylan comunicarse con el Edison necesita establecer dos temas: uno recibiendo mensajes de Lelylan (inTopic) y el envío de mensajes a Lelylan (out/opic). Estos temas son únicos e identificado por el id del dispositivo.
inTopic var = ' dispositivos /' + device.id + '/ get' / / recepción de mensajes,
outTopic = ' dispositivos /' + device.id + '/ conjunto'; publicación de mensajes
Cada dispositivo en Lelylan se caracteriza por un tipo, que a su vez es identificado por una lista de propiedades, funciones y Estados (Aprenda más en el dev center). Para este proyecto que hemos creado el tipo de pan inteligente con las propiedades de estado (led encendido o apagado), temperatura (grados de contenido de pan), calidad del aire (detección de gar) y la temperatura límite (después de que se levante la alarma).
Lo que hacemos es verificar el recibido (o enviar) mensajes y analizar (o crear) el JSON con una clave específica. De esta manera podemos entender la propiedad recibida o actualizar los valores físicos de Lelylan.
Para este ejemplo usamos la sartén inteligente tipo ID es 55055efb5a06678498000001)
var tipo = {}
'estado': {id: '55055eff5a06673360000001'},
'temperatura': {id: '5505607f5a06673360000004'},
'aire': {id: '550560935a06673360000005'},
'tempLimit': {id: '550560a65a0667cff2000001'},
};
Configurar el servidor MQTT Lelylan (MQTT servidor IP y puerto) y el dispositivo (id y secret) donde debe conectarse. También hemos habilitado una conexión segura gracias a la potencia computacional de Edison (no es posible con un Arduino por ejemplo).
var opciones = {}
host: '178.62.108.47', / / IP del servidor de MQTT
Puerto: '8883', / / Puerto de MQTT
username: device.id, / / device.id como nombre de usuario de cliente
contraseña: device.secret, / / device.secret como contraseña de cliente
Protocolo: 'ssl', / / conexión segura
rejectUnauthorized: falso
}
En esta sección definimos los pines usados para controlar la conducido, para obtener la temperatura y para obtener la calidad del aire (detección de gas).
/ * Definición de LED * /
var digitalPin3 = new mraa. GPIO(3); digitalPin3.dir (mraa. DIR_OUT);
var ledState = true;
/ * Definición de temperatura * /
var analogPin0 = new mraa. AIO(0); / * Definición de detección de gas * /
var analogPin1 = new mraa. AIO(1);
En este momento abrimos la conexión MQTT y podemos empezar a enviar la temperatura y valores de calidad a Lelylan del aire. A continuación el código para leer y enviar la temperatura a Lelylan, donde leemos el valor actual y crear un JSON para enviar a través de MQTT para Lelylan (compuesto por el id de la temperatura y el valor de temperatura). Lógica similar vive para el sensor de gas.
var cliente = mqtt.connect(settings); Client.on ('connect', function() {}
función readTemp() {}
var analogValue = Math.round(analogPin0.read(), 2);
setTimeout (readTemp, 10000);
Console.log ('editorial la temperatura a Lelylan');
mensaje = {"propiedades": [{"id": type.temperature.id, "valor": analogValue}]};
Client.Publish (out_topic, JSON.stringify(message)); […]
En este punto si la temperatura de superar el límite definido, el led se enciende y los cambios se envían a Lelylan.
Si (analogValue > tempLimit) {}
Console.log ("Encender la luz (temperatura) -", analogValue);
boardLight.write(255);
mensaje = {"propiedades": [{"id": type.status.id, "valor": "on"}]};
Client.Publish (out_topic, JSON.stringify(message));
} else {}
Console.log ("Apagar la luz (temperatura) -", analogValue);
boardLight.write(0);
mensaje = {"propiedades": [{"id": "valor", type.status.id: "off"}]};
Client.Publish (out_topic, JSON.stringify(message));
}
El último fragmento de código se utiliza para todos los mensajes que forma Lelylan, para actualizar dinámicamente el límite de temperatura de la web. De esta forma que podemos variar su valor directamente de Lelylan Dashboard o alguna aplicación móvil.
Client.subscribe(in_topic);
Client.on ('mensaje', {} de la función (asunto, mensaje)
var prop = JSON.parse (mensaje) .properties [0];
Console.log ('Mensaje recibido', estado); / * Establece el límite de temperatura * /
Si (prop.id == typelight.tempLimit.id) {}
tempLimit = prop.value;
boardLight.write(255);
Console.log ('el límite de temperatura se establece en', tempLimit);
}
Client.Publish (out_topic, JSON.stringify(message));
Console.log ('Mensaje recibido (tema)', tema, '(mensaje)', mensaje);
});