Smart Home Troubleshooting Guide
Common Issues
Device Not Discovered
Symptoms:
- Device exists in hub app but not in ATOM SaaS
- Discovery returns 0 devices
Causes:
- Device not paired with hub
- Hub not connected to network
- Device excluded from selected location/room
- Hub firmware outdated
Solutions:
- Verify hub connectivity: Check hub app can see devices
- Refresh discovery: Integrations → [Platform] → Discover Devices
- Check device pairing: Pair device with hub first
- Restart hub: Unplug for 30 seconds, plug back in
- Update firmware: Check for hub updates in hub app
- Re-pair device: Remove from hub, re-add, re-discover
Advanced:
- Check network: Hub and ATOM SaaS on same network (for local hubs)
- Firewall rules: Allow mDNS (Hue), WebSocket (Home Assistant)
- API limits: Rate limiting may block discovery, wait and retry
OAuth Connection Failed
Symptoms:
- Authorization page shows error
- Redirect fails with 400/401 error
- Tokens invalid immediately after authorization
Causes:
- Redirect URI mismatch
- Invalid Client ID or Secret
- OAuth consent screen not configured
- Token expired
Solutions:
- Verify redirect URI: Must match exactly in OAuth app settings
Correct: https://your-domain.com/api/integrations/smartthings/callback Incorrect: http://your-domain.com/api/integrations/smartthings/callback - Check credentials: Copy-paste Client ID/Secret, ensure no extra spaces
- Configure consent screen: OAuth app must have consent screen configured
- Re-authorize: Revoke old tokens, run OAuth flow again
- Check app status: Verify OAuth app is active in developer console
Platform-specific:
- SmartThings: Check API Key permissions, ensure scope includes
r:devices:* - Nest: Verify Google Cloud project has SDM API enabled
- Alexa: Check security profile credentials, redirect URL in LWA console
Device Not Responding
Symptoms:
- Command sent but device doesn't change state
- State shows "offline" or "unreachable"
- Commands timeout
Causes:
- Device powered off or disconnected
- Device out of range of hub
- Hub offline or disconnected from network
- Rate limiting (commands delayed)
- Device firmware bug
Solutions:
- Check device power: Verify device is plugged in, battery charged
- Check hub status: Hub app shows hub online?
- Test in hub app: Control device from hub app (rules out hub/device issue)
- Sync device state: ATOM SaaS → Devices → [Device] → Sync
- Check distance: Device within range of hub? (Zigbee/Z-Wave ~100ft)
- Restart device: Unplug for 30 seconds, plug back in
- Re-pair device: Remove from hub, re-add
- Check for interference: Microwaves, other wireless devices
Rate limiting:
- Hue: 10 req/sec limit, commands auto-queued
- SmartThings: 150 req/min, exponential backoff on 429
- Nest: 1500 req/min, rarely hit limit
State Not Syncing
Symptoms:
- Device state in ATOM SaaS doesn't match actual state
- State updates delayed by minutes/hours
- State shows "unknown" or "error"
Causes:
- Polling interval too long
- WebSocket disconnected (Home Assistant)
- Hub not reporting state changes
- State cache outdated
Solutions:
- Manually sync: Devices → [Device] → Sync
- Adjust polling: Integrations → [Platform] → Poll Interval (reduce for faster updates)
- Check WebSocket: Home Assistant → WebSocket Status (should be "Connected")
- Verify hub reporting: Check hub app for state changes, hub push notifications enabled
- Clear cache: Devices → [Device] → Clear Cache → Sync
- Restart integration: Integrations → [Platform] → Restart
WebSocket issues (Home Assistant):
- Check HA logs for WebSocket errors
- Verify long-lived access token is valid
- Test WebSocket connection: Browser DevTools → WS → connect to
ws://ha-url/api/websocket - Reconnect: Integrations → Home Assistant → Reconnect
Rate Limit Errors
Symptoms:
- API returns 429 status code
- Commands delayed or queued
- "Rate limit exceeded" error messages
Causes:
- Too many API calls in short time
- Polling interval too short
- Too many automations triggering at once
- Bulk operations on many devices
Solutions:
- Reduce polling frequency: Increase poll interval (default: 5-10 seconds)
- Use webhooks: Enable webhooks for real-time updates instead of polling
- Batch commands: Use scenes/groups instead of individual device control
- Add delays in automations: Spread out device control over time
- Optimize automations: Reduce number of automations, combine where possible
- Check usage: Integrations → [Platform] → Rate Limits (view current usage)
Platform limits:
- Hue: 10 req/sec (strict, enforced by bridge)
- SmartThings: 150 req/min (enforced by cloud API)
- Nest: 1500 req/min (generous, rarely hit)
- Home Assistant: Unlimited (local WebSocket)
Hub-Specific Issues
Hue Bridge Not Found
Diagnosis:
- Hue app can find bridge? → Yes: Bridge OK, ATOM SaaS network issue
- Hue app can't find bridge? → No: Bridge network issue
Solutions:
- Check bridge LEDs: 3 blue LEDs = network OK, 1 blinking = searching for network
- Manual IP entry: Discover → Manual Entry → Enter bridge IP (find in Hue app → Settings → My Bridge → Network info)
- Network check: Bridge and ATOM SaaS on same network? Same subnet?
- Firewall: Allow mDNS (UDP port 5353), TCP port 80
- Restart bridge: Unplug 30 seconds, plug back in
- Factory reset: Last resort (hold button until LED flashes)
mDNS issues:
- macOS: System Preferences → Security → Firewall → Allow incoming connections
- Windows: Windows Firewall → Allow mDNS
- Router: Enable mDNS/Bonjour/UPnP
SmartThings API Errors
Error Codes:
- 400: Invalid request, bad parameters
- 401: Unauthorized, tokens expired
- 403: Forbidden, insufficient permissions
- 404: Device/location not found
- 429: Rate limit exceeded
- 500: SmartThings cloud error
Solutions:
- Check tokens: Integrations → SmartThings → Re-authenticate
- Verify scope: OAuth app must have
r:devices:*andx:devices:* - Check location: Device exists in selected location?
- Review permissions: OAuth app has permission for device type?
- SmartThings status: Check status.smartthings.com
- Reduce polling: Increase poll interval to avoid rate limits
Device not in SmartThings:
- Device must be paired with SmartThings Hub first
- Check SmartThings app → My Home → Devices
- Exclude/include device: SmartThings app → Device → Remove, re-add
Home Assistant Connection Issues
WebSocket Connection Failed:
Diagnosis:
- Test in browser:
ws://your-ha-url:8123/api/websocket - Check HA logs: Settings → System → Logs → WebSocket errors
- Verify token: Profile → Long-Lived Access Tokens → Regenerate
Solutions:
- Regenerate token: Old token may have expired
- Check URL: Include port (default: 8123), use
ws://orwss://for HTTPS - CORS settings:
configuration.yamlmust include ATOM SaaS domain:http: cors_allowed_origins: - https://your-atom-saas-domain.com - Restart HA: Configuration → Server Controls → Restart
- Check firewall: Allow TCP port 8123
- Use HTTPS: For remote HA, enable SSL, use
wss://
Entity Not Found:
- Check entity ID in HA (Developer Tools → States)
- Entity must be enabled (disable/enable in HA)
- ATOM SaaS filters
hiddenentities by default
Nest Authentication Failures
OAuth Flow Errors:
Common errors:
redirect_uri_mismatch: Redirect URI doesn't match OAuth appaccess_denied: User denied authorizationinvalid_client: Client ID/Secret wrongunauthorized_client: OAuth app misconfigured
Solutions:
- Verify redirect URI: Exactly match in Google Cloud Console
- Check OAuth screen: Consent screen configured, published
- Verify scopes:
https://www.googleapis.com/auth/sdm.serviceenabled - Check billing: Google Cloud project must have billing enabled (even for free tier)
- Test OAuth: Use OAuth 2.0 Playground
- Recreate credentials: Delete OAuth client, create new
No Devices Found:
- Device must be in Google Home app
- Check structure: OAuth linked to correct home/structure?
- Device type: Only thermostats supported currently (SDM API limitation)
- Firmware: Nest device must be updated to latest firmware
Automation Issues
Rule Not Triggering
Diagnosis:
- Check run history: Automations → [Automation] → Run History
- View current states: Compare trigger conditions with actual device states
- Test manually: Automations → [Automation] → Test Run
Solutions:
- Verify trigger conditions: Are trigger conditions actually met?
- Check device states: View device state, compare with trigger
- Verify time zone: Automation time zone matches your location?
- Check enablement: Automation is enabled (not disabled)?
- Review conditions: All conditions must be true (AND) or any true (OR)
- Circular dependency: Rule triggers itself? (causes infinite loop)
Example:
- Trigger: "Motion detected"
- Check: Motion sensor shows "active" in device state?
- If not: Motion sensor not working, not trigger issue
Conditions Not Evaluating
Symptoms:
- Conditions always false
- Conditions never met
- Logic not working as expected
Solutions:
- Test conditions individually: Create automation with single condition, test
- Check logical operators: AND = all true, OR = any true, NOT = inverted
- Verify comparison:
>vs>=,=vscontains - Check time zones: Time range in local time zone?
- Review condition order: Conditions evaluated top-to-bottom
- Test rule manually: Automations → [Automation] → Test
Complex conditions:
- Break into multiple rules (simpler debugging)
- Use scenes instead of complex logic
- Add logging action (send notification) to see execution flow
Actions Failing
Symptoms:
- Automation triggers but actions don't execute
- Partial execution (some actions work, some fail)
- Actions timeout
Solutions:
- Test actions individually: Device control page → Execute action
- Check device connectivity: Device online? Hub online?
- Verify capability: Device supports the action? (e.g., basic bulb can't change color)
- Check rate limits: Too many actions in short time?
- Review action parameters: Correct format? (brightness 0-254 for Hue, 0-100 for SmartThings)
- Add delays: Spread out actions over time (avoid rate limits)
Partial execution:
- Actions executed sequentially, first failure stops execution
- Enable "Continue on error" in automation settings
- Use error handling per action (retry, fallback, skip)
Schedule Not Running
Symptoms:
- Scheduled automation doesn't run at specified time
- Runs at wrong time
- Runs multiple times
Solutions:
- Check cron expression: Verify format, test in crontab guru
- Verify time zone: Schedule in correct time zone?
- Check enablement: Automation enabled?
- Review history: Automations → [Automation] → Run History (last run time)
- Server time: ATOM SaaS server time correct?
- Sunset/sunrise: Location set correctly? (affects sunrise/sunset times)
Time zone issues:
- Automation uses tenant time zone (Settings → Tenant → Time Zone)
- Schedules stored in UTC, displayed in local time
- Daylight saving time: Automatic if time zone set correctly
Diagnostic Tools
Connection Testing
Test connectivity to hubs:
- Navigate: Integrations → [Platform] → Test Connection
- View results:
- ✓ Online: Hub reachable
- ✗ Offline: Hub not reachable
- ⚠ Latency: Connection slow (>500ms)
- Interpret results:
- Online but high latency: Network congestion, distance
- Offline: Check hub power, network, firewall
State Viewing
View raw device state for debugging:
- Navigate: Devices → [Device] → View State
- See:
- Current state (on/off, brightness, etc.)
- Last updated timestamp
- State source (hub, cached, manual)
- Compare: Check against hub app state
- Sync: If stale, click "Sync" to refresh
Log Analysis
View integration logs:
- Navigate: Settings → Logs → Smart Home
- Filter by:
- Platform (Hue, SmartThings, etc.)
- Device ID
- Date range
- Log level (Error, Warning, Info, Debug)
- Export: Download logs for support ticket
- Common log entries:
Rate limit exceeded: Too many API callsDevice offline: Hub reports device unreachableAuth failed: Token expired, re-authenticateConnection timeout: Network issue
Rate Limit Monitoring
Monitor API usage:
- Navigate: Integrations → [Platform] → Rate Limits
- View:
- Current usage: Requests in last minute
- Limit: Max requests per period
- % Used: Usage as percentage of limit
- Timestamps: See request times to identify spikes
- Optimize: If consistently near limit, reduce polling
Recovery Procedures
Re-authentication
If OAuth tokens expire:
- Navigate: Integrations → [Platform] → Settings
- Click: "Re-authenticate"
- Complete OAuth flow: Authorize again
- Verify: Devices re-discovered, tokens valid
Prevent token expiry:
- Tokens auto-refresh before expiry (SmartThings, Nest)
- Long-lived tokens don't expire (Home Assistant)
- Re-authenticate annually for security
Device Rediscovery
Refresh device list:
- Navigate: Integrations → [Platform] → Discover Devices
- Process:
- Existing devices: Updated (name, capabilities, state)
- New devices: Added to device registry
- Removed devices: Marked offline (not deleted)
- Review: Check device list for accuracy
- Clean up: Delete old/removed devices
Factory Reset Integration
Warning: Removes all devices, automations, scenes
When to use:
- Integration completely broken
- OAuth cannot be fixed
- Major hub firmware update
Steps:
- Navigate: Integrations → [Platform] → Settings
- Scroll: Bottom of page
- Click: "Reset Integration"
- Confirm: Enter integration name to confirm
- Wait: Integration removed, data cleared
- Re-setup: Follow initial setup process
Before factory reset:
- Export automations and scenes (if available)
- Note device configurations (names, rooms)
- Save OAuth credentials (may still work)
Getting Help
Self-Service Resources
- Integration Guide: INTEGRATION_GUIDE.md
- Automation Guide: AUTOMATION_GUIDE.md
- Voice Control: VOICE_CONTROL.md
- Community Forum: Post questions, search similar issues
Support Contact
For platform issues or bugs:
- Email: support@atom-saas.com
- Include:
- Platform (Hue, SmartThings, etc.)
- Error messages (screenshots helpful)
- Steps to reproduce
- Diagnostic logs (export from Settings → Logs)
- Browser console errors (if web UI issue)
Response Times
- Critical issues: All hubs down, security vulnerabilities (4 hours)
- High priority: Automation failures, major features broken (24 hours)
- Normal priority: Minor bugs, documentation questions (48 hours)
- Low priority: Feature requests, improvements (1 week)