UvosSmartHomeInterface/README.md

90 lines
2.1 KiB
Markdown

# SHinterface - Smart Home Control Interface
A Qt6-based smart home control application that interfaces with microcontrollers and sensors to manage home automation devices.
## Quick Start
### Building
```bash
mkdir build
cd build
cmake ..
make
```
### Running
**Primary (Master) Mode:**
```bash
./SHinterface -m
```
**Secondary (Client) Mode:**
```bash
./SHinterface -H 192.168.1.100 -p 38940
```
**Headless Server Mode:**
```bash
./SHinterface -m -e
```
## Features
- ✅ Control relays and PWM outputs
- ✅ Monitor various sensors (temperature, humidity, doors, etc.)
- ✅ MQTT sensor integration
- ✅ Actor-based automation system
- ✅ RGB lighting control
- ✅ WebSocket API for remote access
- ✅ Primary/secondary architecture for distributed control
## Configuration
Settings are stored in JSON format. Default location:
```
~/.config/shinterface.json
```
You can specify a custom config file with:
```bash
./SHinterface -c /path/to/config.json
```
## Usage
### Primary Mode (Master)
The primary instance connects to your microcontroller and manages all devices. It can run with or without a GUI.
### Secondary Mode (Client)
Secondary instances connect to the primary via TCP and provide additional control points without needing their own microcontroller connection.
## Command Line Options
```
-m, --master Use in master mode
-H, --host <address> Set server host IP address (default: 0.0.0.0)
-p, --port <port> Set server port (default: 38940)
-c, --config <file> Set config file path
-e, --headless Don't start the GUI (master mode only)
--help Show help
--version Show version
```
## Architecture
- **Items**: Represent controllable devices (relays, lights, etc.)
- **Actors**: Automate actions based on sensors or time
- **Sensors**: Provide data from physical sensors and calculated sources
- **Services**: TCP and WebSocket interfaces for remote control
## Dependencies
- CMake 4.0+
- Qt6 (Core, Gui, Widgets, Network, Multimedia, SerialPort, Mqtt, WebSockets)
- libpipewire-0.3
- libnl-3.0
## License
See LICENSE file for details.