241 lines
6.8 KiB
YAML
241 lines
6.8 KiB
YAML
# =============================================================================
|
|
# MQTT Generic Control Blueprint
|
|
# =============================================================================
|
|
# A flexible blueprint that triggers custom actions based on MQTT messages.
|
|
# Supports up to 8 different action IDs, each with its own callback.
|
|
#
|
|
# Features:
|
|
# - Listen to up to 4 MQTT topics simultaneously
|
|
# - Map up to 8 action IDs to custom callback actions
|
|
# - Works with any Zigbee2MQTT device that sends action payloads
|
|
# - Fully customizable actions for each trigger
|
|
#
|
|
# How It Works:
|
|
# - Listens for MQTT messages on configured topics
|
|
# - Extracts the `action` field from the JSON payload
|
|
# - Matches action against configured action IDs
|
|
# - Executes the corresponding callback action sequence
|
|
#
|
|
# Author: Alexei Dolgolyov (dolgolyov.alexei@gmail.com)
|
|
# =============================================================================
|
|
|
|
blueprint:
|
|
name: "Custom: MQTT Generic Control"
|
|
description: >
|
|
Triggered by MQTT messages. Supports up to 8 custom action IDs with optional callbacks.
|
|
domain: automation
|
|
|
|
input:
|
|
mqtt_group:
|
|
name: "MQTT"
|
|
collapsed: false
|
|
input:
|
|
mqtt_topic:
|
|
name: MQTT Topic 1
|
|
description: The MQTT topic to listen to
|
|
selector:
|
|
text: {}
|
|
|
|
mqtt_topic2:
|
|
name: MQTT Topic 2 (Optional)
|
|
description: >
|
|
Additional MQTT topic to listen to.
|
|
Leave as default placeholder if not using.
|
|
default: "blueprint/disabled/mqtt_generic_control_2"
|
|
selector:
|
|
text: {}
|
|
|
|
mqtt_topic3:
|
|
name: MQTT Topic 3 (Optional)
|
|
description: >
|
|
Additional MQTT topic to listen to.
|
|
Leave as default placeholder if not using.
|
|
default: "blueprint/disabled/mqtt_generic_control_3"
|
|
selector:
|
|
text: {}
|
|
|
|
mqtt_topic4:
|
|
name: MQTT Topic 4 (Optional)
|
|
description: >
|
|
Additional MQTT topic to listen to.
|
|
Leave as default placeholder if not using.
|
|
default: "blueprint/disabled/mqtt_generic_control_4"
|
|
selector:
|
|
text: {}
|
|
|
|
actions_group:
|
|
name: "Actions"
|
|
collapsed: false
|
|
input:
|
|
action_id_1:
|
|
name: Action ID 1
|
|
description: Value of `payload_json.action` that triggers callback 1
|
|
default: ""
|
|
selector:
|
|
text: {}
|
|
action_callback_1:
|
|
name: Action Callback 1
|
|
description: Actions to run when Action ID 1 is received
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
action_id_2:
|
|
name: Action ID 2
|
|
default: ""
|
|
selector:
|
|
text: {}
|
|
action_callback_2:
|
|
name: Action Callback 2
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
action_id_3:
|
|
name: Action ID 3
|
|
default: ""
|
|
selector:
|
|
text: {}
|
|
action_callback_3:
|
|
name: Action Callback 3
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
action_id_4:
|
|
name: Action ID 4
|
|
default: ""
|
|
selector:
|
|
text: {}
|
|
action_callback_4:
|
|
name: Action Callback 4
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
action_id_5:
|
|
name: Action ID 5
|
|
default: ""
|
|
selector:
|
|
text: {}
|
|
action_callback_5:
|
|
name: Action Callback 5
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
action_id_6:
|
|
name: Action ID 6
|
|
default: ""
|
|
selector:
|
|
text: {}
|
|
action_callback_6:
|
|
name: Action Callback 6
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
action_id_7:
|
|
name: Action ID 7
|
|
default: ""
|
|
selector:
|
|
text: {}
|
|
action_callback_7:
|
|
name: Action Callback 7
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
action_id_8:
|
|
name: Action ID 8
|
|
default: ""
|
|
selector:
|
|
text: {}
|
|
action_callback_8:
|
|
name: Action Callback 8
|
|
default: []
|
|
selector:
|
|
action: {}
|
|
|
|
mode: restart
|
|
|
|
trigger:
|
|
- platform: mqtt
|
|
topic: !input mqtt_topic
|
|
- platform: mqtt
|
|
topic: !input mqtt_topic2
|
|
enabled: "{{ mqtt_topic2 != '' }}"
|
|
- platform: mqtt
|
|
topic: !input mqtt_topic3
|
|
enabled: "{{ mqtt_topic3 != '' }}"
|
|
- platform: mqtt
|
|
topic: !input mqtt_topic4
|
|
enabled: "{{ mqtt_topic4 != '' }}"
|
|
|
|
variables:
|
|
action_id: "{{ trigger.payload_json.action }}"
|
|
action_id_1: !input action_id_1
|
|
action_id_2: !input action_id_2
|
|
action_id_3: !input action_id_3
|
|
action_id_4: !input action_id_4
|
|
action_id_5: !input action_id_5
|
|
action_id_6: !input action_id_6
|
|
action_id_7: !input action_id_7
|
|
action_id_8: !input action_id_8
|
|
is_debug: false
|
|
|
|
action:
|
|
# Debug info (log if required)
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{ is_debug }}"
|
|
sequence:
|
|
- service: persistent_notification.create
|
|
data:
|
|
title: "Debug Info"
|
|
message: >
|
|
action = {{ action_id }},
|
|
1 = {{ action_id_1 }}
|
|
|
|
- choose:
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{ action_id_1 != '' and action_id == action_id_1 }}"
|
|
sequence: !input action_callback_1
|
|
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{ action_id_2 != '' and action_id == action_id_2 }}"
|
|
sequence: !input action_callback_2
|
|
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{ action_id_3 != '' and action_id == action_id_3 }}"
|
|
sequence: !input action_callback_3
|
|
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{ action_id_4 != '' and action_id == action_id_4 }}"
|
|
sequence: !input action_callback_4
|
|
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{ action_id_5 != '' and action_id == action_id_5 }}"
|
|
sequence: !input action_callback_5
|
|
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{ action_id_6 != '' and action_id == action_id_6 }}"
|
|
sequence: !input action_callback_6
|
|
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{ action_id_7 != '' and action_id == action_id_7 }}"
|
|
sequence: !input action_callback_7
|
|
|
|
- conditions:
|
|
- condition: template
|
|
value_template: "{{ action_id_8 != '' and action_id == action_id_8 }}"
|
|
sequence: !input action_callback_8
|