A tiny python based CLI application to see the data, that was recorded and send by your Tibber Pulse IR to your Tibber Pulse Bridge.
Project description
The ultimative Tibber Pulse SML Debugging tool
This is a tiny Python-based CLI app, that helps you to dig a little bit deeper into the communication of your electric meter and your Tibber Pulse.
You know it: The data from your electric meter doesn't show up in your Tibber app, the Tibber app tells you to rotate the Pulse IR for the 168546854468498th time for a little bit, the usage data in your Tibber app updates only once per hour or whatever.
You don't really know, when the Tibber Pulse IR is at the correct position, and you also don't know whether your electric meter is doing weird stuff or so.
This app may help you. It polls the data from the local web server of the Tibber Pulse Bridge in a short interval and directly shows you, what happens, if you turn the head of your Pulse IR a little bit.
This project is not affiliated to Tibber. I am just a normal Tibber customer and I also don't get any money, discounts or whatever for this. This app is thought as a "customers help customers"-project.
Usage
Installation
This project is published on PyPI, so you just want to install it via pipx or pip. Please note, that pipx is the recommended way.
$ pipx install tibber-pulse-sml-debugger
OR
$ pip install tibber-pulse-sml-debugger
Activating the web server in the Tibber Pulse Bridge
Please note, that you MUST activate the local webserver of your Tibber Pulse Bridge. I will provide a tutorial here, but cannot assume any warranties or liabilities, whether this is working or turning your Tibber Pulse into a singing toaster or something...
- Remember/Write down the password of your Tibber Pulse. It can be found on the bottom side of the Bridge.
- Bring your Bridge in AP mode - citation from my manual: "[...] unplug the device from your socket and plug it in again 2 times. After the first time, you plug it in, the LED will light up red, then white, then yellow. Once you've plugged it in for the second time, the LED will light up red, then white, then green [...]"
- Connect to the WiFi network of the Bridge - use the password from step 1
- Open http://10.133.70.1 in your browser and log in with admin and the password from step 1.
- Go to the tab console and execute the following commands:
param_set 39 TRUE
param_store
- Wait ~1 minute.
- Remove the Bridge from your socket, wait a few seconds and plug it back in
- (Optional) If not already known, find out the IP address of your Tibber Pulse Bridge via e.g. your routers web interface.
- You can now access the web server of your bridge in your WiFi network.
Use the app
After the installation, the app can be executed via the command
tibber-pulse-sml-debugger
or just tpsd
.
So if you just want to see, whether your Tibber Pulse is reporting valid data, just execute it like this:
$ tpsd --address 192.0.2.123 --password PASS-WORD
2024-11-20 20:13:10.868 | INFO | tibber_pulse_sml_debugger.main:main:104 - Valid SML data received!
2024-11-20 20:13:11.997 | INFO | tibber_pulse_sml_debugger.main:main:104 - Valid SML data received!
2024-11-20 20:13:13.027 | INFO | tibber_pulse_sml_debugger.main:main:104 - Valid SML data received!
^C2024-11-20 20:13:13.241 | INFO | tibber_pulse_sml_debugger.main:main:133 - +++ STATISTICS +++
2024-11-20 20:13:13.241 | INFO | tibber_pulse_sml_debugger.main:main:137 - Total responses: 3
2024-11-20 20:13:13.241 | INFO | tibber_pulse_sml_debugger.main:main:138 - Valid responses: 3 (100.0%)
2024-11-20 20:13:13.241 | INFO | tibber_pulse_sml_debugger.main:main:139 - Empty responses: 0 (0.0%)
2024-11-20 20:13:13.241 | INFO | tibber_pulse_sml_debugger.main:main:142 - CrcError responses: 0 (0.0%)
2024-11-20 20:13:13.241 | INFO | tibber_pulse_sml_debugger.main:main:145 - Responses with other errors: 0 (0.0%)
If you want to see, what's reported by your electric meter in detail, you want
to pass --debug
:
$ tpsd --address 192.0.2.123 --password PASS-WORD --debug
2024-11-20 20:14:22.039 | INFO | tibber_pulse_sml_debugger.main:main:104 - Valid SML data received!
2024-11-20 20:14:22.040 | DEBUG | tibber_pulse_sml_debugger.main:main:105 - +++ SML DATA +++
2024-11-20 20:14:22.040 | DEBUG | tibber_pulse_sml_debugger.main:main:107 - Zählerstand Bezug Total -> 123456789.4 Wh
2024-11-20 20:14:22.040 | DEBUG | tibber_pulse_sml_debugger.main:main:107 - Zählerstand Einspeisung Total -> 123456.4 Wh
2024-11-20 20:14:22.040 | DEBUG | tibber_pulse_sml_debugger.main:main:107 - aktuelle Wirkleistung -> 414 W
2024-11-20 20:14:23.096 | INFO | tibber_pulse_sml_debugger.main:main:104 - Valid SML data received!
2024-11-20 20:14:23.096 | DEBUG | tibber_pulse_sml_debugger.main:main:105 - +++ SML DATA +++
2024-11-20 20:14:23.096 | DEBUG | tibber_pulse_sml_debugger.main:main:107 - Zählerstand Bezug Total -> 123456789.6 Wh
2024-11-20 20:14:23.096 | DEBUG | tibber_pulse_sml_debugger.main:main:107 - Zählerstand Einspeisung Total -> 123456.4 Wh
2024-11-20 20:14:23.096 | DEBUG | tibber_pulse_sml_debugger.main:main:107 - aktuelle Wirkleistung -> 413 W
2024-11-20 20:14:24.186 | INFO | tibber_pulse_sml_debugger.main:main:104 - Valid SML data received!
2024-11-20 20:14:24.186 | DEBUG | tibber_pulse_sml_debugger.main:main:105 - +++ SML DATA +++
2024-11-20 20:14:24.186 | DEBUG | tibber_pulse_sml_debugger.main:main:107 - Zählerstand Bezug Total -> 123456789.7 Wh
2024-11-20 20:14:24.186 | DEBUG | tibber_pulse_sml_debugger.main:main:107 - Zählerstand Einspeisung Total -> 123456.4 Wh
2024-11-20 20:14:24.186 | DEBUG | tibber_pulse_sml_debugger.main:main:107 - aktuelle Wirkleistung -> 413 W
^C2024-11-20 20:14:24.492 | INFO | tibber_pulse_sml_debugger.main:main:133 - +++ STATISTICS +++
2024-11-20 20:14:24.492 | INFO | tibber_pulse_sml_debugger.main:main:137 - Total responses: 3
2024-11-20 20:14:24.492 | INFO | tibber_pulse_sml_debugger.main:main:138 - Valid responses: 3 (100.0%)
2024-11-20 20:14:24.492 | INFO | tibber_pulse_sml_debugger.main:main:139 - Empty responses: 0 (0.0%)
2024-11-20 20:14:24.492 | INFO | tibber_pulse_sml_debugger.main:main:142 - CrcError responses: 0 (0.0%)
2024-11-20 20:14:24.492 | INFO | tibber_pulse_sml_debugger.main:main:145 - Responses with other errors: 0 (0.0%)
All command line options are also listed and described below:
Option | Effect |
---|---|
-h , --help |
Shows a help message and exit. |
-u , --username |
The username of your Tibber Pulse Bridge web server. Defaults to the factory default 'admin'. |
-p , --password |
The password of your Tibber Pulse Bridge web server. |
-n , --node-id |
The Node ID of your Tibber Pulse IR. Defaults to 1, which is not correct some times. You will find the Node ID in the web interface of your Tibber Pulse Bridge. |
-i , --interval |
The interval for polling the API of your Tibber Pulse Bridge. Defaults to one second. |
-d , --debug |
Whether all meter data should be logged to stdout. |
Update
You can update via pipx/pip by using the following commands:
$ pipx upgrade tibber-pulse-sml-debugger
OR
$ pip install --upgrade tibber-pulse-sml-debugger
Development
This is a Poetry project. You can set up your development environment by cloning
this Repository via git
and running a poetry install
in the project
directory afterward.
The Lockfile can be updated by using poetry lock
(also updates the installed
packages in the dependency tree).
The project can be bundled by running poetry build
and published by running
poetry publish
. Results can be found in the dist/
directory.
For code formatting, ruff
was used.
Tests
The app was manually tested with Python 3.10 on Ubuntu 22.04, but should also run with any newer Python3 version and every other OS, that is supported by Python3.
It was tested with the following electric meters, but should work with all electric meters, that are sending valid SML data (feel free to contribute):
- Landis+Gyr E320
- Landis+Gyr E220
Tips, if you are facing many CrcErrors
- Clean the head of your Pulse IR and the IR interface on your electric meter. Display cleaner and a clean microfiber cloth worked quite good in my case.
- If you can, remove the head from the Pulse IR and DO NOT place the complete Pulse IR onto your electric meter. Just place the head onto it and lay the Pulse IR e.g. on top of the electric meter. The Pulse IR is too heavy to stay reliable at the same position, and you need to place it again, if you want to replace the batteries in it.
- The 6 o'Clock position, which is recommended by Tibber at the beginning, doesn't really work with the mentioned Landis+Gyr electric meters above. Its "working", but 99% of the messages are CrcErrors. I found the correct position between 5 and 6 o'Clock, closer to 5 o'Clock.
- Turn the head of the Pulse IR very slowly and only step by step / millimeter by millimeter and wait a little bit for the output of this app. Normally, there should be almost no messages with CRC errors.
- There's a bug with the Pulse IR and at least Landis+Gyr meters, where all 30-45 seconds, there are only empty SML frames for 10+-5 seconds.
Special Thanks
- To my friend David, who motivated me to publish this project, after we successfully debugged his (and also mine) Pulse/Meter by using this project.
- To Jetbrains for the free IDE PyCharm, that was used for this project.
- To all maintainers of the dependencies of this project.
Contribution
You are welcome to contribute to this project. Also field reports are welcome!
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 tibber_pulse_sml_debugger-1.0.2.tar.gz
.
File metadata
- Download URL: tibber_pulse_sml_debugger-1.0.2.tar.gz
- Upload date:
- Size: 7.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.12 Linux/6.9.3-76060903-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04203d48840c6cbc2edd6070b849cbe09432620188c74824d5313ad4fa8935c8 |
|
MD5 | 499683108eee45f4441667973584a112 |
|
BLAKE2b-256 | cde10c61d5f240220e1b2b600548577ec8cf15c3873b705ec324826381a49546 |
File details
Details for the file tibber_pulse_sml_debugger-1.0.2-py3-none-any.whl
.
File metadata
- Download URL: tibber_pulse_sml_debugger-1.0.2-py3-none-any.whl
- Upload date:
- Size: 9.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.10.12 Linux/6.9.3-76060903-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1ecc5aaa0c3609952a5911abe08dabd6ca54f8898d6f2791881b4875b1118892 |
|
MD5 | 7674edcd533a67d8ab853790e95c6f18 |
|
BLAKE2b-256 | 9d5b2f73bc9ad3a48fc739e540d8f393f2e2e5d603db4c1a54274ce1813b99a5 |