home-assistant-addons/p1-logger/DOCS.md

144 lines
7 KiB
Markdown

# Documentation
NB: This documentation page is a work-in-progress and unfinished at the moment of writing. The ESPhome section still needs to be written. However, experienced ESPHome users should be able to figure the configuration out themselves using [the ESPhome configuration available in the P1 logger git repo](https://git.hollander.online/energy/p1-logger/src/branch/main/esphome)
## Installation instructions
These instructions contain 5 steps:
1. This add-on requires a PostgreSQL database, optionally with TimescaleDB support. In this example, we'll Expaso's TimescaleDB add-on in order to store data.
2. Install and setup the Mosquitto MQTT broker from the official add-ons repository.
3. Install and setup ESPhome to commission a P1 reader.
4. Install P1 Logger to connect to a P1 reader through the MQTT broker and record data into the database.
5. Finally, we setup Grafana to visualise the data recorded by P1 Logger.
### Install Expaso's TimescaleDB add-on
1. In Home Assistant, go to Settings -> Add-ons -> Add-on store
2. Click the three dots in the top-right corner, select 'Repositories'.
3. Add <https://github.com/Expaso/hassos-addons> .
After a few seconds, the TimescaleDB add-on should appear in the add-on store. Install it.
After installing TimescaleDB, go to Configuration. Click the three dots in the top-right corner and select "Edit in YAML". Then, make the following changes:
- Add opendtu_logger to `databases` and `timescaledb_enabled` like so:
```yml
databases:
- homeassistant
- p1_logger
timescale_enabled:
- homeassistant
- p1_logger
timescaledb:
telemetry: basic
maxmemory: 512MB
maxcpus: 4
max_connections: 50
system_packages: []
init_commands: []
retry_upgrade: false
```
Save the configuration, go to the "Info" tab and start TimescaleDB.
### Mosquitto MQTT Broker setup
#### Install Mosquitto
1. In Home Assistant, go to Settings -> Add-ons -> Add-on store
2. Search for "Mosquitto" and install it from the "Official add-ons" repository.
3. Start the add-on.
#### Configure Mosquitto as a HA broker
1. Go to Settings -> Devices & Services -> Integrations.
2. For "MQTT", click "Configure". After this completes, click "Finish".
#### Add users
##### Add the P1 reader user
1. Click on your name in the bottom-left corner.
2. Under "User settings", make sure that "Advanced mode" is enabled.
3. Go to Settings -> People and switch to the "Users" tab.
4. Add a user for the P1 reader:
- Display name: P1 reader
- Username: p1_reader
- Password and Confirm password: Choose a secure password. Make sure to save it for later use.
- Local access only: Switch this to "On" if Home Assistant is installed on a system in the same home as the P1 reader.
- Administrator: Leave this disabled.
##### Add the P1 logger user
1. Click on your name in the bottom-left corner.
2. Under "User settings", make sure that "Advanced mode" is enabled.
3. Go to Settings -> People and switch to the "Users" tab.
4. Add a user for the P1 logger:
- Display name: P1 logger
- Username: p1_logger
- Password and Confirm password: Choose a secure password. Make sure to save it for later use.
- Local access only: Switch this to "On".
- Administrator: Leave this disabled.
### ESPHome setup
TODO
### Setting up P1 Logger
Having setup the PostgreSQL / TimescaleDB database and Mosquitto MQTT broker, we can now install and configure P1 Logger. Add the [add-on repository](https://git.hollander.online/energy/home-assistant-addons) using the [instructions](https://git.hollander.online/energy/home-assistant-addons) provided. Then, click "Install" to install this add-on. Go to "Configuration".
- If you're using Expaso's TimescaleDB add-on, the `db` setting will **not** require any changes.
- MQTT
- `mqtt_broker`:
- Default: `tcp://core-mosquitto:1883`.
- In case of using an external broker, use a syntax like `tls://mqtt.example.org:8883` or `tcp://mqtt.example.org:1883`
- `mqtt_topic`: `p1/metrics`
- `mqtt_user`: `p1_logger`
- **`mqtt_password`: Enter the password you used in the previous step while creating the `p1_logger` user.**
- log_level: `INFO`
- Valid values are "`DEBUG`, `INFO`, `WARN` and `ERROR`.
- In `tz`, enter your timezone. The default is "Europe/Amsterdam". If you are in a different location, choose your timezone from [this list](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones#List).
- Optionally, if you don't want to use TimescaleDB, disable `timescaledb`.
Save the configuration, go to the "Info" tab and start P1 Logger.
Check the "Log" page. If the setup is succesfull, it should contain a message stating: `"level":"INFO","msg":"Connected to MQTT broker, subscribing to topic...","topic":"p1/metrics"`.
### Setting up Grafana
From the Home Assistant Community Add-ons repository, install Grafana. Click "Start" to start the add-on and enable "Show in sidebar". Grafana will now appear in the sidebar. Open it.
- In the top-left corner, click the three bars (open menu) -> Connections.
- Using the search box, enter `PostgreSQL`. Click the resulting "PostgreSQL".
- In the top-right corner, click "Add new data source"
- Use the following settings
- Name: `p1_logger`
- Host URL: `77b2833f-timescaledb`
- Database name: `p1_logger`
- Username: `postgres`
- Password: `homeassistant`
- Version: `16` or the closest version to it.
- TimescaleDB: Toggle the switch to enable TimescaleDB support.
- Click "Save and Test". A "Database Connection OK" message should appear.
- In the top-right corner, click the `+` sign, "Import dashboard".
- Go to <https://git.hollander.online/energy/p1-logger/src/branch/main/grafana>
- In this folder, a number of sample dashboards is available.
- English: `P1-meter-readings.json`
- Dutch: `P1-metergegevens.json`
- German: `P1-Messdaten.json`
- Click the dashboard you want, and then "Raw".
- Copy and paste the text into the "Import via dashboard JSON model" box.
- Click "Load".
- In the `p1` field, select `p1_logger` as the data source.
- Click import. You should now be able to view the data, collected by P1 Logger and stored into TimescaleDB.
- Feel free to try out the other dashboards as well.
## Security notice
Using the aforementioned steps, you should now have a working OpenDTU Logger setup. However, it is important to keep your data safe. [Expaso recommends](https://github.com/Expaso/hassos-addons/tree/master/timescaledb#usage) changing the default postgres `homeassistant` password. I recommend following their recommendation and also installing the pgAdmin4 add-on using the [instructions](https://github.com/Expaso/hassos-addons/tree/master/pgadmin4) they provide. In case you're doing this after setting up OpenDTU Logger, remember to also update this password in the OpenDTU Logger config and the Grafana data source connection settings.
## Feedback
If you'd like to provide feedback about this project, or in case you'd like to ask questions, please refer to [this page](https://pieterhollander.nl/author/pieter-hollander/) for contact information (e-mail, Github or LinkedIn), or use the [contact form](https://pieterhollander.nl/#contact) on my website.