Collect data from Hichi Smartmeter and expose it via MQTT
Project description
pysmartmeter
Collect data from Hichi Smartmeter aka volkszaehler.org
(USB Version) and expose it via MQTT.
In the end it can looks like the following Home Assistant dashboard screenshot, using MQTT integration:
With my "eBZ DD3" energy meterby eBZ GmbH the values update live every second ;)
quickstart
Install minimum requirements, e.g.:
~$ sudo apt install make python3-venv
Clone sources and install project:
~$ git clone https://github.com/jedie/pysmartmeter.git
~$ cd pysmartmeter
~/pysmartmeter$ make install-poetry
~/pysmartmeter$ make install
~/pysmartmeter$ ./cli.sh --help
+ exec .venv/bin/python -m pysmartmeter --help
PySmartMeter v0.1.0
Usage: python -m pysmartmeter [OPTIONS] COMMAND [ARGS]...
╭─ Options ─────────────────────────────────────────────────────────────────────────────────────────╮
│ --install-completion [bash|zsh|fish|powershell|pwsh] Install completion for the specified │
│ shell. │
│ [default: None] │
│ --show-completion [bash|zsh|fish|powershell|pwsh] Show completion for the specified │
│ shell, to copy it or customize the │
│ installation. │
│ [default: None] │
│ --help Show this message and exit. │
╰───────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ────────────────────────────────────────────────────────────────────────────────────────╮
│ check-code-style │
│ coverage Run and show coverage. │
│ debug-settings Display (anonymized) MQTT server username and password │
│ debug-systemd-service Just print the systemd service file content │
│ detect-serial Just print the detected serial port instance │
│ dump Just dump serial output │
│ fix-code-style Fix code style via darker │
│ mypy Run Mypy (configured in pyproject.toml) │
│ publish-loop Publish current data via MQTT (endless loop) │
│ setup-systemd-service Setup PySmartMeter systemd services and starts it. │
│ store-settings Store MQTT server settings. │
│ systemd-status Call systemd status of PySmartMeter services │
│ systemd-stop Stop PySmartMeter systemd services │
│ test Run unittests │
╰───────────────────────────────────────────────────────────────────────────────────────────────────╯
Test if you Hichi Smartmeter with CP2102 USB to UART Bridge Controller will be found, e.g.:
~/pysmartmeter$ ./cli.sh detect-serial
Maybe you didn't have permissions to access the port, e.g.:
~/pysmartmeter$ ./cli.sh dump
...
try: /dev/ttyUSB0 CP2102 USB to UART Bridge Controller - CP2102 USB to UART Bridge Controller USB VID:PID=10C4:EA60
/dev/ttyUSB0 file mode: 0o20660
/dev/ttyUSB0 user ID: 0
/dev/ttyUSB0 user group ID: 20
/dev/ttyUSB0 user group: 'dialout'
ERROR: [Errno 13] could not open port /dev/ttyUSB0: [Errno 13] Permission denied: '/dev/ttyUSB0'
...
Fix fiy by add the user to the group, e.g.:
sudo usermod -a -G dialout $USER
publish smartmeter data via MQTT
You have to store your MQTT settings (host, port, username, password) one time, e.g.:
~/pysmartmeter$ ./cli.sh store-settings
This will create a JSON file here: ~/.pysmartmeter
You can test reading this settings file with:
~/pysmartmeter$ ./cli.sh debug-settings
Setup systemd service:
~/pysmartmeter$ sudo ./cli.sh setup-systemd-service
This will create a systemd service that automaticly starts on every boot.
Check if service is running:
~/pysmartmeter$ sudo ./cli.sh systemd-status
If everything is fine: Go to your Home Assistant and check the MQTT integration The device discovery will be made automaticly.
various links
- https://github.com/pyserial/pyserial
- https://github.com/eclipse/paho.mqtt.python
- https://github.com/eclipse/mosquitto
- https://dewiki.de/Lexikon/OBIS-Kennzahlen (de) | https://www.promotic.eu/en/pmdoc/Subsystems/Comm/PmDrivers/IEC62056_OBIS.htm (en)
- https://www.photovoltaikforum.com/thread/145886-habe-lesk%C3%B6pfe-mit-usb-%C3%BCber/ (de)
- https://www.heise.de/tests/Ausprobiert-Guenstiger-IR-Lesekopf-fuer-Smart-Meter-mit-Tastmota-Firmware-7065559.html (de)
- https://www.home-assistant.io
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file pysmartmeter-0.2.2.tar.gz
.
File metadata
- Download URL: pysmartmeter-0.2.2.tar.gz
- Upload date:
- Size: 33.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e15ed6a701d9e87d9ad96dcfc8adccc3c57976779b841279aa2e7681347e1aef |
|
MD5 | 964c3ba08ae2f0bc23d9c04c825eaea0 |
|
BLAKE2b-256 | 8986d51b0086f4429c78ed5805a40039bb7563a484ba616f300d9448db8a3295 |
File details
Details for the file pysmartmeter-0.2.2-py3-none-any.whl
.
File metadata
- Download URL: pysmartmeter-0.2.2-py3-none-any.whl
- Upload date:
- Size: 40.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e018275b7a34b771e27d8233e313c9f5bc77da5b4a3a0c9dc2b797ac91524250 |
|
MD5 | d462e6668bf6c37a810b4b691e39c320 |
|
BLAKE2b-256 | 956b87d84677e0bb83525624c856e5f85a7e9340701cd295e293f1e794c5d775 |