There is nothing much to say about this app.
Usage instructions can be read in its help section
I wrote it in a form of a web application because I want to make its availability as wide as possible.
Web pages also have great ability to show charts and table data.
This application (hopefully) supports simultaneous data exchange with multiple PZEM devices.
Version 1.0 has been tested with one real PZEM-004T v2.0 (RS232), one real PZEM-016 v2.0 (RS485 Modbus-RTU) and a couple of virtual Modbus-RTU slaves.
It should work with PZEM-004T v3.0 because it’s protocol seems to be identical to PZEM-016 v2.0.
PZEM-003/017 should work also, but it hasn’t been tested – I took parameters from datasheet.
There are plans for further (unhasty) development of this application and support for other devices.
Mainly I want to add one more device type to the app – remote wifi PZEM which would be based on ESP8266.
The main feature of this app is the ability to store measurement results in a local database so all the data could be reviewed later.
For storage purposes IndexedDB is utilized.
Unfortunately neither IndexedDB nor me are intelligent enough to use indexes in “complex” queries. Even Dexie can’t help us. Therefore extracting data from IndexedDB into tables is slow.
On my laptop with Core i5-8250U CPU the processing of 700K records (sorting by any column, filtering by some criteria) takes about 20 seconds.
This application utilizes Web Serial API to exchange data with PZEM devices. Only Google Chrome and some its derivatives support WEB Serial API at the moment.
After web page is loaded from a server (mine or yours) it does not communicate with any external resources and performs all operations locally.
At least I can say this about the part of the source code which I wrote.
The application heavily depends on third-party libraries which may have some network activity – I didn’t check it.
I use:
Jquery/JqueryUI – for obvious reasons
Jqgrid (free version) – to display data in a form of a table.
Apexcharts – to display data in a form of a chart
HackTimer – to allow the application to work in background.
Jquery timepicker addon – to have date-time picker.
Dexie – to have better interface to IndexedDB
I will host all versions (currently there is only one) of this app as long as I can, but you also can take source code and host in yourself.
Source code can be found here or on the Sourceforge.
Feedback, suggestions and user manuals to include other PZEM devices are welcome.
Version 1.0:
Initial release.
Version 1.0 web app
Version 1.0 tar.gz
Version 1.1:
Minor interface changes.
Version 1.1 web app
Version 1.1 tar.gz