unifi-access-airbnb/README.md

5.1 KiB

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

  1. Install the required packages:

pip install -r requirements.txt

  1. 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

# 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 for complete Docker setup instructions.

Raspberry Pi Support

The Docker container runs perfectly on Raspberry Pi (ARM64/ARM32). Simply:

# On Raspberry Pi
docker-compose up -d

Docker automatically pulls the correct architecture. See 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 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