示例#1
0
 private void InvokeCommand(ICommand command)
 {
     foreach (var rollerShutter in _rollerShutters)
     {
         _componentRegistry.GetComponent <IRollerShutter>(rollerShutter).ExecuteCommand(command);
     }
 }
示例#2
0
        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.");
        }
示例#3
0
 public void TogglePowerState(string id)
 {
     _componentRegistry.GetComponent(id).TryTogglePowerState();
 }
示例#4
0
        private void RunComponentCommand(string command, string componentID, bool ignoreCurrentStateCheck = false)
        {
            var component = _componentService.GetComponent(componentID);

            // TODO invoke command
        }