Zigbee2MQTT - OSRAM Smart+ switch mini (AC0251100NJ/AC0251700NJ) actions

Github Gist: https://gist.github.com/freakshock88/1f4c349d9123114f821ce7a4e03bad52

Main features

Define actions for each button press type (up, up_hold, up_release, down_release, circle_release, circle_hold, down, down_hold, circle_click).

Supported device


This blueprint supports the OSRAM AC0251100NJ/AC0251700NJ device through Zigbee2MQTT only.

Prerequisites

You need to have a sensor entity for the button you want to use from Zigbee2MQTT.
Choose the right sensor with your button name and the entity id which ends with ā€˜_actionā€™, e.g. ā€˜sensor.kitchen.switch_actionā€™

Blueprint

Click the badge to import this Blueprint: (needs Home Assistant Core 2021.3 or higher)

Open your Home Assistant instance and show the blueprint import dialog with a specific blueprint pre-filled.

Or import this Blueprint by using the forum topic URL:

blueprint:
  name: Zigbee2MQTT - OSRAM Smart+ switch mini (AC0251100NJ/AC0251700NJ) actions
  description: >
    Define actions for your OSRAM Smart+ switch mini  using Zigbee2MQTT.
    For your button entity, choose the right sensor with your button name and the entity id which ends with '_action', e.g. 'sensor.kitchen.switch_action'
  domain: automation
  input:
    button_sensor:
      name: OSRAM Smart+ switch mini  sensor entity
      description: Sensor for OSRAM Smart+ switch mini to use (Use sensor with entity_id ends with _action)
      selector:
        entity:
          domain: sensor
    remote_button_up:
      name: Up Press
      description: Action to run on up press
      default: []
      selector:
        action:
    remote_button_up_hold:
      name: Up Hold
      description: Action to run on up hold
      default: []
      selector:
        action:
    remote_button_up_release:
      name: Up Release
      description: Action to run on up release
      default: []
      selector:
        action:
    remote_button_circle:
      name: Circle Press
      description: Action to run on circle press
      default: []
      selector:
        action:
    remote_button_circle_hold:
      name: Circle Hold
      description: Action to run on circle hold
      default: []
      selector:
        action:
    remote_button_circle_release:
      name: Circle Release
      description: Action to run on circle release
      default: []
      selector:
        action:
    remote_button_down:
      name: Down Press
      description: Action to run on down press
      default: []
      selector:
        action:
    remote_button_down_hold:
      name: Down Hold
      description: Action to run on down hold
      default: []
      selector:
        action:
    remote_button_down_release:
      name: Down Release
      description: Action to run on down release
      default: []
      selector:
        action:

mode: restart
max_exceeded: silent

# Each option is explicitly defined as a trigger because sensor reports empty values as well. 
# Not defining explicit triggers causes the automation to show up in the log multiple times per button press.
trigger:
  - platform: state
    entity_id: !input button_sensor
    to: 'up'
  - platform: state
    entity_id: !input button_sensor
    to: 'up_hold'
  - platform: state
    entity_id: !input button_sensor
    to: 'up_release'
  - platform: state
    entity_id: !input button_sensor
    to: 'circle_click'
  - platform: state
    entity_id: !input button_sensor
    to: 'circle_hold'
  - platform: state
    entity_id: !input button_sensor
    to: 'circle_release'
  - platform: state
    entity_id: !input button_sensor
    to: 'down'
  - platform: state
    entity_id: !input button_sensor
    to: 'down_hold'
  - platform: state
    entity_id: !input button_sensor
    to: 'down_release'

action:
  - variables:
      action: "{{ trigger.to_state.state }}"

  - choose:
      - conditions: "{{ action == 'up' }}"
        sequence: !input remote_button_up
      - conditions: "{{ action == 'up_hold' }}"
        sequence: !input remote_button_up_hold
      - conditions: "{{ action == 'up_release' }}"
        sequence: !input remote_button_up_release
      - conditions: "{{ action == 'circle_click' }}"
        sequence: !input remote_button_circle
      - conditions: "{{ action == 'circle_hold' }}"
        sequence: !input remote_button_circle_hold
      - conditions: "{{ action == 'circle_release' }}"
        sequence: !input remote_button_circle_release
      - conditions: "{{ action == 'down' }}"
        sequence: !input remote_button_down
      - conditions: "{{ action == 'down_hold' }}"
        sequence: !input remote_button_down_hold
      - conditions: "{{ action == 'down_release' }}"
        sequence: !input remote_button_down_release

Changelog

  • 2021-03-01: Initial version

If you have any issues or questions, please let me know :slight_smile:

1 Like

Thank you for this. I made 3 different automations to use the Switch Mini. This will help a lot. :slight_smile:

Unfortunately this works only for zigbee2mqtt, while Iā€™m using ZHA, which doesnā€™t provide an entity for the device, I only have the device, and one entity (the battery power).

Well yeah, this blueprint is specifically designed for using with Zigbee2MQTT. I donā€™t use ZHA so I canā€™t support that in my blueprint :wink:

Yeah, sorry for that, I only noticed after I installed it. :slight_smile:

I might use your blueprint and adapt it to ZHAā€¦Iā€™ll think about it. Thanks anyway for your work.

How would someone go and make such a blueprint? Itā€™s unclear to me how to ā€˜guessā€™ the states like ā€œcircle_holdā€. I assume itā€™s how Zigbee2MQTT integrated it. But how to know?
How would I go about making a ZHA blueprint for this device?

Iā€™ve searched, but havenā€™t found a tutorial or something. Can someone point me in the right direction on how to learn how to do it? I would be forever grateful :slight_smile:

hi, did you manage to fix the functionality of this switch with zha

The good @epmatt, solicited by me, kindly developed one of his awesome blueprints for this controller.

Here you can find the discussion: Add support for Osram SMART+ Switch Mini by EPMatt Ā· Pull Request #69 Ā· EPMatt/awesome-ha-blueprints (github.com)

I suggest you (and also @Tinkering) check his doc site: Awesome HA Blueprints | Awesome HA Blueprints (epmatt.github.io)

Itā€™s working very well in my house, I have 4-5 of these controllers. :slight_smile:

1 Like

Thanks, Iā€™ll try.
One question, but is it normal that it is seen as a sensor and not as a switch? and and is it normal that the state is always ā€œunknownā€?

Thanks, I solved it, the only thing that is not working for me is the double_center. I donā€™t know why but it doesnā€™t work.

Weā€™re totally OT in this thread.

please open an issue here: Issues Ā· EPMatt/awesome-ha-blueprints (github.com)

1 Like

When I look at the docs at zigbee2mqtt.io there is a line that highly recommends legacy to set to false. If you do so, this blueprint doesnā€™t work as the actions are different.

Thanks for this blueprint
Somewhat off topic question but does anyone know where to get the latest firmware for this device? I donā€™t seem to get a response when searching Iā€™m Zigbee2mqtt!
Thanks

Hey, thanks for the blueprint. To get it to work with legacy set to false I had to change the actions in the script: osram_switch_mini_zigbee2mqtt.yaml Ā· GitHub

blueprint:
  name: Zigbee2MQTT - OSRAM Smart+ switch mini (AC0251100NJ/AC0251600NJ/AC0251700NJ) actions
  description: >
    Define actions for your OSRAM Smart+ switch mini  using Zigbee2MQTT.
    For your button entity, choose the right sensor with your button name and the entity id which ends with '_action', e.g. 'sensor.kitchen.switch_action'
  domain: automation
  input:
    button_sensor:
      name: OSRAM Smart+ switch mini  sensor entity
      description: Sensor for OSRAM Smart+ switch mini to use (Use sensor with entity_id ends with _action)
      selector:
        entity:
          domain: sensor
          integration: mqtt
          multiple: false
    remote_button_up:
      name: Up Press
      description: Action to run on up press
      default: []
      selector:
        action:
    remote_button_up_hold:
      name: Up Hold
      description: Action to run on up hold
      default: []
      selector:
        action:
    remote_button_up_down_release:
      name: Up or Down Release
      description: Action to run on up or down release release
      default: []
      selector:
        action:
    remote_button_circle:
      name: Circle Press
      description: Action to run on circle press
      default: []
      selector:
        action:
    remote_button_circle_hold:
      name: Circle Hold
      description: Action to run on circle hold
      default: []
      selector:
        action:
    remote_button_circle_release:
      name: Circle Release
      description: Action to run on circle release
      default: []
      selector:
        action:
    remote_button_down:
      name: Down Press
      description: Action to run on down press
      default: []
      selector:
        action:
    remote_button_down_hold:
      name: Down Hold
      description: Action to run on down hold
      default: []
      selector:
        action:

mode: restart
max_exceeded: silent

# Each option is explicitly defined as a trigger because sensor reports empty values as well. 
# Not defining explicit triggers causes the automation to show up in the log multiple times per button press.
trigger:
  - platform: state
    entity_id: !input button_sensor
    to: 'on'
  - platform: state
    entity_id: !input button_sensor
    to: 'brightness_move_up'
  - platform: state
    entity_id: !input button_sensor
    to: 'brightness_stop'
  - platform: state
    entity_id: !input button_sensor
    to: 'brightness_move_to_level'
  - platform: state
    entity_id: !input button_sensor
    to: 'move_to_saturation'
  - platform: state
    entity_id: !input button_sensor
    to: 'hue_stop'
  - platform: state
    entity_id: !input button_sensor
    to: 'off'
  - platform: state
    entity_id: !input button_sensor
    to: 'brightness_move_down'

action:
  - variables:
      action: "{{ trigger.to_state.state }}"

  - choose:
      - conditions: "{{ action == 'on' }}"
        sequence: !input remote_button_up
      - conditions: "{{ action == 'brightness_move_up' }}"
        sequence: !input remote_button_up_hold
      - conditions: "{{ action == 'brightness_stop' }}"
        sequence: !input remote_button_up_down_release
      - conditions: "{{ action == 'brightness_move_to_level' }}"
        sequence: !input remote_button_circle
      - conditions: "{{ action == 'move_to_saturation' }}"
        sequence: !input remote_button_circle_hold
      - conditions: "{{ action == 'hue_stop' }}"
        sequence: !input remote_button_circle_release
      - conditions: "{{ action == 'off' }}"
        sequence: !input remote_button_down
      - conditions: "{{ action == 'brightness_move_down' }}"
        sequence: !input remote_button_down_hold

They are now according to what the Zigbee2MQTT docs are saying: OSRAM AC0251100NJ/AC0251600NJ/AC0251700NJ control via MQTT | Zigbee2MQTT

Triggered action (e.g. a button click). Value can be found in the published state on the action property. Itā€™s not possible to read (/get) or write (/set) this value. The possible values are: on, brightness_move_up, brightness_move_down, brightness_stop, color_temperature_move, hue_move, hue_stop, move_to_saturation, off, brightness_move_to_level.

This also means, that there is no more separate up or down release actions only a single up and down release (brightness_stop).