diff --git a/homeassistant/components/fully_kiosk/entity.py b/homeassistant/components/fully_kiosk/entity.py index 5fd9f75a6a06ff..b053508ae414ba 100644 --- a/homeassistant/components/fully_kiosk/entity.py +++ b/homeassistant/components/fully_kiosk/entity.py @@ -74,7 +74,8 @@ async def mqtt_subscribe( @callback def message_callback(message: mqtt.ReceiveMessage) -> None: payload = json.loads(message.payload) - event_callback(**payload) + if "event" in payload and payload["event"] == event: + event_callback(**payload) topic_template = data["settings"]["mqttEventTopic"] topic = ( @@ -82,4 +83,5 @@ def message_callback(message: mqtt.ReceiveMessage) -> None: .replace("$event", event) .replace("$deviceId", data["deviceID"]) ) + return await mqtt.async_subscribe(self.hass, topic, message_callback) diff --git a/tests/components/fully_kiosk/test_switch.py b/tests/components/fully_kiosk/test_switch.py index 20b5ed11998cca..3c0874384c276f 100644 --- a/tests/components/fully_kiosk/test_switch.py +++ b/tests/components/fully_kiosk/test_switch.py @@ -107,19 +107,35 @@ async def test_switches_mqtt_update( assert entity assert entity.state == "on" - async_fire_mqtt_message(hass, "fully/event/onScreensaverStart/abcdef-123456", "{}") + async_fire_mqtt_message( + hass, + "fully/event/onScreensaverStart/abcdef-123456", + '{"deviceId": "abcdef-123456","event": "onScreensaverStart"}', + ) entity = hass.states.get("switch.amazon_fire_screensaver") assert entity.state == "on" - async_fire_mqtt_message(hass, "fully/event/onScreensaverStop/abcdef-123456", "{}") + async_fire_mqtt_message( + hass, + "fully/event/onScreensaverStop/abcdef-123456", + '{"deviceId": "abcdef-123456","event": "onScreensaverStop"}', + ) entity = hass.states.get("switch.amazon_fire_screensaver") assert entity.state == "off" - async_fire_mqtt_message(hass, "fully/event/screenOff/abcdef-123456", "{}") + async_fire_mqtt_message( + hass, + "fully/event/screenOff/abcdef-123456", + '{"deviceId": "abcdef-123456","event": "screenOff"}', + ) entity = hass.states.get("switch.amazon_fire_screen") assert entity.state == "off" - async_fire_mqtt_message(hass, "fully/event/screenOn/abcdef-123456", "{}") + async_fire_mqtt_message( + hass, + "fully/event/screenOn/abcdef-123456", + '{"deviceId": "abcdef-123456","event": "screenOn"}', + ) entity = hass.states.get("switch.amazon_fire_screen") assert entity.state == "on"