Each fluid has its own doctype wildcard and one doctype per time step. Each available time step for a fluid depends of the available data from the energy provider. Here are the different time step:
-**half an hour** - use `com.grandlyon.\*.minute` doctype
| gas fluid / grdf | **`com.grandlyon.grdf.*`** | **`com.grandlyon.grdf.day`**<br>**`com.grandlyon.grdf.month`**<br>**`com.grandlyon.grdf.year`** |
| water fluid / eau du grand lyon | **`com.grandlyon.egl.*`** | **`com.grandlyon.egl.day`**<br>**`com.grandlyon.egl.month`**<br>**`com.grandlyon.egl.year`** |
| ecogestureHash | string | Hash used to verify the content of ecogestures |
| challengeHash | string | Hash used to verify the content of challenges |
| duelHash | string | Hash used to verify the content of duels |
| quizHash | string | Hash used to verify the content of quiz |
| explorationHash | string | Hash used to verify the content of exploration |
| isFirstConnection | boolean | Boolean used to inform if the user connects for the first time |
| lastConnectionDate | DateTime | Date of the last user connection |
| haveSeenLastAnalysis | boolean | Boolean used to inform if user has seen the last analysis |
| haveSeenOldFluidModal | Datetime or boolean | Used to inform if user has seen the modal display when his data are too old. Its value is false or a DateTime when he saw it |
| sendAnalysisNotification | boolean | Boolean used to inform if user has seen the analysis notification |
| monthlyAnalysisDate | DateTime | Date of the last monthly analysis |
| profileType | ProfileType | User consumption profile |
| isProfileTypeCompleted | boolean | Check if a user has completed his consumption profile |
| showConsentModal | boolean | Boolean used to show the terms acceptation page, and to protect the app private routes if last terms are not accepted or outdated |
| fluidTypes | FluidType[] | Array of fluid type on which ecogesture can have an impact<br><br>_FluidType enum:_<br>- _ELECTRICITY = 0_<br>- _WATER = 1_<br>- _GAS = 2_<br>- _MULTIFLUID = 3_ |
| impactLevel | number | impact level of the ecogesture |
| efficiency | number | efficiency of the ecogesture |
| difficulty | number | difficulty of the ecogesture |
| state | UserChallengeState | state of the challenge<br><br>UserChallengeState enum<br>- _LOCKED = 0_<br>- _UNLOCKED = 1_<br>- _ONGOING = 2_<br>- _DUEL = 3_<br>- _DONE = 4_ |
| target | number | Number of stars required to unlock the duel |
| progress | ChallengeProgress | Number of stars earned by the user for each challenge<br><br>ChallengeProgress enum<br>- _quizzProgress: number_<br>- _explorationProgress: number_<br>- _actionProgress: number_ |
| duel | UserDuelEntity | Complete Duel object with progress included |
| success | UserChallengeSuccess | Success state of the challenge<br><br>UserChallengeSuccess enum<br>- _ONGOING = 0_<br>- _LOST = 1_<br>- _WIN = 2_ |
| startDate | string null | starting date of the the challenge |
| endingDate | string null | ending date of the challenge |
**Example:**
```json
{
"_id":"eae3a79a05d677a739bdd2b46b009936",
"description":"foobar",
"duel":{
"description":"Je parie un ours polaire que vous ne pouvez pas consommer moins que #CONSUMPTION € en 1 semaine",
"duration":{
"days":7
},
"fluidTypes":[
0,
1,
2
],
"id":"DUEL001",
"startDate":null,
"state":4,
"threshold":-1,
"title":"Nicolas Hublot",
"userConsumption":0
},
"endingDate":null,
"id":"CHALLENGE0001",
"progress":{
"actionProgress":0,
"explorationProgress":0,
"quizProgress":0
},
"quiz":{
"customQuestion":{
"interval":30,
"period":{},
"questionLabel":"Quel jour ai-je le plus consommé la semaine dernière ?",
"result":1,
"timeStep":20,
"type":0
},
"id":"QUIZ001",
"questions":[
{
"answers":[
{
"answerLabel":"Vapeur d'eau",
"isTrue":false
},
{
"answerLabel":"Fumée",
"isTrue":false
},
{
"answerLabel":"Gouttelettes d'eau et cristaux de glace",
"isTrue":true
}
],
"explanation":"Les nuages sont constitués de gouttelettes d'eau et parfois aussi de cristaux de glace",
"questionLabel":"De quoi les nuages sont-ils constitués ?",
"result":1,
"source":"string"
},
{
"answers":[
{
"answerLabel":"86 km",
"isTrue":true
},
{
"answerLabel":"78 km",
"isTrue":false
},
{
"answerLabel":"56 km",
"isTrue":false
}
],
"explanation":"L’aqueduc du Gier est un des aqueducs antiques de Lyon desservant la ville antique de Lugdunum. Avec ses 86 km il est le plus long des quatre aqueducs ayant alimenté la ville en eau, et celui dont les structures sont le mieux conservées. Il doit son nom au fait qu'il puise aux sources du Gier, affluent du Rhône",
"questionLabel":"Quelle longueur faisait l’aqueduc du Gier pour acheminer l’eau sur Lyon à l’époque romaine ?",
"result":1,
"source":"string"
},
{
"answers":[
{
"answerLabel":"Crémieux",
"isTrue":false
},
{
"answerLabel":"Crépieux-Charmy",
"isTrue":true
},
{
"answerLabel":"Charly",
"isTrue":false
}
],
"explanation":"Crépieux-Charmy est le principal champ captant de la Métropole de Lyon",
"questionLabel":"Quelle est le nom du principal champ de captage d’eau potable de la Métropole ?",
"result":1,
"source":"string"
},
{
"answers":[
{
"answerLabel":"Pompe à air",
"isTrue":false
},
{
"answerLabel":"Pompe à cordes",
"isTrue":true
},
{
"answerLabel":"Pompe de Cornouailles",
"isTrue":false
}
],
"explanation":"Mise en fonctionnement en 1856, 3 pompes à vapeur dites de Cornouailles produisent quelque 20 000 m3 d'eau par jour. Ces pompes mesurent 20 m de haut et 13 m de large pour un poids de 200 tonnes. Leur balancier de 35 tonnes s'actionne toutes les 6 secondes, permettant ainsi l'envoi de 600 m3 d'eau par heure.",
"questionLabel":"Quelle type de pompes étaient utilisées à l'usine des eaux de Caluire jusqu'en 1910 ?",
"result":1,
"source":"string"
}
],
"result":5,
"state":2
},
"exploration":{
"id":"EXPLORATION001",
"date":"2021-01-13T17:03:11.964Z",
"description":"Consultez 3 fois Ecolyo",
"ecogesture_id":"",
"fluid_condition":[],
"message_success":"Vous vous êtes connecté 3 fois à Ecolyo",
"progress":0,
"state":2,
"target":3,
"type":2
},
"action":{
"ecogesture":{
"_id":"ECOGESTURE0004",
"_rev":"3-da2ad5c7b81e4260e2254c98ec6ee971",
"_type":"com.grandlyon.ecolyo.ecogesture",
"action":true,
"actionDuration":3,
"actionName":"Je coupe l'eau de la douche pendant que je me savonne.",
"cozyMetadata":{
"createdAt":"2021-03-08T09:52:41.029Z",
"createdByApp":"Ecolyo",
"createdByAppVersion":"1.0.4",
"metadataVersion":1,
"updatedAt":"2021-03-08T09:52:41.029Z",
"updatedByApps":[
{
"date":"2021-03-08T09:52:41.029Z",
"slug":"Ecolyo",
"version":"1.0.4"
}
]
},
"difficulty":1,
"efficiency":2.5,
"equipment":false,
"equipmentInstallation":true,
"equipmentType":[],
"fluidTypes":[
1
],
"id":"ECOGESTURE0004",
"impactLevel":5,
"investment":null,
"longDescription":"Si vous n’êtes pas frileux, coupez l'eau pendant que vous vous savonnez : l'économie en eau peut aller jusqu'à 50% !",
"longName":"Je coupe l'eau de la douche pendant que je me savonne.",
| \_id | string | quiz id - respect the format _QUIZ00X_ |
| questions | QuestionEntity[] | Array of questions entities |
| customQuestion | CustomQuestionEntity | Custom question based on user's consumption |
**Example:**
```json
{
"_id":"QUIZ001",
"questions":[
{
"questionLabel":"Quelle longueur faisait l’aqueduc du Gier pour acheminer l’eau sur Lyon à l’époque romaine ?",
"answers":[
{"answerLabel":"86 km","isTrue":true},
{
"answerLabel":"78 km",
"isTrue":false
},
{
"answerLabel":"56 km",
"isTrue":false
}
],
"explanation":"L’aqueduc du Gier est un des aqueducs antiques de Lyon desservant la ville antique de Lugdunum. Avec ses 86 km il est le plus long des quatre aqueducs ayant alimenté la ville en eau, et celui dont les structures sont le mieux conservées. Il doit son nom au fait qu'il puise aux sources du Gier, affluent du Rhône",
"source":"string"
},
{
"questionLabel":"Quelle type de pompes étaient utilisées à l'usine des eaux de Caluire jusqu'en 1910 ?",
"answers":[
{
"answerLabel":"Pompe à cordes",
"isTrue":true
},
{
"answerLabel":"Pompe de Cornouailles",
"isTrue":false
},
{
"answerLabel":"Pompe à air",
"isTrue":false
}
],
"explanation":"Mise en fonctionnement en 1856, 3 pompes à vapeur dites de Cornouailles produisent quelque 20 000 m3 d'eau par jour. Ces pompes mesurent 20 m de haut et 13 m de large pour un poids de 200 tonnes. Leur balancier de 35 tonnes s'actionne toutes les 6 secondes, permettant ainsi l'envoi de 600 m3 d'eau par heure.",
"source":"string"
},
{
"questionLabel":"Quelle est le nom du principal champ de captage d’eau potable de la Métropole ?",
"answers":[
{"answerLabel":"Crémieux","isTrue":false},
{
"answerLabel":"Crépieux-Charmy",
"isTrue":true
},
{
"answerLabel":"Charly",
"isTrue":false
}
],
"explanation":"Crépieux-Charmy est le principal champ captant de la Métropole de Lyon",
"source":"string"
},
{
"questionLabel":"De quoi les nuages sont-ils constitués ?",
"answers":[
{"answerLabel":"Vapeur d'eau","isTrue":false},
{
"answerLabel":"Fumée",
"isTrue":false
},
{
"answerLabel":"Gouttelettes d'eau et cristaux de glace",
"isTrue":true
}
],
"explanation":"Les nuages sont constitués de gouttelettes d'eau et parfois aussi de cristaux de glace",
"source":"string"
}
],
"customQuestion":{
"questionLabel":"Quel jour ai-je le plus consommé la semaine dernière ?",
| \_id | string | exploration id - respect the format _EXPLORATION00X_ |
| state | UserExplorationState | State of the exploration<br><br>UserExplorationState enum<br>- _UNLOCKED = 0_<br>- _ONGOING = 1_<br>- _DONE = 2_ |
| description | string | description of the exploration |
| target | number | number of stars required to unlock an exploration |
| type | UserExplorationType | type of the exploration<br><br>UserExplorationType enum<br>- _DECLARATIVE = 0_<br>- _ACTION = 1_<br>- _CONSUMPTION = 2_<br>- _ECOGESTURE = 3_ |
| date | string or null | date of the exploration |
| ecogesture_id | string | ecogesture id |
| fluid_condition | FluidType[] | Array of fluid type on which an exploration can have an impact<br><br>_FluidType enum:_<br>- _ELECTRICITY = 0_<br>- _WATER = 1_<br>- _GAS = 2_<br>- _MULTIFLUID = 3_ |
| message_success | string | message when exploration is done |
This doctype is used to store the enedis monthly analysis, it includes the month average half-hour consumption for weekdays and weekends, the minimum half-hour load, and the max power consumption of the month.
| weekDaysHalfHourAverageValues | number[] | Half-hour average value for week days (monday to friday) |
| weekEndDaysHalfHourAverageValues | number[] | Half-hour average value for weekend days (saturday and sunday) |
| month | number | Month of the analysis |
| year | number | Year of the analysis |
| minLoad | number or null | Minimum half hour load of the month |
| maxpower | number or null | Max power value of the month |
# Doctypes
In the cozy self data context, each data is storred in a **doctype**. Their primary use is for permissions: an app (`manifest.webapp`) or konnector (`manifest.konnector`) will request permissions for one or several doctypes and will not be able to access other doctypes. See [Doctypes documentation](https://docs.cozy.io/en/cozy-doctypes/docs/#doctypes) for more information.
## Manipulate data with ACH
On a local environment, you can direclty consult the couch db and interract with doctypes. But on a hosted environment like on alpha, couch db is not exposed.
You will need to cozy ACH _Automated Cozy Hydrater_ to manipulate data. See [ACH doc](https://docs.cozy.io/en/ach/#ach).
Usage example :
```sh
ACH -t TOKEN -u COZY_URL export com.grandlyon.enedis.minute ./result.json
```
!!! info ""
The url must not contains an app or home in it. https://~~ecolyo~~.jhon.cozygrandlyon.cloud
## Timeseries doctypes
**Description :**
Each fluid has its own doctype wildcard and one doctype per time step. Each available time step for a fluid depends of the available data from the energy provider. Here are the different time step:
-**half an hour** - use `com.grandlyon.\*.minute` doctype
| gas fluid / grdf | **`com.grandlyon.grdf.*`** | **`com.grandlyon.grdf.day`**<br>**`com.grandlyon.grdf.month`**<br>**`com.grandlyon.grdf.year`** |
| water fluid / eau du grand lyon | **`com.grandlyon.egl.*`** | **`com.grandlyon.egl.day`**<br>**`com.grandlyon.egl.month`**<br>**`com.grandlyon.egl.year`** |
| ecogestureHash | string | Hash used to verify the content of ecogestures |
| challengeHash | string | Hash used to verify the content of challenges |
| duelHash | string | Hash used to verify the content of duels |
| quizHash | string | Hash used to verify the content of quiz |
| explorationHash | string | Hash used to verify the content of exploration |
| isFirstConnection | boolean | Boolean used to inform if the user connects for the first time |
| lastConnectionDate | DateTime | Date of the last user connection |
| haveSeenLastAnalysis | boolean | Boolean used to inform if user has seen the last analysis |
| haveSeenOldFluidModal | Datetime or boolean | Used to inform if user has seen the modal display when his data are too old. Its value is false or a DateTime when he saw it |
| sendAnalysisNotification | boolean | Boolean used to inform if user has seen the analysis notification |
| monthlyAnalysisDate | DateTime | Date of the last monthly analysis |
| profileType | ProfileType | User consumption profile |
| isProfileTypeCompleted | boolean | Check if a user has completed his consumption profile |
| showConsentModal | boolean | Boolean used to show the terms acceptation page, and to protect the app private routes if last terms are not accepted or outdated |
| fluidTypes | FluidType[] | Array of fluid type on which ecogesture can have an impact<br><br>_FluidType enum:_<br>- _ELECTRICITY = 0_<br>- _WATER = 1_<br>- _GAS = 2_<br>- _MULTIFLUID = 3_ |
| impactLevel | number | impact level of the ecogesture |
| efficiency | number | efficiency of the ecogesture |
| difficulty | number | difficulty of the ecogesture |
| state | UserChallengeState | state of the challenge<br><br>UserChallengeState enum<br>- _LOCKED = 0_<br>- _UNLOCKED = 1_<br>- _ONGOING = 2_<br>- _DUEL = 3_<br>- _DONE = 4_ |
| target | number | Number of stars required to unlock the duel |
| progress | ChallengeProgress | Number of stars earned by the user for each challenge<br><br>ChallengeProgress enum<br>- _quizzProgress: number_<br>- _explorationProgress: number_<br>- _actionProgress: number_ |
| duel | UserDuelEntity | Complete Duel object with progress included |
| success | UserChallengeSuccess | Success state of the challenge<br><br>UserChallengeSuccess enum<br>- _ONGOING = 0_<br>- _LOST = 1_<br>- _WIN = 2_ |
| startDate | string null | starting date of the the challenge |
| endingDate | string null | ending date of the challenge |
**Example:**
```json
{
"_id":"eae3a79a05d677a739bdd2b46b009936",
"description":"foobar",
"duel":{
"description":"Je parie un ours polaire que vous ne pouvez pas consommer moins que #CONSUMPTION € en 1 semaine",
"duration":{
"days":7
},
"fluidTypes":[
0,
1,
2
],
"id":"DUEL001",
"startDate":null,
"state":4,
"threshold":-1,
"title":"Nicolas Hublot",
"userConsumption":0
},
"endingDate":null,
"id":"CHALLENGE0001",
"progress":{
"actionProgress":0,
"explorationProgress":0,
"quizProgress":0
},
"quiz":{
"customQuestion":{
"interval":30,
"period":{},
"questionLabel":"Quel jour ai-je le plus consommé la semaine dernière ?",
"result":1,
"timeStep":20,
"type":0
},
"id":"QUIZ001",
"questions":[
{
"answers":[
{
"answerLabel":"Vapeur d'eau",
"isTrue":false
},
{
"answerLabel":"Fumée",
"isTrue":false
},
{
"answerLabel":"Gouttelettes d'eau et cristaux de glace",
"isTrue":true
}
],
"explanation":"Les nuages sont constitués de gouttelettes d'eau et parfois aussi de cristaux de glace",
"questionLabel":"De quoi les nuages sont-ils constitués ?",
"result":1,
"source":"string"
},
{
"answers":[
{
"answerLabel":"86 km",
"isTrue":true
},
{
"answerLabel":"78 km",
"isTrue":false
},
{
"answerLabel":"56 km",
"isTrue":false
}
],
"explanation":"L’aqueduc du Gier est un des aqueducs antiques de Lyon desservant la ville antique de Lugdunum. Avec ses 86 km il est le plus long des quatre aqueducs ayant alimenté la ville en eau, et celui dont les structures sont le mieux conservées. Il doit son nom au fait qu'il puise aux sources du Gier, affluent du Rhône",
"questionLabel":"Quelle longueur faisait l’aqueduc du Gier pour acheminer l’eau sur Lyon à l’époque romaine ?",
"result":1,
"source":"string"
},
{
"answers":[
{
"answerLabel":"Crémieux",
"isTrue":false
},
{
"answerLabel":"Crépieux-Charmy",
"isTrue":true
},
{
"answerLabel":"Charly",
"isTrue":false
}
],
"explanation":"Crépieux-Charmy est le principal champ captant de la Métropole de Lyon",
"questionLabel":"Quelle est le nom du principal champ de captage d’eau potable de la Métropole ?",
"result":1,
"source":"string"
},
{
"answers":[
{
"answerLabel":"Pompe à air",
"isTrue":false
},
{
"answerLabel":"Pompe à cordes",
"isTrue":true
},
{
"answerLabel":"Pompe de Cornouailles",
"isTrue":false
}
],
"explanation":"Mise en fonctionnement en 1856, 3 pompes à vapeur dites de Cornouailles produisent quelque 20 000 m3 d'eau par jour. Ces pompes mesurent 20 m de haut et 13 m de large pour un poids de 200 tonnes. Leur balancier de 35 tonnes s'actionne toutes les 6 secondes, permettant ainsi l'envoi de 600 m3 d'eau par heure.",
"questionLabel":"Quelle type de pompes étaient utilisées à l'usine des eaux de Caluire jusqu'en 1910 ?",
"result":1,
"source":"string"
}
],
"result":5,
"state":2
},
"exploration":{
"id":"EXPLORATION001",
"date":"2021-01-13T17:03:11.964Z",
"description":"Consultez 3 fois Ecolyo",
"ecogesture_id":"",
"fluid_condition":[],
"message_success":"Vous vous êtes connecté 3 fois à Ecolyo",
"progress":0,
"state":2,
"target":3,
"type":2
},
"action":{
"ecogesture":{
"_id":"ECOGESTURE0004",
"_rev":"3-da2ad5c7b81e4260e2254c98ec6ee971",
"_type":"com.grandlyon.ecolyo.ecogesture",
"action":true,
"actionDuration":3,
"actionName":"Je coupe l'eau de la douche pendant que je me savonne.",
"cozyMetadata":{
"createdAt":"2021-03-08T09:52:41.029Z",
"createdByApp":"Ecolyo",
"createdByAppVersion":"1.0.4",
"metadataVersion":1,
"updatedAt":"2021-03-08T09:52:41.029Z",
"updatedByApps":[
{
"date":"2021-03-08T09:52:41.029Z",
"slug":"Ecolyo",
"version":"1.0.4"
}
]
},
"difficulty":1,
"efficiency":2.5,
"equipment":false,
"equipmentInstallation":true,
"equipmentType":[],
"fluidTypes":[
1
],
"id":"ECOGESTURE0004",
"impactLevel":5,
"investment":null,
"longDescription":"Si vous n’êtes pas frileux, coupez l'eau pendant que vous vous savonnez : l'économie en eau peut aller jusqu'à 50% !",
"longName":"Je coupe l'eau de la douche pendant que je me savonne.",
| \_id | string | quiz id - respect the format _QUIZ00X_ |
| questions | QuestionEntity[] | Array of questions entities |
| customQuestion | CustomQuestionEntity | Custom question based on user's consumption |
**Example:**
```json
{
"_id":"QUIZ001",
"questions":[
{
"questionLabel":"Quelle longueur faisait l’aqueduc du Gier pour acheminer l’eau sur Lyon à l’époque romaine ?",
"answers":[
{"answerLabel":"86 km","isTrue":true},
{
"answerLabel":"78 km",
"isTrue":false
},
{
"answerLabel":"56 km",
"isTrue":false
}
],
"explanation":"L’aqueduc du Gier est un des aqueducs antiques de Lyon desservant la ville antique de Lugdunum. Avec ses 86 km il est le plus long des quatre aqueducs ayant alimenté la ville en eau, et celui dont les structures sont le mieux conservées. Il doit son nom au fait qu'il puise aux sources du Gier, affluent du Rhône",
"source":"string"
},
{
"questionLabel":"Quelle type de pompes étaient utilisées à l'usine des eaux de Caluire jusqu'en 1910 ?",
"answers":[
{
"answerLabel":"Pompe à cordes",
"isTrue":true
},
{
"answerLabel":"Pompe de Cornouailles",
"isTrue":false
},
{
"answerLabel":"Pompe à air",
"isTrue":false
}
],
"explanation":"Mise en fonctionnement en 1856, 3 pompes à vapeur dites de Cornouailles produisent quelque 20 000 m3 d'eau par jour. Ces pompes mesurent 20 m de haut et 13 m de large pour un poids de 200 tonnes. Leur balancier de 35 tonnes s'actionne toutes les 6 secondes, permettant ainsi l'envoi de 600 m3 d'eau par heure.",
"source":"string"
},
{
"questionLabel":"Quelle est le nom du principal champ de captage d’eau potable de la Métropole ?",
"answers":[
{"answerLabel":"Crémieux","isTrue":false},
{
"answerLabel":"Crépieux-Charmy",
"isTrue":true
},
{
"answerLabel":"Charly",
"isTrue":false
}
],
"explanation":"Crépieux-Charmy est le principal champ captant de la Métropole de Lyon",
"source":"string"
},
{
"questionLabel":"De quoi les nuages sont-ils constitués ?",
"answers":[
{"answerLabel":"Vapeur d'eau","isTrue":false},
{
"answerLabel":"Fumée",
"isTrue":false
},
{
"answerLabel":"Gouttelettes d'eau et cristaux de glace",
"isTrue":true
}
],
"explanation":"Les nuages sont constitués de gouttelettes d'eau et parfois aussi de cristaux de glace",
"source":"string"
}
],
"customQuestion":{
"questionLabel":"Quel jour ai-je le plus consommé la semaine dernière ?",
| \_id | string | exploration id - respect the format _EXPLORATION00X_ |
| state | UserExplorationState | State of the exploration<br><br>UserExplorationState enum<br>- _UNLOCKED = 0_<br>- _ONGOING = 1_<br>- _DONE = 2_ |
| description | string | description of the exploration |
| target | number | number of stars required to unlock an exploration |
| type | UserExplorationType | type of the exploration<br><br>UserExplorationType enum<br>- _DECLARATIVE = 0_<br>- _ACTION = 1_<br>- _CONSUMPTION = 2_<br>- _ECOGESTURE = 3_ |
| date | string or null | date of the exploration |
| ecogesture_id | string | ecogesture id |
| fluid_condition | FluidType[] | Array of fluid type on which an exploration can have an impact<br><br>_FluidType enum:_<br>- _ELECTRICITY = 0_<br>- _WATER = 1_<br>- _GAS = 2_<br>- _MULTIFLUID = 3_ |
| message_success | string | message when exploration is done |
This doctype is used to store the enedis monthly analysis, it includes the month average half-hour consumption for weekdays and weekends, the minimum half-hour load, and the max power consumption of the month.