diff --git a/index.js b/index.js index dfb6d7160e8dfe7e145f61b3e286a37ceba4131e..1e2048ae66576b8420545667c3b2416a82c4d1b6 100644 --- a/index.js +++ b/index.js @@ -109,23 +109,18 @@ moment.tz.setDefault('Europe/Paris') // set the timezone /*** Connector Constants ***/ const manualExecution = process.env.COZY_JOB_MANUAL_EXECUTION === 'true' ? true : false -// Period for daily data const startDailyDate = manualExecution ? moment().subtract(12, 'month') : moment().subtract(32, 'month') const startDailyDateString = startDailyDate.format('YYYY-MM-DD') -// Period for half and hour data const startLoadDate = moment().subtract(7, 'day') const startLoadDateString = startLoadDate.format('YYYY-MM-DD') -// Period to define if the history is loaded const checkHistoryDate = moment().subtract(8, 'day') const endDate = moment() const endDateString = endDate.format('YYYY-MM-DD') -// Endpoints config const baseUrl = 'https://gw.prd.api.enedis.fr' const dailyDataURL = `${baseUrl}/v4/metering_data/daily_consumption` const loadCurveURL = `${baseUrl}/v4/metering_data/consumption_load_curve` -const maxPowerURL = `${baseUrl}/v4/metering_data/daily_consumption_max_power` /** * The start function is run by the BaseKonnector instance only when it got all the account @@ -175,16 +170,6 @@ async function start(fields, cozyParameters, doRetry = true) { await agregateMonthAndYearData(processedDailyData) log('info', 'Process enedis load data') await startLoadDataProcess(access_token, usage_point_id) - - log('info', 'Fetching enedis max Power data') - const fetchedMaxPowerData = await getMaxPower(access_token, usage_point_id) - log('info', 'Process enedis maxPower data') - - await processData(fetchedMaxPowerData, 'com.grandlyon.enedis.maxpower', [ - 'year', - 'month', - 'day', - ]) } catch (err) { if (err.statusCode === 403 || err.code === 403) { if (!fields.refresh_token) { @@ -209,7 +194,7 @@ async function start(fields, cozyParameters, doRetry = true) { return start(fields, cozyParameters, false) } log('error', `Error during authentication: ${err.message}`) - throw errors.LOGIN_FAILED + throw errors.VENDOR_DOWN } else { log('error', 'caught an unexpected error') log('error', err.message) @@ -242,30 +227,6 @@ async function getDailyData(token, usagePointID) { return response } -/** - * Retrieve data from the max Power endpoint - * Format: { value: "VA", "date": "YYYY-MM-DD" } - */ -async function getMaxPower(token, usagePointID) { - const dataRequest = { - method: 'GET', - uri: - maxPowerURL + - '?start=' + - startDailyDateString + - '&end=' + - endDateString + - '&usage_point_id=' + - usagePointID, - headers: { - Accept: 'application/json', - Authorization: 'Bearer ' + token, - }, - } - const response = await rp(dataRequest) - return response -} - /** * Check if history is loaded * If not, call several time the api to retrieve 1 month of history for load data @@ -352,12 +313,6 @@ async function checkConsentForLoadCurve( } else if (err.statusCode === 403 || err.code === 403) { log('info', 'No consent for load curve') return false - } else if ( - (err.statusCode === 404 || err.code === 404) && - err.message.search('no_data_found') > 0 - ) { - log('info', 'Handling half-hour error on connection') - return false } else { throw err } @@ -453,9 +408,13 @@ async function processData(data, doctype, filterKeys) { const parsedData = JSON.parse(data) const intervalData = parsedData.meter_reading.interval_reading const formatedData = await formateData(intervalData, doctype) + // Remove data for existing days into the DB + const filteredData = await hydrateAndFilter(formatedData, doctype, { + keys: filterKeys, + }) // Store new day data - const storedData = await storeData(formatedData, doctype, filterKeys) - return storedData + await storeData(filteredData, doctype, filterKeys) + return filteredData } /** @@ -123941,7 +123900,7 @@ const fs = __webpack_require__(167); const path = __webpack_require__(160); -let manifest = typeof {"version":"1.1.1","name":"Enedis","type":"konnector","language":"node","icon":"icon.png","slug":"enedisgrandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/enedis-konnector.git","editor":"Métropole de Lyon","vendor_link":"https://www.enedis.fr/","categories":["energy"],"frequency":"daily","fields":{"access_token":{"type":"hidden"},"refresh_token":{"type":"hidden"}},"oauth":{},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"enedis data":{"type":"com.grandlyon.enedis.*"}},"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"langs":["fr"],"locales":{"fr":{"short_description":"Récupère vos donnéees de courbe de charge depuis l'API Enedis","long_description":"Ce connecteur récupère la courbe de charge électrique enregistrée par le compteur Linky","permissions":{"enedis data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Linky et exposées par les API Enedis (consommations d’électricité à la demi-heure, au jour, mois et année). "},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Fetches your electricity consumption data from Enedis API","long_description":"This konnector fetches the energy curve of your electricity consumption gathered by your Linky device.","permissions":{"enedis data":{"description":"Required to access and store the data collected by the Linky meter and exposed by Enedis APIs (half-an-hour, daily, monthly and yearly consumption)."},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2"} === 'undefined' ? {} : {"version":"1.1.1","name":"Enedis","type":"konnector","language":"node","icon":"icon.png","slug":"enedisgrandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/enedis-konnector.git","editor":"Métropole de Lyon","vendor_link":"https://www.enedis.fr/","categories":["energy"],"frequency":"daily","fields":{"access_token":{"type":"hidden"},"refresh_token":{"type":"hidden"}},"oauth":{},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"enedis data":{"type":"com.grandlyon.enedis.*"}},"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"langs":["fr"],"locales":{"fr":{"short_description":"Récupère vos donnéees de courbe de charge depuis l'API Enedis","long_description":"Ce connecteur récupère la courbe de charge électrique enregistrée par le compteur Linky","permissions":{"enedis data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Linky et exposées par les API Enedis (consommations d’électricité à la demi-heure, au jour, mois et année). "},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Fetches your electricity consumption data from Enedis API","long_description":"This konnector fetches the energy curve of your electricity consumption gathered by your Linky device.","permissions":{"enedis data":{"description":"Required to access and store the data collected by the Linky meter and exposed by Enedis APIs (half-an-hour, daily, monthly and yearly consumption)."},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2"}; +let manifest = typeof {"version":"1.0.1","name":"Enedis","type":"konnector","language":"node","icon":"icon.png","slug":"enedisgrandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/enedis-konnector.git","editor":"Métropole de Lyon","vendor_link":"https://www.enedis.fr/","categories":["energy"],"frequency":"daily","fields":{"access_token":{"type":"hidden"},"refresh_token":{"type":"hidden"}},"oauth":{},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"enedis data":{"type":"com.grandlyon.enedis.*"}},"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"langs":["fr"],"locales":{"fr":{"short_description":"Récupère vos donnéees de courbe de charge depuis l'API Enedis","long_description":"Ce connecteur récupère la courbe de charge électrique enregistrée par le compteur Linky","permissions":{"enedis data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Linky et exposées par les API Enedis (consommations d’électricité à la demi-heure, au jour, mois et année). "},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Fetches your electricity consumption data from Enedis API","long_description":"This konnector fetches the energy curve of your electricity consumption gathered by your Linky device.","permissions":{"enedis data":{"description":"Required to access and store the data collected by the Linky meter and exposed by Enedis APIs (half-an-hour, daily, monthly and yearly consumption)."},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2"} === 'undefined' ? {} : {"version":"1.0.1","name":"Enedis","type":"konnector","language":"node","icon":"icon.png","slug":"enedisgrandlyon","source":"https://forge.grandlyon.com/web-et-numerique/llle_project/enedis-konnector.git","editor":"Métropole de Lyon","vendor_link":"https://www.enedis.fr/","categories":["energy"],"frequency":"daily","fields":{"access_token":{"type":"hidden"},"refresh_token":{"type":"hidden"}},"oauth":{},"data_types":[],"screenshots":[],"permissions":{"accounts":{"type":"io.cozy.accounts"},"enedis data":{"type":"com.grandlyon.enedis.*"}},"developer":{"name":"Métropole de Lyon","url":"https://www.grandlyon.com/"},"langs":["fr"],"locales":{"fr":{"short_description":"Récupère vos donnéees de courbe de charge depuis l'API Enedis","long_description":"Ce connecteur récupère la courbe de charge électrique enregistrée par le compteur Linky","permissions":{"enedis data":{"description":"Requises pour accéder et stocker les données collectées par le compteur Linky et exposées par les API Enedis (consommations d’électricité à la demi-heure, au jour, mois et année). "},"accounts":{"description":"Utilisé pour accéder à vos données de consommation."}}},"en":{"short_description":"Fetches your electricity consumption data from Enedis API","long_description":"This konnector fetches the energy curve of your electricity consumption gathered by your Linky device.","permissions":{"enedis data":{"description":"Required to access and store the data collected by the Linky meter and exposed by Enedis APIs (half-an-hour, daily, monthly and yearly consumption)."},"accounts":{"description":"Used to access your consumption data."}}}},"manifest_version":"2"}; if (false) {} diff --git a/manifest.konnector b/manifest.konnector index d32acd69e9925adcae5618b31538bd517c8925c8..31179417b41c6ca3730b0dc9ddfcbcf5170a304e 100644 --- a/manifest.konnector +++ b/manifest.konnector @@ -1,5 +1,5 @@ { - "version": "1.1.1", + "version": "1.0.1", "name": "Enedis", "type": "konnector", "language": "node", diff --git a/package.json b/package.json index e288f2a02bda6c96ba6320034c2b23acab86a89d..e1a712b7aa254ea4a65b8350e1688613a548a59c 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "enedis", - "version": "1.1.1", + "version": "1.0.1", "description": "", "repository": { "type": "git",