-
Yoan VALLET authoredYoan VALLET authored
createDayDataFiles.js 3.88 KiB
/*
* Create dummy data files for each fluid.
* Hourly data is not generated
*/
const fs = require('fs')
const { DateTime } = require('luxon')
function getRandomInt(min, max) {
const minValue = Math.ceil(min * 100)
const maxValue = Math.floor(max * 100)
// NOSONAR
const result =
(Math.floor(Math.random() * (maxValue - minValue)) + minValue) / 100
return result
}
const generateData = (_startingdate, _endingDate, min, max) => {
let parsingDate = DateTime.local(
_startingdate.year,
_startingdate.month,
_startingdate.day
)
const dayDumpArray = []
let lastMonth = parsingDate.month
const monthDumpArray = []
let lastYear = parsingDate.year
const yearDumpArray = []
let monthlyLoad = 0
let yearlyLoad = 0
while (parsingDate <= _endingDate) {
const load = getRandomInt(min, max)
monthlyLoad += load
yearlyLoad += load
dayDumpArray.push({
load: load,
year: parsingDate.year,
month: parsingDate.month,
day: parsingDate.day,
hour: 0,
minute: 0,
})
if (parsingDate.month !== lastMonth) {
monthDumpArray.push({
load: Math.round(monthlyLoad * 100) / 100,
year: lastYear,
month: lastMonth,
day: 0,
hour: 0,
minute: 0,
})
monthlyLoad = 0
lastMonth = parsingDate.month
}
if (parsingDate.year !== lastYear) {
yearDumpArray.push({
load: Math.round(yearlyLoad * 100) / 100,
year: lastYear,
month: 1,
day: 1,
hour: 0,
minute: 0,
})
yearlyLoad = 0
lastYear = parsingDate.year
}
parsingDate = parsingDate.plus({ days: 1 })
}
monthDumpArray.push({
load: Math.round(monthlyLoad * 100) / 100,
year: lastYear,
month: lastMonth,
day: 1,
hour: 0,
minute: 0,
})
yearDumpArray.push({
load: Math.round(yearlyLoad * 100) / 100,
year: lastYear,
month: 1,
day: 1,
hour: 0,
minute: 0,
})
return {
dailyLoad: dayDumpArray,
monthlyLoad: monthDumpArray,
yearlyLoad: yearDumpArray,
}
}
const startingdate = DateTime.local()
.plus({ days: -120 })
.startOf('day')
const endingDate = DateTime.local()
.plus({ days: -1 })
.startOf('day')
const Elec = generateData(startingdate, endingDate, 3, 10)
const Gaz = generateData(startingdate, endingDate, 16, 68)
const Eau = generateData(startingdate, endingDate, 200, 300)
const dumpElec = {
'com.grandlyon.enedis.day': Elec.dailyLoad,
'com.grandlyon.enedis.month': Elec.monthlyLoad,
'com.grandlyon.enedis.year': Elec.yearlyLoad,
}
const dumpStringElec = JSON.stringify(dumpElec)
fs.writeFile('data/dayData-elec.json', dumpStringElec, function(err) {
if (err) console.log('error', err)
})
const dumpGas = {
'com.grandlyon.grdf.day': Gaz.dailyLoad,
'com.grandlyon.grdf.month': Gaz.monthlyLoad,
'com.grandlyon.grdf.year': Gaz.yearlyLoad,
}
const dumpStringGas = JSON.stringify(dumpGas)
fs.writeFile('data/dayData-gas.json', dumpStringGas, function(err) {
if (err) console.log('error', err)
})
const dumpWater = {
'com.grandlyon.egl.day': Eau.dailyLoad,
'com.grandlyon.egl.month': Eau.monthlyLoad,
'com.grandlyon.egl.year': Eau.yearlyLoad,
}
const dumpStringWater = JSON.stringify(dumpWater)
fs.writeFile('data/dayData-water.json', dumpStringWater, function(err) {
if (err) console.log('error', err)
})
const dump = {
'com.grandlyon.enedis.day': Elec.dailyLoad,
'com.grandlyon.enedis.month': Elec.monthlyLoad,
'com.grandlyon.enedis.year': Elec.yearlyLoad,
'com.grandlyon.grdf.day': Gaz.dailyLoad,
'com.grandlyon.grdf.month': Gaz.monthlyLoad,
'com.grandlyon.grdf.year': Gaz.yearlyLoad,
'com.grandlyon.egl.day': Eau.dailyLoad,
'com.grandlyon.egl.month': Eau.monthlyLoad,
'com.grandlyon.egl.year': Eau.yearlyLoad,
}
const dumpString = JSON.stringify(dump)
fs.writeFile('data/dayData.json', dumpString, function(err) {
if (err) console.log('error', err)
})