YotoScheduler

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.

2
13 replies