mirror of
https://github.com/PepperDash/Essentials.git
synced 2026-02-08 01:04:56 +00:00
141 lines
4.5 KiB
C#
141 lines
4.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Threading.Tasks;
|
|
using Newtonsoft.Json;
|
|
using PepperDash.Core;
|
|
|
|
namespace PepperDash.Essentials.Core
|
|
{
|
|
/// <summary>
|
|
/// Describes the functionality for an EssentailsRoomCombiner device
|
|
/// </summary>
|
|
public interface IEssentialsRoomCombiner : IKeyed
|
|
{
|
|
/// <summary>
|
|
/// Indicates that the room combination scenario has changed
|
|
/// </summary>
|
|
event EventHandler<EventArgs> RoomCombinationScenarioChanged;
|
|
|
|
/// <summary>
|
|
/// The current room combination scenario
|
|
/// </summary>
|
|
[JsonProperty("currentScenario")]
|
|
IRoomCombinationScenario CurrentScenario { get; }
|
|
|
|
/// <summary>
|
|
/// When true, indicates the current mode is auto mode
|
|
/// </summary>
|
|
[JsonIgnore]
|
|
BoolFeedback IsInAutoModeFeedback {get;}
|
|
|
|
/// <summary>
|
|
/// Gets a value indicating whether the automatic mode is disabled.
|
|
/// </summary>
|
|
[JsonProperty("disableAutoMode")]
|
|
bool DisableAutoMode { get; }
|
|
/// <summary>
|
|
/// Gets a value indicating whether the system is operating in automatic mode.
|
|
/// </summary>
|
|
[JsonProperty("isInAutoMode")]
|
|
bool IsInAutoMode { get; }
|
|
|
|
/// <summary>
|
|
/// Gets the collection of rooms associated with the current object.
|
|
/// </summary>
|
|
[JsonProperty("rooms")]
|
|
List<IKeyName> Rooms { get; }
|
|
|
|
/// <summary>
|
|
/// Sets auto mode
|
|
/// </summary>
|
|
void SetAutoMode();
|
|
|
|
/// <summary>
|
|
/// Sets manual mode
|
|
/// </summary>
|
|
void SetManualMode();
|
|
|
|
/// <summary>
|
|
/// Toggles the current mode between auto and manual
|
|
/// </summary>
|
|
void ToggleMode();
|
|
|
|
/// <summary>
|
|
/// The available room combinatino scenarios
|
|
/// </summary>
|
|
[JsonProperty("roomCombinationScenarios")]
|
|
List<IRoomCombinationScenario> RoomCombinationScenarios { get; }
|
|
|
|
/// <summary>
|
|
/// The partition
|
|
/// </summary>
|
|
[JsonProperty("partitions")]
|
|
List<IPartitionController> Partitions { get; }
|
|
|
|
/// <summary>
|
|
/// Toggles the state of a manual partition sensor
|
|
/// </summary>
|
|
/// <param name="partitionKey"></param>
|
|
void TogglePartitionState(string partitionKey);
|
|
|
|
/// <summary>
|
|
/// Sets the room combination scenario (if in manual mode)
|
|
/// </summary>
|
|
/// <param name="scenarioKey"></param>
|
|
void SetRoomCombinationScenario(string scenarioKey);
|
|
}
|
|
|
|
/// <summary>
|
|
/// Represents a scenario for combining rooms, including activation, deactivation, and associated state.
|
|
/// </summary>
|
|
/// <remarks>This interface defines the behavior for managing room combination scenarios, including
|
|
/// activation and deactivation, tracking the active state, and managing related partition states and UI mappings.
|
|
/// Implementations of this interface are expected to handle the logic for room combinations based on the provided
|
|
/// partition states and UI mappings.</remarks>
|
|
/// <summary>
|
|
/// Defines the contract for IRoomCombinationScenario
|
|
/// </summary>
|
|
public interface IRoomCombinationScenario : IKeyName
|
|
{
|
|
/// <summary>
|
|
/// When true, indicates that this room combination scenario is active
|
|
/// </summary>
|
|
[JsonIgnore]
|
|
BoolFeedback IsActiveFeedback { get; }
|
|
|
|
/// <summary>
|
|
/// Gets a value indicating whether the entity is active.
|
|
/// </summary>
|
|
[JsonProperty("isActive")]
|
|
bool IsActive { get; }
|
|
|
|
/// <summary>
|
|
/// Gets a value indicating whether this scenario should be hidden in the UI.
|
|
/// </summary>
|
|
[JsonProperty("hideInUi")]
|
|
bool HideInUi { get; }
|
|
|
|
/// <summary>
|
|
/// Activates this room combination scenario
|
|
/// </summary>
|
|
Task Activate();
|
|
|
|
/// <summary>
|
|
/// Deactivates this room combination scenario
|
|
/// </summary>
|
|
Task Deactivate();
|
|
|
|
/// <summary>
|
|
/// The state of the partitions that would activate this scenario
|
|
/// </summary>
|
|
[JsonProperty("partitionStates")]
|
|
List<PartitionState> PartitionStates { get; }
|
|
|
|
/// <summary>
|
|
/// The mapping of UIs by key to rooms by key
|
|
/// </summary>
|
|
[JsonProperty("uiMap")]
|
|
Dictionary<string, string> UiMap { get; set; }
|
|
}
|
|
|
|
} |