public async Task <IMqttClient> RegisterDevice(ICumulocityDevice device) { IConnectionDetails cDetails = new ConnectionDetailsBuilder() .WithClientId(device.ClientId) .WithHost(_baseUrlPath) .WithCredentials(BootstrapUser, Password) .WithCleanSession() .WithProtocol(TransportType.Tcp) .WithCleanSession() .Build(); var client = new MqttClient(cDetails); await client.EstablishConnectionAsync(); await client.SubscribeAsync(new MqttMessageRequest() { TopicName = "s/dcr" }); client.MessageReceived += (sender, response) => { Console.WriteLine(response.MessageContent); }; // var res = await _httpClient.PostAsync("/s/ucr", new StringContent("")); await client.PublishAsync(new MqttMessageRequestBuilder() .WithTopicName("s/ucr") .WithQoS(QoS.EXACTLY_ONCE) .WithMessageContent(string.Empty) .Build()); return(null); }
private IConnectionDetails CreateConnectionDetails(ICumulocityDevice device) { IConnectionDetails connectionDetails = new ConnectionDetailsBuilder() .WithClientId(device.ClientId) .WithHost(_cumulocityInfo.ServerUrl) .WithCredentials(device.User, device.Password) .WithCleanSession() .WithProtocol(TransportType.Tcp) .Build(); return(connectionDetails); }
private static async Task RunJsonViaMqttClientAsync(CancellationToken cToken) { const string serverUrl = "mqtt.cumulocity.com"; const string clientId = "my_mqtt_cs_client"; const string device_name = "My C# MQTT device"; const string user = "******"; const string password = "******"; // connections details var cDetails = new ConnectionDetailsBuilder() .WithClientId(clientId) .WithHost(serverUrl) .WithCredentials(user, password) .WithCleanSession(true) .WithProtocol(TransportType.Tcp) .Build(); MqttClient client = new MqttClient(cDetails); client.MessageReceived += Client_MessageReceived; client.Connected += Client_Connected; client.ConnectionFailed += Client_ConnectionFailed; await client.EstablishConnectionAsync(); string topic = "s/us"; string payload = $"100,{device_name}, c8y_MQTTDevice"; var message = new MqttMessageRequestBuilder() .WithTopicName(topic) .WithQoS(QoS.EXACTLY_ONCE) .WithMessageContent(payload) .Build(); await client.PublishAsync(message); // set device's hardware information var deviceMessage = new MqttMessageRequestBuilder() .WithTopicName("s/us") .WithQoS(QoS.EXACTLY_ONCE) .WithMessageContent("110, S123456789, MQTT test model, Rev0.1") .Build(); await client.PublishAsync(deviceMessage); // add restart operation await client.SubscribeAsync(new MqttMessageRequest() { TopicName = "s/ds" }); await client.SubscribeAsync(new MqttMessageRequest() { TopicName = "s/e" }); await client.PublishAsync(new MqttMessageRequestBuilder() .WithTopicName("s/us") .WithQoS(QoS.EXACTLY_ONCE) .WithMessageContent("114,c8y_Restart") .Build()); // generate a random temperature (10º-20º) measurement and send it every second Random rnd = new Random(); while (!cToken.IsCancellationRequested) { int temp = rnd.Next(10, 20); Console.WriteLine("Sending temperature measurement (" + temp + "º) ..."); await client.PublishAsync(new MqttMessageRequestBuilder() .WithTopicName("s/us") .WithQoS(QoS.EXACTLY_ONCE) .WithMessageContent("211," + temp) .Build()); Thread.Sleep(1000); } }