Skip to content

Configuring sign cyclers

Sign cyclers, not to be confused with slide cyclers, allow multiple dynamic signs to alternate on a configured schedule. They can be nested in a tab group. See List of signs for more information about the front-end representation. They are configured in the sign_cyclers section of awesign.yaml.

Example configuration

An example configuration looks like this:

sign_cyclers:
  - name: cycler1
    start_time: "13:00:15"
    duration: 30
    transition: fade
    keyframes:
      0: dynamic_sign1
      10: dynamic_sign2
      20.5: dynamic_sign3
  • name is a unique identifier for the sign cycler. It should be URL-safe
  • start_time is the optional time of day the sign cycler should start. It must be in the format HH:MM:SS. This is the "wall clock time" in the local timezone, so it will be correct regardless of daylight savings time. If not specified, defaults to 00:00:00 (midnight). This isn't too important for cyclers with a duration of an hour or less
  • duration is the number of seconds that one cycle should last for. It must be a positive float or integer
  • transition is an optional animation that will be played between sign switches. Valid options are:
    • none: Abruptly switch to the next sign (default if not specified)
    • fade: Fade between signs
    • slide: Slide the new sign over the previous sign from right to left
    • More transitions will be added in the future
  • keyframes is a dictionary of times (in seconds) and dynamic sign names

The cycler will start at keyframe 0 at the configured start_time and advance to the next sign at each keyframe time. Once the duration has elapsed, the cycler will repeat from the beginning.

Explaining the example configuration

In the example configuration:

  • At 13:00:15 (start_time + 0 seconds), dynamic_sign1 will be displayed
  • At 13:00:25 (start_time + 10 seconds), the sign will transition to dynamic_sign2
  • At 13:00:35.5 (start_time + 20.5 seconds), the sign will transition to dynamic_sign3
  • At 13:00:45 (start_time + duration), the sign will transition back to dynamic_sign1 and the cycle will repeat

An invalid recursive configuration

The following configuration is invalid because the sign cycler "cycler1" references the dynamic sign "dynamic_sign1" which references the sign cycler "cycler1":

dynamic_signs:
  - name: dynamic_sign1
    type: sign_cycler
    data:
      sign_cycler: cycler1

sign_cyclers:
  - name: cycler1
    duration: 60
    keyframes:
      0: dynamic_sign1

A configuration like this will result in undefined behavior.