gazpar2haws 0.1.1__tar.gz → 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,31 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [0.1.3] - 2025-01-03
8
+
9
+ ### Changed
10
+ [#11](https://github.com/ssenart/gazpar2haws/issues/11): Upgrade PyGazpar version to 1.2.6.
11
+
12
+ ## [0.1.2] - 2024-12-30
13
+
14
+ ### Added
15
+ [#2](https://github.com/ssenart/gazpar2haws/issues/2): DockerHub deployment.
16
+
17
+ ### Fixed
18
+ [#9](https://github.com/ssenart/gazpar2haws/issues/9): Incorrect timezone info creates duplicate import.
19
+
20
+ [#6](https://github.com/ssenart/gazpar2haws/issues/6): The last meter value may be imported multiple times and cause the today value being wrong.
21
+
22
+ [#3](https://github.com/ssenart/gazpar2haws/issues/3): reset=false makes the meter import to restart from zero.
23
+
24
+ ## [0.1.1] - 2024-12-22
25
+
26
+ ### Added
27
+ [#1](https://github.com/ssenart/gazpar2haws/issues/1): Publish energy indicator in kWh.
28
+
29
+ ## [0.1.0] - 2024-12-21
30
+
31
+ First version of the project.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: gazpar2haws
3
- Version: 0.1.1
3
+ Version: 0.1.3
4
4
  Summary: Gazpar2HAWS is a gateway that reads data history from the GrDF (French gas provider) meter and send it to Home Assistant using WebSocket interface
5
5
  License: MIT
6
6
  Author: Stéphane Senart
@@ -9,7 +9,7 @@ Classifier: License :: OSI Approved :: MIT License
9
9
  Classifier: Programming Language :: Python :: 3
10
10
  Classifier: Programming Language :: Python :: 3.12
11
11
  Classifier: Programming Language :: Python :: 3.13
12
- Requires-Dist: pygazpar (==1.2.5)
12
+ Requires-Dist: pygazpar (>=1.2.6,<2.0.0)
13
13
  Requires-Dist: pytest-asyncio (>=0.25.0,<0.26.0)
14
14
  Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
15
15
  Requires-Dist: websockets (>=14.1,<15.0)
@@ -58,6 +58,68 @@ $ pip install gazpar2haws
58
58
 
59
59
  ```
60
60
 
61
+ ### 3. Using Dockerfile
62
+
63
+ The following steps permit to build the Docker image based on the local source files.
64
+
65
+ 1. Clone the repo locally:
66
+ ```sh
67
+ $ cd /path/to/my_install_folder/
68
+
69
+ $ git clone https://github.com/ssenart/gazpar2haws.git
70
+ ```
71
+ 2. Edit the docker-compose.yaml file by setting the environment variables corresponding to your GrDF account and Home Assistant setup:
72
+
73
+ ```yaml
74
+ environment:
75
+ - GRDF_USERNAME=<GrDF account username>
76
+ - GRDF_PASSWORD=<GrDF account password>
77
+ - GRDF_PCE_IDENTIFIER=<GrDF PCE meter identifier>
78
+ - HOMEASSISTANT_HOST=<Home Assistant instance host name>
79
+ - HOMEASSISTANT_PORT=<Home Assistant instance port number>
80
+ - HOMEASSISTANT_TOKEN=<Home Assistant access token>
81
+ ```
82
+ 3. Build the image:
83
+ ```sh
84
+ $ docker compose -f docker/docker-compose.yaml build
85
+ ```
86
+ 4. Run the container:
87
+ ```sh
88
+ $ docker compose -f docker/docker-compose.yaml up -d
89
+ ```
90
+
91
+ ### 4. Using Docker Hub
92
+
93
+ The following steps permits to run a container from an existing image available in the Docker Hub repository.
94
+
95
+ 1. Copy and save the following docker-compose.yaml file:
96
+
97
+ ```yaml
98
+ services:
99
+ gazpar2haws:
100
+ image: ssenart/gazpar2haws:latest
101
+ container_name: gazpar2haws
102
+ restart: unless-stopped
103
+ network_mode: bridge
104
+ user: "1000:1000"
105
+ volumes:
106
+ - ./gazpar2haws/config:/app/config
107
+ - ./gazpar2haws/log:/app/log
108
+ environment:
109
+ - GRDF_USERNAME=<GrDF account username>
110
+ - GRDF_PASSWORD=<GrDF account password>
111
+ - GRDF_PCE_IDENTIFIER=<GrDF PCE meter identifier>
112
+ - HOMEASSISTANT_HOST=<Home Assistant instance host name>
113
+ - HOMEASSISTANT_TOKEN=<Home Assistant access token>
114
+ ```
115
+
116
+ Edit the environment variable section according to your setup.
117
+
118
+ 2. Run the container:
119
+ ```sh
120
+ $ docker compose up -d
121
+ ```
122
+
61
123
  ## Usage
62
124
 
63
125
  ### Command line
@@ -136,6 +198,57 @@ They may be created using the following templates:
136
198
 
137
199
  ```
138
200
 
201
+ ### Environment variable for Docker
202
+
203
+ In a Docker environment, the configurations files are instantiated by replacing the environment variables below in the template files:
204
+
205
+ | Environment variable | Description | Required | Default value |
206
+ |---|---|---|---|
207
+ | GRDF_USERNAME | GrDF account user name | Yes | - |
208
+ | GRDF_PASSWORD | GrDF account password (avoid using special characters) | Yes | - |
209
+ | GRDF_PCE_IDENTIFIER | GrDF meter PCE identifier | Yes | - |
210
+ | GRDF_SCAN_INTERVAL | Period in minutes to refresh meter data (0 means one single refresh and stop) | No | 480 (8 hours) |
211
+ | GRDF_LAST_DAYS | Number of days of history data to retrieve | No | 1095 (3 years) |
212
+ | HOMEASSISTANT_HOST | Home Assistant instance host name | Yes | - |
213
+ | HOMEASSISTANT_PORT | Home Assistant instance port number | No | 8123 |
214
+ | HOMEASSISTANT_TOKEN | Home Assistant access token | Yes | - |
215
+
216
+ You can setup them directly in a docker-compose.yaml file (environment section) or from a Docker command line (-e option).
217
+
218
+ ## Publish a new image on Docker Hub
219
+
220
+ 1. List all local images
221
+
222
+ ```sh
223
+ $ docker image ls
224
+ ```
225
+
226
+ 2. Build a new local image
227
+
228
+ ```sh
229
+ $ docker compose -f docker/docker-compose.yaml build
230
+ ```
231
+
232
+ 3. Tag the new built image with the version number
233
+
234
+ ```sh
235
+ $ docker image tag ssenart/gazpar2haws:latest ssenart/gazpar2haws:0.1.2
236
+ ```
237
+
238
+ 4. Login in Docker Hub
239
+
240
+ ```sh
241
+ $ docker login
242
+ ```
243
+
244
+ 5. Push all the tagged local images to Docker Hub
245
+
246
+ ```sh
247
+ $ docker push --all-tags ssenart/gazpar2haws
248
+ ```
249
+
250
+ All the gazpar2haws images are available [here](https://hub.docker.com/repository/docker/ssenart/gazpar2haws/general).
251
+
139
252
  ## Contributing
140
253
  Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
141
254
 
@@ -0,0 +1,247 @@
1
+ # gazpar2haws
2
+ Gazpar2HAWS is a gateway that reads data history from the GrDF (French gas provider) meter and send it to Home Assistant using WebSocket interface.
3
+
4
+ It is compatible with Home Assistant Energy Dashboard and permits to upload the history and keep it updated with the latest readings.
5
+
6
+ ## Installation
7
+
8
+ Gazpar2HAWS can be installed on any host as a standalone program.
9
+
10
+ ### 1. Using source files
11
+
12
+ The project requires [Poetry](https://python-poetry.org/) tool for dependency and package management.
13
+
14
+ ```sh
15
+ $ cd /path/to/my_install_folder/
16
+
17
+ $ git clone https://github.com/ssenart/gazpar2haws.git
18
+
19
+ $ cd gazpar2haws
20
+
21
+ $ poetry install
22
+
23
+ $ poetry shell
24
+
25
+ ```
26
+
27
+ ### 2. Using PIP package
28
+
29
+ ```sh
30
+ $ cd /path/to/my_install_folder/
31
+
32
+ $ mkdir gazpar2haws
33
+
34
+ $ cd gazpar2haws
35
+
36
+ $ python -m venv .venv
37
+
38
+ $ source .venv/bin/activate
39
+
40
+ $ pip install gazpar2haws
41
+
42
+ ```
43
+
44
+ ### 3. Using Dockerfile
45
+
46
+ The following steps permit to build the Docker image based on the local source files.
47
+
48
+ 1. Clone the repo locally:
49
+ ```sh
50
+ $ cd /path/to/my_install_folder/
51
+
52
+ $ git clone https://github.com/ssenart/gazpar2haws.git
53
+ ```
54
+ 2. Edit the docker-compose.yaml file by setting the environment variables corresponding to your GrDF account and Home Assistant setup:
55
+
56
+ ```yaml
57
+ environment:
58
+ - GRDF_USERNAME=<GrDF account username>
59
+ - GRDF_PASSWORD=<GrDF account password>
60
+ - GRDF_PCE_IDENTIFIER=<GrDF PCE meter identifier>
61
+ - HOMEASSISTANT_HOST=<Home Assistant instance host name>
62
+ - HOMEASSISTANT_PORT=<Home Assistant instance port number>
63
+ - HOMEASSISTANT_TOKEN=<Home Assistant access token>
64
+ ```
65
+ 3. Build the image:
66
+ ```sh
67
+ $ docker compose -f docker/docker-compose.yaml build
68
+ ```
69
+ 4. Run the container:
70
+ ```sh
71
+ $ docker compose -f docker/docker-compose.yaml up -d
72
+ ```
73
+
74
+ ### 4. Using Docker Hub
75
+
76
+ The following steps permits to run a container from an existing image available in the Docker Hub repository.
77
+
78
+ 1. Copy and save the following docker-compose.yaml file:
79
+
80
+ ```yaml
81
+ services:
82
+ gazpar2haws:
83
+ image: ssenart/gazpar2haws:latest
84
+ container_name: gazpar2haws
85
+ restart: unless-stopped
86
+ network_mode: bridge
87
+ user: "1000:1000"
88
+ volumes:
89
+ - ./gazpar2haws/config:/app/config
90
+ - ./gazpar2haws/log:/app/log
91
+ environment:
92
+ - GRDF_USERNAME=<GrDF account username>
93
+ - GRDF_PASSWORD=<GrDF account password>
94
+ - GRDF_PCE_IDENTIFIER=<GrDF PCE meter identifier>
95
+ - HOMEASSISTANT_HOST=<Home Assistant instance host name>
96
+ - HOMEASSISTANT_TOKEN=<Home Assistant access token>
97
+ ```
98
+
99
+ Edit the environment variable section according to your setup.
100
+
101
+ 2. Run the container:
102
+ ```sh
103
+ $ docker compose up -d
104
+ ```
105
+
106
+ ## Usage
107
+
108
+ ### Command line
109
+
110
+ ```sh
111
+ $ python -m gazpar2haws --config /path/to/configuration.yaml --secrets /path/to/secrets.yaml
112
+ ```
113
+
114
+ ### Configuration file
115
+
116
+ The default configuration file is below.
117
+
118
+ ```yaml
119
+ logging:
120
+ file: log/gazpar2haws.log
121
+ console: true
122
+ level: debug
123
+ format: '%(asctime)s %(levelname)s [%(name)s] %(message)s'
124
+
125
+ grdf:
126
+ scan_interval: 0 # Number of minutes between each data retrieval (0 means no scan: a single data retrieval at startup, then stops).
127
+ devices:
128
+ - name: gazpar2haws # Name of the device in home assistant. It will be used as the entity_ids: sensor.${name}_volume and sensor.${name}_energy.
129
+ username: "!secret grdf.username"
130
+ password: "!secret grdf.password"
131
+ pce_identifier: "!secret grdf.pce_identifier"
132
+ timezone: Europe/Paris
133
+ last_days: 365 # Number of days of data to retrieve
134
+ reset: false # If true, the data will be reset before the first data retrieval
135
+
136
+ homeassistant:
137
+ host: "!secret homeassistant.host"
138
+ port: "!secret homeassistant.port"
139
+ token: "!secret homeassistant.token"
140
+ ```
141
+
142
+ The default secret file:
143
+
144
+ ```yaml
145
+ grdf.username: ${GRDF_USERNAME}
146
+ grdf.password: ${GRDF_PASSWORD}
147
+ grdf.pce_identifier: ${GRDF_PCE_IDENTIFIER}
148
+
149
+ homeassistant.host: ${HA_HOST}
150
+ homeassistant.port: ${HA_PORT}
151
+ homeassistant.token: ${HA_TOKEN}
152
+ ```
153
+
154
+ The history is uploaded on the entities with names:
155
+ - sensor.${name}_volume: Volume history in m³.
156
+ - sensor.${name}_energy: Energy history in kWh.
157
+
158
+ ${name} is 'gazpar2haws' defined in the above configuration file. It can be replaced by any other name.
159
+
160
+ Those two entities have to already exist in Home Assistant.
161
+
162
+ They may be created using the following templates:
163
+
164
+ ```yaml
165
+
166
+ - name: gazpar2haws_volume
167
+ unit_of_measurement: 'm³'
168
+ availability: true
169
+ state: 0
170
+ icon: mdi:fire
171
+ device_class: gas
172
+ state_class: total_increasing
173
+
174
+ - name: gazpar2haws_energy
175
+ unit_of_measurement: 'kWh'
176
+ availability: true
177
+ state: 0
178
+ icon: mdi:fire
179
+ device_class: energy
180
+ state_class: total_increasing
181
+
182
+ ```
183
+
184
+ ### Environment variable for Docker
185
+
186
+ In a Docker environment, the configurations files are instantiated by replacing the environment variables below in the template files:
187
+
188
+ | Environment variable | Description | Required | Default value |
189
+ |---|---|---|---|
190
+ | GRDF_USERNAME | GrDF account user name | Yes | - |
191
+ | GRDF_PASSWORD | GrDF account password (avoid using special characters) | Yes | - |
192
+ | GRDF_PCE_IDENTIFIER | GrDF meter PCE identifier | Yes | - |
193
+ | GRDF_SCAN_INTERVAL | Period in minutes to refresh meter data (0 means one single refresh and stop) | No | 480 (8 hours) |
194
+ | GRDF_LAST_DAYS | Number of days of history data to retrieve | No | 1095 (3 years) |
195
+ | HOMEASSISTANT_HOST | Home Assistant instance host name | Yes | - |
196
+ | HOMEASSISTANT_PORT | Home Assistant instance port number | No | 8123 |
197
+ | HOMEASSISTANT_TOKEN | Home Assistant access token | Yes | - |
198
+
199
+ You can setup them directly in a docker-compose.yaml file (environment section) or from a Docker command line (-e option).
200
+
201
+ ## Publish a new image on Docker Hub
202
+
203
+ 1. List all local images
204
+
205
+ ```sh
206
+ $ docker image ls
207
+ ```
208
+
209
+ 2. Build a new local image
210
+
211
+ ```sh
212
+ $ docker compose -f docker/docker-compose.yaml build
213
+ ```
214
+
215
+ 3. Tag the new built image with the version number
216
+
217
+ ```sh
218
+ $ docker image tag ssenart/gazpar2haws:latest ssenart/gazpar2haws:0.1.2
219
+ ```
220
+
221
+ 4. Login in Docker Hub
222
+
223
+ ```sh
224
+ $ docker login
225
+ ```
226
+
227
+ 5. Push all the tagged local images to Docker Hub
228
+
229
+ ```sh
230
+ $ docker push --all-tags ssenart/gazpar2haws
231
+ ```
232
+
233
+ All the gazpar2haws images are available [here](https://hub.docker.com/repository/docker/ssenart/gazpar2haws/general).
234
+
235
+ ## Contributing
236
+ Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
237
+
238
+ Please make sure to update tests as appropriate.
239
+
240
+ ## License
241
+ [MIT](https://choosealicense.com/licenses/mit/)
242
+
243
+ ## Project status
244
+ Gazpar2HAWS has been initiated for integration with [Home Assistant](https://www.home-assistant.io/) energy dashboard.
245
+
246
+
247
+
@@ -64,25 +64,33 @@ class Gazpar:
64
64
  raise Exception(errorMessage)
65
65
 
66
66
  if exists_statistic_id:
67
- # Get last statistics from GrDF
67
+ # Get the last statistic from Home Assistant
68
68
  try:
69
- last_statistics = await self._homeassistant.get_last_statistic(entity_id)
69
+ last_statistic = await self._homeassistant.get_last_statistic(entity_id)
70
70
  except Exception:
71
71
  errorMessage = f"Error while fetching last statistics from Home Assistant: {traceback.format_exc()}"
72
72
  Logger.warning(errorMessage)
73
73
  raise Exception(errorMessage)
74
74
 
75
75
  # Extract the end date of the last statistics from the unix timestamp
76
- last_date = datetime.fromtimestamp(last_statistics.get("end") / 1000)
76
+ last_date = datetime.fromtimestamp(last_statistic.get("start") / 1000, tz=pytz.timezone(self._timezone))
77
77
 
78
78
  # Compute the number of days since the last statistics
79
- last_days = (datetime.now() - last_date).days
79
+ last_days = (datetime.now(tz=pytz.timezone(self._timezone)) - last_date).days
80
+
81
+ # Get the last meter value
82
+ last_value = last_statistic.get("sum")
80
83
  else:
81
84
  # If the sensor does not exist in Home Assistant, fetch the last days defined in the configuration
82
85
  last_days = self._last_days
83
86
 
84
87
  # Compute the corresponding last_date
85
- last_date = datetime.now() - timedelta(days=last_days)
88
+ last_date = datetime.now(tz=pytz.timezone(self._timezone)) - timedelta(days=last_days)
89
+
90
+ # If no statistic, the last value is initialized to zero
91
+ last_value = 0
92
+
93
+ Logger.debug(f"Last date: {last_date}, last days: {last_days}, last value: {last_value}")
86
94
 
87
95
  # Initialize PyGazpar client
88
96
  client = pygazpar.Client(pygazpar.JsonWebDataSource(username=self._username, password=self._password))
@@ -100,18 +108,19 @@ class Gazpar:
100
108
  # Compute and fill statistics.
101
109
  daily = data.get(pygazpar.Frequency.DAILY.value)
102
110
  statistics = []
103
- total = 0
111
+ total = last_value
104
112
  for reading in daily:
105
113
  # Parse date format DD/MM/YYYY into datetime.
106
114
  date = datetime.strptime(reading[pygazpar.PropertyName.TIME_PERIOD.value], "%d/%m/%Y")
107
115
 
108
- # Skip all readings before the last statistic date.
109
- if date.date() < last_date.date():
110
- continue
111
-
112
116
  # Set the timezone
113
117
  date = timezone.localize(date)
114
118
 
119
+ # Skip all readings before the last statistic date.
120
+ if date <= last_date:
121
+ Logger.debug(f"Skip date: {date} <= {last_date}")
122
+ continue
123
+
115
124
  # Compute the total volume and energy
116
125
  total += reading[property_name]
117
126
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "gazpar2haws"
3
- version = "0.1.1"
3
+ version = "0.1.3"
4
4
  description = "Gazpar2HAWS is a gateway that reads data history from the GrDF (French gas provider) meter and send it to Home Assistant using WebSocket interface"
5
5
  authors = ["Stéphane Senart"]
6
6
  license = "MIT"
@@ -9,7 +9,7 @@ include = ["CHANGELOG.md"]
9
9
 
10
10
  [tool.poetry.dependencies]
11
11
  python = "^3.12"
12
- pygazpar = "==1.2.5"
12
+ pygazpar = "^1.2.6"
13
13
  websockets = "^14.1"
14
14
  pytest-asyncio = "^0.25.0"
15
15
  pyyaml = "^6.0.2"
@@ -1,15 +0,0 @@
1
- # Changelog
2
- All notable changes to this project will be documented in this file.
3
-
4
- The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
- and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
-
7
- ## [0.1.1] - 2024-12-22
8
-
9
- ### Added
10
-
11
- [#1](https://github.com/ssenart/gazpar2haws/issues/1): Publish energy indicator in kWh.
12
-
13
- ## [0.1.0] - 2024-12-21
14
-
15
- First version of the project.
@@ -1,134 +0,0 @@
1
- # gazpar2haws
2
- Gazpar2HAWS is a gateway that reads data history from the GrDF (French gas provider) meter and send it to Home Assistant using WebSocket interface.
3
-
4
- It is compatible with Home Assistant Energy Dashboard and permits to upload the history and keep it updated with the latest readings.
5
-
6
- ## Installation
7
-
8
- Gazpar2HAWS can be installed on any host as a standalone program.
9
-
10
- ### 1. Using source files
11
-
12
- The project requires [Poetry](https://python-poetry.org/) tool for dependency and package management.
13
-
14
- ```sh
15
- $ cd /path/to/my_install_folder/
16
-
17
- $ git clone https://github.com/ssenart/gazpar2haws.git
18
-
19
- $ cd gazpar2haws
20
-
21
- $ poetry install
22
-
23
- $ poetry shell
24
-
25
- ```
26
-
27
- ### 2. Using PIP package
28
-
29
- ```sh
30
- $ cd /path/to/my_install_folder/
31
-
32
- $ mkdir gazpar2haws
33
-
34
- $ cd gazpar2haws
35
-
36
- $ python -m venv .venv
37
-
38
- $ source .venv/bin/activate
39
-
40
- $ pip install gazpar2haws
41
-
42
- ```
43
-
44
- ## Usage
45
-
46
- ### Command line
47
-
48
- ```sh
49
- $ python -m gazpar2haws --config /path/to/configuration.yaml --secrets /path/to/secrets.yaml
50
- ```
51
-
52
- ### Configuration file
53
-
54
- The default configuration file is below.
55
-
56
- ```yaml
57
- logging:
58
- file: log/gazpar2haws.log
59
- console: true
60
- level: debug
61
- format: '%(asctime)s %(levelname)s [%(name)s] %(message)s'
62
-
63
- grdf:
64
- scan_interval: 0 # Number of minutes between each data retrieval (0 means no scan: a single data retrieval at startup, then stops).
65
- devices:
66
- - name: gazpar2haws # Name of the device in home assistant. It will be used as the entity_ids: sensor.${name}_volume and sensor.${name}_energy.
67
- username: "!secret grdf.username"
68
- password: "!secret grdf.password"
69
- pce_identifier: "!secret grdf.pce_identifier"
70
- timezone: Europe/Paris
71
- last_days: 365 # Number of days of data to retrieve
72
- reset: false # If true, the data will be reset before the first data retrieval
73
-
74
- homeassistant:
75
- host: "!secret homeassistant.host"
76
- port: "!secret homeassistant.port"
77
- token: "!secret homeassistant.token"
78
- ```
79
-
80
- The default secret file:
81
-
82
- ```yaml
83
- grdf.username: ${GRDF_USERNAME}
84
- grdf.password: ${GRDF_PASSWORD}
85
- grdf.pce_identifier: ${GRDF_PCE_IDENTIFIER}
86
-
87
- homeassistant.host: ${HA_HOST}
88
- homeassistant.port: ${HA_PORT}
89
- homeassistant.token: ${HA_TOKEN}
90
- ```
91
-
92
- The history is uploaded on the entities with names:
93
- - sensor.${name}_volume: Volume history in m³.
94
- - sensor.${name}_energy: Energy history in kWh.
95
-
96
- ${name} is 'gazpar2haws' defined in the above configuration file. It can be replaced by any other name.
97
-
98
- Those two entities have to already exist in Home Assistant.
99
-
100
- They may be created using the following templates:
101
-
102
- ```yaml
103
-
104
- - name: gazpar2haws_volume
105
- unit_of_measurement: 'm³'
106
- availability: true
107
- state: 0
108
- icon: mdi:fire
109
- device_class: gas
110
- state_class: total_increasing
111
-
112
- - name: gazpar2haws_energy
113
- unit_of_measurement: 'kWh'
114
- availability: true
115
- state: 0
116
- icon: mdi:fire
117
- device_class: energy
118
- state_class: total_increasing
119
-
120
- ```
121
-
122
- ## Contributing
123
- Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
124
-
125
- Please make sure to update tests as appropriate.
126
-
127
- ## License
128
- [MIT](https://choosealicense.com/licenses/mit/)
129
-
130
- ## Project status
131
- Gazpar2HAWS has been initiated for integration with [Home Assistant](https://www.home-assistant.io/) energy dashboard.
132
-
133
-
134
-
File without changes