This project reads data from the Onzo Smart Meter (USB VID/PID 04d8:003f) by taking code from the original wrapped-python, Windows exe.
It has only been briefly tested
- Only tested on Ubuntu Linux 18.06 x64
- udev rules will be required
- requires pyusb
pip install pyusb
sudo python reader.py --blocktransfer=1
sudo python reader.py --blocktransfer=2
sudo python reader.py --blocktransfer=3
sudo python reader.py --blocktransfer=4
sudo python reader.py --blocktransfer=5
For each blocktransfer type, a file will be produced. An example of running with blocktransfer 3 and 4 (with different date formats, see below) are in the docs directory.
The block transfer types are:
- Energy Low Res
- Energy High Res
- Power Real Standard
- Power Real Fine
- Power Reactive Standard
To get a hex dump of the USB packets, append --debug
To get human readable dates instead of Unix time, append --humanDate
Even with udev rules making the device chmod 666 then sudo appears to be required just now.
The units I have all have their serial number set to 0. To allow reading from multiple units,
--unitNumber <n>
can be appended to read from a particular unit (starting at 0).
For example, if you had 2 units attached, you could run the following to read from both units. It appears to be stable, but moving USB ports may result in a different order.
sudo python reader.py --blocktransfer=4 --unitNumber 0
sudo python reader.py --blocktransfer=4 --unitNumber 1
Original unpacked source from can be found in the originalSource branch. It is from en4rab. There are also working Windows exe files at the same place. Some .zip files iare in orig as it was offline Oct 2024.
See navitron forum page (also archived here) for background on this project.