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;
}
};