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()); }