diff --git a/UserInterface/Views/AddCommandDialog.axaml.cs b/UserInterface/Views/AddCommandDialog.axaml.cs index e0e0b96..70a6ade 100644 --- a/UserInterface/Views/AddCommandDialog.axaml.cs +++ b/UserInterface/Views/AddCommandDialog.axaml.cs @@ -112,6 +112,12 @@ namespace UserInterface.Views item.ShowCommandInput = false; item.ShowKeyInput = false; break; + case AvailableCommands.HibernateCommand: + item.Description = "This command hibernates the PC immediately. "; + item.MoreInfoLink = "https://github.com/sleevezipper/hass-workstation-service/blob/master/documentation/Commands.md#hibernatecommand"; + item.ShowCommandInput = false; + item.ShowKeyInput = false; + break; case AvailableCommands.LogOffCommand: item.Description = "This command logs the current user off immediately. "; item.MoreInfoLink = "https://github.com/sleevezipper/hass-workstation-service/blob/master/documentation/Commands.md#logoffcommand"; diff --git a/documentation/Commands.md b/documentation/Commands.md index 255bf62..0c0555a 100644 --- a/documentation/Commands.md +++ b/documentation/Commands.md @@ -10,6 +10,10 @@ This command shuts down the computer immediately. It runs `shutdown /s`. This command restarts the computer immediately. It runs `shutdown /r`. +### HibernateCommand + +This command hibernates the computer immediately. It runs `shutdown /h`. + ### LogOffCommand This command logs off the current user. It runs `shutdown /l`. diff --git a/hass-workstation-service/Communication/InterProcesCommunication/InterProcessApi.cs b/hass-workstation-service/Communication/InterProcesCommunication/InterProcessApi.cs index e02e73e..1dc8761 100644 --- a/hass-workstation-service/Communication/InterProcesCommunication/InterProcessApi.cs +++ b/hass-workstation-service/Communication/InterProcesCommunication/InterProcessApi.cs @@ -201,6 +201,7 @@ namespace hass_workstation_service.Communication.InterProcesCommunication { AvailableCommands.ShutdownCommand => new ShutdownCommand(_publisher, model.Name), AvailableCommands.RestartCommand => new RestartCommand(_publisher, model.Name), + AvailableCommands.HibernateCommand => new HibernateCommand(_publisher, model.Name), AvailableCommands.LogOffCommand => new LogOffCommand(_publisher, model.Name), AvailableCommands.CustomCommand => new CustomCommand(_publisher, model.Command, model.Name), AvailableCommands.PlayPauseCommand => new PlayPauseCommand(_publisher, model.Name), diff --git a/hass-workstation-service/Communication/InterProcesCommunication/ServiceContractModels.cs b/hass-workstation-service/Communication/InterProcesCommunication/ServiceContractModels.cs index 9a692ba..2ec85e5 100644 --- a/hass-workstation-service/Communication/InterProcesCommunication/ServiceContractModels.cs +++ b/hass-workstation-service/Communication/InterProcesCommunication/ServiceContractModels.cs @@ -110,6 +110,7 @@ namespace hass_workstation_service.Communication.InterProcesCommunication.Models ShutdownCommand, LogOffCommand, RestartCommand, + HibernateCommand, KeyCommand, PlayPauseCommand, NextCommand, diff --git a/hass-workstation-service/Data/ConfigurationService.cs b/hass-workstation-service/Data/ConfigurationService.cs index 30536a5..1b69724 100644 --- a/hass-workstation-service/Data/ConfigurationService.cs +++ b/hass-workstation-service/Data/ConfigurationService.cs @@ -190,6 +190,9 @@ namespace hass_workstation_service.Data case "RestartCommand": command = new RestartCommand(publisher, configuredCommand.Name, configuredCommand.Id); break; + case "HibernateCommand": + command = new HibernateCommand(publisher, configuredCommand.Name, configuredCommand.Id); + break; case "LogOffCommand": command = new LogOffCommand(publisher, configuredCommand.Name, configuredCommand.Id); break; diff --git a/hass-workstation-service/Domain/Commands/HibernateCommand.cs b/hass-workstation-service/Domain/Commands/HibernateCommand.cs new file mode 100644 index 0000000..e2e3d7a --- /dev/null +++ b/hass-workstation-service/Domain/Commands/HibernateCommand.cs @@ -0,0 +1,17 @@ +using hass_workstation_service.Communication; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace hass_workstation_service.Domain.Commands +{ + public class HibernateCommand : CustomCommand + { + public HibernateCommand(MqttPublisher publisher, string name = "Hibernate", Guid id = default(Guid)) : base(publisher, "shutdown /h", name ?? "Hibernate", id) + { + this.State = "OFF"; + } + } +}