Skip to content

Instantly share code, notes, and snippets.

@clydebarrow
Last active January 25, 2026 02:17
Show Gist options
  • Select an option

  • Save clydebarrow/de629c5ace2c345f0703e6074bc50659 to your computer and use it in GitHub Desktop.

Select an option

Save clydebarrow/de629c5ace2c345f0703e6074bc50659 to your computer and use it in GitHub Desktop.
Pincode Blueprint
blueprint:
name: ESPHome PIN Code Manager
description: >
Manage PIN codes for ESPHome pincode component. Configure up to 10 PIN codes
with names and automatically update the ESPHome device when changes are made.
domain: automation
input:
esphome_device:
name: ESPHome Device
description: The ESPHome device with the pincode component
selector:
device:
integration: esphome
text_sensor_entity:
name: PIN Configuration Text Entity
description: The text entity that receives PIN code updates (e.g., text.pincode_test_pin_code) - must be a 'text' entity, not 'sensor'
selector:
entity:
domain: text
integration: esphome
# PIN Code 1
pin1_enabled:
name: PIN 1 - Enable
default: true
selector:
boolean:
pin1_code:
name: PIN 1 - Code
description: 4-16 digit PIN code (numbers only)
default: "1234"
selector:
text:
type: text
pin1_name:
name: PIN 1 - Name
description: Name for this PIN (no colons allowed)
default: "Admin"
selector:
text:
type: text
# PIN Code 2
pin2_enabled:
name: PIN 2 - Enable
default: false
selector:
boolean:
pin2_code:
name: PIN 2 - Code
default: "5678"
selector:
text:
type: text
pin2_name:
name: PIN 2 - Name
default: "User1"
selector:
text:
type: text
# PIN Code 3
pin3_enabled:
name: PIN 3 - Enable
default: false
selector:
boolean:
pin3_code:
name: PIN 3 - Code
default: "9999"
selector:
text:
type: text
pin3_name:
name: PIN 3 - Name
default: "User2"
selector:
text:
type: text
# PIN Code 4
pin4_enabled:
name: PIN 4 - Enable
default: false
selector:
boolean:
pin4_code:
name: PIN 4 - Code
default: "1111"
selector:
text:
type: text
pin4_name:
name: PIN 4 - Name
default: "Guest"
selector:
text:
type: text
# PIN Code 5
pin5_enabled:
name: PIN 5 - Enable
default: false
selector:
boolean:
pin5_code:
name: PIN 5 - Code
default: "2222"
selector:
text:
type: text
pin5_name:
name: PIN 5 - Name
default: "Cleaner"
selector:
text:
type: text
# PIN Code 6
pin6_enabled:
name: PIN 6 - Enable
default: false
selector:
boolean:
pin6_code:
name: PIN 6 - Code
default: "3333"
selector:
text:
type: text
pin6_name:
name: PIN 6 - Name
default: "Service"
selector:
text:
type: text
# PIN Code 7
pin7_enabled:
name: PIN 7 - Enable
default: false
selector:
boolean:
pin7_code:
name: PIN 7 - Code
default: "4444"
selector:
text:
type: text
pin7_name:
name: PIN 7 - Name
default: "Temp1"
selector:
text:
type: text
# PIN Code 8
pin8_enabled:
name: PIN 8 - Enable
default: false
selector:
boolean:
pin8_code:
name: PIN 8 - Code
default: "5555"
selector:
text:
type: text
pin8_name:
name: PIN 8 - Name
default: "Temp2"
selector:
text:
type: text
# PIN Code 9
pin9_enabled:
name: PIN 9 - Enable
default: false
selector:
boolean:
pin9_code:
name: PIN 9 - Code
default: "6666"
selector:
text:
type: text
pin9_name:
name: PIN 9 - Name
default: "Temp3"
selector:
text:
type: text
# PIN Code 10
pin10_enabled:
name: PIN 10 - Enable
default: false
selector:
boolean:
pin10_code:
name: PIN 10 - Code
default: "7777"
selector:
text:
type: text
pin10_name:
name: PIN 10 - Name
default: "Temp4"
selector:
text:
type: text
mode: single
max_exceeded: silent
variables:
pin1_enabled: !input pin1_enabled
pin1_code: !input pin1_code
pin1_name: !input pin1_name
pin2_enabled: !input pin2_enabled
pin2_code: !input pin2_code
pin2_name: !input pin2_name
pin3_enabled: !input pin3_enabled
pin3_code: !input pin3_code
pin3_name: !input pin3_name
pin4_enabled: !input pin4_enabled
pin4_code: !input pin4_code
pin4_name: !input pin4_name
pin5_enabled: !input pin5_enabled
pin5_code: !input pin5_code
pin5_name: !input pin5_name
pin6_enabled: !input pin6_enabled
pin6_code: !input pin6_code
pin6_name: !input pin6_name
pin7_enabled: !input pin7_enabled
pin7_code: !input pin7_code
pin7_name: !input pin7_name
pin8_enabled: !input pin8_enabled
pin8_code: !input pin8_code
pin8_name: !input pin8_name
pin9_enabled: !input pin9_enabled
pin9_code: !input pin9_code
pin9_name: !input pin9_name
pin10_enabled: !input pin10_enabled
pin10_code: !input pin10_code
pin10_name: !input pin10_name
text_sensor_entity: !input text_sensor_entity
esphome_device: !input esphome_device
input_text_helper: !input input_text_helper
pin_codes: >
{% set pins = [] %}
{% if pin1_enabled %}
{% set pins = pins + [pin1_code ~ ':' ~ pin1_name] %}
{% endif %}
{% if pin2_enabled %}
{% set pins = pins + [pin2_code ~ ':' ~ pin2_name] %}
{% endif %}
{% if pin3_enabled %}
{% set pins = pins + [pin3_code ~ ':' ~ pin3_name] %}
{% endif %}
{% if pin4_enabled %}
{% set pins = pins + [pin4_code ~ ':' ~ pin4_name] %}
{% endif %}
{% if pin5_enabled %}
{% set pins = pins + [pin5_code ~ ':' ~ pin5_name] %}
{% endif %}
{% if pin6_enabled %}
{% set pins = pins + [pin6_code ~ ':' ~ pin6_name] %}
{% endif %}
{% if pin7_enabled %}
{% set pins = pins + [pin7_code ~ ':' ~ pin7_name] %}
{% endif %}
{% if pin8_enabled %}
{% set pins = pins + [pin8_code ~ ':' ~ pin8_name] %}
{% endif %}
{% if pin9_enabled %}
{% set pins = pins + [pin9_code ~ ':' ~ pin9_name] %}
{% endif %}
{% if pin10_enabled %}
{% set pins = pins + [pin10_code ~ ':' ~ pin10_name] %}
{% endif %}
{{ pins | join(', ') }}
trigger:
- platform: homeassistant
event: start
- platform: event
event_type: automation_reloaded
- platform: time_pattern
hours: "/1"
action:
- service: text.set_value
target:
entity_id: "{{ text_sensor_entity }}"
data:
value: "{{ pin_codes }}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment