Ir al contenido principal
Todas las coleccionesConecta tus dispositivos
Conectar MOKOSmart LW001-BG PRO a Ubidots y The Things Network
Conectar MOKOSmart LW001-BG PRO a Ubidots y The Things Network

Este artículo explora los pasos necesarios para configurar y ajustar tu LW001-BG PRO para enviar datos a Ubidots utilizando The Things Network LNS.

Sergio M avatar
Escrito por Sergio M
Actualizado hace más de una semana
Soluciones IoT para Deporte y Fitness - MOKOSmart #1 Solución de Dispositivo Inteligente en China

Requisitos

1. Obtén las credenciales del dispositivo

1. Enciende el Bluetooth de tu teléfono celular y luego enciende tu MOKOSmart LW001-BG PRO siguiendo el procedimiento que se muestra en la siguiente imagen:


Consejo Profesional: Si el procedimiento fue exitoso, el LED de encendido verde parpadeará una vez seguido por el LED azul parpadeando intermitentemente, lo que significa que el dispositivo ahora es detectable.


2. Abre la "MKLora" app en tu celular

3. Toca el botón "Conectar" en la esquina superior derecha

4. Cuando se te pida una contraseña, escribe "Moko4321" (contraseña predeterminada) y presiona "OK":

5. Selecciona la pestaña "LORA" y luego la opción "Configuración de Conexión" como se muestra a continuación:

6. Copia/guarda los siguientes valores ya que los necesitarás para los pasos posteriores:

  • DevEUI

  • AppEUI

  • AppKey

7. Haz clic en la configuración de "Región/Subred" y selecciona "US915"

2. Conectar el dispositivo al Servidor de Red

Sigue los pasos a continuación para conectar tu dispositivo al Servidor de Red LoRaWAN de TTN:

  1. Inicia sesión en tu Consola TTN

  2. Elige la región

  3. Haz clic en "Ir a aplicaciones"

  4. Agrega una aplicación haciendo clic en "+ Agregar aplicación"

  5. Completa la información de la aplicación (ID, nombre y descripción)

  6. Haz clic en "Crear aplicación"

7. Haz clic en el botón "+ Agregar dispositivo final":

8. Establece los parámetros como muestra el siguiente GIF (haz clic en él para abrir en otra pestaña):

  • Banda/región

  • Versión LoRAWAN

  • DevEui

  • AppEui

9. Haz clic en "Formateadores de carga útil" → "Uplink"

10. selecciona "Formateador Javascript personalizado"

11. Elimina todo el código en "Código del formateador" y Pega el siguiente código:

function decodeUplink(input) {    var payload = {};  payload = buildPayload(input.bytes, input.fPort);    return {    data: payload,    warnings: [],    errors: []  };}function buildPayload(bytes, port){    var payload = buildCommonPayload(bytes, port);  let callables =   {    1:payload,    2:locationHandler(bytes, payload),    3:payload["status"]["context"]["error"] = noLocationHandler(bytes, payload)  };  callables[port];  return payload;}function buildCommonPayload(_bytes, _port){  var payload = {};  var _deviceStatus = _bytes[0];  var _temperature = _bytes[1];  var _ACKAndBatteryVoltage = _bytes[2];  var _operationMode = _deviceStatus & 0x3;//bit0~1  var _batteryStatus = _deviceStatus & 0x4;//bi2  var _motionState = _deviceStatus & (1 << 4);//bit5  //corrección para el signo  if(_temperature > 128){_temperature -= 256;}  var _ACK = _ACKAndBatteryVoltage & 0xF;  var _batteryVoltage = ((_ACKAndBatteryVoltage & 0xF0)>>4)*0.1 + 2.2;  var payloadType;    if(_port == 0x1){payloadType = "heartbeat-payload";}  else if(_port == 0x2){payloadType = "location-fixed-payload";}  else if(_port == 0x3){payloadType = "no-location-fixed-payload";}    payload = {           "temperature":{              "value":_temperature          },           "battery-voltage":{              "value":_batteryVoltage          },          "status": {              "value":_port,              "context":{                  "payload-type":payloadType,                  "battery-status":_batteryStatus,                  "operation-mode":_operationMode,                  "motion-status":_motionState,                  "error":"none"              }          },      };  return payload;}function noLocationHandler(bytes){  const ERROR_MESSAGES = {    0: "Tiempo de posicionamiento WIFI no suficiente",    1: "Tiempo de espera de estrategias de posición WIFI",    2: "Módulo WIFI no detectado",    3: "Tiempo de posicionamiento BlueTooth no suficiente",    4: "Tiempo de espera de estrategias de posición BlueTooth",    5: "Difusión de BlueTooth en progreso",    6: "Tiempo de presupuesto de posición GPS excedido",    7: "Tiempo de espera de posicionamiento GPS grueso",    8: "Tiempo de espera de posicionamiento GPS fino",    9: "Tiempo de posición GPS no es suficiente",    10: "Tiempo de espera de posicionamiento asistido GPS",    11: "Tiempo de espera de posicionamiento en frío GPS",    12: "Interrumpido por enlace descendente para posición",    13: "Interrumpido posicionamiento al inicio del movimiento"  }  return ERROR_MESSAGES[bytes[3]];}function timeStampParser(bytes){  var timeStamp = 0;  var years = bytes[4] << 8 | bytes[5] << 0;  var months = bytes[6] - 1;  var days = bytes[7];  var hours = bytes[8];  var minutes = bytes[9];  var seconds = bytes[10];  var timezone = bytes[11];  timeStamp = (Date.UTC(years, months, days, hours, minutes, seconds));    if(timezone > 128)  {    timezone = timezone -256;    timeStamp = timeStamp + timezone * (-1) * 60 * 60 * 1000;  }  else  {    timeStamp = timeStamp - timezone * 60 * 60 * 1000;  }  return timeStamp;}function coordinatesParser(coordinate){  //2147483648=0x80000000  //4294967296=0x100000000  if(coordinate > 2147483648){coordinate -= 4294967296};  coordinate /= 10000000;  return coordinate;}function locationHandler(bytes, payload){  var fixedType;  var positioningType = bytes[3];  var timeStamp = 0;  timeStamp = timeStampParser(bytes);  if(positioningType === 0x00){fixedType = "Wifi";}  else if(positioningType == 0x01){fixedType = "BlueTooth";}  else if(positioningType == 0x02){fixedType = "GPS";}  else   {     payload["status"]["context"]["error"] = "valor de posicionamiento inválido";    return;  }  Object.assign(payload.temperature, {"context": {"timestamp": timeStamp}});  Object.assign(payload["battery-voltage"], {"context": {"timestamp": timeStamp}});  Object.assign(payload["status"]["context"], {"timestamp": timeStamp});  if(positioningType == 0x02)  {    var lat = (bytes[13]<< 24 | bytes[14]<< 16 | bytes[15]<< 8 | bytes[16]<< 0);    var lng = (bytes[17]<< 24 | bytes[18]<< 16 | bytes[19]<< 8 | bytes[20]<< 0);    lat = coordinatesParser(lat);    lng = coordinatesParser(lng);        var positionPayload = {      "position":{          "value":1,          "timestamp":timeStamp,          "context":{            "lat":lat,            "lng":lng,            "fixed-type":"GPS",          }           },    };        Object.assign(payload, positionPayload);  }}

3. Configurar la Integración de Ubidots

1. Ve a la sección de Plugins de tu cuenta de Ubidots

2. Crea una nueva integración "The Things Stack".

3. Haz clic en el Plugin

4. Busca su sección "Decodificador"

5. Copia la "URL de Endpoint HTTPs" del plugin

6. Regresa a tu aplicación TTN

7. En el lado izquierdo de la pantalla busca "Integraciones" → "Webhooks"

8. Elige "Webhook personalizado"

9. Edita la siguiente configuración:

  • Completa el "ID del Webhook" con la etiqueta deseada para él

  • Establece "URL Base:" a https://dataplugin.ubidots.com

  • Haz clic en "Agregar entrada de encabezado" y escribe "X-Auth-Token" seguido de tu token en el siguiente campo de texto

  • Haz clic en "Agregar entrada de encabezado" y escribe "Content-Type" seguido de "application/json" en el siguiente campo de texto

  • Marca la casilla debajo de "Mensaje de Uplink"

  • Pega la parte de la URL de endpoint HTTP de tu plugin después de "/api....". Ej., "/api/web-hook/....."

Debería verse así:

4. Visualizando Datos en Ubidots

Dirígete a la sección de "Dispositivos" de tu cuenta de Ubidots, allí podrás ver un nuevo dispositivo creado con datos siendo ingeridos.

5. Solución de Problemas

Si estás recibiendo constantemente retroalimentación de "no-location-fixed" del dispositivo, puedes intentar lo siguiente:

Apaga tu dispositivo y enciéndelo nuevamente para que el dispositivo sea detectable por Bluetooth. Luego, usa la app móvil para acceder a la configuración del dispositivo como se describe en la primera sección. Luego, dirígete a la pestaña "POSICIÓN" como se ilustra a continuación:

Una vez allí, verás la opción "GPS Fix".

Toca en "GPS Fix" para cambiar el parámetro de configuración. Primero, puedes intentar modificar el "Tiempo Presupuestado" estableciéndolo a un período más largo. Usa 76200 s y presiona el botón de guardar en la esquina superior derecha para guardar los cambios.

Si esto no soluciona el problema, puedes intentar cambiar el "Tiempo de Espera Fino" como se muestra a continuación.

6. Comentarios, Sugerencias y Artículos Relacionados

No dudes en publicar preguntas o sugerencias en nuestro portal comunitario, o contáctanos a través de support@ubidots.com.

Otros usuarios también encontraron útil...

¿Ha quedado contestada tu pregunta?