A comprehensive Home Assistant integration for Schulmanager Online with extended sensors and calendar integration. A powerful custom UI card will be available in the future.
- Current Lesson: Shows the currently active lesson
- Next Lesson: Shows the next upcoming lesson
- Today's Lessons: Count and details of today's lessons
- Today's Changes: Substitutions and changes for today
- Next School Day: Lessons for the next school day (skips weekends)
- This Week: Complete overview of the current school week
- Next Week: Complete overview of the next school week
- Changes Detected: Diff sensor with before/after comparison
- Schedule Calendar: All lessons as calendar entries with accurate times from API
- Homework Calendar: Homework with due dates (optional)
- Substitution Plan: Automatic marking of substitutions
โ Accurate Times: The integration now uses the actual class hour times provided by the Schulmanager Online API, ensuring calendar entries show the correct start and end times for each lesson period.
- Coming Soon: A powerful custom card with multiple view modes
- Planned Features: Matrix, Week List, Day List, Current/Next Lesson views
- Multi-Student Support: Will automatically detect all students
- Responsive Design: Will be optimized for desktop and mobile
- Fully Configurable: Will be customizable via UI editor
- Time Period: 1-4 weeks ahead retrievable
- Homework: Optional enable/disable
- Grades: Optional enable/disable (planned)
- Automatic Detection of all children in the account
- Separate Entities per child (sensors + calendar)
- Shared Configuration but individual data per child
- Family Calendar with all children or separate calendars per child
- HACS โ Integrations โ โฎ โ Custom Repositories
- Add repository:
https://github.com/rwunsch/schulmanager-online-hass - Category: Integration
- Install Schulmanager Online
- Restart Home Assistant
- Copy
custom_components/schulmanager_online/to<config>/custom_components/ - Restart Home Assistant
- Settings โ Devices & Services โ Add Integration
- Search for "Schulmanager Online"
- Enter Email and Password
- Configure Options (weeks, homework, etc.)
- Done! ๐
type: entity
entity: sensor.current_lesson_name_of_child
name: "Marc's Current Lesson"
icon: mdi:play-circle-outlineThe calendars automatically appear in the Home Assistant calendar view and can be used in calendar cards:
# Basic calendar view
type: calendar
entities:
- calendar.lessons_name_of_child
- calendar.homework_name_of_child
title: "School Calendar"# Monthly view
type: calendar
entities:
- calendar.lessons_name_of_child
title: "Monthly Schedule"
initial_view: dayGridMonth
# Weekly view
type: calendar
entities:
- calendar.lessons_name_of_child
title: "Weekly Schedule"
initial_view: listWeek
# Daily view
type: calendar
entities:
- calendar.lessons_name_of_child
title: "Today's Schedule"
initial_view: listDayโ Accurate Calendar Times: The integration now uses actual class hour times from the Schulmanager Online API. Each school's specific schedule (including breaks and lesson durations) is automatically retrieved and used for precise calendar entries. No more estimates - your calendar shows the real times!
type: vertical-stack
title: "School Dashboard"
cards:
# Current Status
- type: entities
entities:
- entity: sensor.current_lesson_name_of_child
name: "Current Lesson"
- entity: sensor.next_lesson_name_of_child
name: "Next Lesson"
# Calendar Integration
- type: calendar
entities:
- calendar.lessons_name_of_child
- calendar.homework_name_of_child
initial_view: listWeek
# Quick Stats
- type: glance
entities:
- entity: sensor.lessons_today_name_of_child
name: "Today"
- entity: sensor.changes_detected_name_of_child
name: "Changes"
- entity: sensor.homework_due_today_name_of_child
name: "Homework"# Example: Notification for substitutions
automation:
- alias: "Substitution Detected"
trigger:
- platform: state
entity_id: sensor.name_of_child_changes_detected
to:
- "1 change detected"
action:
- service: notify.mobile_app
data:
title: "Schedule Change"
message: >
{{ states('sensor.name_of_child_changes_detected') }}
Details: {{ state_attr('sensor.name_of_child_changes_detected', 'changes')[0]['description'] }}
# Example: Reminder before current lesson
automation:
- alias: "Current Lesson Reminder"
trigger:
- platform: state
entity_id: sensor.name_of_child_current_lesson
from: "No current lesson"
action:
- service: notify.mobile_app
data:
message: >
Marc now has {{ states('sensor.name_of_child_current_lesson') }}A powerful custom schedule card is currently in development and will include:
- Multiple View Modes: Weekly matrix, weekly list, daily list, and compact views
- Interactive Interface: Easy switching between different display modes
- Multi-Student Support: Automatic detection and display of all students
- Responsive Design: Optimized for both desktop and mobile devices
- Customizable Themes: Multiple color schemes and styling options
- Advanced Configuration: Extensive customization options via UI editor
Stay tuned for updates on this exciting feature!
- Settings โ Devices & Services โ Schulmanager Online
- Click Configure
- Adjust options:
- Weeks Ahead: 1-4 weeks
- Homework: Enable/Disable
- Grades: Enable/Disable (experimental)
# configuration.yaml
schulmanager_online:
email: "your@email.com"
password: "YourPassword"
weeks_ahead: 2
include_homework: true
include_grades: falsecd test-scripts
docker compose up -d- Home Assistant: http://localhost:8123
# Run API tests directly
cd test-scripts
python test_api_complete.py
python test_schedule_api.py
python test_homework_api.py- Check Credentials: Email and password correct?
- Account Type: Use parent account (not student account)
- Two-Factor Authentication: Currently not supported
- Students Present: Are children registered in the account?
- Permissions: Does the account have access to schedules?
- School Holidays: Often no data available during holidays
- Expected Behavior: Calendar times should match your school's actual schedule
- How it Works: Integration automatically uses actual class hour times from Schulmanager API
- Accurate Times: No configuration needed - times are retrieved directly from your school's system
- Restart Home Assistant after installation
- Check Logs:
Settings โ System โ Logs - Update HACS if installed via HACS
# configuration.yaml
logger:
logs:
custom_components.schulmanager_online: debugSymptoms:
- Custom cards show "Configuration error" in dashboard
- Browser console shows:
Failed to resolve module specifier "lit"
Root Cause: The custom card JavaScript file contains ES6 module imports that aren't compatible with Home Assistant's frontend loading mechanism.
Solution:
-
Check resource configuration in
configuration.yaml:lovelace: resources: - url: /local/schulmanager-schedule-card.js type: module
-
Restart Home Assistant to reload the custom card:
# If using Docker docker restart <container-name> # Or via Home Assistant UI Settings โ System โ Restart
-
Clear browser cache (Ctrl+F5 or Cmd+Shift+R)
-
Verify file is loaded by navigating to:
http://your-ha-instance:8123/local/schulmanager-schedule-card.js
Expected Result:
- File should start with
class SchulmanagerScheduleCard extends HTMLElement - No "lit" import statements should be present
- File size should be ~8-9KB
Symptoms:
- Cards appear but show "No student data available"
- Integration is loaded and sensors exist
Solution:
-
Check sensor entities exist:
sensor.{student_name}_current_lesson sensor.{student_name}_next_lesson -
Verify entity naming matches card expectations:
- Student names are converted to lowercase with underscores
- Special characters are removed
-
Check integration status in Settings โ Devices & Services
Symptoms:
ERROR: Failed to get schedule for student: API call failed: 400
ERROR: Failed to get letters: API call failed: 400
Possible Causes:
- Incorrect API parameters - Student ID or date format issues
- Changed API structure - Schulmanager Online updated their API
- Missing permissions - Student account lacks access to certain data
- Date range issues - Requesting data too far in the future/past
Debug Steps:
-
Enable debug logging:
logger: logs: custom_components.schulmanager_online: debug
-
Check API request payload in logs:
Schedule request payload: [{'moduleName': 'schedules', 'endpointName': 'get-actual-lessons', ...}] -
Verify authentication works (login should show status 200)
-
Test with different date ranges or parameters
Symptoms:
Exception: Login failed: 401
Solutions:
- Verify credentials in integration configuration
- Check for account lockout - too many failed attempts
- Verify account type - parent vs. student account differences
- Check Schulmanager Online service status
Solution:
-
Restart container to pick up changes:
cd test-scripts docker compose restart homeassistant -
Clear browser cache after container restart
# configuration.yaml
logger:
default: info
logs:
custom_components.schulmanager_online: debug
homeassistant.components.sensor: info
homeassistant.components.calendar: info- Settings โ Devices & Services โ Schulmanager Online
- Look for error messages or warnings
- Check entity states in Developer Tools โ States
- Open DevTools (F12)
- Console tab - Look for JavaScript errors
- Network tab - Check if resources are loading (200 status)
- Application tab โ Local Storage - Clear if needed
Contributions are welcome!
- Fork the repository
- Create Feature Branch (
git checkout -b feature/AmazingFeature) - Commit Changes (
git commit -m 'Add some AmazingFeature') - Push Branch (
git push origin feature/AmazingFeature) - Open Pull Request
This project is licensed under the MIT License. See LICENSE for details.
- Schulmanager Online for providing the educational platform and API
- Home Assistant Community for support
- HACS for easy distribution
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Home Assistant Community: Community Forum
The integration supports multiple languages:
- ๐ฉ๐ช German (Deutsch)
- ๐บ๐ธ English
- ๐ซ๐ท French (Franรงais)
- ๐ช๐ธ Spanish (Espaรฑol)
- ๐ฎ๐น Italian (Italiano)
- ๐ณ๐ฑ Dutch (Nederlands)
- ๐ต๐ฑ Polish (Polski)
- ๐ต๐น Portuguese (Portuguรชs)
- ๐ท๐บ Russian (ะ ัััะบะธะน)
- ๐ธ๐ช Swedish (Svenska)
- ๐ฉ๐ฐ Danish (Dansk)
- ๐ Advanced Statistics: Weekly/monthly evaluations, subject distribution charts
- ๐ Smart Notifications: Push notifications for substitutions, lesson reminders
- ๐ฑ Mobile App Integration: Companion app with offline sync
- ๐ฏ Advanced Automations: Smart home integration based on schedule
- ๐ Performance Tracking: Grade trends, homework completion rates
- ๐ฅ Extended Family Features: Sibling comparisons, family dashboard
- ๐ External Integrations: Google Calendar sync, Teams/Zoom integration
- Additional language translations
- Custom Lovelace card enhancements
- Advanced automation examples
- Performance optimizations
- Additional sensor types
Made with โค๏ธ for the Home Assistant Community