private void InvokeCommand(ICommand command) { foreach (var rollerShutter in _rollerShutters) { _componentRegistry.GetComponent <IRollerShutter>(rollerShutter).ExecuteCommand(command); } }
private string ProcessMessageInternal(MessageContext messageContext) { if (GetPatternMatch(messageContext, "Hi").Success) { if (messageContext.Kind == MessageContextKind.Speech) { return("Hi, was kann ich für Dich tun?"); } return($"{Emoji.VictoryHand} Hi, was kann ich für Dich tun?"); } if (GetPatternMatch(messageContext, "Danke").Success) { return($"{Emoji.Wink} Habe ich doch gerne gemacht."); } if (GetPatternMatch(messageContext, "Wetter").Success) { return(GetWeatherStatus()); } if (GetPatternMatch(messageContext, "Fenster").Success) { return(GetWindowStatus()); } if (!messageContext.AffectedComponentIds.Any()) { if (messageContext.IdentifiedComponentIds.Count > 0) { if (messageContext.Kind == MessageContextKind.Speech) { return("Auf deine Beschreibung passen mehrere Geräte. Bitte stelle deine Anfrage präziser."); } return($"{Emoji.Confused} Auf deine Beschreibung passen mehrere Geräte. Bitte stelle deine Anfrage präziser."); } if (messageContext.Kind == MessageContextKind.Speech) { return("Ich konnte kein Gerät finden, dass auf deine Beschreibung passt. Bitte stelle deine Anfrage präziser."); } return($"{Emoji.Confused} Ich konnte kein Gerät finden, dass auf deine Beschreibung passt. Bitte stelle deine Anfrage präziser."); } if (messageContext.AffectedComponentIds.Count > 1) { return($"{Emoji.Flushed} Bitte nicht mehrere Geräte auf einmal."); } if (messageContext.AffectedComponentIds.Count == 1) { var component = _componentsRegistry.GetComponent <IComponent>(messageContext.AffectedComponentIds.First()); var temperatureSensor = component as ITemperatureSensor; if (temperatureSensor != null) { return($"{Emoji.Fire} Die Temperatur dieses Sensor liegt aktuell bei {component.GetState()}°C"); } var humiditySensor = component as IHumiditySensor; if (humiditySensor != null) { return($"{Emoji.SweatDrops} Die Luftfeuchtigkeit dieses Sensor liegt aktuell bei {component.GetState()}%"); } return(InvokeCommand(component, messageContext)); } return($"{Emoji.Confused} Das habe ich leider nicht verstanden. Bitte stelle Deine Anfrage präziser."); }
public void TogglePowerState(string id) { _componentRegistry.GetComponent(id).TryTogglePowerState(); }
private void RunComponentCommand(string command, string componentID, bool ignoreCurrentStateCheck = false) { var component = _componentService.GetComponent(componentID); // TODO invoke command }