This commit is contained in:
Joel Wetzell
2026-05-17 21:12:04 -05:00
parent 69bc31d3f1
commit 8e6cd58006
82 changed files with 642 additions and 450 deletions
+7 -4
View File
@@ -1,21 +1,24 @@
---
title: SQLite
sidebar:
order: 1
order: 1
---
The `db.sqlite` module can open/create SQLite databases
The `db.sqlite` module can open/create SQLite databases
- **type**: `db.sqlite`
- **params**:
- **dsn**: the data source name, this can be a file path or the special `:memory:` name for an in-memory DB
- **dsn**: the data source name, this can be a file path or the special `:memory:` name for an in-memory DB
## Cap
### Example snippet
Opens an in-memory SQLite database
```yaml
- id: db
type: db.sqlite
params:
dsn: ":memory:"
```
```
@@ -1,20 +1,23 @@
---
title: HTTP Server
sidebar:
label: Server
order: 2
label: Server
order: 2
---
The `http.server` module emits a message for every HTTP request that is made to the server.
- **type**: `http.server`
- **params**:
- **port**: TCP port to listen for HTTP requests on
- **port**: TCP port to listen for HTTP requests on
### Example
Start an HTTP server listening on port 3000
```yaml
- id: httpServer
type: http.server
params:
port: 3000
```
```
+9 -6
View File
@@ -1,27 +1,30 @@
---
title: MIDI Input
sidebar:
label: Input
order: 1
label: Input
order: 1
---
import { Aside } from '@astrojs/starlight/components';
import { Aside } from "@astrojs/starlight/components";
<Aside type="caution">
This module is not currently included in the docker builds of [showbridge](https://hub.docker.com/r/jwetzell/showbridge)
This module is not currently included in the docker builds of
[showbridge](https://hub.docker.com/r/jwetzell/showbridge)
</Aside>
The `midi.input` module connects to a midi device (or virtual device) and emits MIDI messages that come in on that port. This module does not support output.
- **type**: `midi.input`
- **params**:
- **port**: name of the MIDI port to connect to
- **port**: name of the MIDI port to connect to
### Example
Open a MIDI connection to `Logic Pro Virtual Out`.
```yaml
- id: midiInput
type: midi.input
params:
port: "Logic Pro Virtual Out"
```
```
+10 -6
View File
@@ -1,26 +1,30 @@
---
title: MIDI Output
sidebar:
label: Output
order: 2
label: Output
order: 2
---
import { Aside } from '@astrojs/starlight/components';
import { Aside } from "@astrojs/starlight/components";
<Aside type="caution">
This module is not currently included in the docker builds of [showbridge](https://hub.docker.com/r/jwetzell/showbridge)
This module is not currently included in the docker builds of
[showbridge](https://hub.docker.com/r/jwetzell/showbridge)
</Aside>
The `midi.output` module connects to a midi device (or virtual device) and allows sending MIDI messages out to that device. This module does not produce any messages and so using it as an `input` to a [route](/concepts/routes) would be pointless.
- **type**: `midi.output`
- **params**:
- **port**: name of the MIDI port to connect to
- **port**: name of the MIDI port to connect to
### Example
Open a MIDI connection to `Logic Pro Virtual In`.
```yaml
- id: midiOutput
type: midi.output
params:
port: "Logic Pro Virtual In"
```
```
+8 -6
View File
@@ -1,20 +1,22 @@
---
title: MQTT Client
sidebar:
label: Client
order: 1
label: Client
order: 1
---
The `mqtt.client` module connects to a MQTT broker and emits a message messages based on the subscribed topic it receives from the port. This module is also capable of publishing MQTT messages to the connected broker.
- **type**: `mqtt.client`
- **params**:
- **broker**: connection string for the mqtt broker (`mqtt://test.mosquitto.org:1833`)
- **topic** mqtt topic to subscribe to
- **clientId** client ID for this connection to the broker
- **broker**: connection string for the mqtt broker (`mqtt://test.mosquitto.org:1833`)
- **topic** mqtt topic to subscribe to
- **clientId** client ID for this connection to the broker
### Example
Open a mqtt connection to `test.mosquitto.org` subscribing to the `showbridge` topic.
```yaml
- id: mqttClient
type: mqtt.client
@@ -22,4 +24,4 @@ Open a mqtt connection to `test.mosquitto.org` subscribing to the `showbridge` t
broker: "mqtt://test.mosquitto.org:1833"
topic: showbridge
clientId: showbridge
```
```
+10 -6
View File
@@ -1,21 +1,25 @@
---
title: NATS Client
sidebar:
label: Client
order: 1
label: Client
order: 1
---
This module connects to a [NATS](https://nats.io/) server and subscribes to a subject.
- **type**: `nats.client`
- **params**:
- **url**: the URL of the NATS server to connect to (e.g. `nats://localhost:4222`)
- **subject**: the subject to subscribe to
- **url**: the URL of the NATS server to connect to (e.g. `nats://localhost:4222`)
- **subject**: the subject to subscribe to
### Example
Connect to a local NATS server and subscribe to the `events` subject
Connect to a local NATS server and subscribe to the `events` subject
```yaml
- id: natsClient
type: nats.client
params:
url: nats://localhost:4222
subject: events
```
```
+9 -5
View File
@@ -1,21 +1,25 @@
---
title: NATS Server
sidebar:
label: Server
order: 2
label: Server
order: 2
---
This module starts a NATS server that listens for incoming connections.
- **type**: `nats.server`
- **params**:
- **ip**: (optional) the IP address to bind the server to defaults to `0.0.0.0`
- **port**: (optional) the port to listen on defaults to `4222`
- **ip**: (optional) the IP address to bind the server to defaults to `0.0.0.0`
- **port**: (optional) the port to listen on defaults to `4222`
### Example
Start a local NATS server listening on port 5555
```yaml
- id: httpServer
type: http.server
params:
ip: 127.0.0.1
port: 5555
```
```
+14 -12
View File
@@ -1,25 +1,27 @@
---
title: TCP Client
sidebar:
label: Client
order: 1
label: Client
order: 1
---
The `net.tcp.client` module connects to TCP server and emits messages based on the data it receives from the server that it connects to. Messages are determined by "framing" techniques as TCP is a stream based protocol. The module will attempt to reconnect anytime the connection is closed.
- **type**: `net.tcp.client`
- **params**:
- **host**: IP or FQDN to connect to
- **port**: TCP port to connect to
- **framing**: how to chunk the TCP stream into "messages"
- LF `\n`
- CR `\r`
- CRLF `\r\n`
- [SLIP](https://en.wikipedia.org/wiki/Serial_Line_Internet_Protocol)
- RAW (no framing is done bytes are sent out as they are received)
- **host**: IP or FQDN to connect to
- **port**: TCP port to connect to
- **framing**: how to chunk the TCP stream into "messages"
- LF `\n`
- CR `\r`
- CRLF `\r\n`
- [SLIP](https://en.wikipedia.org/wiki/Serial_Line_Internet_Protocol)
- RAW (no framing is done bytes are sent out as they are received)
### Example
Open a TCP connection to `127.0.0.1` port 8888, any incoming data will be split on line-feed (`\n`)
```yaml
- id: tcpClient
type: net.tcp.client
@@ -27,4 +29,4 @@ Open a TCP connection to `127.0.0.1` port 8888, any incoming data will be split
host: 127.0.0.1
port: 8888
framing: LF
```
```
+14 -12
View File
@@ -1,25 +1,27 @@
---
title: TCP Server
sidebar:
label: Server
order: 2
label: Server
order: 2
---
The `net.tcp.server` module emits a message messages based on the data it receives from clients that connect to it. Messages are determined by "framing" techniques as TCP is a stream based protocol.
- **type**: `net.tcp.server`
- **params**:
- **ip**: (optional) IP address to bind the TCP server to, if left out it will listen on all interfaces
- **port**: TCP port to listen on
- **framing**: how to chunk of the incoming TCP stream into "messages"
- LF `\n`
- CR `\r`
- CRLF `\r\n`
- [SLIP](https://en.wikipedia.org/wiki/Serial_Line_Internet_Protocol)
- RAW (no framing is done bytes are sent out as they are received)
- **ip**: (optional) IP address to bind the TCP server to, if left out it will listen on all interfaces
- **port**: TCP port to listen on
- **framing**: how to chunk of the incoming TCP stream into "messages"
- LF `\n`
- CR `\r`
- CRLF `\r\n`
- [SLIP](https://en.wikipedia.org/wiki/Serial_Line_Internet_Protocol)
- RAW (no framing is done bytes are sent out as they are received)
### Example
Start a TCP server listening on port 8888, incoming data will be split on line-feed (`\n`)
```yaml
- id: tcpServer
type: net.tcp.server
@@ -27,4 +29,4 @@ Start a TCP server listening on port 8888, incoming data will be split on line-f
ip: 127.0.0.1
port: 8888
framing: LF
```
```
+8 -5
View File
@@ -1,22 +1,25 @@
---
title: UDP Client
sidebar:
label: Client
order: 1
label: Client
order: 1
---
The `net.udp.client` module sends messages to a the configured `host` and `port`. This module does not produce any messages and so using it as an `input` to a [route](/concepts/routes) would be pointless.
- **type**: `net.udp.client`
- **params**:
- **host**: IP or FQDN to send message to
- **port**: UDP port to send messages to
- **host**: IP or FQDN to send message to
- **port**: UDP port to send messages to
### Example
setup up a UDP client that will send UDP packets to `127.0.0.1` on port 8888
```yaml
- id: udpClient
type: net.udp.client
params:
host: 127.0.0.1
port: 8888
```
```
@@ -1,21 +1,23 @@
---
title: UDP Multicast
sidebar:
label: Multicast
order: 3
label: Multicast
order: 3
---
- **type**: `net.udp.multicast`
- **params**:
- **ip**: the multicast IP address to listen to
- **port**: the port to listen on
- **ip**: the multicast IP address to listen to
- **port**: the port to listen on
### Example
Listen to the mDNS multicast address on port 5353
```yaml
- id: mdnsListener
type: net.udp.multicast
params:
ip: 224.0.0.251
port: 5353
```
```
+9 -6
View File
@@ -1,23 +1,26 @@
---
title: UDP Server
sidebar:
label: Server
order: 2
label: Server
order: 2
---
The `net.udp.server` module emits a message for every incoming UDP datagram.
- **type**: `net.udp.server`
- **params**:
- **ip**: (optional) IP address to bind the UDP server to, if left out it will listen on all interfaces
- **port**: UDP port to listen on
- **bufferSize**: (optional) Size of the read buffer for incoming UDP datagrams, defaults to `2048`
- **ip**: (optional) IP address to bind the UDP server to, if left out it will listen on all interfaces
- **port**: UDP port to listen on
- **bufferSize**: (optional) Size of the read buffer for incoming UDP datagrams, defaults to `2048`
### Example
Start a UDP server listening on port 8888 and only on `127.0.0.1`
```yaml
- id: udpServer
type: net.udp.server
params:
ip: 127.0.0.1
port: 8888
```
```
+4 -3
View File
@@ -1,8 +1,8 @@
---
title: PSN Client
sidebar:
label: Client
order: 1
label: Client
order: 1
---
- **type**: `psn.client`
@@ -10,7 +10,8 @@ sidebar:
This module listens on the [PosiStageNet](http://posistage.net/) multicast address and emits tracker states anytime a new PSN message is received.
### Example
```yaml
- id: psnClient
type: psn.client
```
```
+7 -5
View File
@@ -1,23 +1,25 @@
---
title: Redis Client
sidebar:
label: Client
order: 1
label: Client
order: 1
---
The `redis.client` module connects to a Redis server. This module does not produce any messages and so using it as an `input` to a [route](/concepts/routes) would be pointless.
- **type**: `redis.client`
- **params**:
- **host**: the Redis server host
- **port**: the Redis server port
- **host**: the Redis server host
- **port**: the Redis server port
### Example
Connect to a Redis server running on `localhost` at port `6379`.
```yaml
- id: redisClient
type: redis.client
params:
host: "localhost"
port: 6379
```
```
+16 -13
View File
@@ -1,31 +1,34 @@
---
title: Serial Client
sidebar:
label: Client
order: 1
label: Client
order: 1
---
import { Aside } from '@astrojs/starlight/components';
import { Aside } from "@astrojs/starlight/components";
<Aside type="caution">
This module is not currently included in the docker builds of [showbridge](https://hub.docker.com/r/jwetzell/showbridge)
This module is not currently included in the docker builds of
[showbridge](https://hub.docker.com/r/jwetzell/showbridge)
</Aside>
The `serial.client` module connects to a serial device and emits a message messages based on the data it receives from the port. Messages are determined by "framing" techniques as serial is a stream based protocol.
- **type**: `serial.client`
- **params**:
- **port**: serial port to connect to i.e `/dev/ttyS0`
- **baudRate** baud rate to use when connecting to serial port
- **framing**: how to chunk the serial stream into "messages"
- LF `\n`
- CR `\r`
- CRLF `\r\n`
- [SLIP](https://en.wikipedia.org/wiki/Serial_Line_Internet_Protocol)
- RAW (no framing is done bytes are sent out as they are received)
- **port**: serial port to connect to i.e `/dev/ttyS0`
- **baudRate** baud rate to use when connecting to serial port
- **framing**: how to chunk the serial stream into "messages"
- LF `\n`
- CR `\r`
- CRLF `\r\n`
- [SLIP](https://en.wikipedia.org/wiki/Serial_Line_Internet_Protocol)
- RAW (no framing is done bytes are sent out as they are received)
### Example
Open a serial connection to `/dev/ttyS0` with a buad rate of `115200`, any incoming data will be split on line-feed (`\n`)
```yaml
- id: serialClient
type: serial.client
@@ -33,4 +36,4 @@ Open a serial connection to `/dev/ttyS0` with a buad rate of `115200`, any incom
port: "/dev/ttyS0"
baudRate: 115200
framing: LF
```
```
+12 -8
View File
@@ -1,19 +1,23 @@
---
title: SIP Call Server
sidebar:
label: Server
order: 1
label: Server
order: 1
---
This module starts a [SIP](https://en.wikipedia.org/wiki/Session_Initiation_Protocol) server that listens for incoming connections and emits call events when a new call is received. This can be used with cheap SIP gateway devices to connect an analog phone line and do interesting things like [firing QLab cues with phone calls](/examples/dial-a-cue).
This module starts a [SIP](https://en.wikipedia.org/wiki/Session_Initiation_Protocol) server that listens for incoming connections and emits call events when a new call is received. This can be used with cheap SIP gateway devices to connect an analog phone line and do interesting things like [firing QLab cues with phone calls](/examples/dial-a-cue).
- **type**: `sip.call.server`
- **params**:
- **ip**: (optional) the IP address to bind the server to defaults to `0.0.0.0`
- **port**: (optional) the port to listen on defaults to `5060`
- **transport**: (optional) the transport protocol to use (e.g. `udp`, `tcp`, `ws`) defaults to `udp`
- **userAgent**: (optional) the User-Agent string to use in SIP responses defaults to `showbridge`
- **ip**: (optional) the IP address to bind the server to defaults to `0.0.0.0`
- **port**: (optional) the port to listen on defaults to `5060`
- **transport**: (optional) the transport protocol to use (e.g. `udp`, `tcp`, `ws`) defaults to `udp`
- **userAgent**: (optional) the User-Agent string to use in SIP responses defaults to `showbridge`
### Example
Start a UDP SIP server listening on port 5060
```yaml
- id: sipCallServer
type: sip.call.server
@@ -21,4 +25,4 @@ Start a UDP SIP server listening on port 5060
ip: 127.0.0.1
port: 5060
transport: udp
```
```
+12 -9
View File
@@ -1,21 +1,24 @@
---
title: SIP DTMF Server
sidebar:
label: Server
order: 1
label: Server
order: 1
---
This module starts a [SIP](https://en.wikipedia.org/wiki/Session_Initiation_Protocol) server that listens for incoming connections. When a call is received this module will emit events based on the touch tones (DTMF) received during the call. The event is sent out whenever the use presses the separator key defined in the params.
- **type**: `sip.dtmf.server`
- **params**:
- **ip**: (optional) the IP address to bind the server to defaults to `0.0.0.0`
- **port**: (optional) the port to listen on defaults to `5060`
- **transport**: (optional) the transport protocol to use (e.g. `udp`, `tcp`, `ws`) defaults to `udp`
- **userAgent**: (optional) the User-Agent string to use in SIP responses defaults to `showbridge`
- **separator**: the DTMF separator key to know when to emit events
- **ip**: (optional) the IP address to bind the server to defaults to `0.0.0.0`
- **port**: (optional) the port to listen on defaults to `5060`
- **transport**: (optional) the transport protocol to use (e.g. `udp`, `tcp`, `ws`) defaults to `udp`
- **userAgent**: (optional) the User-Agent string to use in SIP responses defaults to `showbridge`
- **separator**: the DTMF separator key to know when to emit events
### Example
Start a UDP SIP server listening on port 5060 that will emit events whenever the user presses the `#` key on their phone during a call
```yaml
- id: sipDTMFServer
type: sip.dtmf.server
@@ -23,5 +26,5 @@ Start a UDP SIP server listening on port 5060 that will emit events whenever the
ip: 127.0.0.1
port: 5060
transport: udp
separator: '#'
```
separator: "#"
```
+6 -3
View File
@@ -1,19 +1,22 @@
---
title: Interval
sidebar:
order: 2
order: 2
---
The `time.interval` module emits a message at a specified duration. Sending any message to this module will reset the interval timer.
- **type**: `time.interval`
- **params**:
- **duration**: time in milliseconds between messsages
- **duration**: time in milliseconds between messsages
### Example snippet
Emits a message every 3 seconds
```yaml
- id: every3Secs
type: time.interval
params:
duration: 3000
```
```
+6 -3
View File
@@ -1,19 +1,22 @@
---
title: Timer
sidebar:
order: 1
order: 1
---
The `time.timer` module emits only one message after a specified duration. Sending any message to this module will reset the timer.
- **type**: `time.timer`
- **params**:
- **duration**: time in milliseconds to wait before emitting message
- **duration**: time in milliseconds to wait before emitting message
### Example snippet
Emits a message 5 seconds after the module is initialized
```yaml
- id: 5secs
type: time.timer
params:
duration: 5000
```
```
@@ -1,21 +1,23 @@
---
title: WebSocket Client
sidebar:
label: Client
order: 1
label: Client
order: 1
---
The `websocket.client` module opens a websocket connection to the specified URL. This module supports both text and binary websocket messages.
- **type**: `websocket.client`
- **params**:
- **url**: the full url to connect to (`wss://echo.websocket.org`)
- **url**: the full url to connect to (`wss://echo.websocket.org`)
### Example
Connect to the example WS server at `echo.websocket.org`.
```yaml
- id: websocket
type: websocket.client
params:
url: "wss://echo.websocket.org"
```
```