API Docs

Direct hardware control of Elgato Stream Deck devices — buttons, encoders, and the LCD touch strip on the Stream Deck Plus.

Enumerating devices

const decks = hs.streamdeck.all()
decks.forEach(d => console.log(d.deckType + " — " + d.serialNumber))

Watching for connect / disconnect events

hs.streamdeck.on("connected", device => console.log("Connected: " + device.deckType))
hs.streamdeck.on("disconnected", device => console.log("Disconnected: " + device.deckType))

Driving a device

const deck = hs.streamdeck.all()[0]
deck.setBrightness(50)
deck.setButtonColor(1, HSColor.named("red"))
deck.onButton((device, button, isDown) => {
    console.log("button " + button + (isDown ? " down" : " up"))
})

Types

This module provides the following types:

Properties

This module has no properties.

Methods

hs.streamdeck.all() -> HSStreamDeckDevice[]

All Stream Deck devices currently connected to the system.
hs.streamdeck.all() -> HSStreamDeckDevice[]
HSStreamDeckDevice[]
An array of `HSStreamDeckDevice` objects
hs.streamdeck.all().forEach(d => console.log(d.deckType))

hs.streamdeck.findBySerialNumber(serialNumber) -> HSStreamDeckDevice

Find the connected device with the given serial number.
hs.streamdeck.findBySerialNumber(serialNumber) -> HSStreamDeckDevice
Name Type Description
serialNumber string The serial number to search for
HSStreamDeckDevice
An `HSStreamDeckDevice` if found, `null` otherwise
const deck = hs.streamdeck.findBySerialNumber("AL12K1A00000")

hs.streamdeck.on(event, listener) -> None

Register a listener for Stream Deck connect/disconnect events.
hs.streamdeck.on(event, listener) -> None
Name Type Description
event any The event to listen for
listener any Called with the affected device when a matching event occurs
None
Throws an Error on failure; wrap calls in try/catch to handle it.
try {
hs.streamdeck.on('connected', device => console.log("connected: " + device.deckType))
hs.streamdeck.on('disconnected', device => console.log("disconnected: " + device.deckType))
} catch (err) {
console.error(err.message)
}

hs.streamdeck.off(event, listener) -> None

Remove a previously registered Stream Deck connect/disconnect listener.
hs.streamdeck.off(event, listener) -> None
Name Type Description
event any The event the listener was registered for
listener any The function originally passed to `on`
None
const onConnected = device => console.log(device.deckType)
hs.streamdeck.on('connected', onConnected)
// later…
hs.streamdeck.off('connected', onConnected)

hs.streamdeck.once(event, listener) -> None

Register a listener that fires at most once for a Stream Deck connect/disconnect event.
hs.streamdeck.once(event, listener) -> None
Name Type Description
event any The event to listen for
listener any Called the next time a matching event occurs, then automatically removed
None
Throws an Error on failure; wrap calls in try/catch to handle it.
try {
hs.streamdeck.once('connected', device => console.log("First deck seen: " + device.deckType))
} catch (err) {
console.error(err.message)
}