Why Timezone Configuration is Required
Ultraloq devices have a unique characteristic that requires manual timezone configuration: The Problem:- Ultraloq devices schedule access codes using device-local time (e.g., “2024-01-15 14:30”)
- The Ultraloq API returns timestamps without timezone information
- Without knowing the device’s timezone, Seam cannot correctly convert UTC timestamps to device-local time
- You must manually configure each device’s timezone using the
/devices/report_provider_metadataAPI - This tells Seam what timezone the device is in so it can correctly schedule time-bound access codes
This is a one-time configuration per device. Once set, the timezone
persists until you change it.
What Works Without Timezone
You can use the following features without configuring the device’s timezone:- ✅ Permanent access codes — Codes without
starts_atandends_atwork immediately - ✅ Lock and unlock operations — Remote lock/unlock commands work immediately
- ✅ Device monitoring — Battery level, lock status, and online/offline state
What Requires Timezone
The following feature requires timezone configuration:- ❌ Time-bound access codes — Codes with
starts_atandends_atrequire timezone
Detecting Unconfigured Devices
When you first connect an Ultraloq device, it will have theultraloq_time_zone_unknown warning:
Configuring Timezones
Single Device
To configure the timezone for a single device, use the/devices/report_provider_metadata endpoint:
Multiple Devices (Batch Configuration)
You can configure timezones for multiple devices in a single API call:Valid Timezone Values
You must use IANA timezone strings (also called “tz database” timezones). These are standardized timezone identifiers in the formatContinent/City.
Examples of Valid Timezones
"America/New_York"— Eastern Time (US)"America/Chicago"— Central Time (US)"America/Denver"— Mountain Time (US)"America/Los_Angeles"— Pacific Time (US)"America/Phoenix"— Arizona (no DST)"America/Toronto"— Eastern Time (Canada)"Europe/London"— UK"Europe/Paris"— Central European Time"Asia/Tokyo"— Japan"Australia/Sydney"— Australian Eastern Time
Finding the Right Timezone
For a complete list of valid IANA timezones, see: Most programming languages also provide timezone lookup utilities:Verification
After configuring the timezone, verify that the configuration was successful:device.location.timezone:
Changing Timezones
You can change a device’s timezone at any time by calling/devices/report_provider_metadata again with the new timezone.
- Existing time-bound access codes maintain their UTC timestamps
- They continue working correctly because Seam stores them in UTC internally
- Future access codes will use the new timezone for scheduling
Best Practices
1. Set Timezone Immediately After Connection
Configure the timezone as soon as you connect an Ultraloq device, before users try to create time-bound access codes:2. Check Warnings Before Creating Time-Bound Codes
Always check for theultraloq_time_zone_unknown warning before creating time-bound access codes:
3. Use device.location.timezone for Reference
After configuration, you can reference the configured timezone fromdevice.location.timezone:
4. Provide Clear UI Guidance
In your application UI, guide users to select the correct timezone:Troubleshooting
Invalid Timezone Error
Problem: You receive an error like"Invalid timezone. Must be a valid IANA timezone string."
Solution:
- Verify you’re using a valid IANA timezone (e.g.,
"America/New_York", not"EST") - Check for typos in the timezone string
- Refer to the IANA timezone list
Warning Not Cleared After Configuration
Problem: Theultraloq_time_zone_unknown warning persists after calling report_provider_metadata.
Solution:
- Verify the API call succeeded (check for errors in the response)
- Refresh the device by calling
seam.devices.get()again - Ensure you used the correct
device_id - Wait a few seconds and check again (state updates are usually immediate but may take a moment)
Time-Bound Codes Still Failing
Problem: Time-bound access codes still fail to create after configuring timezone. Solution:- Verify
device.properties.ultraloq_metadata.time_zoneis notnull - Check that
device.warningsdoes not containultraloq_time_zone_unknown - Ensure you’re providing both
starts_atandends_atin your access code request - Verify your timestamps are valid ISO 8601 UTC strings
API Reference
For complete API documentation, see:Next Steps
Now that you understand timezone configuration, you can:- Create time-bound access codes: See Creating Ultraloq Access Codes
- Review the setup guide: See Ultraloq Setup Guide
- Learn about access code constraints: See Understanding Code Constraints

