Skip to content

Flow triggers

schedule

Schedule based triggers can be configured by setting either a cron or interval parameter. Scheduling is based on the APScheduler library and allows the following configuration options.

- type: schedule
  interval: {seconds: 5}

Trigger configuration:

Name Type Description Default
interval dict dict of time units and intervals, see https://apscheduler.readthedocs.io/en/3.x/modules/triggers/interval.html
cron dict dict of time units and cron expressions, see https://apscheduler.readthedocs.io/en/3.x/modules/triggers/cron.html

When triggered, the following context parameters are available

Name Type Description
trigger_type str 'schedule'

dbus_object_added

This trigger is fired during startup or when a new object appears on D-Bus that matches the bus2mqtt subscription.

- type: dbus_object_added

When triggered, the following context parameters are available

Name Type Description
trigger_type str 'object_added'
bus_name str bus_name of the object that was registered on dbus
path str path of the object that was registered on dbus

dbus_object_removed

- type: dbus_object_removed

When triggered, the following context parameters are available

Name Type Description
trigger_type str 'object_removed'
bus_name str bus_name of the object that was registered on dbus
path str path of the object that was registered on dbus

dbus_signal

DBus signals triggers must be configured with an anterface and path. Note that only subscribed signals can be configured as a trigger.

- type: dbus_signal
  interface: org.freedesktop.DBus.Properties
  signal: PropertiesChanged

Trigger configuration:

Name Type Description Default
signal str signal name to filter on, e.g. PropertiesChanged required
interface str | None interface to filter on, e.g. org.freedesktop.DBus.Properties

When triggered, the following context parameters are available

Name Type Description
trigger_type str 'dbus_signal'
bus_name str bus_name of the object that was registered on dbus
path str path of the object that was registered on dbus
interface str name of interface for which the signal was triggered
signal str name of the signal, e.g. 'Seeked'
args list positional signal arguments, list of objects
kwargs dict keyworded signal arguments, only available when a D-Bus service provides introspection data with named method arguments

Note

Take care with PropertiesChanged signals. These always originate from org.freedesktop.DBus.Properties. They contain the real interface the event originated from as their first argument. To filter on that interface you can use the conditions configuration on flows.

flows:
  - name: PropertiesChanged in player interface
    triggers:
      - type: dbus_signal
    conditions:
      - "{{ kwargs.interface_name == 'org.mpris.MediaPlayer2.Player' if trigger_type == 'dbus_signal' and signal == 'PropertiesChanged' else True }}"

mqtt_message

Listens for MQTT messages on the configured topic. The message payload is expected to be JSON formatted

- type: mqtt_message
  topic: dbus2mqtt/org.mpris.MediaPlayer2/flow-trigger
  filter: "{{ payload.get('action') == 'Mute' }}"

Trigger configuration:

Name Type Description Default
topic str topic to subscribe to, e.g. 'dbus2mqtt/org.mpris.MediaPlayer2/flow-trigger' required
content_type str One of json or text json
filter str | None Optional templated string that must evaluate to a boolean result. When False, the flow is not triggered

When triggered, the following context parameters are available

Name Type Description
trigger_type str 'mqtt_message'
topic str MQTT topic
payload any text or json deserialized MQTT message payload

Example flow

flows:
  - name: "Mute"
    triggers:
      - type: mqtt_message
        topic: dbus2mqtt/org.mpris.MediaPlayer2/command
        filter: "{{ payload.get('action') == 'Mute' }}"
    actions:
      - type: log
        msg: |
          Flow triggered by MQTT message, payload.action={{ payload.get('action') }}

Note

If topic overlaps with subscription[].interfaces[].mqtt_command_topic and the JSON payload structure follows mqtt_command_topic layout, a dbus call will be executed as well. Similar, warnings will be logged if a message does not match any flow or D-Bus method.

context_changed

Triggered when the dbus2mqtt context was updated by a context_set action. For now only global_context updates result in a context_changed trigger.

- type: context_changed

Trigger configuration:

Name Type Description Default
scope str For now, only global is supported global

When triggered, the following context parameters are available

Name Type Description
scope str Scope of the context that changed, for now this can only be global