Skip to content

Instantly share code, notes, and snippets.

@jhol-byte
Last active February 1, 2026 11:24
Show Gist options
  • Select an option

  • Save jhol-byte/c9ee61b60337455622a7187871280321 to your computer and use it in GitHub Desktop.

Select an option

Save jhol-byte/c9ee61b60337455622a7187871280321 to your computer and use it in GitHub Desktop.
FRITZ!Smart Control 440 blueprint (webhook)
blueprint:
name: Fritz Dect 440 click template
description: |
Use the FRITZ!Smart Control 440 as 4-buttons control via web hooks.
Two display layers of buttons can be configured in the blueprint and for the first display layer you can also define double-click actions.
In the FritzBox go to
- `Smart Home/Automation`
- add templates `comfort function` / `call URL` (method `GET`) with the follwoing pattern: `http://homeassist:8123/api/webhook/<secret_webhook_id>?command=btn1_1` for every button (layer 1 and layer 2)
- `btn1_2` means button 2 on layer 1 etc., so for first plane `btn1_1`, `btn1_2`, `btn1_3`, `btn1_4`
and assign these templates to the corresponding button of your Fritz 440 with some suitable label.
Version: 2026-02-01
Info: https://community.home-assistant.io/t/fritz-smart-control-440-blueprint-webhook/981706
domain: automation
input:
webhook_id:
name: Fritz 440 webhook_id
description: Define one unique webhook_id per Fritz 440 device
selector:
text:
display1_section:
name: Main button action (1. display layer)
collapsed: true
input:
btn1_1_click_action:
name: <btn1_1> action
default: []
selector:
action: {}
btn1_2_click_action:
name: <btn1_2> action
default: []
selector:
action: {}
btn1_3_click_action:
name: <btn1_3> action
default: []
selector:
action: {}
btn1_4_click_action:
name: <btn1_4> action
default: []
selector:
action: {}
display1_double-click_section:
name: Double-click button action (1. display layer)
collapsed: true
input:
btn1_1_double_click_action:
name: <btn1_1 double-click> action
default: []
selector:
action: {}
btn1_2_double_click_action:
name: <btn1_2 double-click> action
default: []
selector:
action: {}
btn1_3_double_click_action:
name: <btn1_3 double-click> action
default: []
selector:
action: {}
btn1_4_double_click_action:
name: <btn1_4 double-click> action
default: []
selector:
action: {}
double_click_interval:
name: double-click interval
description: "time interval in sec between clicks"
default: 0.4
selector:
number:
mode: box
display2_section:
name: Secondary button action (2. display layer)
collapsed: true
input:
btn2_1_click_action:
name: <btn2_1> action
default: []
selector:
action: {}
btn2_2_click_action:
name: <btn2_2> action
default: []
selector:
action: {}
btn2_3_click_action:
name: <btn2_3> action
default: []
selector:
action: {}
btn2_4_click_action:
name: <btn2_4> action
default: []
selector:
action: {}
alias: Fritz Dect 440 click template
trigger:
- trigger: webhook
allowed_methods:
- GET
local_only: true
webhook_id: !input webhook_id
condition: []
actions:
- choose:
- conditions:
- condition: template
value_template: "{{ trigger.query.command=='btn1_1' }}"
sequence:
- if:
- condition: template
value_template: "{{ var_double_click_occured }}"
then:
sequence:
!input btn1_1_double_click_action
else:
sequence:
- delay:
seconds: !input double_click_interval
- sequence:
!input btn1_1_click_action
- conditions:
- condition: template
value_template: "{{ trigger.query.command=='btn1_2' }}"
sequence:
- if:
- condition: template
value_template: "{{ var_double_click_occured }}"
then:
sequence:
!input btn1_2_double_click_action
else:
sequence:
- delay:
seconds: !input double_click_interval
- sequence:
!input btn1_2_click_action
- conditions:
- condition: template
value_template: "{{ trigger.query.command=='btn1_3' }}"
sequence:
- if:
- condition: template
value_template: "{{ var_double_click_occured }}"
then:
sequence:
!input btn1_3_double_click_action
else:
sequence:
- delay:
seconds: !input double_click_interval
- sequence:
!input btn1_3_click_action
- conditions:
- condition: template
value_template: "{{ trigger.query.command=='btn1_4' }}"
sequence:
- if:
- condition: template
value_template: "{{ var_double_click_occured }}"
then:
sequence:
!input btn1_4_double_click_action
else:
sequence:
- delay:
seconds: !input double_click_interval
- sequence:
!input btn1_4_click_action
- conditions:
- condition: template
value_template: "{{ trigger.query.command=='btn2_1' }}"
sequence:
!input btn2_1_click_action
- conditions:
- condition: template
value_template: "{{ trigger.query.command=='btn2_2' }}"
sequence:
!input btn2_2_click_action
- conditions:
- condition: template
value_template: "{{ trigger.query.command=='btn2_3' }}"
sequence:
!input btn2_3_click_action
- conditions:
- condition: template
value_template: "{{ trigger.query.command=='btn2_4' }}"
sequence:
!input btn2_4_click_action
variables:
var_double_click_interval: !input double_click_interval
var_double_click_occured: >-
{{ (this.attributes.current == 1) and
((now() - this.attributes.last_triggered) < timedelta(seconds = var_double_click_interval) ) }}
mode: restart
max_exceeded: silent
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment