private async Task ReceiveMessagesFromDeviceAsync(string partition, CancellationToken ct) { var eventHubReceiver = eventHubClient.GetDefaultConsumerGroup().CreateReceiver(partition, DateTime.UtcNow); while (true) { if (ct.IsCancellationRequested) { break; } EventData eventData = await eventHubReceiver.ReceiveAsync(); if (eventData == null) { continue; } string data = Encoding.UTF8.GetString(eventData.GetBytes()); IOTMessageFormat message = JsonConvert.DeserializeObject <IOTMessageFormat>(data); // bool isAlert = Convert.ToBoolean(eventData.Properties["waterAlert"]); if (message.isDry && notificationSentCount < 5) { MyNotification.SendFireBaseNotification(configs.FireBaseConnectionString, message.message); notificationSentCount++; } else { MyNotification.SendFireBaseNotification(configs.FireBaseConnectionString, message.message); } Console.WriteLine("Message received. Partition: {0} Data: '{1}'", partition, data); } }
public async Task TurnOFFWater(string deviceName) { IOTMessageFormat message = new IOTMessageFormat { message = "Turn OFF Water" }; var messageString = JsonConvert.SerializeObject(message); var commandMessage = new Message(Encoding.ASCII.GetBytes(messageString)); commandMessage.MessageId = Guid.NewGuid().ToString(); commandMessage.Ack = DeliveryAcknowledgement.Full; await _serviceClient.SendAsync(deviceName, commandMessage); }