Gazpar2HAWS is a gateway that reads data history from the GrDF (French gas provider) meter and send it to Home Assistant using WebSocket interface.
It is compatible with Home Assistant Energy Dashboard and permits to upload the history and keep it updated with the latest readings.
Gazpar2HAWS can be installed on any host as a standalone program.
The project requires Poetry tool for dependency and package management.
$ cd /path/to/my_install_folder/
$ git clone https://github.com/ssenart/gazpar2haws.git
$ cd gazpar2haws
$ poetry install
$ poetry shell
$ cd /path/to/my_install_folder/
$ mkdir gazpar2haws
$ cd gazpar2haws
$ python -m venv .venv
$ source .venv/bin/activate
$ pip install gazpar2haws
The following steps permit to build the Docker image based on the local source files.
- Clone the repo locally:
$ cd /path/to/my_install_folder/
$ git clone https://github.com/ssenart/gazpar2haws.git
- Edit the docker-compose.yaml file by setting the environment variables corresponding to your GrDF account and Home Assistant setup:
environment:
- GRDF_USERNAME=<GrDF account username>
- GRDF_PASSWORD=<GrDF account password>
- GRDF_PCE_IDENTIFIER=<GrDF PCE meter identifier>
- HOMEASSISTANT_HOST=<Home Assistant instance host name>
- HOMEASSISTANT_PORT=<Home Assistant instance port number>
- HOMEASSISTANT_TOKEN=<Home Assistant access token>
- Build the image:
$ docker compose -f docker/docker-compose.yaml build
- Run the container:
$ docker compose -f docker/docker-compose.yaml up -d
The following steps permits to run a container from an existing image available in the Docker Hub repository.
- Copy and save the following docker-compose.yaml file:
services:
gazpar2haws:
image: ssenart/gazpar2haws:latest
container_name: gazpar2haws
restart: unless-stopped
network_mode: bridge
user: "1000:1000"
volumes:
- ./gazpar2haws/config:/app/config
- ./gazpar2haws/log:/app/log
environment:
- GRDF_USERNAME=<GrDF account username>
- GRDF_PASSWORD=<GrDF account password>
- GRDF_PCE_IDENTIFIER=<GrDF PCE meter identifier>
- HOMEASSISTANT_HOST=<Home Assistant instance host name>
- HOMEASSISTANT_TOKEN=<Home Assistant access token>
Edit the environment variable section according to your setup.
- Run the container:
$ docker compose up -d
$ python -m gazpar2haws --config /path/to/configuration.yaml --secrets /path/to/secrets.yaml
The default configuration file is below.
logging:
file: log/gazpar2haws.log
console: true
level: debug
format: '%(asctime)s %(levelname)s [%(name)s] %(message)s'
grdf:
scan_interval: 0 # Number of minutes between each data retrieval (0 means no scan: a single data retrieval at startup, then stops).
devices:
- name: gazpar2haws # Name of the device in home assistant. It will be used as the entity_ids: sensor.${name}_volume and sensor.${name}_energy.
username: "!secret grdf.username"
password: "!secret grdf.password"
pce_identifier: "!secret grdf.pce_identifier"
timezone: Europe/Paris
last_days: 365 # Number of days of data to retrieve
reset: false # If true, the data will be reset before the first data retrieval
homeassistant:
host: "!secret homeassistant.host"
port: "!secret homeassistant.port"
token: "!secret homeassistant.token"
The default secret file:
grdf.username: ${GRDF_USERNAME}
grdf.password: ${GRDF_PASSWORD}
grdf.pce_identifier: ${GRDF_PCE_IDENTIFIER}
homeassistant.host: ${HA_HOST}
homeassistant.port: ${HA_PORT}
homeassistant.token: ${HA_TOKEN}
The history is uploaded on the entities with names:
- sensor.${name}_volume: Volume history in m³.
- sensor.${name}_energy: Energy history in kWh.
${name} is 'gazpar2haws' defined in the above configuration file. It can be replaced by any other name.
Those two entities have to already exist in Home Assistant.
They may be created using the following templates:
- name: gazpar2haws_volume
unit_of_measurement: 'm³'
availability: true
state: 0
icon: mdi:fire
device_class: gas
state_class: total_increasing
- name: gazpar2haws_energy
unit_of_measurement: 'kWh'
availability: true
state: 0
icon: mdi:fire
device_class: energy
state_class: total_increasing
In a Docker environment, the configurations files are instantiated by replacing the environment variables below in the template files:
Environment variable | Description | Required | Default value |
---|---|---|---|
GRDF_USERNAME | GrDF account user name | Yes | - |
GRDF_PASSWORD | GrDF account password (avoid using special characters) | Yes | - |
GRDF_PCE_IDENTIFIER | GrDF meter PCE identifier | Yes | - |
GRDF_SCAN_INTERVAL | Period in minutes to refresh meter data (0 means one single refresh and stop) | No | 480 (8 hours) |
GRDF_LAST_DAYS | Number of days of history data to retrieve | No | 1095 (3 years) |
HOMEASSISTANT_HOST | Home Assistant instance host name | Yes | - |
HOMEASSISTANT_PORT | Home Assistant instance port number | No | 8123 |
HOMEASSISTANT_TOKEN | Home Assistant access token | Yes | - |
You can setup them directly in a docker-compose.yaml file (environment section) or from a Docker command line (-e option).
- List all local images
$ docker image ls
- Build a new local image
$ docker compose -f docker/docker-compose.yaml build
- Tag the new built image with the version number
$ docker image tag ssenart/gazpar2haws:latest ssenart/gazpar2haws:0.1.2
- Login in Docker Hub
$ docker login
- Push all the tagged local images to Docker Hub
$ docker push --all-tags ssenart/gazpar2haws
All the gazpar2haws images are available here.
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to update tests as appropriate.
Gazpar2HAWS has been initiated for integration with Home Assistant energy dashboard.