diff --git a/assets/icons/scenesPlayIcon.svg b/assets/icons/scenesPlayIcon.svg
new file mode 100644
index 00000000..6417b0e6
--- /dev/null
+++ b/assets/icons/scenesPlayIcon.svg
@@ -0,0 +1,17 @@
+
diff --git a/assets/icons/spaseLocationIcon.svg b/assets/icons/spaseLocationIcon.svg
new file mode 100644
index 00000000..2c3f0ad9
--- /dev/null
+++ b/assets/icons/spaseLocationIcon.svg
@@ -0,0 +1,4 @@
+
diff --git a/lib/pages/routines/bloc/automation_scene_trigger_bloc/automation_scene_trigger_bloc.dart b/lib/pages/routines/bloc/automation_scene_trigger_bloc/automation_scene_trigger_bloc.dart
new file mode 100644
index 00000000..b76b06e0
--- /dev/null
+++ b/lib/pages/routines/bloc/automation_scene_trigger_bloc/automation_scene_trigger_bloc.dart
@@ -0,0 +1,124 @@
+import 'dart:async';
+
+import 'package:equatable/equatable.dart';
+import 'package:flutter_bloc/flutter_bloc.dart';
+import 'package:syncrow_web/pages/auth/model/project_model.dart';
+import 'package:syncrow_web/pages/routines/bloc/automation_scene_trigger_bloc/automation_scene_trigger_event.dart';
+import 'package:syncrow_web/pages/routines/bloc/automation_scene_trigger_bloc/automation_scene_trigger_status.dart';
+import 'package:syncrow_web/pages/routines/models/routine_model.dart';
+import 'package:syncrow_web/services/routines_api.dart';
+
+class AutomationSceneTriggerBloc extends Bloc {
+ AutomationSceneTriggerBloc() : super(AutomationSceneInitial()) {
+ // on(_onLoadScenes);
+ // on(_onLoadAutomation);
+ on(_onSceneTrigger);
+ on(_onUpdateAutomationStatus);
+ }
+
+ List scenes = [];
+ List automationList = [];
+
+ // Future _onLoadScenes(LoadScenes event, Emitter emit) async {
+ // emit(SceneLoading());
+
+ // try {
+ // Project? project = HomeCubit.getInstance().project;
+
+ // if (event.unitId.isNotEmpty) {
+ // scenes = await SceneApi.getScenesByUnitId(event.unitId,
+ // event.unit.community.uuid, project?.uuid ?? TempConst.projectIdDev,
+ // showInDevice: event.showInDevice);
+ // emit(SceneLoaded(scenes, automationList));
+ // } else {
+ // emit(const SceneError(message: 'Unit ID is empty'));
+ // }
+ // } catch (e) {
+ // emit(const SceneError(message: 'Something went wrong'));
+ // }
+ // }
+
+ // Future _onLoadAutomation(
+ // LoadAutomation event, Emitter emit) async {
+ // emit(SceneLoading());
+
+ // try {
+ // Project? project = HomeCubit.getInstance().project;
+
+ // if (event.unitId.isNotEmpty) {
+ // automationList = await SceneApi.getAutomationByUnitId(
+ // event.unitId, event.communityId, project?.uuid ?? '');
+ // emit(SceneLoaded(scenes, automationList));
+ // } else {
+ // emit(const SceneError(message: 'Unit ID is empty'));
+ // }
+ // } catch (e) {
+ // emit(const SceneError(message: 'Something went wrong'));
+ // }
+ // }
+
+ Future _onSceneTrigger(
+ SceneTrigger event, Emitter emit) async {
+ final currentState = state;
+ if (currentState is AutomationSceneLoaded) {
+ emit(AutomationSceneLoaded(
+ currentState.scenes,
+ currentState.automationList,
+ loadingSceneId: event.sceneId,
+ ));
+
+ try {
+ final success = await SceneApi.triggerScene(event.sceneId);
+ if (success) {
+ emit(SceneTriggerSuccess(event.name));
+ emit(AutomationSceneLoaded(currentState.scenes, currentState.automationList));
+ } else {
+ emit(const AutomationSceneError(message: 'Something went wrong'));
+ }
+ } catch (e) {
+ emit(const AutomationSceneError(message: 'Something went wrong'));
+ }
+ }
+ }
+
+ Future _onUpdateAutomationStatus(
+ UpdateAutomationStatus event, Emitter emit) async {
+ final currentState = state;
+ if (currentState is AutomationSceneLoaded) {
+ final newLoadingStates =
+ Map.from(currentState.loadingStates)
+ ..[event.automationId] = true;
+
+ emit(AutomationSceneLoaded(
+ currentState.scenes,
+ currentState.automationList,
+ loadingStates: newLoadingStates,
+ ));
+
+ try {
+ Project? project = HomeCubit.getInstance().project;
+
+ final success = await SceneApi.updateAutomationStatus(
+ event.automationId,
+ event.automationStatusUpdate,
+ project?.uuid ?? '');
+ if (success) {
+ automationList = await SceneApi.getAutomationByUnitId(
+ event.automationStatusUpdate.spaceUuid,
+ event.communityId,
+ project?.uuid ?? '');
+ newLoadingStates[event.automationId] = false;
+ emit(AutomationSceneLoaded(
+ currentState.scenes,
+ automationList,
+ loadingStates: newLoadingStates,
+ ));
+ } else {
+ emit(const AutomationSceneError(message: 'Something went wrong'));
+ }
+ } catch (e) {
+ emit(const AutomationSceneError(message: 'Something went wrong'));
+ }
+ }
+ }
+}
diff --git a/lib/pages/routines/bloc/automation_scene_trigger_bloc/automation_scene_trigger_event.dart b/lib/pages/routines/bloc/automation_scene_trigger_bloc/automation_scene_trigger_event.dart
new file mode 100644
index 00000000..b34eb5ed
--- /dev/null
+++ b/lib/pages/routines/bloc/automation_scene_trigger_bloc/automation_scene_trigger_event.dart
@@ -0,0 +1,55 @@
+import 'package:equatable/equatable.dart';
+import 'package:syncrow_web/pages/routines/bloc/automation_scene_trigger_bloc/automation_status_update.dart';
+import 'package:syncrow_web/pages/routines/bloc/routine_bloc/routine_bloc.dart';
+import 'package:syncrow_web/pages/spaces_management/all_spaces/model/space_model.dart';
+
+abstract class AutomationSceneTriggerEvent extends Equatable {
+ const AutomationSceneTriggerEvent();
+
+ @override
+ List