Mobile App for wireless control of Yoto audio devices. Features remote playback of MYO cards, Ambient lighting, battery monitoring, scheduling cards, and secure OAuth authentication.
🌐 github.com/gandhiv88/Yoto-Scheduler
User Experience
- Centralized Dashboard → See all your Yoto players, cards, and status at a glance.
- Seamless Sync → One refresh connects everything.
- Light + Audio Together → Routines enhanced with ambient light cues.
- Flexible Scheduling → Automate storytime, music, or sleep sounds by time/day.
- Quick Controls → Instantly play, pause, or stop without touching the Yoto.
- Practical Utility → Double as a “find my Yoto” when misplaced.
How to Use
- Login with your Yoto account
- On the Dashboard, view Yoto players, connection status, and available MYO cards
- Tap Refresh to connect/sync with your Yoto player
- Tap Ambient Light to:
- Change light colors
- Turn on night light
- Adjust brightness
- Use shortcuts like Sleep Light
- Tap Scheduler → Add (+) to:
- Select a Yoto card
- Set time, days of the week, and repeat options
- From the Dashboard, use Play / Resume / Stop to control audio
- Tap an MYO card to play it immediately
Tip: If your Yoto is on but misplaced, play a card from the app to locate it
Technical information
Core
- React Native + Expo SDK 53 - Cross-platform mobile framework
- TypeScript/JavaScript - Programming languages
- iOS & Android - Target platforms
Authentication
- OAuth 2.0 + PKCE - Secure authentication
- JWT Tokens - API authorization
- Expo SecureStore - Encrypted storage
Communication
- REST API - Yoto Play API integration
- MQTT over WebSocket - Real-time device control
- AWS IoT Core - Message broker
Storage
- AsyncStorage - Local data persistence
- In-Memory State - React hooks & context
Key Libraries
- expo-web-browser - OAuth flow
- expo-notifications - User feedback
- mqtt - Device communication
Development
- Expo Go - Development testing
- EAS Build/Update - Deployment
- Metro Bundler - JavaScript bundling
Architecture
- Service Layer - Business logic separation
- Custom Hooks - Reusable state management
- Error Boundaries - Graceful error handling
Data storage
It gets devices associated, device status, MYO card details. All stored in local storage.