154 lines
5.1 KiB
Markdown
154 lines
5.1 KiB
Markdown
This project integrates UniFi Access with Airbnb reservations, automating the process of creating and managing visitor access for your Airbnb guests.
|
|
|
|
## Features
|
|
- Fetch reservations from Hostex API or Airbnb ICS feed
|
|
- Create UniFi Access visitor accounts for upcoming guests
|
|
- Assign PIN codes to visitors based on their phone number
|
|
- Automatically delete past or completed visitor accounts
|
|
- Send notifications via Simplepush for updates and failures
|
|
- Cross-verify reservations between Hostex and ICS calendar
|
|
- Monitor and report discrepancies in booking data
|
|
- Detailed logging of all visitor management operations
|
|
|
|
## Prerequisites
|
|
- Python 3.7+
|
|
- UniFi Access system
|
|
- Airbnb account with ICS feed URL or Hostex API access
|
|
- [Optional] Simplepush account for notifications
|
|
|
|
## Installation
|
|
1. Clone the repository:
|
|
|
|
git clone https://github.com/keithah/unifi-access-airbnb.git
|
|
|
|
cd unifi-access-airbnb
|
|
|
|
2. Install the required packages:
|
|
|
|
|
|
pip install -r requirements.txt
|
|
|
|
3. Copy the example configuration file and edit it with your settings:
|
|
|
|
cp unifi.conf.example unifi.conf
|
|
|
|
nano unifi.conf
|
|
|
|
## Usage
|
|
Run the script using:
|
|
|
|
python3 main.py
|
|
|
|
Optional arguments:
|
|
- `-v` or `--verbose`: Increase output verbosity
|
|
- `-l [LOG_FILE]` or `--log [LOG_FILE]`: Specify a log file (default: unifi_access.log)
|
|
- `--list-door-groups`: List available door groups
|
|
|
|
## Configuration
|
|
Edit the `unifi.conf` file with your specific settings. Key sections include:
|
|
- `[UniFi]`: UniFi Access API settings
|
|
- api_host: UniFi Access controller URL
|
|
- api_token: Authentication token
|
|
- `[Hostex]`: Hostex API settings (if used)
|
|
- api_url: Hostex API endpoint
|
|
- api_key: Authentication key
|
|
- `[Airbnb]`: Airbnb ICS feed URL (if used)
|
|
- ics_url: Calendar feed URL
|
|
- `[Door]`: Door access settings
|
|
- default_group_id: Default door group ID for visitor access
|
|
- `[Visitor]`: Visit timing settings
|
|
- check_in_time: Default check-in time (e.g., "14:30")
|
|
- check_out_time: Default check-out time (e.g., "11:30")
|
|
- `[General]`: General settings
|
|
- log_file: Path to log file
|
|
- pin_code_digits: Number of digits for PIN codes
|
|
- `[Simplepush]`: Notification settings
|
|
- enabled: Enable/disable notifications
|
|
- key: Simplepush key
|
|
- url: Simplepush API URL
|
|
|
|
## Logging and Monitoring
|
|
The script provides detailed logging of all operations:
|
|
- Reservation processing from Hostex and ICS
|
|
- Visitor creation and deletion in UniFi Access
|
|
- PIN code assignments and updates
|
|
- Cross-system verification results
|
|
- Errors and warnings
|
|
|
|
Logs can be viewed in real-time using the `-v` flag or reviewed in the log file.
|
|
|
|
## System Verification
|
|
The script performs several verification checks:
|
|
- Matches Hostex reservations with ICS calendar entries
|
|
- Verifies phone numbers and PIN codes across systems
|
|
- Reports discrepancies in dates or guest information
|
|
- Monitors UniFi Access visitor status
|
|
|
|
## Docker Deployment
|
|
|
|
For easy deployment and automation, this project includes Docker support:
|
|
|
|
### Quick Start with Docker
|
|
```bash
|
|
# Build and run continuously (checks every 6 hours)
|
|
docker-compose up -d
|
|
|
|
# Run once manually
|
|
docker-compose --profile manual up unifi-access-airbnb-once
|
|
|
|
# View logs
|
|
docker-compose logs -f
|
|
```
|
|
|
|
See [README-DOCKER.md](README-DOCKER.md) for complete Docker setup instructions.
|
|
|
|
### Raspberry Pi Support
|
|
The Docker container runs perfectly on Raspberry Pi (ARM64/ARM32). Simply:
|
|
```bash
|
|
# On Raspberry Pi
|
|
docker-compose up -d
|
|
```
|
|
Docker automatically pulls the correct architecture. See [README-DOCKER.md](README-DOCKER.md) for Pi-specific notes.
|
|
|
|
## Future Goals
|
|
|
|
### UniFi Protect Integration
|
|
Plans to extend this project with UniFi Protect video recording capabilities:
|
|
|
|
**Required Hardware:**
|
|
- UniFi Gateway Max (UDM-Pro Max) with built-in NVR
|
|
- OR UniFi Cloud Key Gen2+ with Protect
|
|
|
|
**Planned Features:**
|
|
- **Guest Check-in Recording**: Automatically start recording when guests arrive
|
|
- **Stay Duration Recording**: Record during entire guest stay period
|
|
- **Checkout Verification**: Capture departure recordings
|
|
- **Incident Documentation**: Archive recordings for property protection
|
|
- **Guest Privacy**: Automatic recording pause/resume based on occupancy
|
|
|
|
**Implementation Ideas:**
|
|
- Integrate with UniFi Protect API for camera control
|
|
- Coordinate recording schedules with visitor access periods
|
|
- Provide guest notification of recording periods (legal compliance)
|
|
- Archive system for easy retrieval of guest-specific recordings
|
|
|
|
**Benefits:**
|
|
- Property protection during guest stays
|
|
- Incident documentation and liability protection
|
|
- Automated recording management tied to booking system
|
|
- Enhanced security without manual camera management
|
|
|
|
This would create a complete property automation ecosystem: **Access Control + Video Security** synchronized with your Airbnb bookings.
|
|
|
|
## Contributing
|
|
Contributions are welcome! Please feel free to submit a Pull Request.
|
|
|
|
## License
|
|
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
|
|
## Support
|
|
If you encounter any issues or have questions:
|
|
1. Check the logs using verbose mode
|
|
2. Review your configuration file
|
|
3. Open an issue on GitHub with relevant logs and details
|