Question: I have store in bigcommerce. Now I want to implement advanced product search in that store like vehicle search in <http://www.crutchfield.com/Car/outfitmycar/car.aspx>.

Basically I want to narrow down the results based on selection of product category and attributes, so user can quickly find the required products.

Like first user will select product category, then year of production, then model of product, then any attributes related to that product, So result will be filtered based on the selection.

Answer: 
Azure IoT Suite is just an accelerator over IoT Hub. It provides complete applications using IoT Hub and other Azure services that you can customize. It can also be interesting as a learning tool since you get the [source code](https://github.com/Azure?utf8=%E2%9C%93&query=iot) for the Predictive Maintenance and the Remote Monitoring solutions.

You can of course build your own custom solution using IoT Hub and other Azure services.
Azure Iot Hub and Event Hubs are workloads that enable data ingestion to Microsoft Azure. So you may think of them as separate standalone modules on Azure.

IoT Suite, is an automation tool, that provisions multiple modules to provide a boiler plate for an end to end IoT solution. The modules include Stream Analytics, IoT Hub, Document DB, a custom Web App for device monitoring etc.

Below is some sample code for connecting a device in C#.

```
    // Define the connection string to connect to IoT Hub
private const string DeviceConnectionString = "<replace>";
static void Main(string[] args)
{
  // Create the IoT Hub Device Client instance
  DeviceClient deviceClient = DeviceClient.CreateFromConnectionString(DeviceConnectionString);

  // Send an event
  SendEvent(deviceClient).Wait();

  // Receive commands in the queue
  ReceiveCommands(deviceClient).Wait();

  Console.WriteLine("Exited!\n");
}
// Create a message and send it to IoT Hub.
static async Task SendEvent(DeviceClient deviceClient)
{
  string dataBuffer;
  dataBuffer = Guid.NewGuid().ToString();
  Message eventMessage = new Message(Encoding.UTF8.GetBytes(dataBuffer));
  await deviceClient.SendEventAsync(eventMessage);
}
// Receive messages from IoT Hub
static async Task ReceiveCommands(DeviceClient deviceClient)
{
  Console.WriteLine("\nDevice waiting for commands from IoTHub...\n");
  Message receivedMessage;
  string messageData;
  while (true)
  {
    receivedMessage = await deviceClient.ReceiveAsync(TimeSpan.FromSeconds(1));

    if (receivedMessage != null)
    {
      messageData = Encoding.ASCII.GetString(receivedMessage.GetBytes());
      Console.WriteLine("\t{0}> Received message: {1}", DateTime.Now.ToLocalTime(), messageData);
      await deviceClient.CompleteAsync(receivedMessage);
    }
  }
}

```

Hope this helps!

Mert