2016-06-20 3 views
1

я отправить данные на IoT Hub и получить его, он работает, но я не знаю, как я могу работать с полученными данными: вот мой код, чтобы получить данные:Accses к данным IoT Hub Azure с Java

public void accept(PartitionReceiver receiver) 
      { 
       System.out.println("** Created receiver on partition " + partitionId); 
       try { 
        while (true) { 
         Iterable<EventData> receivedEvents = receiver.receive(10).get(); 
         int batchSize = 0; 
         if (receivedEvents != null) 
         { 
          for(EventData receivedEvent: receivedEvents) 
          {          
           System.out.println(String.format("| Time: %s", receivedEvent.getSystemProperties().getEnqueuedTime())); 
           System.out.println(String.format("| Device ID: %s", receivedEvent.getProperties().get("iothub-connection-device-id"))); 
           System.out.println(String.format("| Message Payload: %s", new String(receivedEvent.getBody(), Charset.defaultCharset()))); 
           batchSize++; 
          } 
         } 
        } 
       } 
       catch (Exception e) 
       { 
        System.out.println("Failed to receive messages: " + e.getMessage()); 
       } 
      } 

Я хотел бы работать с полученными данными, то здесь я стал данными как JSON строки:

System.out.println(String.format("| Message Payload: %s", new String(receivedEvent.getBody(), Charset.defaultCharset()))); 

DataOutput является: продукт: х, цена: 2.3. Я хотел бы взять данные для:

String product= product; 
double price= price; 

Как я могу принимаемый Payload сохранить в переменной?

Благодаря

+0

Можете ли вы предоставить дополнительную информацию о том, как вы пытаетесь получить данные? Вы можете найти эту статью полезной, которая описывает как отправку, так и получение данных в концентратор IoT с использованием Java SDK: https://azure.microsoft.com/documentation/articles/iot-hub-java-java-getstarted/ –

+0

Это работает! спасибо @ Peter Pan и Domic Betts – ofitz

ответ

2

Есть два вида сообщений, которые включают в себя device-to-cloud и cloud-to-device.

Для первого рода сообщений device-to-cloud, как сказал @DominicBetts, вы можете обратиться к разделу Receive device-to-cloud messages, чтобы узнать, как получать сообщения d2c с конечной точкой, совместимой с Hub. И есть два примера в качестве ссылок на GitHub, см. Ниже.

  1. Simple send/receive sample: Показывает, как подключить затем отправлять и получать сообщения и от IoT Hub, передавая протокол вашего выбора в качестве параметра.
  2. Simple sample handling messages received:: Показывает, как подключиться к концентратору IoT и управлять сообщениями, полученными от концентратора IoT, передавая протокол ваших вариантов в качестве параметра.

Для второго рода, cloud-to-device сообщения, вы можете обратиться к разделу Receiving messages on the simulated device, чтобы знать, как получить C2D сообщения. Пример кода в статье был написан для C#, но я думаю, что просто использовать Java вместо C#, обратите внимание на примечание в разделе для выбора подходящего протокола.

+0

У вас есть идеи? – ofitz

+0

@ofitz См. Http://stackoverflow.com/questions/38028130/how-can-i-work-with-the-received-data-from-azure-iot-hub. –