The autopower project aims to collect power data from network devices automatically and save the measured data on a server.
A power meter is connected to a Raspberry Pi which runs a client software called mmclient
to control the measurements. Communication with the measurement device happens through pinpoint. More specifically, based on our fork of pinpoint which includes a flag for printing measurement data without a specified workload (see upstream PR #15 for more information). You can find a binary build of pinpoint for ARM on the Releases page on GitHub
Data from pinpoint gets processed by mmclient and then saved to a local PostgreSQL database on each client. The schema can be found in client/client_db_schema.sql.
The data of the database gets uploaded periodically to the server using grpc. By default this happens every 5 minutes.
The client and server communicate via grpc. The protobuf API is described in proto/
See COMPILING.md in client/
The server side consists of multiple python scripts. See server/README.md for information.
To deploy clients, please see the client/ and for the server server/ folders respectively. Please make create a certificate authority to sign the certificates of autopower clients. See certs/