Skip to content
Snippets Groups Projects
createDayDataFiles.js 6.54 KiB
Newer Older
  • Learn to ignore specific revisions
  • /*
     * 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 =
    
    Bastien DUMONT's avatar
    Bastien DUMONT committed
        (Math.floor(Math.random() * (maxValue - minValue)) + minValue) / 100 // NOSONAR
    
      return result
    }
    
    
    const generateHalfAnHourData = (_startingdate, _endingDate, min, max) => {
      let parsingDate
    
    
      parsingDate = DateTime.local(
        _startingdate.year,
        _startingdate.month,
        _startingdate.day,
        0,
        0
      )
    
    
      const halfAnHourDumpArray = []
    
    
      let lastDay = parsingDate.day
      const dayDumpArray = []
    
      let lastMonth = parsingDate.month
      const monthDumpArray = []
    
      let lastYear = parsingDate.year
      const yearDumpArray = []
    
      let dailyLoad = 0
      let monthlyLoad = 0
      let yearlyLoad = 0
    
    
      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,
        })
    
    
        if (parsingDate.day !== lastDay) {
          dayDumpArray.push({
            load: Math.round(dailyLoad * 100) / 100,
            year: lastYear,
            month: lastMonth,
            day: lastDay,
            hour: 0,
            minute: 0,
          })
          dailyLoad = 0
          lastDay = parsingDate.day
        }
    
        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({ minute: 30 })
      }
    
    
      dayDumpArray.push({
        load: Math.round(dailyLoad * 100) / 100,
        year: lastYear,
        month: lastMonth,
        day: lastDay,
        hour: 0,
        minute: 0,
      })
    
      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 {
        halfAnHourLoad: halfAnHourDumpArray,
        dailyLoad: dayDumpArray,
        monthlyLoad: monthDumpArray,
        yearlyLoad: yearDumpArray,
      }
    
    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,
      }
    }
    
    
    // Create data folder
    const dir = './data'
    if (!fs.existsSync(dir)) {
      console.log('Create data folder...')
      fs.mkdirSync(dir)
    }
    
    
    const startingdate = config.startingdate
    const endingDate = config.endingDate
    
    const halfHourStartingdate = config.halfHourStartingdate
    
      halfHourStartingdate,
    
      endingDate.endOf('day'),
    
    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)
    })