Universal Property Management Access Control Integration System
A flexible, plugin-based system that integrates UniFi Access with multiple property management systems to automate guest door access management through PIN codes.
- ποΈ Plugin-Based Architecture: Extensible provider system for different PMS platforms
- π¨ Multi-Provider Support: Hospitable, ICS calendar feeds, and extensible to other platforms
- π Multi-Channel Notifications: Simplepush, Matrix, Slack, Discord support
- π Secure Configuration: Encrypted credential storage with environment variable support
- β‘ Real-Time Updates: Webhook support for instant synchronization
- π― Flexible PIN Generation: Phone-based, random, or custom algorithms
- π Comprehensive CLI: Full command-line interface for all operations
# Clone the repository
git clone https://github.com/your-repo/unifi-access-pms.git
cd unifi-access-pms
# Install dependencies
pip install -r requirements.txt
# Install the package
pip install -e .
Generate a sample configuration:
unifi-access-pms create-config --output config.yaml
Edit the configuration with your credentials:
core:
enabled_providers: [hospitable, ics]
pin_generation_method: phone_based
unifi:
api_host: https://your-unifi-controller.local
api_token: your_unifi_api_token
providers:
hospitable:
enabled: true
config:
api_key: your_hospitable_api_key
property_mappings:
property1: door_group1
ics:
enabled: true
config:
feeds:
airbnb: https://airbnb.com/calendar.ics
notifications:
enabled_channels: [simplepush]
channels:
simplepush:
enabled: true
config:
key: your_simplepush_key
Test your configuration:
# Validate configuration
unifi-access-pms validate-config
# Test providers
unifi-access-pms test-providers
# Test notifications
unifi-access-pms test-notifications
Synchronize reservations:
# Run sync with all enabled providers
unifi-access-pms sync
# Run specific providers only
unifi-access-pms sync --providers hospitable,ics
# Dry run to see what would happen
unifi-access-pms sync --dry-run
- Full API integration with OAuth/API key support
- Real-time webhook updates
- Property mapping to door groups
- Guest information extraction
- Universal ICS/iCal feed support
- Multiple feed aggregation
- Smart guest information parsing
- Timezone support
- Plugin system for custom providers
- Standardized provider interface
- Dynamic provider loading
Simple push notifications to mobile devices.
Decentralized messaging with rich formatting support.
Workspace integration with rich attachments and fields.
Server integration with embeds and custom formatting.
# Standard execution
unifi-access-pms sync
# Verbose output
unifi-access-pms sync -v
# Specific providers
unifi-access-pms sync --providers hospitable,ics
# Date range
unifi-access-pms sync --date-range 2024-01-01:2024-01-31
# Dry run
unifi-access-pms sync --dry-run
# Create sample config
unifi-access-pms create-config
# Validate configuration
unifi-access-pms validate-config
# List providers
unifi-access-pms list-providers
# Test all providers
unifi-access-pms test-providers
# Test notifications
unifi-access-pms test-notifications
enabled_providers
: List of active providerspin_generation_method
: Algorithm for PIN codessync_interval
: Automatic sync frequencytimezone
: Default timezone
Each provider has its own configuration section with:
enabled
: Enable/disable the providerconfig
: Provider-specific settingspriority
: Processing priorityretry_attempts
: Failure retry count
enabled_channels
: Active notification channelschannels
: Channel-specific configurationsevents
: Event types to send notifications for
- Credential encryption at rest
- Environment variable substitution
- Secure API token management
- Audit logging
src/unifi_access_pms/
βββ core/ # Core interfaces and models
βββ config/ # Configuration management
βββ providers/ # PMS provider implementations
βββ notifications/ # Notification channels
βββ cli.py # Command-line interface
- Implement the
ReservationProvider
interface - Register in the provider registry
- Add configuration schema
- Test with the CLI
- Implement the
NotificationChannel
interface - Register in the notification registry
- Add to the notification manager
- Test with CLI commands
MIT License - see LICENSE file for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
For issues and questions:
- Create an issue on GitHub
- Check the documentation
- Review the sample configurations