nsg-ethz / autopower

A software suite to conveniently collect, gather, and display power measurement from networking hardware.
MIT License
2 stars 1 forks source link

Autopower

The autopower project aims to collect power data from network devices automatically and save the measured data on a server.

Setting

Measuring

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 storage on client

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.

Data upload from client

The data of the database gets uploaded periodically to the server using grpc. By default this happens every 5 minutes.

Communication client/server

The client and server communicate via grpc. The protobuf API is described in proto/

Development

Compiling the client

See COMPILING.md in client/

Running the server

The server side consists of multiple python scripts. See server/README.md for information.

Deploy

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/