How eshaalk505/smart-meter-application works
The product is a desktop smart-meter application: a user opens the PyQt dashboard, whose worker checks grid availability, connects and authenticates to the server, then sends generated consumption readings while the dashboard displays usage, cost, connection status and monthly-bill data. The server accepts concurrent socket clients, authenticates them and serves stored bill data while receiving readings. The README also documents key generation and YAML grid control. Relationships below follow excerpts or explicit README statements; some client receive/display details are only partially sampled.
Main entry points: socketClient.py Client worker · socketServer.py Client handler · main.py Dashboard app · Generate_Keys.py Key generation
Components 16
Dashboard
- Dashboard app
client/main.py - Dashboard UI
client/smartMeterApplicationGUI.py
Client runtime
- Client worker
client/socketClient.py - Reading generator
client/socketClient.py - Client authentication
client/socketClient.py - Client logging
client/loggingConfig.py
Server runtime
- Socket server
server/socketServer.py - Client handler
server/socketServer.py - Server authentication
server/socketServer.py - Server logging
server/loggingConfig.py
Configuration and data
- Grid setting
client/config.yaml - Monthly bills
server/Previous_Months_Bills.json - Key generation
Generate_Keys.py - Client public key
client/server_public_key.pem - Server private key
server/server_private_key.pem
Other components
- Resident
Connections 19
- Resident → Dashboard app: opens
README.md - Dashboard app → Dashboard UI: sets up
client/main.py - Dashboard app → Client worker: starts
client/main.py - Client worker → Dashboard UI: emits updates
client/main.py - Client worker → Grid setting: reads setting
client/socketClient.py - Client worker → Client authentication: authenticates
client/socketClient.py - Client authentication → Client public key: loads key
README.md - Client worker → Reading generator: generates
client/socketClient.py - Reading generator → Socket server: sends readings
client/socketClient.py - Client worker → Socket server: connects socket
client/socketClient.py - Socket server → Client handler: dispatches clients
server/socketServer.py - Client handler → Server authentication: authenticates
server/socketServer.py - Server authentication → Server private key: loads key
server/socketServer.py - Client handler → Monthly bills: reads bills
server/socketServer.py - Client handler → Client worker: sends bill data
server/socketServer.py - Reading generator → Client logging: logs errors
client/socketClient.py - Client handler → Server logging: logs errors
server/socketServer.py - Key generation → Client public key: creates keypair
README.md - Key generation → Server private key: creates keypair
README.md