Aqara Button in Homeassistant nutzen

Aqara Button in Homeassistant nutzen

Da mich der Aqara Magic Cube so begeistert hat, habe ich mir zusätzlich noch einige Aqara Buttons bestellt. Analog zu dem Blogpost über dem Cube, habe ich AppDaemon verwendet und den Button zuvor mit dem Conbee 2 gepaired. Wie auch der Magic Cube, feuert der Button lediglich auf dem Eventbus und verwendet dabei die folgenden Codes:

  • 1002 – Einfacher Klick
  • 1004 – Zweifacher Klick
  • 1005 – Dreifacher Klick
  • 1006 – Vierfacher Klick

Angeblich kann der Button neben den genanten Events auch noch registrieren, wenn der Knopf länger gedrückt gehalten wird, jedoch funktioniert dies bei mir nicht.

App für Appdaemon erstellen

Meinem Button habe ich in der Phoscon App den Namen button_schlafzimmer zugewiesen. Unter diesem Namen feuert er auch auf dem Event-Bus, wenn man das Thema deconz_event abonniert.

Als ersten Schritt muss eine neue Datei mit dem Namen button_schlafzimmer.py im Pfad /config/appdaemon/apps angelegt werden. Diese hat den folgenden Inhalt:

import appdaemon.plugins.hass.hassapi as hass
from enum import Enum

DECONZ_IDS = ('button_schlafzimmer')
SENSOR_ID = 'sensor.button_schlafzimmer'

class Action(str, Enum):
    PRESS_1 = 'Pressed 1x'
    PRESS_2 = 'Pressed 2x'
    PRESS_3 = 'Pressed 3x'
    PRESS_4 = 'Pressed 4x'

class ButtonControl(hass.Hass):
    def initialize(self):
        self.listen_event(self.handle_event, "deconz_event")

    def handle_event(self, event_name, data, kwargs):
        if data['id'] in DECONZ_IDS:
            if data['event'] == 1002:
                self.set_state(SENSOR_ID, state=Action.PRESS_1)
                self.call_service("script/turn_on", entity_id = "script.bose_bluetooth_schlafzimmer")
            elif data['event'] == 1004:
                self.set_state(SENSOR_ID, state=Action.PRESS_2)
                self.call_service("switch/toggle", entity_id = "switch.chromecast_switch")
            elif data['event'] == 1005:
                self.set_state(SENSOR_ID, state=Action.PRESS_3)
                self.call_service("scene/turn_on", entity_id = "scene.schlafzimmer_bettzeit")
            elif data['event'] == 1006:
                self.set_state(SENSOR_ID, state=Action.PRESS_4)
                self.call_service("script/turn_on", entity_id = "script.sz_soundtouch_aus_1h")

Diese App erzeugt einen Sensor mit dem Namen sensor.button_schlafzimmer, dessen State ausgibt wie häufig der Button gedrückt wurde. Gleichzeitig triggert sie exemplarisch zwei Skripte, schaltet eine Szene für Licht ein und toggled eine Steckdose.

App in apps.yaml hinzufügen

Damit Appdaemon anschließend die neue App verwenden kann, muss noch ein Eintrag in der Datei apps.yaml im Pfad /config/appdaemon/apps erfolgen:

button_schlafzimmer:
  module: button_schlafzimmer
  class: ButtonControl

Anschließend kann der Button erfolgreich verwendet werden. Viel Erfolg!