githubEdit

Configuring Ultraloq Device Timezones

Configure device timezones for Ultraloq locks to enable time-bound access codes

Ultraloq devices require timezone configuration before you can create time-bound access codes. This guide explains why this is necessary and how to configure timezones for your Ultraloq devices.


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

The Solution:

  • You must manually configure each device's timezone using the /devices/report_provider_metadata API

  • This tells Seam what timezone the device is in so it can correctly schedule time-bound access codes

circle-info

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_at and ends_at work 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_at and ends_at require timezone

If you attempt to create a time-bound access code without configuring the timezone, you'll receive a validation error:


Detecting Unconfigured Devices

When you first connect an Ultraloq device, it will have the ultraloq_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 format Continent/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

circle-exclamation

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:

After configuration, the device will also have the timezone in 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.

Impact on Existing Access Codes:

  • 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 the ultraloq_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 from device.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

Warning Not Cleared After Configuration

Problem: The ultraloq_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_zone is not null

  • Check that device.warnings does not contain ultraloq_time_zone_unknown

  • Ensure you're providing both starts_at and ends_at in 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:


Last updated

Was this helpful?