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$ ./cli.py --help
The output of ./cli.py --help
looks like:
Usage: ./cli.py [OPTIONS] COMMAND [ARGS]...
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────╮
│ --help Show this message and exit. │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────────────────────────╮
│ check-code-style Check code style by calling darker + flake8 │
│ 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 of all pysmartmeter source code files via darker │
│ install Run pip-sync and install 'pysmartmeter' via pip as editable. │
│ mypy Run Mypy (configured in pyproject.toml) │
│ publish Build and upload this project to PyPi │
│ publish-loop Publish current data via MQTT (endless loop) │
│ safety Run safety check against current requirements files │
│ setup-systemd-service Setup PySmartMeter systemd services and starts it. │
│ store-settings Store MQTT server settings. │
│ systemd-restart Restart PySmartMeter systemd services │
│ systemd-status Call systemd status of PySmartMeter services │
│ systemd-stop Stop PySmartMeter systemd services │
│ test Run unittests │
│ tox Run tox │
│ update Update "requirements*.txt" dependencies files │
│ update-test-snapshot-files Update all test snapshot files (by remove and recreate all snapshot │
│ files) │
│ version Print version and exit │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
Test if you Hichi Smartmeter with CP2102 USB to UART Bridge Controller will be found, e.g.:
~/pysmartmeter$ ./cli.py detect-serial
Maybe you didn't have permissions to access the port, e.g.:
~/pysmartmeter$ ./cli.py 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.py store-settings
This will create a JSON file here: ~/.pysmartmeter
You can test reading this settings file with:
~/pysmartmeter$ ./cli.py debug-settings
Setup systemd service:
~/pysmartmeter$ sudo ./cli.py setup-systemd-service
This will create a systemd service that automaticly starts on every boot.
Check if service is running:
~/pysmartmeter$ sudo ./cli.py systemd-status
If everything is fine: Go to your Home Assistant and check the MQTT integration The device discovery will be made automaticly.
Backwards-incompatible changes
v0.2.x -> v0.3.x
Packages changes:
- We switched from
poetry
topip-tools
Makefile
was removed- "Renamed"
cli.sh
tocli.py
The Makefile
is no longer needed, because "Bootstrapping" will be made, just by call cli.py
To migrate, just remove the existing .venv
and create a fresh one, e.g.:
~$ cd pysmartmeter
~/pysmartmeter$ git pull origin main
~/pysmartmeter$ rm -Rf .venv
~/pysmartmeter$ ./cli.py --help
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.3.2.tar.gz
.
File metadata
- Download URL: pysmartmeter-0.3.2.tar.gz
- Upload date:
- Size: 35.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.10.6
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0ce24e5390fe331bee31ad6c080247d7286d48bf33765b285723a9cb4b2605d0 |
|
MD5 | 32a152b02d94d76c06f041596a09c621 |
|
BLAKE2b-256 | 5fa42545af743cf7534c06d4f08fad6509f120c9f80c54fbb53a232607ae1bde |
File details
Details for the file pysmartmeter-0.3.2-py3-none-any.whl
.
File metadata
- Download URL: pysmartmeter-0.3.2-py3-none-any.whl
- Upload date:
- Size: 41.3 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 | 0ed1d6be039eb9bdb75dd6ab60ae474987e8ac6707ef489fb9eaedecc3f6b629 |
|
MD5 | 7ee11c3a81d2cc6b8d9f55841252ac64 |
|
BLAKE2b-256 | 4c6cafd9a79d829b6351c5a1b156881f68862ae835f99dd7276d79a71fca1ce6 |