For Building Automation Integrators and BMS Programmers
Quick Reference
| Item | Value |
|---|---|
| Device Type | BACnet/IP Device |
| Protocol Revision | 17 |
| Network Port | UDP 47808 (standard BACnet/IP) |
| Vendor ID | 812 (eDIDIO) |
| Model | edidio-s10 |
| Application | DALI/DMX Lighting Control |
| Multi-subnet | BBMD + Foreign Device Registration (opt-in, off by default) |
Total Objects: 71 objects (1 Device + 32 Lighting Outputs + 10 Analog Values + 10 Binary Values + 8 Binary Inputs + 4 Binary Outputs + 5 Schedules + 1 Network Port)
Table of Contents
- Getting Started
- Understanding the Object Model
- Lighting Control
- Scheduling
- Monitoring and Diagnostics
- Integration Patterns
- Troubleshooting
Getting Started
Device Discovery
The eDIDIO-S10 announces itself on the BACnet network automatically:
- On startup: Sends I-Am broadcast after 5 seconds
- After network reconnection: Re-announces when ethernet link returns
- Standard BACnet discovery: Responds to Who-Is requests
Device Instance Number:
- Automatically generated from the device's MAC address
- Range: 0 to 16,777,215
- Example: A device with MAC
00:04:A3:12:34:56will have instance number 1,193,046 - This ensures unique identification on the network
Network Requirements
- IP Configuration: Static IP or DHCP
- Port: UDP 47808 (standard BACnet/IP)
- Firewall: Allow UDP 47808 bidirectional
- Network: IPv4 (IPv6 not supported)
On the same subnet as the BMS? No extra configuration is needed — the device is a plain BACnet/IP node and answers Who-Is directly on the local broadcast domain.
On a different subnet (routed network)? IP routers do not forward the UDP broadcasts that BACnet discovery relies on, so a device on another subnet from the head-end is invisible by default. The eDIDIO-S10 can bridge this in two ways — Foreign Device Registration (FDR) or acting as a BBMD — both configured over BACnet via the Network Port object. See Multi-Subnet Networks (BBMD / FDR).
Multi-Subnet Networks (BBMD / FDR)
By default the device operates as an ordinary local-subnet node (BBMD/FDR off) and existing single-subnet installs are unaffected. For routed BACnet/IP networks, the device exposes a standard Network Port object (instance 1) whose properties are written with ordinary Write-Property — no proprietary tooling required.
Three modes (mutually exclusive, default NORMAL):
BACnet_IP_Mode |
Behaviour | When to use |
|---|---|---|
NORMAL (default) |
Plain local-subnet node. Identical to legacy behaviour. | Device shares a subnet with the BMS. |
FOREIGN |
Registers as a Foreign Device to a remote BBMD (its IP + a lease TTL). | The usual field-controller case: device is on a subnet with no BBMD of its own. |
BBMD |
Device acts as the BBMD for its own subnet. | Rare — the device's subnet has no other BBMD and needs one. |
Foreign Device Registration (recommended for a single controller):
Object: Network-Port:1
Write FD_BBMD_Address = <BBMD IP address>:47808 (BACnetHostNPort)
Write FD_Subscription_Lifetime = 600 (seconds, the lease TTL)
Write BACnet_IP_Mode = FOREIGN
The device then sends Register-Foreign-Device to the BBMD, which replies BVLC-Result 0x0000 on success, and automatically renews the lease at half the TTL (e.g. every ~30 s for a 60 s TTL) so it never ages out of the BBMD's table.
To disable and return to a plain local node:
Object: Network-Port:1
Write BACnet_IP_Mode = NORMAL
Notes:
- Mode, remote-BBMD address, TTL, and Device Instance are persisted and survive reboot.
- Because the constructed
FD_BBMD_Address(aBACnetHostNPort) is not editable in some free tools (e.g. YABE has no editor for it), use a proper BMS commissioning tool for the BBMD address. Mode and TTL are plain scalars and are editable anywhere. - Only one of BBMD / Foreign Device runs at a time; there must be one BBMD per subnet.
Supported Services
The device supports these BACnet services:
Unconfirmed Services:
- Who-Is / I-Am (device discovery)
- Time-Synchronization (set device clock)
- UTC-Time-Synchronization (set from UTC)
Confirmed Services:
- Read-Property
- Read-Property-Multiple (recommended for efficiency)
- Write-Property
- Write-Property-Multiple (required for schedules)
- Device-Communication-Control
- Reinitialize-Device
BACnet/IP (BVLC) Services (when BBMD/FDR is enabled):
- Register-Foreign-Device (device registers to a remote BBMD)
- Read/Write-Broadcast-Distribution-Table, Forwarded-NPDU, Distribute-Broadcast-To-Network (BBMD mode)
Understanding the Object Model
The eDIDIO-S10 exposes 71 BACnet objects organized by function:
Device Object (1 object)
Device:X - Main controller object
- Purpose: Device identification and status
- Key Properties: Vendor info, firmware version, object list
- Object Name: Default "edidio-s10" (configurable)
Lighting Output Objects (32 objects)
Lighting-Output:0 through Lighting-Output:31 - DALI group control
- Purpose: Control DALI lighting groups (ballasts/drivers)
- Range: 0-100% brightness
- Features: Smooth fading, priority control, tracking
DALI Line Mapping:
For 2-Line configuration:
- LO:0-15 → DALI Line 1
- LO:16-31 → DALI Line 2
For 4-Line configuration:
- LO:0-7 → DALI Line 1
- LO:8-15 → DALI Line 2
- LO:16-23 → DALI Line 3
- LO:24-31 → DALI Line 4
Analog Value Objects (10 objects)
For List Control:
- AV:0 - "List Start Control" - Start a lighting sequence/effect
- AV:1 - "List Stop Control" - Stop a running sequence
For Diagnostics (Read-Only):
- AV:2, 4, 6, 8 - Fault counts for Lines 1-4
- AV:3, 5, 7, 9 - Fault device addresses for Lines 1-4
Binary Value Objects (10 objects)
For Line Control:
- BV:0 - "FMS Override" - Facility management override
- BV:1 - "Line 1 On/Off" - Turn entire Line 1 on/off
- BV:2 - "Line 2 On/Off" - Turn entire Line 2 on/off
- BV:3 - "Line 3 On/Off" - Turn entire Line 3 on/off
- BV:4 - "Line 4 On/Off" - Turn entire Line 4 on/off
For Fault Monitoring (Read-Only):
- BV:5-8 - Fault status for Lines 1-4 (ACTIVE = fault detected)
For Configuration:
- BV:9 - "DALI Poll Control" - Polling interval setting
Binary Input Objects (8 objects)
BI:0 through BI:7 - "BINARY INPUT 0" through "BINARY INPUT 7"
- Purpose: Monitor physical digital inputs on the device
- States: ACTIVE (input high) or INACTIVE (input low)
- Use Cases: Button monitoring, sensor integration, external triggers
Binary Output Objects (4 objects)
BO:0 through BO:3 - "BINARY OUTPUT 0" through "BINARY OUTPUT 3"
- Purpose: Control physical relay/digital outputs
- States: ACTIVE (output on) or INACTIVE (output off)
- Use Cases: Control external equipment, relays, indicators
Schedule Objects (5 objects)
Schedule:0 through Schedule:4 - Time-based automation
- Purpose: Weekly recurring lighting schedules
- Features: Day-of-week selection, start/end times, effective date ranges
- Control: Can control Lighting Outputs OR trigger Lists
Network Port Object (1 object)
Network-Port:1 - BACnet/IP datalink configuration
- Purpose: Configure BBMD / Foreign Device Registration for routed networks
- Key Properties:
BACnet_IP_Mode(NORMAL/FOREIGN/BBMD),FD_BBMD_Address,FD_Subscription_Lifetime - Read-back: live IP address, MAC, UDP port, link speed, status
- See Multi-Subnet Networks (BBMD / FDR)
Lighting Control
Basic Lighting Control (Present_Value)
The simplest way to control lighting is by writing to the Present_Value property.
Example: Set light to 75%
Object: Lighting-Output:5
Property: Present_Value
Value: 75.0
Priority: 8
Brightness Levels:
- 0.0 = Off
- 50.0 = 50% brightness
- 100.0 = Maximum brightness
Priority Levels:
- Priority 8 - Recommended for building automation (Manual Operator level)
- Priority 6 - RESERVED (cannot be used)
- Priority 1-5 - Life safety and critical overrides
- Priority 9-16 - Lower priorities
Advanced Lighting Control (Lighting_Command)
For precise fade control with custom fade times, use the Lighting_Command property.
FADE_TO Operation:
Fades light to a target level over a specified time.
Object: Lighting-Output:10
Property: Lighting_Command
Operation: FADE_TO
Target Level: 80.0
Fade Time: 5000 ms (5 seconds)
Use Fade Time: TRUE
Priority: 8
RAMP_TO Operation:
Fades light at a specified rate (percent per second).
Object: Lighting-Output:10
Property: Lighting_Command
Operation: RAMP_TO
Target Level: 100.0
Ramp Rate: 20.0 (20% per second)
Use Ramp Rate: TRUE
Priority: 8
Other Operations:
- STEP_UP - Increase brightness by step increment
- STEP_DOWN - Decrease brightness by step increment
- STOP - Stop current fade
- OFF - Turn off
- ON - Turn on to last level
Monitoring Fade Progress
During a fade, you can monitor progress using two properties:
Present_Value:
- Shows the target level being faded to
- Does NOT change during the fade
Tracking_Value:
- Shows the current estimated level during the fade
- Updates continuously (every 10ms internally)
- Equals Present_Value when fade is complete
In_Progress:
- FADE_ACTIVE - Fade is in progress
- IDLE - No fade active
Example: Monitoring a 10-second fade to 100%
| Time | Present_Value | Tracking_Value | In_Progress |
|---|---|---|---|
| 0s | 100.0 | 0.0 | FADE_ACTIVE |
| 2s | 100.0 | 20.0 | FADE_ACTIVE |
| 5s | 100.0 | 50.0 | FADE_ACTIVE |
| 10s | 100.0 | 100.0 | IDLE |
Fade Time Precision
The eDIDIO uses DALI standard fade times (16 discrete values):
- Requested fade times are rounded to the nearest DALI standard time
- Example: Requesting 10,000ms will use 11,300ms (index 9)
- Range: 0ms (instant) to 90,500ms
| Requested Time | Actual Fade Time |
|---|---|
| 0-350ms | 0ms (instant) |
| 350-850ms | 700ms |
| 2400-3400ms | 2800ms (default) |
| 4850-6850ms | 5700ms |
| 10000ms | 11300ms |
| >77250ms | 90500ms |
Controlling Entire Lines
To turn all lights on a DALI line on or off:
Turn Line 1 fully ON:
Object: Binary-Value:1
Property: Present_Value
Value: ACTIVE
Priority: 8
Turn Line 2 fully OFF:
Object: Binary-Value:2
Property: Present_Value
Value: INACTIVE
Priority: 8
This affects ALL DALI groups on the specified line (instant, no fade).
Lighting Sequences and Effects
The eDIDIO has 32 built-in lighting sequences (lists) that can be triggered:
Start List #12:
Object: Analog-Value:0
Property: Present_Value
Value: 12.0
Stop List #12:
Object: Analog-Value:1
Property: Present_Value
Value: 12.0
Use Cases:
- Pre-programmed effects (chase, twinkle, rotate)
- Dynamic color scenes
- Timed sequences
- Complex multi-step programs
Scheduling
The eDIDIO supports 5 independent weekly schedules for time-based automation.
Schedule Recommendations
Best Practice:
- Create schedules using eDIDIO software (Spektra+ or the legacy DIDIO Configurator)
- Use BACnet to edit times as needed for BMS integration
This ensures proper initialization of DALI groups and trigger types.
Schedule Capabilities
Supported:
- Weekly recurring schedules (Monday-Sunday)
- 2 time points per day (start and end times)
- Date ranges (effective period)
- Control Lighting Outputs OR trigger Lists
- Enable/disable schedules
Not Supported:
- Astronomical scheduling (sunrise/sunset) via BACnet
- Exception schedules
- More than 2 time points per day
- Different times on different days (Monday time is used as reference)
Schedule Control Modes
Mode 1: Lighting Output Control
Controls DALI groups directly.
Setup:
Object: Schedule:0
Property: List_Of_Object_Property_References
Value: Lighting-Output:5, Present_Value
Weekly Schedule Example:
- Monday-Friday: 08:00 → 80% brightness, 18:00 → Off
- Saturday-Sunday: No schedule
Mode 2: List Control
Triggers lighting sequences/effects.
Setup:
Object: Schedule:0
Property: List_Of_Object_Property_References
Value: Analog-Value:0, Present_Value
Weekly Schedule Example:
- Monday-Friday: 07:00 → Start List #5, 19:00 → Start List #12
Creating Schedules via BACnet
Important: Use Write-Property-Multiple to write both Effective_Period and Weekly_Schedule together.
Enable a Schedule:
Object: Schedule:0
Property: Out_Of_Service
Value: false
Disable a Schedule:
Object: Schedule:0
Property: Out_Of_Service
Value: true
Schedule Limitations
Time Constraints:
- All active days must use the same times (Monday is the reference)
- End time must be after start time on the same day
- Cannot span midnight
Example:
Monday: 08:00-18:00 ✓ Valid, becomes reference
Tuesday: 08:00-18:00 ✓ Same times as Monday - included
Wednesday: 09:00-18:00 ✗ Different start time - excluded from schedule
Monitoring and Diagnostics
Physical Inputs
Monitor button presses, sensors, or external triggers:
Read Input State:
Object: Binary-Input:2
Property: Present_Value
Result: ACTIVE (input is HIGH)
Use Cases:
- Wall switch monitoring
- Occupancy sensor integration
- Door contact monitoring
- Manual override detection
Physical Outputs
Control relays and external equipment:
Activate Output:
Object: Binary-Output:0
Property: Present_Value
Value: ACTIVE
Priority: 8
Use Cases:
- Control HVAC equipment
- Trigger access control
- Activate auxiliary lighting
- Control motorized blinds
DALI Fault Monitoring
The eDIDIO monitors DALI line health and reports faults.
Check for Faults:
Object: Binary-Value:5 (Line 1 Fault)
Property: Present_Value
Result: ACTIVE (fault detected)
Get Fault Details:
Object: Analog-Value:2 (Line 1 Fault Count)
Property: Present_Value
Result: 3.0 (3 faults detected)
Object: Analog-Value:3 (Line 1 Next Fault Address)
Property: Present_Value
Result: 42.0 (DALI address 42 has fault)
Fault Types:
- Physical wiring issues
- Short circuits
- Missing devices (commissioned but no longer responding)
- Communication failures
Time Synchronization
Keep the device clock synchronized for accurate scheduling:
Local Time Sync:
Service: Time-Synchronization (broadcast)
Date: 2025-01-15 (Wednesday)
Time: 15:30:00
UTC Time Sync:
Service: UTC-Time-Synchronization (broadcast)
Date: 2025-01-15
Time: 05:30:00 UTC
Local Offset: +600 minutes (AEST)
The device handles daylight saving time automatically (Australian AEDT rules).
Integration Patterns
Pattern 1: Simple On/Off Control
Use Case: Meeting room with automatic lighting control
Occupancy Detected (from BMS):
→ Write Lighting-Output:5, Present_Value = 100.0, Priority 8
Occupancy Timeout (from BMS):
→ Write Lighting-Output:5, Present_Value = 0.0, Priority 8
Pattern 2: Daylight Harvesting
Use Case: Office space with photocells feeding BMS
Daylight Sensor > 500 lux:
→ Write Lighting-Output:10, Present_Value = 30.0, Priority 8
Daylight Sensor < 300 lux:
→ Write Lighting-Output:10, Present_Value = 80.0, Priority 8
Use FADE_TO with 5-10 second fade time for smooth transitions.
Pattern 3: Scheduled Office Lighting
Use Case: Standard office hours with override capability
Schedule Configuration:
- Schedule:0 controls Lighting-Output:0-15 (all fixtures)
- Monday-Friday: 07:00 → 80%, 19:00 → Off
- Priority: 8 (automation level)
Manual Override:
- BMS writes Present_Value at Priority 7 (higher priority)
- Relinquish Priority 7 to return to scheduled operation
Pattern 4: Multi-Zone Restaurant
Use Case: Restaurant with different zones needing different modes
Configuration:
- LO:0-7 → Dining Area (Line 1)
- LO:8-15 → Bar Area (Line 2)
- LO:16-23 → Kitchen Area (Line 3)
Dinner Service Mode (BMS triggered):
Write Lighting-Output:0-7, Present_Value = 60.0 (Dining ambient)
Write Lighting-Output:8-15, Present_Value = 75.0 (Bar brighter)
Write Lighting-Output:16-23, Present_Value = 100.0 (Kitchen full)
Closing Mode:
Start List #20 (slow fade-out effect)
Write Analog-Value:0, Present_Value = 20.0
Pattern 5: Emergency Override
Use Case: Fire alarm integration with BMS
Fire Alarm Active:
→ Write Binary-Value:1-4, Present_Value = ACTIVE, Priority 2
(Turns all DALI lines to full brightness at life safety priority)
Fire Alarm Cleared:
→ Relinquish Priority 2 on all Binary-Value:1-4
(Returns to normal automation control)
Pattern 6: Energy Management
Use Case: Building-wide energy curtailment
Strategy:
- Normal: Control at Priority 8
- Energy curtail: Write at Priority 7 (higher)
- Emergency: Priority 2-5
Energy Curtailment Active:
→ Read all Lighting-Output:*, Present_Value
→ Write back at 70% of current level, Priority 7
Curtailment Released:
→ Relinquish Priority 7 on all Lighting Outputs
Troubleshooting
Device Not Responding to Who-Is
Check:
- Device is powered and network link LED is active
- Device is on same network/VLAN as BMS
- Firewall allows UDP 47808 bidirectional
- Wait 5 seconds after power-on for I-Am announcement
- Use Wireshark to verify I-Am packets are being transmitted
Verify with native discovery:
- Send UDP broadcast to port 30303
- Should receive JSON response with MAC, IP, firmware
Cannot Control Lighting
Check:
- Out_Of_Service property is
falseon the Lighting Output - Using valid priority level (1-16, avoid Priority 6)
- Value is in valid range (0.0-100.0)
- No higher priority command is active (check Priority_Array)
- DALI devices are commissioned and responding
Debug Steps:
Read Lighting-Output:X, Priority_Array
→ Check which priorities have values
→ Highest priority (lowest number) wins
Read Lighting-Output:X, Out_Of_Service
→ Must be false for control to work
Schedule Not Working
Check:
- Out_Of_Service is
false(schedule enabled) - Effective_Period includes current date
- Current day is included in Weekly_Schedule
- System time is correct (use Time-Synchronization)
- List_Of_Object_Property_References is set correctly
- All active days have same times as Monday
Test:
Read Schedule:0, Present_Value
→ Should show the currently active scheduled value
Read Device:X, Local_Time and Local_Date
→ Verify device clock is correct
Fade Not Smooth
Causes:
- Using Present_Value instead of Lighting_Command (no fade tracking)
- DALI ballasts have different fade time settings
- Requested fade time too short (use minimum 1-2 seconds)
Solution:
- Use Lighting_Command with FADE_TO operation
- Use fade times of 2-5 seconds for smooth results
- Check DALI ballast configuration (fade time stored in ballast)
Tracking_Value Not Updating
Causes:
- Fade was started with Present_Value (no tracking)
- Polling too infrequently (poll every 500-1000ms during fade)
- Fade time too short to observe
Solution:
- Always use Lighting_Command FADE_TO for tracked fades
- Use Read-Property-Multiple for efficiency:
Read Multiple:
- Present_Value
- Tracking_Value
- In_Progress
Time Sync Issues
Symptoms:
- Schedules run at wrong times
- Time off by 1 hour (DST issue)
- Time drifts over days
Solutions:
- Send Time-Synchronization broadcast regularly (daily recommended)
- Use UTC-Time-Synchronization with correct local offset
- Verify DST settings match location
- Check that BMS time source is accurate
High Priority Command Stuck
Problem: Cannot control light, higher priority is active
Diagnosis:
Read Lighting-Output:X, Priority_Array
Result: Priority 3 = 50.0 (stuck from emergency override)
Solution:
Write Lighting-Output:X, Present_Value = null, Priority 3
→ Relinquishes Priority 3
→ Lower priorities can now control the light
Network Performance
For optimal performance:
- Use Read-Property-Multiple instead of multiple Read-Property calls
- Reduces network traffic by 50-70%
- Faster response times
- Poll only what's needed:
- Don't poll static properties (Object_Name, etc.)
- Poll Present_Value only for objects you're actively monitoring
- During fades: Poll Tracking_Value every 1 second
- Use appropriate priorities:
- BMS automation: Priority 8
- Manual overrides: Priority 7
- Life safety: Priority 2-5
Contact Support
For issues not covered in this guide:
Diagnostic Information to Provide:
- Firmware version (read from Device:X, Firmware_Revision)
- BACnet protocol analyzer capture (Wireshark)
- Network configuration (IP, subnet, gateway)
- BMS software and version
- Description of issue and steps to reproduce
Quick Reference Tables
Object Summary
| Object Type | Count | Instances | Purpose |
|---|---|---|---|
| Device | 1 | X (from MAC) | Device identification |
| Lighting Output | 32 | 0-31 | DALI group control |
| Analog Value | 10 | 0-9 | List control (0-1), Faults (2-9) |
| Binary Value | 10 | 0-9 | Line control (0-4), Faults (5-8), Poll (9) |
| Binary Input | 8 | 0-7 | Physical input monitoring |
| Binary Output | 4 | 0-3 | Physical output control |
| Schedule | 5 | 0-4 | Time-based automation |
| Network Port | 1 | 1 | BBMD / Foreign Device config |
Priority Levels
| Priority | Use Case | Notes |
|---|---|---|
| 1 | Manual Life Safety | Emergency overrides |
| 2 | Automatic Life Safety | Fire alarm integration |
| 3-5 | Critical Equipment | Critical overrides |
| 6 | RESERVED | Cannot be used |
| 7 | Manual Override | Temporary manual control |
| 8 | Building Automation | Recommended for BMS |
| 9-16 | Lower Priorities | Background control |
Lighting_Command Operations
| Operation | Purpose | Parameters |
|---|---|---|
| FADE_TO | Fade to level with time | Target Level, Fade Time |
| RAMP_TO | Fade at rate | Target Level, Ramp Rate |
| STEP_UP | Increase brightness | Step Increment |
| STEP_DOWN | Decrease brightness | Step Increment |
| STOP | Stop current fade | None |
| OFF | Turn off | None |
| ON | Turn on to last level | None |
| RELINQUISH | Release priority | None |
Common BACnet Services
| Service | Purpose | Example |
|---|---|---|
| Read-Property | Read single property | Get Present_Value |
| Read-Property-Multiple | Read multiple properties | Get PV + Tracking + Status |
| Write-Property | Write single property | Set brightness |
| Write-Property-Multiple | Write multiple properties | Set schedule + effective period |
| Time-Synchronization | Set device clock | Daily time sync |
Document Information
Document Version: 1.1
Last Updated: 2026-09-04
Firmware Compatibility: 1.5.x BACnet build (EDIDIO_BACNET)
BACnet Protocol Revision: 17
End of Integration Guide