Skip to content
Snippets Groups Projects
createDayDataFiles.js 4.92 KiB
Newer Older
  • Learn to ignore specific revisions
  • /* eslint-disable @typescript-eslint/no-var-requires */
    /*
     * Create dummy data files for each fluid.
     * Hourly data is not generated
     */
    const fs = require('fs')
    const { DateTime } = require('luxon')
    const config = require('./config')
    
    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 //NOSONAR
    
      return result
    }
    
    
    const generateHalfAnHourData = (_startingdate, _endingDate, min, max) => {
      let parsingDate
      if (_endingDate.diff(_startingdate, 'days').toObject().days > 1) {
        parsingDate = DateTime.local(
          _endingDate.year,
          _endingDate.month,
          _endingDate.day - 1,
          0,
          0
        )
      } else {
        parsingDate = DateTime.local(
          _endingDate.year,
          _endingDate.month,
          _endingDate.day,
          0,
          0
        )
      }
      const halfAnHourDumpArray = []
    
      while (parsingDate <= _endingDate) {
        const load = getRandomInt(min, max)
    
        halfAnHourDumpArray.push({
          load: load,
          year: parsingDate.year,
          month: parsingDate.month,
          day: parsingDate.day,
          hour: parsingDate.hour,
          minute: parsingDate.minute,
        })
        parsingDate = parsingDate.plus({ minute: 30 })
      }
      return halfAnHourDumpArray
    }
    
    
    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 = config.startingdate
    const endingDate = config.endingDate
    
    
    const HalfAnHour = generateHalfAnHourData(
      startingdate,
      endingDate.endOf('day'),
      0.5,
      1
    )
    
    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.minute': HalfAnHour,
    
      '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.minute': HalfAnHour,
    
      '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)
    })