This project implements a Remote Device Controller System using Python socket programming with SSL/TLS encryption. It allows a centralized server to securely control multiple client devices such as volume control, notepad, alarm, camera, monitor, and light systems over a network.
The system demonstrates secure communication, multi-threading, and device-level command execution.
- Meghna Sanjeev - SRN: PES1UG24CS269
- Mrinmayi Raman - SRN: PES1UG24CS278
- Advika Raj - SRN: PES1UG24CS906
- Secure communication using SSL/TLS
- Centralized server controlling multiple clients
- Device-level authentication using keys
- Real-time command execution
- Continuous status updates from clients
- Multi-threaded server handling multiple devices
- Latency measurement for commands
All clients establish secure SSL/TLS connections to a centralized server, which sends commands and receives responses.
┌───────────────┐
│ SERVER │
│ Command Hub │
└──────┬────────┘
│ SSL/TLS
┌────────────┬─────────┼─────────┬────────────┬────────────┬────────────┐
│ │ │ │ │ │ │
┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐
│ Camera │ │ Monitor│ │ Light │ │ Volume │ │ Notepad│ │ Alarm │ │ ... │
│Client1 │ │Client1 │ │Client1 │ │Client2 │ │Client2 │ │Client2 │ │ Future │
└────────┘ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘
The system consists of two client programs:
Handles:
- Camera Capture (using OpenCV)
- System Monitoring (CPU and RAM using psutil)
- Light Control (GUI-based using Tkinter)
Handles:
- Volume Control
- Notepad Control
- Alarm System (GUI-based using Tkinter)
- Python
- Socket Programming
- SSL/TLS
- Multi-threading
- Tkinter (GUI)
- OpenCV (Camera)
- Psutil (System Monitoring)
git clone <your-repo-link>
cd <repo-folder>mkdir certs
cd certs
# Create Certificate Authority (CA)
openssl genrsa -out ca.key 2048
openssl req -x509 -new -nodes -key ca.key -sha256 -days 365 -out ca.crt
# Generate Server Certificate
openssl genrsa -out server.key 2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha256
# Generate Client Certificate
openssl genrsa -out client.key 2048
openssl req -new -key client.key -out client.csr
openssl x509 -req -in client.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out client.crt -days 365 -sha256server.py
server.crt
server.key
ca.crt
client.py
client2.py
client.crt
client.key
ca.crt
python server.py# Client1 (camera / monitor / light)
python client1.py
# Client2 (volume / notepad / alarm)
python client2.py- Client1 → camera / monitor / light
- Client2 → volume / notepad / alarm
- CAPTURE_IMAGE
- GET_STATUS
- TURN_ON_LIGHT
- TURN_OFF_LIGHT
- INCREASE_VOLUME
- DECREASE_VOLUME
- OPEN_NOTEPAD
- CLOSE_NOTEPAD
- ACTIVATE_ALARM
- DEACTIVATE_ALARM
- SSL/TLS encrypted communication
- Mutual authentication using certificates
- Device-level authentication using keys
- Protection against unauthorized command execution
Server:
[SERVER STARTED]
[CONNECTED]
[INFO] Device registered: volume
[SENT] INCREASE_VOLUME -> volume
[ACK] volume: Volume Increased
[LATENCY] volume: 0.102 sec
Client:
[SECURE CONNECTED]
[STATUS] active
- Ensure all certificate files are in correct directories
- Server must be started before clients
- IP address in client must match server IP
- Certificate Common Name (CN) must match server IP
- Understanding of socket programming
- Implementation of secure communication using SSL/TLS
- Multi-threaded client-server architecture
- Real-world system design concepts
- Web-based dashboard for control
- Mobile app integration
- Role-based authentication
- Logging and monitoring system
This project is developed for academic purposes.