Hi, ich habe mir eben den Aqara H2 EUR Light Switch eingebaut und das Ganze über Matter. Das Relais schaltet alles Bestens aber wie bekomme ich in meiner Automation die untere Taste getriggert um diese ebenfalls zu verwenden? (fire event?).
Vielleicht hat hier irgendwer schon Erfahrungen?
Danke Marco
ok habs selbst gefunden:
trigger: state
entity_id:
- event.wandschalter_schlafzimmer_aqara_taste_5
attribute: event_type
to: initial_press
Danke!
Hi Bolschi, selbiges Problem habe Ich auch. Nur über Zigbee. Kann Ich auch mit Zigbee den unteren Schalter ansteuerrn ?
Wo genau füge ich den Code ein?
Ich nutze dafür den Switch Manager, da kannst du die Tasten einzeln mit Aktionen belegen.
Hast du einen Link dazu?
Auto Discover hast du aber vorher gedrückt?
Ansonsten findest du das topic, wie es im Screenshot beschrieben ist:
zigbee2mqtt/Dein Schalter/action
(Den Namen musst du natürlich an deinen anpassen)
struebbel/Lichtschalter Strübbel hinten/action
ah ergibt Sinn. Danke ! Ich werde es später testen ![]()
legacy ist aber false/off, wie es auch in deinem Screenshot geschrieben steht?
Hey maxe, entschuldige die blöde nachfrage… Ich bin noch nicht so lange im HA Thema. Was ist Legacy und wo finde Ich das?
Danke, das hat geklappt ![]()
Ich ziehe so langsam von Z2M zu ZHA um. Der Aqara H2 EUR Light Switch macht noch mit der unteren Taste Probleme bzw. bekomme ich diese nicht in ZHA rein. Es gibt keinen Trigger für Automationen etc. Daher meine Frage. Hat jemand den Aqara H2 EUR Light Switch (2 Tasten) in ZHA eingebunden und wie steuert ihr die zweite untere Taste an?
Schaue mal in den Entwicklungswerkzeugen → Ereignisse und abonniere das event zha_event
und betätige mal die Tasten. Wenn beim Tastendruck Events ankommen, kannst Du diese auch als Auslöser in Automationen verwenden.
Ansonsten hilft das vielleicht:
Gruß Osorkon
Klasse. Danke für den hilfreichen Tipp! Habe es getestet und da kommt tatsächlich kein event auf dem unteren Button des Aqara H2 EU Switches in HA an. Wollte mich eigentlich gänzlich von Z2M verabschieden um auf ZHA umzusteigen aber ich habe leider 6 dieser H2 EU Schalter verbaut weiterhin auch einige der Friends of HUE (Gira EnOcean Green Power) welche ebenfalls nicht in ZHA supportet werden. (persönlich kann ich nicht nachvollziehen warum die Geräte in Z2M unterstützt werden aber im hauseigenen System von HA nicht oder erst nach Jahren) Naja da bleibt mir nüscht anderes übrig als mich weiterhin von Z2M und dem MQTT Broker “knebeln” zu lassen.
Danke!
Ich habe sie mit diesem Quirk mit ZAH “Double,Hold,Release und single” funktionieren bei mir Problemlos.
in der configuration.yaml quirks aktivieren
zha:
enable_quirks: true
custom_quirks_path: /config/zha_quirks/
folgenden quirk in
/homeassistant/zha_quirks/switch_h2_1.py
speichern
"""Aqara H2 (EU) rocker switch quirks. Also see opple_switch.py for similar switches."""
from zigpy import types
from zigpy.profiles import zha
from zigpy.quirks import CustomCluster
from zigpy.quirks.v2 import QuirkBuilder
from zigpy.zcl.clusters.general import AnalogInput, Identify
from zigpy.zcl.foundation import BaseAttributeDefs, DataTypeId, ZCLAttributeDef
from zhaquirks.const import (
BUTTON_1,
BUTTON_2,
BUTTON_3,
BUTTON_4,
COMMAND,
COMMAND_DOUBLE,
COMMAND_HOLD,
COMMAND_RELEASE,
COMMAND_SINGLE,
ZHA_SEND_EVENT,
)
from zhaquirks.xiaomi import XiaomiAqaraE1Cluster
from zhaquirks.xiaomi.aqara.opple_remote import (
COMMAND_1_DOUBLE,
COMMAND_1_HOLD,
COMMAND_1_RELEASE,
COMMAND_1_SINGLE,
COMMAND_2_DOUBLE,
COMMAND_2_HOLD,
COMMAND_2_RELEASE,
COMMAND_2_SINGLE,
COMMAND_4_DOUBLE,
COMMAND_4_HOLD,
COMMAND_4_RELEASE,
COMMAND_4_SINGLE,
COMMAND_5_DOUBLE,
COMMAND_5_HOLD,
COMMAND_5_RELEASE,
COMMAND_5_SINGLE,
)
from zhaquirks.xiaomi.aqara.opple_switch import MultistateInputCluster
class AqaraOperationMode(types.enum8):
"""Aqara operation mode attribute values."""
Decoupled = 0x00
Relay = 0x01
class AqaraPowerOnMode(types.enum8):
"""Aqara power on mode attribute values."""
On = 0x00
Previous = 0x01
Off = 0x02
Inverted = 0x03
class PowerMeasurementCluster(CustomCluster, AnalogInput):
"""Custom cluster for power measurement."""
PRESENT_VALUE_ATTRIBUTE = 0x0055
async def bind(self):
"""Bind cluster."""
result = await super().bind()
await self.configure_reporting(
self.PRESENT_VALUE_ATTRIBUTE,
0,
600,
1,
)
return result
def _update_attribute(self, attrid, value):
super()._update_attribute(attrid, value)
if attrid == self.PRESENT_VALUE_ATTRIBUTE:
self.listener_event(
ZHA_SEND_EVENT,
{
"type": "power_measurement",
"value": value,
},
)
class AqaraManuSpecificCluster(XiaomiAqaraE1Cluster):
"""Manufacturer-specific cluster for Lumi features."""
class AttributeDefs(BaseAttributeDefs):
"""Attribute definitions for Aqara switch."""
power_on_mode = ZCLAttributeDef(
id=0x0517,
type=AqaraPowerOnMode,
zcl_type=DataTypeId.uint8,
access="rw",
is_manufacturer_specific=True,
)
operation_mode = ZCLAttributeDef(
id=0x0200,
type=AqaraOperationMode,
zcl_type=DataTypeId.uint8,
access="rw",
is_manufacturer_specific=True,
)
# Estos tres son uint8 (0/1) aunque conceptualmente sean booleanos.
led_indicator = ZCLAttributeDef(
id=0x0203,
type=types.uint8_t,
zcl_type=DataTypeId.uint8,
access="rw",
is_manufacturer_specific=True,
)
flip_led_indicator = ZCLAttributeDef(
id=0x00F0,
type=types.uint8_t,
zcl_type=DataTypeId.uint8,
access="rw",
is_manufacturer_specific=True,
)
lock_relay = ZCLAttributeDef(
id=0x0285,
type=types.uint8_t,
zcl_type=DataTypeId.uint8,
access="rw",
is_manufacturer_specific=True,
)
# Realmente entero (1/2), no booleano
multi_click = ZCLAttributeDef(
id=0x0286,
type=types.uint8_t,
zcl_type=DataTypeId.uint8,
access="rw",
is_manufacturer_specific=True,
)
# Modelo doble (H2 doble relé)
(
QuirkBuilder("Aqara", "lumi.switch.agl010")
.adds_endpoint(1, device_type=zha.DeviceType.ON_OFF_SWITCH)
.adds_endpoint(2, device_type=zha.DeviceType.ON_OFF_SWITCH)
.adds_endpoint(4, device_type=zha.DeviceType.ON_OFF_SWITCH)
.adds_endpoint(5, device_type=zha.DeviceType.ON_OFF_SWITCH)
.adds_endpoint(21, device_type=zha.DeviceType.ON_OFF_SWITCH)
.adds(Identify, endpoint_id=1)
.replaces(MultistateInputCluster, endpoint_id=1)
.replaces(MultistateInputCluster, endpoint_id=2)
.replaces(MultistateInputCluster, endpoint_id=4)
.replaces(MultistateInputCluster, endpoint_id=5)
.replaces(AqaraManuSpecificCluster, endpoint_id=1)
.replaces(AqaraManuSpecificCluster, endpoint_id=2)
.replaces(AqaraManuSpecificCluster, endpoint_id=4)
.replaces(AqaraManuSpecificCluster, endpoint_id=5)
.replaces(PowerMeasurementCluster, endpoint_id=21)
.switch(
AqaraManuSpecificCluster.AttributeDefs.led_indicator.name,
AqaraManuSpecificCluster.cluster_id,
endpoint_id=1,
translation_key="led_indicator",
fallback_name="LED indicator",
off_value=0,
on_value=1,
)
.switch(
AqaraManuSpecificCluster.AttributeDefs.flip_led_indicator.name,
AqaraManuSpecificCluster.cluster_id,
endpoint_id=1,
translation_key="flip_led_indicator",
fallback_name="Flip LED indicator",
off_value=0,
on_value=1,
)
.enum(
AqaraManuSpecificCluster.AttributeDefs.power_on_mode.name,
AqaraPowerOnMode,
AqaraManuSpecificCluster.cluster_id,
endpoint_id=1,
translation_key="power_on_mode",
fallback_name="Power on mode",
)
.enum(
AqaraManuSpecificCluster.AttributeDefs.operation_mode.name,
AqaraOperationMode,
AqaraManuSpecificCluster.cluster_id,
endpoint_id=1,
translation_key="operation_mode_left",
fallback_name="Operation mode left",
unique_id_suffix="left",
)
.enum(
AqaraManuSpecificCluster.AttributeDefs.operation_mode.name,
AqaraOperationMode,
AqaraManuSpecificCluster.cluster_id,
endpoint_id=2,
translation_key="operation_mode_right",
fallback_name="Operation mode right",
unique_id_suffix="right",
)
.switch(
AqaraManuSpecificCluster.AttributeDefs.lock_relay.name,
AqaraManuSpecificCluster.cluster_id,
endpoint_id=1,
translation_key="lock_relay_left",
fallback_name="Lock relay left",
unique_id_suffix="left",
off_value=0,
on_value=1,
)
.switch(
AqaraManuSpecificCluster.AttributeDefs.lock_relay.name,
AqaraManuSpecificCluster.cluster_id,
endpoint_id=2,
translation_key="lock_relay_right",
fallback_name="Lock relay right",
unique_id_suffix="right",
off_value=0,
on_value=1,
)
.switch(
AqaraManuSpecificCluster.AttributeDefs.multi_click.name,
AqaraManuSpecificCluster.cluster_id,
off_value=1,
on_value=2,
endpoint_id=4,
translation_key="multi_click_left",
fallback_name="Multi click left",
unique_id_suffix="left",
)
.switch(
AqaraManuSpecificCluster.AttributeDefs.multi_click.name,
AqaraManuSpecificCluster.cluster_id,
off_value=1,
on_value=2,
endpoint_id=5,
translation_key="multi_click_right",
fallback_name="Multi click right",
unique_id_suffix="right",
)
.device_automation_triggers(
{
(COMMAND_HOLD, BUTTON_1): {COMMAND: COMMAND_1_HOLD},
(COMMAND_SINGLE, BUTTON_1): {COMMAND: COMMAND_1_SINGLE},
(COMMAND_DOUBLE, BUTTON_1): {COMMAND: COMMAND_1_DOUBLE},
(COMMAND_RELEASE, BUTTON_1): {COMMAND: COMMAND_1_RELEASE},
(COMMAND_HOLD, BUTTON_2): {COMMAND: COMMAND_2_HOLD},
(COMMAND_SINGLE, BUTTON_2): {COMMAND: COMMAND_2_SINGLE},
(COMMAND_DOUBLE, BUTTON_2): {COMMAND: COMMAND_2_DOUBLE},
(COMMAND_RELEASE, BUTTON_2): {COMMAND: COMMAND_2_RELEASE},
(COMMAND_HOLD, BUTTON_3): {COMMAND: COMMAND_4_HOLD},
(COMMAND_SINGLE, BUTTON_3): {COMMAND: COMMAND_4_SINGLE},
(COMMAND_DOUBLE, BUTTON_3): {COMMAND: COMMAND_4_DOUBLE},
(COMMAND_RELEASE, BUTTON_3): {COMMAND: COMMAND_4_RELEASE},
(COMMAND_HOLD, BUTTON_4): {COMMAND: COMMAND_5_HOLD},
(COMMAND_SINGLE, BUTTON_4): {COMMAND: COMMAND_5_SINGLE},
(COMMAND_DOUBLE, BUTTON_4): {COMMAND: COMMAND_5_DOUBLE},
(COMMAND_RELEASE, BUTTON_4): {COMMAND: COMMAND_5_RELEASE},
}
)
.add_to_registry()
)
# Modelo simple (H2 simple relé) que comparte comportamiento con agl004
(
QuirkBuilder("Aqara", "lumi.switch.agl009")
.applies_to("Aqara", "lumi.switch.agl004") # fabricante y modelo
.adds_endpoint(1, device_type=zha.DeviceType.ON_OFF_SWITCH)
.adds_endpoint(4, device_type=zha.DeviceType.ON_OFF_SWITCH)
.adds_endpoint(21, device_type=zha.DeviceType.ON_OFF_SWITCH)
.adds(Identify, endpoint_id=1)
.replaces(MultistateInputCluster, endpoint_id=1)
.replaces(MultistateInputCluster, endpoint_id=4)
.replaces(AqaraManuSpecificCluster, endpoint_id=1)
.replaces(AqaraManuSpecificCluster, endpoint_id=4)
.replaces(PowerMeasurementCluster, endpoint_id=21)
.switch(
AqaraManuSpecificCluster.AttributeDefs.led_indicator.name,
AqaraManuSpecificCluster.cluster_id,
endpoint_id=1,
translation_key="led_indicator",
fallback_name="LED indicator",
off_value=0,
on_value=1,
)
.switch(
AqaraManuSpecificCluster.AttributeDefs.flip_led_indicator.name,
AqaraManuSpecificCluster.cluster_id,
endpoint_id=1,
translation_key="flip_led_indicator",
fallback_name="Flip LED indicator",
off_value=0,
on_value=1,
)
.enum(
AqaraManuSpecificCluster.AttributeDefs.power_on_mode.name,
AqaraPowerOnMode,
AqaraManuSpecificCluster.cluster_id,
endpoint_id=1,
translation_key="power_on_mode",
fallback_name="Power on mode",
)
.enum(
AqaraManuSpecificCluster.AttributeDefs.operation_mode.name,
AqaraOperationMode,
AqaraManuSpecificCluster.cluster_id,
endpoint_id=1,
translation_key="operation_mode",
fallback_name="Operation mode",
)
.switch(
AqaraManuSpecificCluster.AttributeDefs.lock_relay.name,
AqaraManuSpecificCluster.cluster_id,
endpoint_id=1,
translation_key="lock_relay",
fallback_name="Lock relay",
off_value=0,
on_value=1,
)
.switch(
AqaraManuSpecificCluster.AttributeDefs.multi_click.name,
AqaraManuSpecificCluster.cluster_id,
off_value=1,
on_value=2,
endpoint_id=4,
translation_key="multi_click",
fallback_name="Multi click",
)
.device_automation_triggers(
{
(COMMAND_HOLD, BUTTON_1): {COMMAND: COMMAND_1_HOLD},
(COMMAND_SINGLE, BUTTON_1): {COMMAND: COMMAND_1_SINGLE},
(COMMAND_DOUBLE, BUTTON_1): {COMMAND: COMMAND_1_DOUBLE},
(COMMAND_RELEASE, BUTTON_1): {COMMAND: COMMAND_1_RELEASE},
(COMMAND_HOLD, BUTTON_2): {COMMAND: COMMAND_4_HOLD},
(COMMAND_SINGLE, BUTTON_2): {COMMAND: COMMAND_4_SINGLE},
(COMMAND_DOUBLE, BUTTON_2): {COMMAND: COMMAND_4_DOUBLE},
(COMMAND_RELEASE, BUTTON_2): {COMMAND: COMMAND_4_RELEASE},
}
)
.add_to_registry()
)
Hallo, ich bin noch Anfänger und habe eine grundsätzliche Frage zu dem Schalter.
Ich kann damit einen “dummen” normalen Lichtschalter mit diesen ersetzen und die ggf dumme Lampe wird dadurch smart, lässt sich schalten oder auch eine smarte Lampe bleibt auf Dauerstrom. Die anderen tasten sind noch Gimmicks?


