Skip to main content
Version: Stable

Publishers

Publishers send Zaparoo Core notifications to other services in real time. MQTT publishers forward the notification stream as JSON. PixelCade publishers turn media launch notifications into marquee display requests.

Multiple publishers can run at the same time, including more than one of the same type. Each one receives the same event stream.

Publishers are configured in config.toml. There is no Web UI for this feature.

MQTT

The MQTT publisher sends Core notifications as JSON messages to an MQTT broker. Use it with home automation setups like Home Assistant and Node-RED, or any other system that can subscribe to MQTT topics.

Events are published to the configured topic as they fire.

[[service.publishers.mqtt]]
broker = "mqtt://192.168.1.100:1883"
topic = "zaparoo/events"

See the Config File Reference for all options:

  • enabled — turn this publisher on or off
  • broker — MQTT broker URL (mqtt://, mqtts://, or ssl://)
  • topic — MQTT topic to publish to
  • filter — limit which event types are published

PixelCade

The PixelCade publisher displays game marquee art on a PixelCade LED display. When media starts, it maps the Zaparoo system ID to a PixelCade console folder and requests the matching marquee for the launched file.

[[service.publishers.pixelcade]]
host = "192.168.1.50"

See the Config File Reference for all options:

  • enabled — turn this publisher on or off
  • host — hostname or IP address of the PixelCade device (required)
  • port — HTTP API port (default: 8080)
  • mode"stream" or "write" endpoint (default: "stream")
  • filter — limit which event types trigger requests

PixelCade currently only sends requests for media.started notifications. Other notification types are ignored even if they pass the filter.

Filtering events

Every publisher has a filter option that limits which notification types it receives. Leave it empty to receive all events.

[[service.publishers.mqtt]]
broker = "mqtt://localhost:1883"
topic = "zaparoo/events"
filter = [
"media.started",
"media.stopped"
]

If you only care about media events and not every token scan, filter down to the event types you need.

Multiple publishers

You can define multiple publishers of the same type, each with different settings:

[[service.publishers.mqtt]]
broker = "mqtt://localhost:1883"
topic = "zaparoo/all"

[[service.publishers.mqtt]]
broker = "mqtt://192.168.1.200:1883"
topic = "home/arcade/events"
filter = ["media.started", "media.stopped"]

[[service.publishers.pixelcade]]
host = "192.168.1.50"