Controlling Stagetimer via Companion for Stream Deck (Comprehensive Guide)

Companion controlling Stagetimer
Companion controlling Stagetimer

Companion, an open-source software, enhances your live video production experience by allowing you to control hardware and software, such as Stagetimer, using Elgato’s Stream Deck. This user guide will walk you through the process of setting up the Companion with the Stagetimer module and explain the functions available.

Please note, you’ll need a Stagetimer account with a Pro or Premium plan to access the API, a prerequisite for Companion integration.

Prefer a video?

Matthew Hand describes how to use Stagetimer with Bitfocus Companion (26 min)

Using Bitfocus Companion with Stagetimer.io

“We honestly consider Stagetimer.io the best and easiest clock to use for event production. This amazing production tool combined with Bitfocus Companion makes for a great live solution. In this video, Matt shows how to set up Stagetimer.io with their API in Bitfocus Companion. You will need at least the Pro subscription to do this.”

Getting Started

  1. The first step is to acquire an Elgato Stream Deck, a budget-friendly keypad equipped with programmable LCD buttons. You can purchase it here.

    Stream Deck
    Elgato Stream Deck
  2. Download and launch the Companion app.

  3. In the GUI, add the “stagetimer.io: Stagetimer API” connection.

    Add Connection
    Adding the Stagetimer API connection in the Companion app
  4. The Companion module can control one Stagetimer room. Open the desired room to get its Room ID and API key.

    Room ID and API Key
    Retrieving the Room ID and API key
    API Key
    API key location
  5. Input the Room ID and API key into the Stagetimer connection on the Companion app. Click “Save” and ensure the status turns into a green checkmark, confirming successful setup.

    Status Check
    Stagetimer connection status check

    Note: The Companion module can also be used with the Stagetimer offline version. In this scenario, you need to adjust the API URL to connect with your offline version (explained later).

  6. Now, let’s add a button. Switch to the “Buttons” tab in Companion, navigate to “Presets” → “Stagetimer API” → “Transport”, and drag and drop the “Start/Stop” button onto one of the available Stream Deck fields. The new button should appear on your Stream Deck, ready to control your Stagetimer!

    Button Addition
    Adding the “Start/Stop” button
    Stream Deck
    The “Start/Stop” button visible on the Stream Deck
  7. Feel free to add any other buttons based on your requirements and kickstart your event!

Using the Companion Module with the Offline Version

You’re not limited to using the Stagetimer Companion module with the web version of Stagetimer. The module also works seamlessly with the offline version of Stagetimer.

The offline version is available here: https://stagetimer.io/offline-version/

Note: You need a paid Stagetimer account to use the API with the offline version. All paid plans include an offline license key.

Stagetimer offline version
Stagetimer offline version interface

Follow the steps below to set it up:

  1. Start by launching the Stagetimer offline version. Ensure it’s running on an IP address that is accessible from the Companion app. If both applications are on the same computer, 127.0.0.1 should work perfectly. If they’re on separate systems, you might need to run it on your wireless or wired network IP.

  2. Next, navigate to the room and click on “Menu” → “API”. This will display the room ID, API Key, and API URL. These are the details you’ll need for the Companion module configuration.

    API details
    API details found under “Menu” -> “API” in the offline version
  3. Finally, copy these details and paste them into the Companion module configuration. In the Companion app, this configuration section is also referred to as “Connections”. If the status turns green after clicking “Save”, that means you’re all set!

    Companion module configuration
    Update Companion module configuration

Congratulations, you’re now ready to control your Stagetimer offline version using the Companion module!

Control Multiple Rooms in Companion

For scenarios where you need to control multiple Stagetimer rooms simultaneously, Companion allows you to set up multiple connections. Here’s how:

  1. In the Connections tab, locate your existing Stagetimer connection.

  2. Change the label of your first Stagetimer connection to something distinctive (e.g., stagetimer-1). This helps differentiate between multiple rooms.

    Connection Label
    Change the label of your first Stagetimer connection
  3. Click the “Add connection” button and search for “stagetimer” to add another Stagetimer API module.

  4. Configure the second connection with:

    • A unique label (e.g., stagetimer-2)
    • The Room ID for your second room
    • The corresponding API key
    Multiple Connections
    Setting up multiple Stagetimer connections
  5. Once both connections are set up, you can add buttons for either room to your Stream Deck. The presets section will now show options for both connections.

    Multi Connection Presets
    Presets for multiple rooms
  6. When setting up button text, you can use variables specific to each connection by referencing the connection label:

    • For room 1: $(stagetimer-1:currentTimerName)
    • For room 2: $(stagetimer-2:currentTimerName)
    Button Configuration
    Configuring buttons for multiple rooms

This setup allows you to control multiple Stagetimer rooms from a single Stream Deck device, perfect for complex event setups or managing multiple stages.

Reference

The Stagetimer module provides numerous presets, actions, variables, and feedbacks. You can inspect the preset buttons as examples to see how to use these elements to create your own custom buttons.

Presets

Transport presets

ButtonNameDescription
Start/StopToggle the timer between start and stop, the button turns red when the timer is started.
StartStart the timer, the button turns red when the timer is started.
StopStop or pause the timer, the button turns red when the timer is paused.
PreviousResets the timer or selects the previous timer if it already is reset. Has an option to autostart the previous timer.
NextSelects the next timer. Has an option to autostart the next timer.
+5minAdd 5 minutes to the current timer.
+1minAdd 1 minute to the current timer.
+30sAdd 30 seconds to the current timer.
-5minSubtract 5 minutes from the current timer.
-1minSubtract 1 minute from the current timer.
-30sSubtract 30 seconds from the current timer.

Viewer presets

ButtonNameDescription
Time remainingShows a live countdown of the full current timer including wrap-up colors.
Time remaining (hours)Shows only the hours of the current timer including wrap-up colors.
Time remaining (minutes)Shows only the minutes of the current timer including wrap-up colors.
Time remaining (seconds)Shows only the seconds of the current timer including wrap-up colors.
Wrap-up indicatorIndicates the current wrap-up state: “On time”, “Wrap up..”, “Wrap up!”, or “Over time!”
Timer appearanceDefines how the timer is displayed. Read more: Timer Appearances
Current timerShows the title of the current timer.
Current speakerShows the speaker of the current timer.
TimezoneShows the timezone setting of the room.
Flash 3 timesTriggers the timer to flash 3 times. Option to flash between 1 and 99 times.
Stop flashingStops the timer from flashing.
Toggle blackout modeToggles blackout mode on or off, hiding the timer.
Toggle focus modeToggles focus mode on or off, emphasizing the message.

Timer presets

ButtonNameDescription
ResetReset to the first timer.
Option to target any timer indicated by index (starting from 1) or timer ID.
Start timerStart the second timer.
Option to target any timer indicated by index (starting from 1) or timer ID.
Stop timerStop the second timer.
Option to target any timer indicated by index (starting from 1) or timer ID.
Create timerCreate a new timer.
Options to configure the timer before it is created.

Message presets

ButtonNameDescription
Toggle messageToggle a message.
Option to target any message indicated by index (starting from 1) or message ID.
Show messageShow a message.
Option to target any message indicated by index (starting from 1) or message ID.
Hide messageHide a message.
Option to target any message indicated by index (starting from 1) or message ID. Otherwise hides the active message.
Create messageCreate a new message.
Options to configure the message before it is created.

Actions

ActionDescription
Message: HideHide a message in the room
Message: ShowShow a message in the room
Message: Toggle visibilityShow/hide a message in the room
Message: Create new messageCreate a new message in the room
Timer: ResetReset a specific timer to the original duration
Timer: StartStart or resume a specific timer in the room
Timer: StopStop a specific timer in the room
Timer: Toggle playbackToggle (start/stop) a specific timer in the room
Timer: Create new timerCreate a new timer in the room
Transport: Add timeAdd an amount of time to the highlighted timer in the room
Transport: NextHighlight the next timer in the list
Transport: PreviousReset the highlighted timer in the room if it is running. If not running, highlight the previous timer in the list. Optionally, start the previous timer once it’s highlighted.
Transport: StartStart or resume the highlighted timer in the room
Transport: Start/stopStart/stop the highlighted timer in the room
Transport: StopStop the highlighted timer in the room
Transport: Subtract timeSubtract an amount of time from the highlighted timer in the room
Utility: Get roomGet the status of the room
Utility: Get statusGet the playback status of the room
Utility: Test authTest connection and authentication
Viewer: Disable blackout modeDisable blackout mode in the room
Viewer: Disable focus modeDisable focus mode in the room
Viewer: Enable blackout modeEnable blackout mode in the room
Viewer: Enable focus modeEnable focus mode in the room
Viewer: Flash the screenFlashes the screen in the room. Can be used to grab the attention of speakers.
Viewer: Stop flashingStops any flashing timers and messages on the screen.
Viewer: Toggle blackout modeToggle (enable/disable) blackout mode in the room
Viewer: Toggle focus modeToggle (enable/disable) focus mode in the room

Variables

VariableDescription
$(stagetimer:currentTimerAppearance)Timer appearance (Docs)
$(stagetimer:currentTimerDuration)Timer duration
$(stagetimer:currentTimerDurationAsMs)Timer duration (ms)
$(stagetimer:currentTimerId)Timer ID
$(stagetimer:currentTimerName)Timer name
$(stagetimer:currentTimerNotes)Timer notes
$(stagetimer:currentTimerRemaining)Timer remaining time
$(stagetimer:currentTimerRemainingAsMs)Timer remaining time (ms)
$(stagetimer:currentTimerRemainingHours)Timer remaining time (hours)
$(stagetimer:currentTimerRemainingMinutes)Timer remaining time (minutes)
$(stagetimer:currentTimerRemainingSeconds)Timer remaining time (seconds)
$(stagetimer:currentTimerSpeaker)Timer speaker
$(stagetimer:roomId)Room ID
$(stagetimer:roomName)Room name

Feedbacks

  • Blackout mode
  • Flashing
  • Focus mode
  • Message showing
  • Playback running
  • Playback stopped
  • Timer is over time
  • Timer is running and on time
  • Timer is showing red wrap-up warning
  • Timer is showing yellow wrap-up warning

Leverage Unavailable Module Functions with the Stagetimer API

Accessing the full spectrum of Stagetimer API commands through Companion is a breeze.

The Stagetimer API documentation lists all accessible commands. Many are readily available as actions or presets in the Stagetimer module. However, a few might be missing, like the “Delete message” function.

Here’s a step-by-step guide to utilize such functions:

  1. Create a Generic Button in Companion

    Start by adding a regular button in Companion and attach the “Run shell path” action to it.

    Screenshot showing how to add a regular button in Companion
    Adding a regular button in Companion
  2. Copy-Paste the curl Command from the Stagetimer API Documentation

    Next, copy the curl command exactly as it appears from the Stagetimer API documentation and paste it into the “Path” field. Remember to replace placeholders with your Room ID and API Key in the command.

    Screenshot showing how to paste the curl command into the "Path" field
    Pasting the curl command into the “Path” field in Companion
  3. Customize the Command As Per Your Need

    As an example, if you want the button to delete the top-most message in the room, each time it’s clicked, modify the command as follows:

    curl "https://api.stagetimer.io/v1/delete_message?room_id=YOUR_ROOM_ID&api_key=YOUR_API_KEY&index=1"
    

    Pro Tip: When you click the “API Documentation” button from the room’s API popup, then it will prefill all API commands with your room ID, API Key and it will use the correct API URL if you use the offline version.

And there you go! You’ve successfully expanded your Stagetimer module functions within Companion.