Editing JSON data into the correct format for the IoT Analytics pipeline

18 Views Asked by At

I have lambda function that calculate temperature value. I need to connect value to response JSON but I do not know how to do that because IoT Analytics pipeline accept only one format.

The event data format looks like this: [ { mType: 'iqrfRaw', data: { msgId: '6e93f877-df24-4461-960d-fc172dbf2d9d', rsp: [Object], raw: [Array], insId: 'iqrfgd2-default', statusStr: 'ok', status: 0 } } ]

And I need to get temperature value from my code inside response in correct format which is above.

So the response may look like this

[ { mType: 'iqrfRaw', data: { msgId: '6e93f877-df24-4461-960d-fc172dbf2d9d', rsp: [Object], raw: [Array], temperature: 24.5, insId: 'iqrfgd2-default', statusStr: 'ok', status: 0 } } ]

I tried this function:

export const handler = async (event) => {
  // TODO implement
  console.log(event);

  var type = event[0].mType;
  console.log(type);

    // Přistoupení k objektu response 
    var tempString = event[0].data.raw[0].response;
    console.log(tempString);
    
    // Upravení retezce a výpočet teploty
    var splitMessage = tempString.split(".");
    var lengthString = splitMessage.length;
    var firstNumber = splitMessage[lengthString - 2];
    var secondNumber = splitMessage[lengthString - 1];
    var hexNumber = secondNumber + firstNumber;
    var decimalNumber = parseInt(hexNumber, 16);
    console.log(hexNumber);

    // Podminka pro zaporne hodnoty cidla
    if (hexNumber[0] == "1") {
      hexNumber = hexNumber.slice(1);
      decimalNumber = parseInt(hexNumber, 16) * (-1);
    }
    
    console.log(decimalNumber);
    var temperature = decimalNumber * 0.0625;
    console.log(temperature);

    // Přidání hodnoty teploty k původnímu objektu JSON
    event[0].temperature = temperature;
    
    const modifiedEvent = [...event];

  // Pokud podmínka není splněna, odpověď s hodnotou null
  if (type === "iqrfRaw") {
    return modifiedEvent;
  }
  else{
    return null;
  }

};
0

There are 0 best solutions below