ESP Audio Scheduler — User Manual
Automatic scheduling for multi-zone amplifiers
| Manual version | 1.1 |
| Last updated | July 2026 |
| Applies to firmware | 0.1.10 or newer |
| Contact | marcello.alte@elektroakustik-alte.de |
Contents
- Product overview
- Requirements
- Quick start in 5 steps
- Setup
- The dashboard
- Creating and managing events
- Zones and colors
- Settings reference
- Checking device health
- Software updates and rollback
- Backup (CSV)
- Troubleshooting
- Technical data
- Legal
1. Product overview
The ESP Audio Scheduler is a standalone scheduling controller for multi-zone installation amplifiers that speak the Pascal Audio control protocol (e.g. Blaze Audio / PASCAL amplifiers with the “Open API for Installers”). Connected to the same LAN as the amplifier, it switches the amplifier’s audio zones fully automatically on a weekly schedule:
- Switching zones on and off — always with a smooth fade instead of a hard cut
- Target volume per zone and event
- Input source per zone and event (e.g. radio in the morning, media player at night)
Everything is operated through a web interface in your browser — from a PC, tablet or phone, no app required. Once configured, the device runs entirely on its own: no computer, no cloud.
Features at a glance
- Weekly schedule with up to 100 events, each with freely selectable weekdays and time
- Per event and zone: individual volume (0–100) and input; on/off applies per event to all selected zones
- Week and list views with zone filter, conflict detection and live clock
- Separately adjustable fade times for switching on, switching off and volume changes
- Automatic amplifier discovery on the network (mDNS)
- Zone colors for quick orientation (assigned automatically, customizable)
- CSV export/import of the complete schedule for backups
- Clock set automatically from the internet (NTP, recommended) or manually
- Automatic over-the-air updates including protection against faulty firmware (automatic rollback)
- Bilingual interface (German/English), light and dark theme
2. Requirements
| Component | Requirement |
|---|---|
| Amplifier | Multi-zone amplifier with the Pascal Audio control protocol (“Open API”, TCP port 7621), e.g. Blaze PowerZone / PASCAL IP series |
| Network | Ethernet LAN; scheduler and amplifier on the same network |
| Power | PoE (802.3af) through the network cable or 5 V via USB |
| Time | Internet access for automatic time synchronization (NTP) — recommended. Alternatively the clock can be set manually (see 8.5). Without a valid clock no events fire |
| Updates | Internet access (HTTPS) for automatic software updates |
| Operation | A current browser (Chrome, Firefox, Safari, Edge) on PC, tablet or phone |
3. Quick start in 5 steps
- Connect: Plug the network cable into the scheduler (with PoE this also powers it; otherwise add a USB power supply).
- Open: Browse to
http://esp-audio-scheduler.local(alternatives in 4.2). - Connect the amplifier: Gear icon ⚙ → Audio section → Amplifier Connection → “Search amplifiers” → click the discovered amplifier → Save.
- Verify: In the Overview, the dots for Amplifier Target and NTP must be green.
- Create your first event: Back on the dashboard → + → pick time and days, add zones, enter a name → Save. Done — the system now switches itself.
4. Setup
4.1 Connecting
The scheduler has an Ethernet port. Connect it to a switch/router on the same network as the amplifier.
- With a PoE switch: one cable is enough — data and power come through the network cable.
- Without PoE: additionally connect a 5 V USB power supply.
The device is ready a few seconds after power-up.
4.2 Finding the web interface
Three ways, try them in order:
- Device name: open
http://esp-audio-scheduler.localin your browser (works on most home and office networks). - Router: look for “esp-audio-scheduler” in your router’s device list and open the IP address shown there.
- Fallback address: if the network has no DHCP server, the device assigns itself
http://192.168.64.123after about 20 seconds. In that case, temporarily give your computer an address in the 192.168.64.x range to reach it.
Tip: For permanent installations, use a fixed IP address — either as a DHCP reservation in the router or directly on the device (see 8.4). The reason: the web interface then stays reachable at the same address — you find it again instantly and can reliably bookmark it in your browser, instead of hunting for a changing DHCP address.
4.3 Connecting the amplifier

- Gear icon ⚙ top right → Audio section → Amplifier Connection (or use the quick navigation at the top).
- Click “Search amplifiers”. The device scans the network via mDNS; discovered amplifiers appear as cards with model and IP address.
- Click the desired amplifier — IP and port are filled in — then Save.
- Alternatively enter the IP address and port (default 7621) manually and save.
After saving, the scheduler connects immediately, reads the amplifier’s name, model, zones and inputs, and shows them throughout the interface — no restart required.
4.4 Time
By default the device fetches its time automatically from the internet (NTP), including daylight-saving changes (Central European timezone) — this is the recommended setting. Check the NTP dot in the overview — it must be green. For networks without internet access, the clock can alternatively be set manually (see 8.5).
5. The dashboard
The dashboard is the start page and shows your weekly schedule.
5.1 Header
- Title: “Schedules for ‹IP› · ‹name› (‹model›)” — name and model come live from the amplifier.
- DE/EN: switch the language.
- Sun/moon: light/dark theme.
- ⚙: to the settings and diagnostics page.
5.2 Week view

Each row is a trigger time; columns are the weekdays (today highlighted). A bar spanning several days means the event applies on all of them.
- Green bar = event switches on; the number is the target volume (0–100). If it reads “On”, the zones have different volumes.
- Red “Off” bar = event switches all of its zones off.
- Dashed outline with ⚠ = conflict (see 6.4).
- Click a bar to open the event for editing.
5.3 List view

The table shows per event: Status (Active = most recently fired and currently in force / Scheduled / Disabled), Time, Days, State (On/Off), Input, Name and the Zones with their color dots. The pencil opens the event.
5.4 Zone filter
Above both views sits a filter bar with all zones. Clicking one shows only events touching that zone (multi-select possible). Special: with exactly one zone selected, an additional Volume column appears — showing that zone’s volume across the day. If the filter matches nothing, the empty state offers “New Schedule” directly.
6. Creating and managing events
6.1 New event
+ at the top right of the schedule area opens the editor:

An event consists of (all required fields are validated on save, with missing ones named explicitly):
- Time — via −/+, direct input, or the hour/minute grids.
- Weekdays — tap individual days or use the presets Daily, Mon–Fri (preselected for new events), Sat+Sun.
- Zones — add via “Add Zone”. Each zone card contains, top to bottom:
- Input (required, preselected with the zone’s current input),
- volume fader (0–100, same scale as the amplifier’s own app; drag or −/+),
- On/Off switch — this applies to the whole event: one click toggles all cards together.
- Name — required, shown in all views.
When added, each zone initially adopts its current live state (volume and input) as the starting point — you only change what should be different.
6.2 What happens when an event fires
At the configured minute the scheduler first switches each zone’s input, then:
- “Off” event: the volume ramps down over the configured fade-out time, and only then is the zone muted — no audible pop.
- “On” event: the zone is unmuted and the volume ramps to the target over the fade-in time (or the volume fade if the zone was already playing).
Zones whose volume is controlled by a physical wall controller only take on/off and input; the volume part is skipped and noted in the logs.
Note: Events fire exactly at their trigger minute. If the device was powered off at that moment, the event is not executed retroactively — the next regular occurrence applies.
6.3 Editing, duplicating, disabling, deleting
In an open event (header row):
- Disable/Enable — pause an event without deleting it (it appears grayed out at the end of the list).
- Duplicate — copy as a template for similar events.
- Delete — two-step: only a second click on “Really delete?” deletes.
6.4 Conflicts and overlaps

Two enabled events that switch the same zone at the same minute on the same day overwrite each other — which one “wins” is chance. The scheduler makes such cases impossible to miss:
- In list and week view: a red ⚠ Conflict badge / dashed outline.
- In the editor: a red “Interference – switched at the same time” panel naming the conflicting event, with an Edit button that jumps straight to it.
- Additionally informative: “Existing schedules for these zones” — the same table as the dashboard list (status, time, days, state, input, name, zones) with all other events switching the same zones on the same days. You see what daily flow you are stepping into before saving; the pencil jumps straight into that event.
7. Zones and colors
- Zone names come from the amplifier and are maintained there — deliberately not editable in the scheduler.
- Each zone automatically receives a color from a matched 8-color palette; the color dots appear everywhere (table, filter, editor). To change: Audio → Zones → click the color dot → pick a new color.
- With no amplifier connected, the zone areas say exactly that (“No zones detected – no amplifier connected.”); during discovery they show “Searching for zones …”. Both disappear automatically once the connection is up — the interface refreshes itself.
8. Settings reference

The page behind the gear icon ⚙ is organized into three areas: Overview (read-only, see chapter 9), Audio (amplifier connection, fade times, zones) and System (network, date & time, appearance, schedule backup, firmware update). At the very top sits a quick navigation: clicking an entry jumps straight to that section.
8.1 Amplifier connection
- IP address / port of the amplifier (default port 7621).
- Search amplifiers — automatic network discovery; clicking a result fills the fields, saving remains an explicit step.
- After saving, the device reconnects immediately — header, zones and inputs refresh automatically.
8.2 Fade times
Its own section below the zones — three separate ramps in seconds:
- Fade-in (switching on, default 3 s)
- Fade-out (switching off, default 5 s)
- Fade on volume change (default 3 s)
Applies to manual and scheduled switching alike.
8.3 Zones

Per zone: color dot (click opens the palette), name, technical identifier (ZONE-A …), the current volume (0–100 and dB) — updated live — plus the permitted control range and, where applicable, “locked (wall control)”.
8.4 Network (ESP)

- DHCP (automatic) — the default. If the DHCP server is missing, the fallback address 192.168.64.123 kicks in after 20 s.
- Static IP — fixed address with subnet mask, gateway and optional DNS. Inputs are validated; a configuration that would make the device unreachable is rejected (“Invalid settings – not saved”).
- Important: IP changes only apply after a restart. After saving, a red notice with a direct restart button appears.
8.5 Date & time

- Automatic (internet) — the default and recommended: the clock comes from the internet via NTP, including daylight-saving changes. No maintenance needed.
- Manual — for networks without internet access: pick the mode, enter date and time (prefilled with your device’s time) and click “Set time”. From that moment the scheduler runs on the entered clock.
Caution with manual time: The device has no backup battery — after a power outage or restart the manual clock is lost. The scheduler then deliberately pauses (the overview shows “Time (manual): not set”) until the time is set again. Automatic daylight-saving changes also do not happen in manual mode. Wherever possible, stay on Automatic.
8.6 Appearance
- Light/Dark — interface theme.
- Default schedule view — whether the dashboard starts with the week or list view (week is the default). Both are per-browser preferences.
8.7 Schedule backup
See chapter 11.
8.8 Firmware update
See chapter 10.
9. Checking device health

The Overview → System & Diagnostics section shows at a glance whether everything is healthy. The indicator dots:
| Field | Meaning | Target |
|---|---|---|
| Firmware | Installed software version | current version |
| Network (LAN) | The scheduler’s Ethernet link | 🟢 connected |
| IP Address | The scheduler’s address on the network | reachable |
| Amplifier Target | Connection to the amplifier (IP:port) | 🟢 connected |
| NTP / Time (manual) | A valid clock — prerequisite for all switching. With automatic time: “synced”; with manual time: “set” | 🟢 synced / set |
| Device Time | The device’s current time | correct, incl. date |
| Schedules (used / max) | Stored events vs. capacity (e.g. “12 / 100”; above 999 shown as “999+”) | below the maximum |
| Uptime | Time since the last restart | — |
| Free Memory (RAM) | Free working memory | > 50 KB |
| Storage (Flash) | Space used for schedules/interface | < 80 % |
All values refresh themselves every few seconds. Below, Logs lists the latest messages and errors (e.g. skipped fades on wall-controlled zones, update events) with timestamps; “Refresh logs” reloads the list. Restart (top right, two-step protected) reboots the device — schedules and settings are of course preserved.
10. Software updates and rollback

The scheduler keeps itself up to date:
- Automatic: every 6 hours the device checks for new versions and installs them on its own — firmware and web interface together. Your data (schedules, settings, colors) is preserved.
- Manual: System → Firmware Update → “Check now”; if something new is available, “Install update” appears. During installation the device reboots once (< 1 minute).
- Version selection: the default is “Always newest (recommended)”. The dropdown can pin a specific version — including an older one (“one back”). The choice is saved and checked immediately; installing still happens explicitly via the button, or automatically on the 6-hour cycle toward the pinned target.
Built-in protection (rollback)
If a freshly installed firmware fails to boot cleanly three times in a row, the device automatically switches back to the previous version and blocks the faulty version from further automatic installs (shown as a red “Blocked after failed boot” notice). A deliberate manual install lifts the block again.
Note: In the first ~90 seconds after an update, avoid power-cycling the device repeatedly — that is counted as a failed-boot series and triggers the rollback. If it happens, simply reinstall the update.
11. Backup (CSV)
System → Schedule backup:
- “Export as CSV” downloads
zeitplaene.csv— your complete weekly schedule as a table, also readable and editable in Excel/Numbers/LibreOffice. - “Import CSV” reads such a file and replaces the entire schedule. For safety this is a two-step action: after picking the file, “Replaces all existing schedules – click again” appears; only that second click performs the import.
File format (one row per event zone; the entry column groups the rows of one event):
| Column | Content | Example |
|---|---|---|
| entry | Event group number | 1 |
| name | Name | Breakfast |
| enabled | 1 = enabled, 0 = disabled | 1 |
| time | Time HH:MM | 07:30 |
| days | Weekdays 0=Sun … 6=Sat, separated by | |
1|2|3|4|5 |
| zone | Zone A–H | A |
| muted | 1 = off, 0 = on | 0 |
| gainDb | Target volume in dB (exact) | -22 |
| sourceId | Amplifier input number | 100 |
Recommendation: Export once after setup and store the file safely — with it, your schedule is restored on a replacement device within a minute.
12. Troubleshooting
12.1 Check first: the two indicator dots
Almost every fault can be traced to the two status dots in the Overview — which is exactly why step 4 of the quick start asks you to check them:
- Amplifier Target 🟢 — The scheduler has a live control connection to the amplifier. Only then can it send commands at all: switching zones, changing volume, selecting inputs, reading zone names and live values. If the dot is red, events formally run but never reach the amplifier — and the zone areas of the interface stay empty. What to do: Amplifier powered on? Both devices on the same network? Then Audio → Amplifier Connection → “Search amplifiers”, click the result, save (default port 7621).
- NTP / Time 🟢 — The device has a valid clock. Without one, the scheduler fires no events whatsoever (protection against switching at wrong times — see the big warning in 4.4). If the dot is red, simply nothing happens, even if the schedule looks correct. What to do: With “Automatic”: check the network’s internet access (NTP needs outbound port 123) and wait a few minutes. Without internet: switch to Manual and set the time (System → Date & time, see 8.5) — required again after every restart.
If both dots are green and something still misbehaves, use the table:
| Problem | Likely cause | Solution |
|---|---|---|
| Web interface unreachable | Name not resolving / different IP | In order: esp-audio-scheduler.local, the IP from the router’s device list, fallback address 192.168.64.123 (only without a DHCP server). Check cable/link LED. |
| Reachable, but “Amplifier: disconnected” (red dot) | Wrong IP/port, amplifier off, different subnet | Audio → Amplifier Connection → “Search amplifiers”. No result: amplifier powered? Same network? Port 7621 correct? |
| Zone areas empty | No amplifier connected | The message names the cause. Establish the connection — zones appear automatically, no reload needed. |
| Event did not fire | Clock invalid · event disabled · wrong days · device was powered off | Check the time dot in the overview (see 12.1). Check the status in the list (Disabled?). Missed occurrences are not executed retroactively. |
| No switching after a restart (manual time) | A manual clock is lost on power loss/restart | System → Date & time → set the time again — or switch permanently to Automatic (internet). |
| Scheduled switch-on but no sound | Wall-controlled zone · input “Unused/Silent” · source has no signal | Check the logs (“gain fade skipped (wall control)”). Verify the event’s input. Check the source device. |
| Volume number differs from the amplifier app | Fader-curve rounding | Small deviations (±2) are normal; the dB value shown next to it is authoritative — it comes straight from the amplifier. |
| “Invalid settings – not saved” | Faulty input (e.g. IP address) | Follow the red message; for static IP, address, mask and gateway must all be valid. |
| Update fails | No internet, NTP missing, server unreachable | Read the “Result” field in the firmware section. Ensure internet access and a green NTP dot, then “Check now” again. |
| Old version running again after an update | Automatic rollback after failed boots | Intentional: the new version is blocked as faulty (red notice). Wait for the next release or deliberately reinstall manually. |
| Restart notice does not disappear | IP configuration changed, device not yet restarted | Use the restart button right next to the notice. |
| CSV import fails | Format/columns modified | “Import failed – check the file”. Keep the column headers and format from chapter 11; best start from a fresh export. |
| Full reset | — | Re-flash the firmware via USB (erases schedules, settings and colors). Export a CSV first! |
If nothing helps: take screenshots of the overview (System & Diagnostics) and the logs and send them to support (address below).
13. Technical data
| Hardware | ESP32 module with Ethernet (e.g. Olimex ESP32-POE-ISO) |
| Power | PoE IEEE 802.3af or 5 V via USB |
| Network | Ethernet 10/100 Mbit/s, IPv4; DHCP, static IP, or DHCP fallback 192.168.64.123 |
| Access | HTTP port 80, hostname esp-audio-scheduler.local (mDNS) |
| Amplifier protocol | Pascal Audio “Open API for Installers”, TCP port 7621; amplifier discovery via mDNS _pasconnect._tcp |
| Zones | up to 8 (A–H, detected automatically per model; unused zones are hidden); names/limits/inputs are read from the amplifier |
| Events | max. 100; minute-precise, weekday-based |
| Fades | 0–∞ seconds, separate for on, off and volume changes (defaults 3/5/3 s) |
| Time base | NTP (pool.ntp.org / time.nist.gov), Central European timezone incl. DST; alternatively a manually set clock (lost on restart) |
| Updates | OTA via HTTPS (GitHub releases), firmware + interface together, automatic rollback protection |
| Languages | German, English |
14. Legal
© 2026 Marcello Alte · All rights reserved.
Contact & support: marcello.alte@elektroakustik-alte.de
Open-source components: The firmware and web interface include open-source components under their respective licenses — Alpine.js © Caleb Porzio (MIT), Tailwind CSS © Tailwind Labs (MIT), ArduinoJson © Benoit Blanchon (MIT), ESPAsyncWebServer and AsyncTCP (LGPL-3.0), Arduino core for ESP32 (LGPL-2.1), ESP-IDF (Apache-2.0), littlefs (BSD-3-Clause). The complete list with copyright notices and license texts accompanies every software release as THIRD_PARTY_LICENSES.md and is also linked from the web interface (footer of the technical page). The LGPL libraries are used unmodified; their sources are freely available from the repositories named there.
Warranty: The software is provided without warranty of particular characteristics; for open-source components, warranty terms follow their licenses (provided “as is”).
“Blaze Audio”, “PASCAL” and mentioned product names are trademarks of their respective owners. This product is not affiliated with those manufacturers; it uses their publicly documented control interface.