예제 #1
0
        public async Task <DeviceCapabilityDescriptor> RegisterCapability(ICapability capability)
        {
            var descriptor = CapabilityDescriber.Describe(capability);

            foreach (var action in descriptor.Actions)
            {
                action.MqttTopic = $"action/+/{_mqttClientService.DeviceId}/{capability.CapabilityId}/{action.Name}";
                if (!await _mqttClientService.Subscribe(
                        action.MqttTopic,
                        action.Method,
                        capability))
                {
                    //TODO: Failure to subscribe??
                }
            }

            foreach (var property in descriptor.Properties)
            {
                property.MqttTopic = $"value/+/{_mqttClientService.DeviceId}/{capability.CapabilityId}/{property.Name}";

                if (!await _mqttClientService.Subscribe(
                        property.MqttTopic,
                        property.Property.GetMethod,
                        capability))
                //TODO: What about set method?
                {
                    //TODO: fialure
                }
            }
            //TODO: Register events

            return(descriptor);
        }
        public ActionResult SubscribeTopic(string topic)
        {
            _mqttClient.Subscribe(topic);

            return(Ok());
        }