| 1234567891011121314151617181920212223242526272829303132333435363738394041 |
- #!/usr/bin/env python3
- import json
- import urllib.request
- TOKEN = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhNTk3MGM3YTQxNTE0YjZhYjg1OTNjZjJjMWY2NGQ0MyIsImlhdCI6MTc2NzI1OTE1MCwiZXhwIjoyMDgyNjE5MTUwfQ.hjng9QODqQsGLly3OXCKp7f5CPM6XcpgRLztVnPynTU"
- HA_URL = "http://localhost:8123"
- # Read entity registry
- with open('/config/.storage/core.entity_registry', 'r') as f:
- registry = json.load(f)
- # Find entities exposed to conversation
- exposed = []
- for entity in registry['data']['entities']:
- if entity.get('options', {}).get('conversation', {}).get('should_expose'):
- exposed.append(entity['entity_id'])
- # Expose each to Alexa
- for entity_id in exposed:
- data = json.dumps({
- "entity_id": entity_id,
- "assistants": ["alexa"]
- }).encode('utf-8')
-
- req = urllib.request.Request(
- f"{HA_URL}/api/services/homeassistant/expose_entity",
- data=data,
- headers={
- 'Authorization': f'Bearer {TOKEN}',
- 'Content-Type': 'application/json'
- },
- method='POST'
- )
-
- try:
- urllib.request.urlopen(req, timeout=5)
- print(f"Exposed: {entity_id}")
- except Exception as e:
- print(f"Failed: {entity_id} - {e}")
- print(f"Synced {len(exposed)} entities")
|