ZHA - Niko Battery switch with 1 button (552-720X1) Custom and Light mode

Introducing the Ultimate Niko Battery switch with 1 button Blueprint: Unleash Your Home’s Potential!

Hey Home Assistant Enthusiasts,

I’m thrilled to share with you my first Blueprint, designed to take full advantage of the Niko Battery switch with 1 button (552-720X1) when paired with ZHA to create an unparalleled home automation experience. Imagine controlling your lights and custom actions—all from a single, sleek device. Let’s dive into the exciting features this Blueprint has to offer!

Links:

:page_with_curl: My GitHub Repo
:blue_book: This blueprint

Version:

  • 2025.12.1 Add configurable dimming speed and reorganize blueprint documentation
  • 2025.08.1: Initial Version

Highlights:

  • Custom Mode: Actions at Your Fingertips:
    Program the button to execute your personalized home automation routines, from controlling your shades to activating security modes.

  • Lights Mode: Seamless Control of Lights:
    Effortlessly dim, brighten, and change the color of your lights depending on day and time of day with the intuitive button and a schedule.

Requirements:

  • Home Assistant 2025.04.0 or later: Due to changes in syntax within Home Assistant, certain features might not work as expected below this version.

Getting Started:

Download & Install the Blueprint:
Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

Follow instruction in the blueprint for the full setup.

Helper setup:

I find it easy to split my config into packages, so I can easily find different yaml entities related to specific device type. You can include the following in your Home Assistant config:

homeassistant:
  packages: !include_dir_named packages

Make sure to create packages folder in your /config/ directory.

For the Schedule helper you can make a file called lights.yaml for example and put the following inside:

schedule:
  lights_bright:
    name: "Lights Bright"
    icon: mdi:lightbulb-auto
    monday:
      - from: "00:00:00"
        to: "09:00:00"
        data:
          brightness_pct: 30
          color_temp_kelvin: 3333
      - from: "09:00:00"
        to: "19:00:00"
        data:
          brightness_pct: 90
          color_temp_kelvin: 3333
      - from: "19:00:00"
        to: "23:00:00"
        data:
          brightness_pct: 60
          color_temp_kelvin: 3333
      - from: "23:00:00"
        to: "24:00:00"
        data:
          brightness_pct: 30
          color_temp_kelvin: 3333
    tuesday:
      - from: "00:00:00"
        to: "09:00:00"
        data:
          brightness_pct: 30
          color_temp_kelvin: 3333
      - from: "09:00:00"
        to: "19:00:00"
        data:
          brightness_pct: 90
          color_temp_kelvin: 3333
      - from: "19:00:00"
        to: "23:00:00"
        data:
          brightness_pct: 60
          color_temp_kelvin: 3333
      - from: "23:00:00"
        to: "24:00:00"
        data:
          brightness_pct: 30
          color_temp_kelvin: 3333
    wednesday:
      - from: "00:00:00"
        to: "09:00:00"
        data:
          brightness_pct: 30
          color_temp_kelvin: 3333
      - from: "09:00:00"
        to: "19:00:00"
        data:
          brightness_pct: 90
          color_temp_kelvin: 3333
      - from: "19:00:00"
        to: "23:00:00"
        data:
          brightness_pct: 60
          color_temp_kelvin: 3333
      - from: "23:00:00"
        to: "24:00:00"
        data:
          brightness_pct: 30
          color_temp_kelvin: 3333
    thursday:
      - from: "00:00:00"
        to: "09:00:00"
        data:
          brightness_pct: 30
          color_temp_kelvin: 3333
      - from: "09:00:00"
        to: "19:00:00"
        data:
          brightness_pct: 90
          color_temp_kelvin: 3333
      - from: "19:00:00"
        to: "23:00:00"
        data:
          brightness_pct: 60
          color_temp_kelvin: 3333
      - from: "23:00:00"
        to: "24:00:00"
        data:
          brightness_pct: 30
          color_temp_kelvin: 3333
    friday:
      - from: "00:00:00"
        to: "09:00:00"
        data:
          brightness_pct: 30
          color_temp_kelvin: 3333
      - from: "09:00:00"
        to: "19:00:00"
        data:
          brightness_pct: 90
          color_temp_kelvin: 3333
      - from: "19:00:00"
        to: "23:00:00"
        data:
          brightness_pct: 60
          color_temp_kelvin: 3333
      - from: "23:00:00"
        to: "24:00:00"
        data:
          brightness_pct: 30
          color_temp_kelvin: 3333
    saturday:
      - from: "00:00:00"
        to: "10:00:00"
        data:
          brightness_pct: 30
          color_temp_kelvin: 3333
      - from: "10:00:00"
        to: "19:00:00"
        data:
          brightness_pct: 90
          color_temp_kelvin: 3333
      - from: "19:00:00"
        to: "23:00:00"
        data:
          brightness_pct: 60
          color_temp_kelvin: 3333
      - from: "23:00:00"
        to: "24:00:00"
        data:
          brightness_pct: 30
          color_temp_kelvin: 3333
    sunday:
      - from: "00:00:00"
        to: "10:00:00"
        data:
          brightness_pct: 30
          color_temp_kelvin: 3333
      - from: "10:00:00"
        to: "19:00:00"
        data:
          brightness_pct: 90
          color_temp_kelvin: 3333
      - from: "19:00:00"
        to: "23:00:00"
        data:
          brightness_pct: 60
          color_temp_kelvin: 3333
      - from: "23:00:00"
        to: "24:00:00"
        data:
          brightness_pct: 30
          color_temp_kelvin: 3333
  lights_dimmed:
    name: "Lights Dimmed"
    icon: mdi:lightbulb-auto-outline
    monday:
      - from: "00:00:00"
        to: "09:00:00"
        data:
          brightness_pct: 10
          color_temp_kelvin: 3333
      - from: "09:00:00"
        to: "19:00:00"
        data:
          brightness_pct: 40
          color_temp_kelvin: 3333
      - from: "19:00:00"
        to: "23:00:00"
        data:
          brightness_pct: 20
          color_temp_kelvin: 3333
      - from: "23:00:00"
        to: "24:00:00"
        data:
          brightness_pct: 10
          color_temp_kelvin: 3333
    tuesday:
      - from: "00:00:00"
        to: "09:00:00"
        data:
          brightness_pct: 10
          color_temp_kelvin: 3333
      - from: "09:00:00"
        to: "19:00:00"
        data:
          brightness_pct: 40
          color_temp_kelvin: 3333
      - from: "19:00:00"
        to: "23:00:00"
        data:
          brightness_pct: 20
          color_temp_kelvin: 3333
      - from: "23:00:00"
        to: "24:00:00"
        data:
          brightness_pct: 10
          color_temp_kelvin: 3333
    wednesday:
      - from: "00:00:00"
        to: "09:00:00"
        data:
          brightness_pct: 10
          color_temp_kelvin: 3333
      - from: "09:00:00"
        to: "19:00:00"
        data:
          brightness_pct: 40
          color_temp_kelvin: 3333
      - from: "19:00:00"
        to: "23:00:00"
        data:
          brightness_pct: 20
          color_temp_kelvin: 3333
      - from: "23:00:00"
        to: "24:00:00"
        data:
          brightness_pct: 10
          color_temp_kelvin: 3333
    thursday:
      - from: "00:00:00"
        to: "09:00:00"
        data:
          brightness_pct: 10
          color_temp_kelvin: 3333
      - from: "09:00:00"
        to: "19:00:00"
        data:
          brightness_pct: 40
          color_temp_kelvin: 3333
      - from: "19:00:00"
        to: "23:00:00"
        data:
          brightness_pct: 20
          color_temp_kelvin: 3333
      - from: "23:00:00"
        to: "24:00:00"
        data:
          brightness_pct: 10
          color_temp_kelvin: 3333
    friday:
      - from: "00:00:00"
        to: "09:00:00"
        data:
          brightness_pct: 10
          color_temp_kelvin: 3333
      - from: "09:00:00"
        to: "19:00:00"
        data:
          brightness_pct: 40
          color_temp_kelvin: 3333
      - from: "19:00:00"
        to: "23:00:00"
        data:
          brightness_pct: 20
          color_temp_kelvin: 3333
      - from: "23:00:00"
        to: "24:00:00"
        data:
          brightness_pct: 10
          color_temp_kelvin: 3333
    saturday:
      - from: "00:00:00"
        to: "10:00:00"
        data:
          brightness_pct: 10
          color_temp_kelvin: 3333
      - from: "10:00:00"
        to: "19:00:00"
        data:
          brightness_pct: 40
          color_temp_kelvin: 3333
      - from: "19:00:00"
        to: "23:00:00"
        data:
          brightness_pct: 20
          color_temp_kelvin: 3333
      - from: "23:00:00"
        to: "24:00:00"
        data:
          brightness_pct: 10
          color_temp_kelvin: 3333
    sunday:
      - from: "00:00:00"
        to: "10:00:00"
        data:
          brightness_pct: 10
          color_temp_kelvin: 3333
      - from: "10:00:00"
        to: "19:00:00"
        data:
          brightness_pct: 40
          color_temp_kelvin: 3333
      - from: "19:00:00"
        to: "23:00:00"
        data:
          brightness_pct: 20
          color_temp_kelvin: 3333
      - from: "23:00:00"
        to: "24:00:00"
        data:
          brightness_pct: 10
          color_temp_kelvin: 3333

You can of course make more schedules if needed and change the time slots, brightness_pct, color_temp_kelvin and transition to your liking.

Join the Community:

I can’t wait to see how you all use this Blueprint to enhance your smart homes. Please share your experiences, tips, and any creative uses you come up with. Together, we can make our homes smarter and more connected than ever!

Happy automating! :blush:

New update:

  • 2025.12.1 Add configurable dimming speed and reorganize blueprint documentation
  • Add dimming speed control (1-10 scale) with automatic step size calculation
  • Add per-action reset control for on/off/dimmer button presses
  • Add auto-adjust feature to automatically update lights when schedule changes
  • Reorganize inputs into logical sections (Light Mode, Custom Actions, Auto-Adjust)
  • Streamline blueprint description and improve input labels
  • Add support for optional schedules with proper empty value handling