Placeholder for Spaces PIR + Wall Nav project
Cisco Spaces β Webex Wall Navigator Automation
Production-grade FastAPI service that listens to Cisco Spaces presence events and dynamically updates Webex Wall Navigator / Board devices via Control Hub APIs.
This project demonstrates real-time spatial intelligence automation:
BLE presence detection
Event-driven architecture
Webex device API control
Production deployment on AWS EC2
systemd service management
Structured logging
π What This Does
When a BLE device (tag, phone, badge, etc.) is detected in a defined zone:
Cisco Spaces sends a webhook event
This service validates and processes the event
Business logic determines action
Webex device is updated via Control Hub API
LED status change
UI message update
Device configuration trigger
This enables smart building automation using real-time indoor location intelligence.
π Architecture Overview Cisco Spaces (BLE Presence) β βΌ Webhook (HTTPS) β βΌ FastAPI Service (AWS EC2) β βββ Logging βββ Business Rules Engine βββ Webex Control Hub API Calls β βΌ Webex Wall Navigator / Board π§° Tech Stack
Python 3.9+
FastAPI
Uvicorn
Requests / httpx
AWS EC2 (Amazon Linux)
systemd (service management)
Nginx (reverse proxy, optional)
Cisco Spaces Webhooks
Webex Control Hub APIs
π¦ Project Structure . βββ app/ β βββ main.py # FastAPI entrypoint β βββ config.py # Environment variable handling β βββ spaces_handler.py # Cisco Spaces event logic β βββ webex_client.py # Webex API interactions β βββ models.py # Pydantic schemas β βββ requirements.txt βββ .env.example βββ README.md π Environment Variables
Create a .env file:
WEBEX_ACCESS_TOKEN=your_webex_bot_or_integration_token SPACES_WEBHOOK_SECRET=your_spaces_webhook_secret WEBEX_DEVICE_ID=your_device_id LOG_LEVEL=INFO
Never commit your real .env file.
π₯ Local Development
Create virtual environment:
python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt
Run locally:
uvicorn app.main:app --reload --port 8000
Test webhook endpoint:
curl -X POST http://localhost:8000/webhook
-H "Content-Type: application/json"
-d @sample_payload.json
β Deployment (AWS EC2 Example)
- Install dependencies sudo yum update -y sudo yum install python3 git -y
- Clone repo git clone https://github.com/yourusername/yourrepo.git cd yourrepo
- Setup environment python3 -m venv .venv source .venv/bin/activate pip install -r requirements.txt
- Create systemd service
/etc/systemd/system/spaces-webex.service
[Unit] Description=Cisco Spaces Webex Automation After=network.target
[Service] User=ec2-user WorkingDirectory=/home/ec2-user/yourrepo EnvironmentFile=/home/ec2-user/yourrepo/.env ExecStart=/home/ec2-user/yourrepo/.venv/bin/uvicorn app.main:app --host 0.0.0.0 --port 8000 Restart=always
[Install] WantedBy=multi-user.target
Enable service:
sudo systemctl daemon-reload sudo systemctl enable spaces-webex sudo systemctl start spaces-webex π‘ Cisco Spaces Webhook Configuration
In Cisco Spaces:
Go to Integrations β Webhooks
Add new webhook
URL: https://yourdomain.com/webhook
Select Presence / BLE events
Configure shared secret
π§ Example Use Cases
Meeting room auto-personalization
Executive presence detection
LED alerting for high-value visitors
Smart retail engagement triggers
Hospital workflow automation
IoT-driven building orchestration
π Observability
Structured logging
systemd journal logs
Can be extended with:
Prometheus metrics
Splunk HEC integration
CloudWatch logging
β Security Considerations
Always validate webhook signature
Use HTTPS (TLS)
Restrict security group inbound rules
Rotate Webex tokens regularly
Do not log sensitive tokens
π£ Roadmap
Signature verification middleware
Async Webex client (httpx)
Retry + exponential backoff
Device mapping by zone
Multi-tenant support
Docker containerization
CI/CD pipeline
π License
MIT License
π€ Author
Built by an engineer exploring real-time spatial intelligence automation across Cisco Spaces and Webex ecosystems.