def METHOD_NAME(self, client, userdata, msg):
    _LOGGER.info(msg.topic + " " + str(msg.payload))
    if msg.topic == f"{self._config['topic']}/SCENE":
        scene_id = msg.payload.decode("utf8")
        # SET SCENE not_matt plz do a callable function like set_scene(scene_id)
        if scene_id is None:
            response = {
                "status": "failed",
                "reason": 'Required attribute "scene_id" was not provided',
            }
            return _LOGGER.warning(response)
        _LOGGER.warning(str(self._ledfx.config["scenes"].keys()))
        if scene_id not in self._ledfx.config["scenes"].keys():
            response = {
                "status": "failed",
                "reason": f'Scene "{scene_id}" does not exist',
            }
            return _LOGGER.warning(response)
        scene = self._ledfx.config["scenes"][scene_id]
        for virtual in self._ledfx.virtuals.values():
            # Check virtual is in scene, make no changes if it isn't
            if virtual.id not in scene["virtuals"].keys():
                _LOGGER.info(
                    ("virtual with id {} has no data in scene {}").format(
                        virtual.id, scene_id
                    )
                )
                continue
            # Set effect of virtual to that saved in the scene,
            # clear active effect of virtual if no effect in scene
            if scene["virtuals"][virtual.id]:
                # Create the effect and add it to the virtual
                effect = self._ledfx.effects.create(
                    ledfx=self._ledfx,
                    type=scene["virtuals"][virtual.id]["type"],
                    config=scene["virtuals"][virtual.id]["config"],
                )
                virtual.set_effect(effect)
            else:
                virtual.clear_effect()
        self._ledfx.events.fire_event(SceneActivatedEvent(scene["name"]))
        # SET SCENE END