You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

37 lines
897 B

const influx = require('./influx')()
module.exports = function () {
/**
* Generates writepoints for influx bluk write operation
*/
const getWritePoints = (deviceId, data) => {
let writePoints = []
// itterate all data chunks
data.forEach(chunk => {
// and for each data chunk key, create measurement and push it into writePoint (bulk-write)
Object
.keys(chunk)
.filter(measurement => measurement !== 'timestamp')
.forEach(measurement => {
writePoints.push({
measurement,
tags: {
deviceId
},
fields: {
value: chunk[measurement]
},
timestamp: chunk['timestamp']
})
})
})
return writePoints
}
const send = function (deviceId, data) {
return influx.writePoints(getWritePoints(deviceId, data))
}
return {
send
}
}