Вопросы с тегами [azure-iot-hub]

0

голосов
1

ответ
25

Просмотры

Обработка несколько сообщений от IoT хаба в один C # лазурной функция сессии

Мне нужно обрабатывать сообщения от устройств ВГДА и до сих пор я был хорошо с моей работой (IoT устройство отправляет сообщение IoT Hub и IoT Hub Azure запускается функция обрабатывает сообщение и сохраняет информацию в Azure SQL). Но теперь у меня есть устройство, которое передает всю информацию в двух отдельных сообщений можно в строке (из-за длины информации). Есть ли решение о том, как обрабатывать эти два отдельных сообщения одновременно? (Каждый тип сообщения имеет уникальный идентификатор, так что я знаю, какое сообщение является первой частью информации, и которая является второй)
soldous
1

голосов
1

ответ
65

Просмотры

Разница между Стрим Analytics и временных рядов Insights

В контексте Azure IoT ступице, когда бы один поток использовать Analytics с течением времени серии Insights? На страницах продукта и документация как указывает, что они в значительной степени приспособлены для приложений IoT / данных. Тем не менее, я не ясно, о различиях. Прецедент у меня есть, как в режиме реального времени мониторинг, а также анализ ETL. Может (или даже должен?) Два использоваться вместе? Непосредственным различие я вижу в том, что время серии Insights хранит данные, тогда как поток Analytics (я думаю), потребуется разработчикам интегрировать хранения.
user9993
1

голосов
1

ответ
345

Просмотры

ServiceClient (Microsoft.Azure.Devices) OpenAsync выпуск

Мы получаем эту странную ошибку после запуска нашего Azure работника роли (Event Processor хоста) в течение некоторого времени. Сначала я думал, что это было связанно с нами в очереди слишком много облака для сообщений устройств через ServiceClient (Microsoft.Azure.Devices), но, конечно, мы увидим «глубина очереди устройства не может превышать 50 сообщений» ERROR. Мы также очень осторожны, о закрытии и утилизации, а также. Код ниже: общественный асинхронный Task SendCloudToDeviceAsync (строка DeviceId, строка сообщение, BOOL извед = ложь, строка MessageId = NULL) {AzureDevices.ServiceClient ServiceClient = NULL; попробуйте {ServiceClient = AzureDevices.ServiceClient.CreateFromConnectionString (Configuration.IOTHubConnectionString); ждут ServiceClient.OpenAsync (); logger.Info (String.Format ( "Кодирование & Отправка сообщения {0} для устройств {1}", сообщение, идентификатор устройства)); вар CommandMessage = новые AzureDevices.Message (Encoding.ASCII.GetBytes (сообщение)) {// Если мы требуем обратной связи от концентратора ... Ack = Ack == истинной? AzureDevices.DeliveryAcknowledgement.Full: AzureDevices.DeliveryAcknowledgement.None, MessageId = MessageId == NULL? . Guid.NewGuid () ToString (): MessageId, // ExpiryTimeUtc = экспирации, К = DeviceId}; ждут ServiceClient.SendAsync (DeviceId, CommandMessage); Common.ExtensionMethods.WriteHighlightedMessage (String.Format ( "Послать сообщение {0} с MessageId {1}", сообщение, commandMessage.MessageId), ConsoleColor.Green); logger.Info (String.Format ( "Послать сообщение {0} с MessageId {1}", сообщение, commandMessage.MessageId)); вернуться CommandMessage; } Задвижка (Исключение е) {Common.ExtensionMethods.WriteHighlightedMessage (String.Format ( "SendCloudToDeviceMessageAsync: {0}", e.Message), ConsoleColor.Red); если (e.Message.Contains ( "глубина очереди устройства не может превышать 50 сообщений")) {logger.Warn ( "SendCloudToDeviceMessageAsync для устройства {0}: {1}", DeviceId, e.Message); если (e.InnerException! = NULL) logger.Warn (e.InnerException); } Еще {logger.Error ( "SendCloudToDeviceMessageAsync для устройства {0}: {1}", DeviceId, e.Message); logger.Error (e.StackTrace); если (! e.InnerException = нуль) logger.Error (e.InnerException); }} Наконец {если (ServiceClient! = NULL) {ждут ServiceClient.CloseAsync (); ServiceClient.Dispose (); }} Вернуть новый AzureDevices.Message (); } Вот часть InnerException: System.IO.IOException: операция шифрования не удалась, см внутреннего исключения. ---> System.ComponentModel.Win32Exception: Контекст истек и больше не может быть использован Точной линия ошибка срабатывают, приходящуюся на OpenAsync (). Я очень хорошо может делать это на несколько потоков, есть предел? В следующем выпуске, мы не будем делать в «слой ACK приложения», а позволить решить считать, что сервер счастлив через MQTT ACK. Это понизит количество облака сообщений устройства мы посылаем. ComponentModel.Win32Exception: Контекст истек и больше не может быть использован Точной линия ошибка срабатывают находится на OpenAsync (). Я очень хорошо может делать это на несколько потоков, есть предел? В следующем выпуске, мы не будем делать в «слой ACK приложения», а позволить решить считать, что сервер счастлив через MQTT ACK. Это понизит количество облака сообщений устройства мы посылаем. ComponentModel.Win32Exception: Контекст истек и больше не может быть использован Точной линия ошибка срабатывают находится на OpenAsync (). Я очень хорошо может делать это на несколько потоков, есть предел? В следующем выпуске, мы не будем делать в «слой ACK приложения», а позволить решить считать, что сервер счастлив через MQTT ACK. Это понизит количество облака сообщений устройства мы посылаем.
David
1

голосов
1

ответ
284

Просмотры

Не получая лазурь-iothub сообщения, отправленное из лазури-ивент-концентраторы OnMessage функции

У меня есть веб-API, который может получать и отправлять сообщения на Raspberry Pi. Соединение работает нормально, используя лазурь-EVENT-концентраторы на веб-API для получения сообщений и лазурное-iothub для отправки сообщений в малине. Проблема у меня, когда я пытаюсь отправить сообщение в функции OnMessage (так всякий раз, когда я получаю сообщение в WebAPI), устройство не получает его. Вот мой код: WebAPI: Const {EventHubClient, EventPosition} = требуется ( 'лазурь-EVENT-концентраторы'); вар ConnectionString = '' myConnectionString вар sendingClient = требуется ( '../ лазури / sendingClient ') функция асинхронной Основные () {sendingClient.sendMessage (' малинового', {}, "allDevices") // малины принимает этот константный клиент = ждут EventHubClient.createFromIotHubConnectionString (ConnectionString); Const OnError = (ERR) => {console.log ( "произошла ошибка на приемнике", ERR); }; Const OnMessage = (MSG) => {console.log (msg.body); sendingClient.sendMessage ( 'малиновый', {}, "allDevices") // малина не получает это}; Const receiveHandler = client.receive ( "1", OnMessage, OnError, {eventPosition: EventPosition.fromEnqueuedTime (Date.now ())}); // Чтобы прекратить прием события позже ... ждать receiveHandler.stop (); ждут client.close (); } Главный () улов ((ERR) => {console.log (ERR);}). Отправка клиента: вар Client = требуется ( 'лазурь-iothub') клиента;. вар Message = требуется ( 'лазурь-ИТН-общее') сообщение. вар ConnectionString = '' myConnectionString вар sendingClient = Client. fromConnectionString (ConnectionString); exports.sendMessage = (targetDevice, содержание, MESSAGEID) => {sendingClient.open (функция (ERR) {если (ERR) {console.error ( 'Не удалось установить соединение:' + err.message);} еще {console.log ( 'Service подключен клиент'); вар сообщение = новое сообщение (содержание); message.ack 'полный'; 'сообщение' message.messageId = message.properties.add ( 'сообщение', MESSAGEID) console.log ( 'Отправка сообщение: '+ message.getData ()); console.log (' Отправка сообщения: '+ targetDevice); sendingClient.send (targetDevice, сообщение,);}}); } Приемник на raspberryPi: вар iothub = требуется ( 'лазурь-iothub'); Протокол вар = требуется (» лазурь-ИТН-устройство MQTT ') MQTT. Клиент вар = требуется ( «лазурь-ИТН-устройство») клиент. вар Message = требуется ( 'лазурь-ИТН-устройство') сообщение. вар клиент = Client.fromConnectionString (ConnectionString, протокол) client.open ((ERR) => {если (ERR) console.error ( 'Не удалось установить соединение:' + err.message) еще {client.on ( 'сообщение', (MSG) => {переключатель (msg.properties.propertyList [1] .value) {случай 'allDevices': устройства = JSON.parse (msg.data.toString ()) ответа (устройства) // прохождение содержимого сообщения} }); client.on ( 'ошибка', (ERR) => {console.error (err.message);}); client.on ( 'разъединение', () => {clearInterval (sendInterval); клиент. removeAllListeners (); client.open (connectCallback); }); }}) Отправителя на RaspberryPi: exports.sendMessage = (данные, ConnectionString, ключ) => {вар клиент = Client.fromConnectionString (ConnectionString, протокол) client.open ((ERR) => {если (ERR) console.error ( 'Отправить сообщение об ошибке:' + err.message) еще {данных = JSON.stringify (данные); вар сообщение = новое сообщение (данные); message.properties.add ( 'сообщение', ключ); client.sendEvent (сообщение ); console.log ( 'Сообщение отправлено' + ключ);}})}
Jeff Aknine
1

голосов
1

ответ
213

Просмотры

Read двоичных данных из IoT ступицы с использованием искровых потоковым

У меня есть IoT хаб получать двоичные данные, которые я хотел бы читать из Спарк потоковой работы. Как читать двоичные данные из IoT хаба? Спасибо!
vijay
1

голосов
1

ответ
139

Просмотры

Azure IoT Загрузить файл

Я успешно использовал эту функцию для загрузки файлов в контейнер для хранения в хранилище больших двоичных объектов Azure. Я хотел бы спросить, если эта форма загрузки файла имеет ту же проверку целостности с использованием хэша MD5 как есть с нормальной загрузкой хранилища большого двоичных объектов. Эта ссылка описывает эту функцию для хранения больших двоичных объектов. Кроме того, кажется, эта проверка не является обязательной, если да, то есть ли способ для меня, чтобы убедиться, что это происходит, когда я загружаю из моего ВГДА устройства с помощью лазурных-ИТНА-SDk лет.
radish25
1

голосов
2

ответ
111

Просмотры

Лазоревый IotHub Спарк Структура потокового к БД COSMOS (с и WO Кафки)

Для первого сценария, я хочу использовать Спарк Structured Streaming с ВГД Hub в входе и Космос БД на выходе. Я использовал следующие разъемы: лазурный-eventhubs-spark_2.11-2.3.2 лазурь-cosmosdb-spark_2.3.0_2.11-1.2.0 (не непосредственно с Maven, по импорту уберу банке То есть, когда я пытался импортировать свои данные в космос DB, я receveid следующее сообщение об ошибке: «java.lang.assertionError: Утверждение не удалось: получил порядковый номер 1790 не соответствует последовательности запроса номер 1791» с Кафки: я попробовал другое решение, используя ВГД Hub и Кафку, . для использования Кафку в качестве источников в Спарк Структурированные Streaming (вместо разъема Hub Event) Но после того, как все настройки о Кафке, у меня есть следующее сообщение об ошибке: «Не удалось найти любой класс, который реализует Connector и название которого соответствует com.microsoft.azure. iot.kafka.connect.source. IotHubSourceConnector». Существует проблема с именем псевдонима. Как вы думаете, что это принадлежит к тому, что мы используем ВГД Hub вместо хаба событий? => Я попробую третье решение, которое использует Стрит Analytics, чтобы впихнуть в Космосе БД, а затем реализовать Cosmos DB Change поток, чтобы использовать его в Спарке Structured Streaming как вход. Надеюсь, что это сработает. Любые консультации по 2 выше сценарию очень приветствуются!
Tidjoe
0

голосов
0

ответ
4

Просмотры

Не удается получить данные в космосе DB

Привет я моделировать данные dé отправить в azureIoT. получение данных выборки работает нормально, и когда я использовать потоковые аналитику космоса DB ничего не забирается в сборе данных. Everthing пуст. Я попытался изменить мое соединение (возможно, брандмауэр моей компании), но ничего не происходит слишком я хотел бы получить данные в cosmosDB речной аналитики, потому что следующий шаг я хочу использовать работы образцов powerBI ComsoDB и ничего в cosmoDB, когда я использую поток аналитик
Saif Ejjilali
1

голосов
4

ответ
3.8k

Просмотры

Концентратор Python и Azure ИТН

У меня есть Python кода, работающего на Raspberry Pi. Мне нужно, чтобы подключиться к Azure ВГД хаб из моего кода Python с использованием обычного протокола MQTT. Я не могу использовать библиотеки для подключения к ИТН Hub. Я ищу способ сделать это в Python и простой MQTT. Кто-нибудь знает, как это можно сделать?
BlueCastle
1

голосов
1

ответ
230

Просмотры

TypeError: client.getReceiver не является функцией в лазурь-ИТН-устройства-клиента примеров

Я использую лазурь-ВГД-устройства-клиент, и runnint начала работы кода: вар clientFromConnectionString = требуется ( «лазурь-ИТНА-устройства-клиент») clientFromConnectionString;. вар Message = требуется ( 'лазурь-ИТН-устройство') сообщение. вар ConnectionString = «myHostname, MyDevice, MYKEY; вар клиент = clientFromConnectionString (ConnectionString); вар тзд = новое сообщение ( «некоторые данные из моего устройства»); client.sendEvent (MSG, функция (ERR) {если (ERR) console.log (err.toString ());}); client.getReceiver (функция (ERR, RCV) {rcv.on ( 'сообщение', функция (MSG) {console.log (MSG); rcv.complete (MSG, функция () {console.log ( 'завершена'); });}); rcv.on ( 'errorReceived', функция (ERR) {console.warn (ERR);});}); Но я получаю эту ошибку: TypeError: client.getReceiver не является функцией
BlueCastle
1

голосов
1

ответ
827

Просмотры

Недопустимая ошибка версии протокола при добавлении устройства к концентратору Azure IoT

Я пытаюсь создать новую идентичность устройства в реестре идентичности в моем Azure IoT Hub. Я выполните шаги, описанные здесь. Но когда я добавить новое устройство в реестре: устройство = ждать registryManager.AddDeviceAsync (новое устройство (DeviceId)); Я получаю исключение с этим сообщением: ErrorCode: InvalidProtocolVersion; Invalid версия протокола: 2016-04-30 Любая точка в правильном направлении будет высоко оценен.
Guy
1

голосов
1

ответ
54

Просмотры

IoT Hub - изменить сложное создание маркеров (через MQTT)

согласно моей статье я действительно хотел бы посмотреть в этом, позвольте мне объяснить, почему. История: Я успешно сделал полный хост и клиент и его рабочий 100% на с помощью .NET. Большой, но в том, что наши клиенты в области работают на микроконтроллер (не микропроцессор), который имеет плохие библиотеки шифрования (встроенный C, в частности ПОС). Наш инженер микропрограммного парень в настоящее время борется, чтобы получить HMAC часть маркеров поколения SAS работать. Остальные части втулки возможно (MQTT, TLS, кодирование URL-адрес, ЭПОХА и т.д.), но SHA256 HMAC борьба. Я знаю шлюз протокола предлагаемого где вы можете заменить поставщик проверки подлинности шлюза. Кто-нибудь есть образец кода / руководство, которое я могу следовать. DEV руководство, предлагаемых Microsoft кажется ограниченным или, может быть, им просто глупо и отсутствует сюжет. Большое спасибо за любую помощь!
David
1

голосов
2

ответ
250

Просмотры

Как я могу работать с полученными данными из Hub Azure IoT

Я получаю данные: общественного недействительными принять (PartitionReceiver приемник) {System.out.println ( «** Создан приемник на разделе» + PartitionID); попробовать {в то время как (истинно) {Iterable receivedEvents = receiver.receive (10) .get (); INT BATCHSIZE = 0; если (! receivedEvents = NULL) {для (данныеСобытия receivedEvent: receivedEvents) {System.out.println (string.Format ( "| Время:% S"., receivedEvent.getSystemProperties () getEnqueuedTime ())); System.out.println (string.Format ( "| Device ID:% S"., ReceivedEvent.getProperties () получить ( "iothub-соединение-устройство-идентификатор"))); System.out.println (string.Format ( "| Payload сообщение:% s", новый String (receivedEvent. getBody (), Charset.defaultCharset ()))); BATCHSIZE ++; }}}} Задвижка (Исключение е) {System.out.println ( "Не удалось получить сообщения:" + e.getMessage ()); }} Здесь я стал названием продукта и цена: System.out.println (string.Format ( "| Payload сообщения:% s", новый String (receivedEvent.getBody (), Charset.defaultCharset ()))); Как я могу взять Payload, продукт в строке продукт; и цена в два раза дороже ;?
ofitz
1

голосов
1

ответ
227

Просмотры

Советы о Azure IoT ступицей и Raspberry Pi

В настоящее время я создаю устройство IoT концентратор, который считывает датчик несколько раз в секунду. Я хотел бы достичь 3 до 4 чтения каждую секунду. Датчик возвращается только истинным или ложным, и когда его истинное Я хочу временную метку и другую информацию, отправить на ступице Azure IoT. Устройство представляет собой Raspberry Pi 3 Я хотел бы несколько советов. Что было бы лучшим языком для создания этой программы с? Могу ли я отправлять сообщения каждый раз, или это было бы замедлить? Я сделал пример программы с Python и использовал событие GPIO, чтобы обнаружить, если штифт изменяется. И когда она изменяется, отправить сообщение на IoT ступице. Но у меня есть чувство, что это не достаточно быстро? Спасибо за ваше время заранее! Я надеюсь, что вы можете дать мне несколько советов
1

голосов
2

ответ
468

Просмотры

Первоначальный ID устройства регистрации в Azure IoT Hub самим устройством

Для того, чтобы отправить сообщения в Azure IoT Hub, сначала необходимо зарегистрировать устройства в реестр IoT Hub, хотя, как вы можете сделать устройство зарегистрировать свои ID самих по себе безопасному способу? Моя цель этого вопроса о проблеме безопасности. Я имею в виду их реализации в приложениях, такие как андроиды, прошивка и т.д., которые будут использоваться многими пользователями. Если вы даете этим устройствам разрешения чтения / запись в реестр (который общий ключ доступа хранится в приложении), будет риском того, что злоумышленник узнает, общий ключ доступа и использовать его для злоупотребления системы. Существуют ли какие-либо другие решения, помимо подготовки общедоступного сервера, который обеспечивает функцию, чтобы зарегистрировать устройство и дать их обратно ключ доступа на устройство? Или я не должен использовать IoT Hub и найти другую услугу?
K. Hara
1

голосов
1

ответ
1.4k

Просмотры

Azure Стрим Analytics Query: Отправка данных в формате JSON массива в PowerBI

Я пытаюсь отправить свои данные IoT концентраторов к власти BI через поток Analytics. Это прекрасно работает, пока неты массивов включены в JSon данных из устройства IoT. Мои вопросы: Как я должен изменить свой поток Analytics Query так, что PowerBI способен интерпретировать данные как массив / таблицы? Как я TIMESTAMP BY каждого элемента массива (с помощью «timecreated»)? JSON строку я отправить IoT Hub выглядит следующим образом: { "sensordata": [{ "Имя": "Temp_0", "значение": 3, "timecreated": "2016-11-09T11: 08: 00Z"}, { "имя": "Temp_0", "значение": 7, "timecreated": "2016-11-09T11: 08: 02Z"}, { "имя": "Temp_1", "значение": 2, "timecreated" : "2016-11-09T11: 08: 04Z"}]} Что поток Analytics получает от IoT Hub: [{» Я хотел бы иметь возможность создавать графики, например, имея времени на оси х и имеющие значения для Temp_0 на оси у. Любые идеи по этому вопросу? Ваша помощь будет принята с благодарностью. (Кстати: JSON строки из IoT устройства имеют различные количества элементов массива!)
Andy M.
1

голосов
2

ответ
267

Просмотры

Поток Аналитика условно проверка

Готовлю доказательство концепции для лазурного ВГД. Я посылаю данные с устройством на лазурный ВГДЕ ступицы и от ВГД ступицы отправки данных в базу данных с помощью потока аналитики. Вопрос: Я хочу, чтобы проверить, есть ли у меня эта запись в базе данных, если я не хочу, чтобы добавить запись. И я хочу, чтобы создать «время начала», когда произошло какое-то определенное событие и событие «время окончания» закончено, поэтому мне нужно обновить строку. Возможно ли с помощью потока аналитики и STREAM аналитику правильное место, чтобы сделать этот вид проверки?
Cozdemir
1

голосов
1

ответ
143

Просмотры

Azure IOT ExportDevicesAsync internal server error

Такая же проблема, как здесь. Я следую простой образец для экспорта списка устройств IOT для хранения больших двоичных объектов, но ударяя внутреннюю ошибку сервера на ExportDevicesAsync. Я использую в Северной Европе, но я не думаю, что изменение серверов действительно является допустимым исправить. Все, что я получаю обратно есть: исключение типа «Microsoft.Azure.Devices.Common.Exceptions.ServerErrorException» произошло в mscorlib.dll, но не был обработан в коде пользователя Дополнительная информация: { «Сообщение»: "ERRORCODE: ServerError; InternalServerError», "ExceptionMessage": "Tracking ID: c51dad0227604f21b9af3e8acbd77f4c-G: 5-TimeStamp: 06/03/2017 19:56:10"} Пример кода (строки и ключи соединения маскируются) внутренняя асинхронным Task GetAllDevices () {вара ConnectionString = «HostName = xxxx.azure-devices.net; SharedAccessKeyName = xxxxowner; }} Я делаю что-то здесь не так? Есть ли способ, чтобы поймать реальное исключение я отсутствующий?
Damo
1

голосов
1

ответ
48

Просмотры

Как получить лазурный КАТО-хаб имя учетной записи для хранения

Я пишу сценарий PowerShell, который создает КАТО-хаб счет с учетом хранения и работы streamAnalytics. Для обновления файла JSON для работы streamAnalytics, мне нужно получить имя учетной записи хранилища, который только что был создан. К сожалению, AzureRM не имеют функций для получения Хранилища Имени. Любые предложения о том, как сделать это? Мой текущий скрипт получает его в качестве входных данных от пользователя, но я хочу, чтобы сценарий быть автоматизирован и без необходимости ввода данных пользователя.
N.avraham
1

голосов
1

ответ
70

Просмотры

How to check if Azure IOT Hub sender has stopped using node.js and socket.io

I have two programs, a sender and a receiver. The sender sends some message to device on IOT Hub and receiver in turn receives those messages as long as sender sends them. I am using socket.io to broadcast those messages to connected clients. However when the sender is stopped, the receiver also stops but the last message sent by sender is going to broadcasted infinitely until i close the receiver or the sender starts again and sends new messages. The last message will get duplicated and broadcasted infinitely. How to check if the sender program has stopped? this is the sender prrogram: var clientFromConnectionString = require('azure-iot-device-mqtt').clientFromConnectionString; var Message = require('azure-iot-device').Message; var connectionString = 'conn_string' var client = clientFromConnectionString(connectionString); var avgTemperature = 20; var printResult = function (err, res) { if (err) { console.log('send error: ' + err.toString()); return; } console.log('send status: ' + res.constructor.name); }; setInterval(function () { var currentTemperature = avgTemperature + (Math.random() * 10) - 2; var data = JSON.stringify({ deviceId: 'test', temperature: currentTemperature, latitude: 50.286264, longitude: 19.104079, time: Date.now() }); var message = new Message(data); console.log("Sending message: " + message.getData()); client.sendEvent(message, printResult); }, 5000); this is the receiver and the socket.io which broadcasts to the client: var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); var EventHubClient = require('azure-event-hubs').Client; var connectionString = 'conn_string' var printError = function (err) { console.log(err.message); }; var result; var printMessage = function (message) { console.log('Message received: '); result = JSON.stringify(message.body); console.log('message: ' + result); /* io.on('connection', function(socket){ socket.on('chat message', function(msg){ io.emit('chat message', result); }); }); */ console.log(''); }; count =0; app.get('/', function(req, res){ res.sendFile(__dirname + '/index.html'); }); io.on('connection', function(socket){ console.log('user connected'); socket.on('chat message', function(msg){ io.emit('chat message', result); }); socket.on('disconnect', function(){ console.log('user disconnected'); socket.removeAllListeners('disconnect'); io.removeAllListeners('connection'); }); }); var client = EventHubClient.fromConnectionString(connectionString); client.open() .then(client.getPartitionIds.bind(client)) .then(function (partitionIds) { return partitionIds.map(function (partitionId) { return client.createReceiver('$Default', partitionId, { 'startAfterTime' : Date.now()}).then(function(receiver) { console.log('Created partition receiver: ' + partitionId) receiver.on('errorReceived', printError); receiver.on('message', printMessage); }); }); }) .catch(printError); http.listen(3000, function(){ console.log('listening on *:3000'); });
Neo
1

голосов
1

ответ
425

Просмотры

Загрузка файла Azure BLOB с помощью IoT Hub - Разрешения

Я загрузка файлов с Raspberry Pi для хранения Azure Blob с использованием концентратора Azure IoT, используя этот майкрософт учебника в качестве основы для моих C # код, и это работает прекрасно. Глядя на документации Microsoft для метода UploadToBlobAsync (), «Если пятно уже существует, он будет перезаписан.» Я задаюсь вопросом, есть ли способ ограничить разрешения устройства для создания только в Azure портала или с помощью PowerShell. Меня беспокоит то, что если кто-то доступ к хранилищу устройства и получить идентификатор устройства и ключ они будут иметь средства для удаления или перезаписи файлов, предварительно загруженных этого устройство в контейнере для хранения. В работе вокруг я мог бы процесс на стороне сервера подобрать файлы, как только они были получены, и переместить их в другом месте, но если / ключ идентификатора устройства был ограничен для создания только тогда я Wouldn»
Pete
1

голосов
2

ответ
267

Просмотры

Azure IoTHub_Client with X509 CA-based certificate in Python

I'm playing with Azure IOT Hub/Edge and Python on a Linux client device. I have modified the iothub_client_sample_x509.py sample program from the SDK to use arbitrary X509 certificates (actually created with OpenSSL) to connect to IoT Hub. The device certificates are part of a CA structure with two layers of certificate chain on top (i.e. a two-tier CA). Connection establishment works fine as long as I register the device on IoT Hub as 'X.509 Self-Signed' with the SHA1 fingerprint of the device cert as the primary/secondary fingerprint. When I try, however, to connect in 'X.509 CA-Signed' mode, I fail with 'Connection Not Accepted: 0x5: Not Authorized' (in the latter case, I registered the device on IoT Hub as 'X.509 CA-Signed'). The chain (CA) certificate files were uploaded under 'Certificates' in IoT Hub with status 'Verified'. In both cases, I use a connection string like this: "HostName=;DeviceId=;x509=true". Is this the correct connection string for the 'X.509 CA-Signed' case? Do I need to transmit the certificate chain (in addition to the device cert) when I connect? How would I do that? The Common Name in the device certificates reads 'CN = .westeurope.cloudapp.azure.com', and not 'CN = .azure-devices.net'. Could that be a problem? Please note that I cannot easily set up C#/.NET on the client devices for testing, so I'd like to stick with Python (or maybe C) for now. Is there any chance to activate some more granular logging to understand why connection establishment fails with '0x5: Not Authorized'? Anything else I may have missed? Thanks for any help, Michael Update 2018-05-16: Hi Michael, thanks for your comments. Indeed, I have been able to make connection establishment work in 'X.509 CA-Signed' mode by setting up the certificates with the MS PowerShell scripts (https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-security-x509-create-certificates). Correcting the CN to the device name only did not fix the problem with my original PKI setup, though. Guess I will have to analyze every little difference in the PKI setups. Two obvious differences in the PKI setups are: My setup uses a two-tier PKI (one root CA and one intermediate/signing CA) rather than one CA only. The certificates of both are stored in IoTHub (verified). Root CA and Signing CA have 384 bit keys (ECC - secp384r1 curve) rather than 256 bit (prime256v1 curve). Both CA certs could be stored and verified without any problems in IOTHub. Are any of these differences known to cause problems? Thanks, Michael
Mike
1

голосов
2

ответ
353

Просмотры

Azure Event Hub Python SDK

Может кто-нибудь объяснить, как использовать «Event имя Hub-совместимого» и «Event Hub-Compatible конечную точку» с помощью питона эпицентра событий SDK. SDK запрашивает # Адрес может находиться в одном из следующих форматов: # «amqps: //:
radish25
1

голосов
1

ответ
121

Просмотры

как проверить строки подключения лазури ВГД хаба в свече потокового?

Я новичок в лазурном ВГДЕ ступицы. им пытаются тянуть сообщение от лазурного ВГД концентратору с помощью искры потокового видео. им получать сообщение об ошибке, когда я выполнить код и я мог понять, что есть некоторые проблемы в строках подключения. есть ли конкретный способ проверить строку подключения в искре, а также, пожалуйста, скажите мне формат, который я определил правильно или нет. Мой пример кода: импорт org.apache.spark.eventhubs._ вал eventHubName = "xyztest.azure-devices.net" вал eventHubNSConnStr = «Конечная точка = SB: //testname.servicebus.windows.net/; SharedAccessKeyName = первичный; SharedAccessKey = abcedfgrdxyeurjrsdfyasdf =»вал connStr = ConnectionStringBuilder (eventHubNSConnStr) .setEventHubName (eventHubName) .build вал customEventhubParameters = EventHubsConf (connStr) .setMaxEventsPerTrigger (5) вал incomingStream = spark.readStream.format ( "eventhubs"). Варианты (customEventhubParameters.toMap) .load () incomingStream.writeStream.outputMode ( "добавить") формат ( "консоль") вариант ( "усечение", ложь) .start () awaitTermination () Errro:... java.util. concurrent.ExecutionException: com.microsoft.azure.eventhubs.IllegalEntityException: не может быть найдено: субъект сообщений "//testname.servicebus.windows.net/xyztest сб. на java.util.concurrent.CompletableFuture.reportGet (CompletableFuture.java:357) в java.util.concurrent.CompletableFuture.get (CompletableFuture.java:1895) в org.apache.spark.eventhubs.client.EventHubsClient.partitionCount (EventHubsClient .scala: 169) awaitTermination () Errro: java.util.concurrent.ExecutionException: com.microsoft.azure.eventhubs.IllegalEntityException: не может быть найдено: Субъект сообщений "//testname.servicebus.windows.net/xyztest сб. на java.util.concurrent.CompletableFuture.reportGet (CompletableFuture.java:357) в java.util.concurrent.CompletableFuture.get (CompletableFuture.java:1895) в org.apache.spark.eventhubs.client.EventHubsClient.partitionCount (EventHubsClient .scala: 169) awaitTermination () Errro: java.util.concurrent.ExecutionException: com.microsoft.azure.eventhubs.IllegalEntityException: не может быть найдено: Субъект сообщений "//testname.servicebus.windows.net/xyztest сб. на java.util.concurrent.CompletableFuture.reportGet (CompletableFuture.java:357) в java.util.concurrent.CompletableFuture.get (CompletableFuture.java:1895) в org.apache.spark.eventhubs.client.EventHubsClient.partitionCount (EventHubsClient .scala: 169)
1

голосов
1

ответ
214

Просмотры

insert/update referenced data from iothub in sql table by conditions with stream analytics

Я workig на лазури, есть SQL Transact база данных с двумя таблицами и в iotHub, который принимает данные от нескольких устройств. Я должен проверить, если данные в настоящее время существующие в базе данных и их хранения, если иное не обновлять старые данные в таблице. tableOne как: ID | key1 ------------- 1 | абв 2 | Защиту 3 | ГХИ tableTwo нравится: идентификатор | id_tableOne | key2 | что-то ------------------------------------------------- ------ 77 | 2 | Эмиль | Добро пожаловать 78 | 1 | Эмиль | вот я 79 | 1 | Hans | привет мир поток, как JSon сообщ исходя из iotHub следующим образом: { «Тема»: «Тест», «key1»: «ГХИ», «данные»: [{ «key2»: «Эмиль», «что-то»
eid
1

голосов
2

ответ
93

Просмотры

IoT Концентратор проглатывание событий и хранение данных

Я использую Azure поток Analytics работу, чтобы обработать данные из концентратора IoT. Итак, мои данные поступают из моего моделируемого устройства к концентратору IoT и я настроил ступицу в качестве вклада в работу потока аналитики и хранения больших двоичных объектов в качестве задания вывода. Мой вопрос, если я остановить работу потока аналитики и перезапустить его, я теряю данные между остановкой и начать? Или данные, хранящиеся на ступице IoT и когда я перезапустить задание и выбрать время запуска, как с момента, когда он остановился, я буду получать все данные.
MAK
1

голосов
1

ответ
81

Просмотры

отправка d2c сообщение для определенной группы потребителей в Azure IoT Hub?

Есть ли способ, чтобы отправить сообщение d2c к определенной группе потребителей, а не по умолчанию потребительской группы в Azure IoT Hub?
P.K
1

голосов
2

ответ
73

Просмотры

IoT хаб и устройство предоставления услуги

Является ли Microsoft при условии, несколько стандартных устройств предоставления услуг абонентов Azure рынка, который может быть использован непосредственно для устройства резервирования для любого пользовательского устройства? Или OEM необходимо создать службу продовольствования устройства для их пользовательского устройства, положить, что на рынке, а затем использовать эту услугу устройства продовольствования с рынком? Может кто-то просьба уточнить? Благодарю.
AskMe
1

голосов
1

ответ
0

Просмотры

Является ли веб-сокет поддерживается в .NET Ядра? метание «исключение System.Net.WebSockets.WebSocketException

Я написал консольное приложение с использованием .NET 2.1 Ядра. Ответственность этого приложения: подключение к концентратору Azure IoT и передавать данные. Я все еще получаю ниже исключения System.Net.WebSockets.WebSocketException (0x80004005): Не удается подключиться к удаленному серверу ---> System.Net.Http.HttpRequestException: соединение SSL не может быть установлено, см внутреннего исключения. ---> System.Security.Authentication.AuthenticationException: Удаленный сертификат недействителен в соответствии с процедурой проверки. на System.Net.Security.SslState.StartSendAuthResetSignal Примечание: Я бегу мой код на Windows Embedded Standard. Использование веб-сокетов отлично работает в Windows 10 Вот мои ссылки NuGet с использованием Microsoft.Azure.Devices.Client; используя Microsoft.Azure.Devices.Shared; Это, как я создаю соединение. Строка deviceConnectionString = "*******"; _Client = DeviceClient.CreateFromConnectionString (deviceConnectionString, TransportType.Mqtt_WebSocket_Only); веб-сокеты не будут работать на окнах 7. Справка: Использование WebSocket на Windows 7 Итак, я использую .NET 2.1 Ядро, чтобы получить поддержку веб-сокетов, как упомянуто здесь https://github.com/dotnet/corefx/issues/20191 Еще я получить ту же ошибку! что делает ниже средств? Удаленный сертификат недействителен по валидации? Обновление Это кажется среда .NET не может вызвать старые Windows Embedded Standard API, для проверки сертификата для TLS. Я, возможно, придется сделать это в самой mycode. Некоторые детали в https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-mqtt-support Другой вариант заключается в компиляции C SDK, который уже имеет этот сертификат для TLS. Он может быть вызван через наши C # код. Он будет компактным и менее зависимость.
kudlatiger
1

голосов
1

ответ
0

Просмотры

Azure Стрим Analytics: удалить дубликаты в то время как агрегирование

Я работаю над системой датчиков температуры и давления, где мои данные протекающей через работу Стрит аналитику. Теперь, возможно, дублировать сообщения, отправленные в связи с подтверждениями не принимаются и различные другие причины. Так что мои данные могут быть в формате: - DeviceID TimeStamp MeasurementName Значение 1 1 температура 50 1 1 температура 50 1 2 температура 60 Обратите внимание, что вторая запись является дубликатом 1-ый, как DeviceId и Timestamp и MeasurementName одинаковы. Я хотел бы взять среднее по акробатическому окну 5 мин для этих данных в задании потока аналитики. Поэтому у меня есть этот запрос ВЫБРАТЬ AVG (Value) FROM SensorData GROUP BY DeviceId, MeasurementName, TumblingWindow (минута, 5) Этот запрос, как ожидается, чтобы дать мне среднее измерение значений температуры и давления для каждого устройства в течение 5 мин. При этом в среднем мне нужно для устранения дубликатов. Фактическое среднее значение (50 + 60) / 2 = 55. Но средний учитывая мой этот запрос будет (50 + 50 + 60) / 3 = 53,33 Как настроить этот запрос для правильного вывода? Заранее спасибо.
user3740951
1

голосов
1

ответ
0

Просмотры

Программа получения существовала без регистрации каких-либо исключений при чтении близнеца устройства с использованием ядра .net

Технология вокруг этого вопроса являются: Azure ВГД Hub и C # приложений Framework: .NET Ядро 2.1 Функциональность Я пытаюсь достичь устройства, прочтите двойные свойства устройства в ВГД хаб в последующей строке DeviceId = конфигурации [ «Azure: DeviceId»] ; Строка DeviceKey = конфигурация [ "Лазоревый: DeviceKey"]; Строка deviceConnectionString = "HostName = xxxxxx.azure-devices.net; DeviceID = {0}; SharedAccessKey = {1}"; deviceConnectionString = String.Format (deviceConnectionString, DeviceID, DeviceKey); ConfigHubClient = DeviceClient.CreateFromConnectionString (deviceConnectionString, TransportType.Mqtt_WebSocket_Only); попробовать {вар = твин ждут ConfigHubClient.GetTwinAsync (); deviceTwinConfig = twin.Properties.Desired;
kudlatiger
1

голосов
1

ответ
0

Просмотры

Как вычисление на модуле IotEdge быть вызвано внутри основного .net приложения?

Мне нужно, чтобы вызвать некоторые вычисления на модуле IotEdge из приложения Administration-Backend. На https://docs.microsoft.com/en-us/azure/iot-edge/module-development он говорит В настоящее время модуль не может получить облако-устройство сообщения Таким образом, кажется, что вызов прямых методов, кажется, путь идти. Как я могу реализовать прямой метод и вызвать его изнутри ядра приложения .NET?
René
1

голосов
1

ответ
0

Просмотры

Как я могу отправить ВГД сообщение ступиц для MQTT брокера?

Я посылаю некоторые сообщения из Azure устройства сферы в IoT хаб, теперь я хочу, чтобы отправить / маршрут эти сообщения брокеру MQTT откуда я могу получить эти сообщения и отображать его в программное обеспечение сторонних производителей. Пожалуйста, руководство меня, я новичок в этой теме, любые выводы или предложения были бы полезны.
Yatin Gaikwad
1

голосов
1

ответ
0

Просмотры

Как отправить пользовательскую полезную нагрузку во время инициализации устройства в Azure IoT?

Я пытаюсь предоставление моего устройства в Azure IoT с помощью Azure IoT Device Provisioning Service, в котором я использую политику пользовательского распределения, при управлении регистрации группы. Когда устройство регистрируется в DPS (устройство службы резервирования), он запускает Azure функцию, в которой я буду решать, какие IoT Hub устройство будет назначено. В моей функции, я должен принять это решение, основанное на некоторых пользовательских полезных данных, которые мне нужно отправить с устройства в момент регистрации себя DPS. Как я буду посылать, что пользовательскую полезную нагрузку с устройства ДПС в момент регистрации себя, так что я могу получить, что полезную нагрузку в моей Azure функции и могу принять решение? Я использую Java как язык программирования для того же.
Anil Agrawal
0

голосов
0

ответ
0

Просмотры

Как программно установить родительское устройство при создании устройства Azure IoT Hub?

Я написал код, чтобы программно добавить новые устройства ВГД на мой ВГД Hub. Использование Azure Portal это можно установить родительское устройство для устройства ВГД. Настройка родительского устройства на Лазурном портале Глядя на документацию и исходный код на GitHub для лазурного-СДК-за-сети я не вижу прочь установить родительское устройство при создании нового устройства или для установки родительского устройства на существующее устройстве , Есть ли API для настройки родительского устройства на устройствах ИТНЫ?
gerfen
3

голосов
1

ответ
0

Просмотры

Явное открытия подключения к IoT Hub от DeviceClient или открыть его, когда посылается сообщение?

Существуют ли какие-либо существенные различия между явным образом открывает соединение с DeviceClient при применении инициализации или оставить его, чтобы открыть само соединение при отправке сообщения? Что я имею в виду это: ждать deviceClient.OpenAsync (); // в основной () и т.д. ... ждут deviceClient.SendEventAsync (сообщение); Вместо того, чтобы просто: ждать deviceClient.SendEventAsync (сообщение); Есть ли минусы последнего? Проводится открытое соединение независимо от того, как он открыт?
user9993
5

голосов
0

ответ
110

Просмотры

Arduino MKR1000 How to send Message to Azure IoT Hub

I am trying to setup a basic example of sending a message from the Arduino MKR1000 to the Azure IOT Event Hub but can't seem to get any of the online examples to work and I am new to Arduino. Any pointers for a simple working example? I tried this example and changing slightly to POST a message rather than receive but no luck. I can connect to the Wifi with no issues, its just when posting the HTTP request it errors with "HTTP Error 411. The request must be chunked or have a content length". It also doesn't seem like the most clean approach but I just wan't to get something basic up and running for now to play with :) Code Example: #include #include #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h char ssid[] = SECRET_SSID; // your network SSID (name) char pass[] = SECRET_PASS; // your network password (use for WPA, or use as key for WEP) const int MKR1000_LED = 6 ; ///*** Azure IoT Hub Config ***/// //see: http://mohanp.com/ for details on getting this right if you are not sure. char hostname[] = "*****.azure-devices.net"; // host name address for your Azure IoT Hub char feeduri[] = "/devices/MKR1000/messages/events?api-version=2018-06-30"; //feed URI char authSAS[] = "SharedAccessSignature sr=******.azure-devices.net%2Fdevices%2FMKR1000&sig=*****&se=******"; ///*** Azure IoT Hub Config ***/// unsigned long lastConnectionTime = 0; const unsigned long pollingInterval = 5L * 1000L; // 5 sec polling delay, in milliseconds int status = WL_IDLE_STATUS; WiFiSSLClient client; void setup() { Serial.println("setup..."); pinMode(MKR1000_LED, OUTPUT); //check for the presence of the shield: if (WiFi.status() == WL_NO_SHIELD) { // don't continue: while (true); } // attempt to connect to Wifi network: while (status != WL_CONNECTED) { status = WiFi.begin(ssid, pass); // wait 10 seconds for connection: delay(10000); } Serial.println("Wifi connected..."); } void loop() { String response = ""; char c; ///read response if WiFi Client is available while (client.available()) { c = client.read(); response.concat(c); } if (!response.equals("")) { Serial.println(response); //if there are no messages in the IoT Hub Device queue, Azure will return 204 status code. if (response.startsWith("HTTP/1.1 204")) { //turn off onboard LED digitalWrite(MKR1000_LED, LOW); } else { //turn on onboard LED digitalWrite(MKR1000_LED, HIGH); } } // polling..if pollingInterval has passed if (millis() - lastConnectionTime > pollingInterval) { digitalWrite(MKR1000_LED, LOW); azureHttpRequest("{TEST MESSAGE!}"); } } // this method makes an HTTPS connection to the Azure IOT Hub Server: void azureHttpRequest(String data) { // close any connection before send a new request. // This will free the socket on the WiFi shield client.stop(); // if there's a successful connection: if (client.connect(hostname, 443)) { //make the GET request to the Azure IOT device feed uri client.print("POST "); //Do a GET client.print(feeduri); // On the feedURI client.println(" HTTP/1.1"); client.print("Host: "); client.println(hostname); //with hostname header client.print("Authorization: "); client.println(authSAS); //Authorization SAS token obtained from Azure IoT device explorer //client.println("Connection: close"); client.println("Content-Type: application/json"); client.println("Content-Length: " + data.length()); client.println("\r\n\r\n" + data); // note the time that the connection was made: lastConnectionTime = millis(); } else { // if you couldn't make a connection: Serial.println("connection failed"); } } Edit: I have seen that there is a full Azure IOT library with a simple HTTP example, but this also doesn't run (it gets passed the wifi connection and failing with call to azure) but this example project is fairly large and I was hoping for a simple example to build upon! https://github.com/Azure/azure-iot-arduino
Andrew
1

голосов
6

ответ
2k

Просмотры

UWP приложения для recievering сообщения от Azure IoT ступицы

Я хочу сделать UWP приложения для receivering сообщения от Azure IoT ступицы. Я нашел пример кода для консоли приемника App, но он не работает с UWP, потому что UWP не поддерживают эту референс с помощью Microsoft.ServiceBus.Messaging; Может кто-то опубликовать код UWP приложения для receivering сообщения от Azure IoT хаба?
OverClock
1

голосов
1

ответ
469

Просмотры

Unit Testing a class that uses RegistryManager C# Azure IoTHub

Я пытаюсь проверить мой класс, который использует RegistryManager общаться с IoThub. Проблема я столкнулся в том, что при создании макета класса, который наследует от RegistryManager я могу переопределить все методы ExportRegistryAsync кроме. Я получаю красную линию под переопределение и если я удалю заявление переопределения я получаю эту ошибку, когда я создаю проект: Ошибка 4 «MockObjects.MockRegistryManager» не реализует унаследовали абстрактный член «Microsoft.Azure.Devices.RegistryManager.ExportRegistryAsync (строка, строка)»тесты \ MockObjects \ MockRegistryManager.cs 9 18 Код: класс MockRegistryManager общественности: RegistryManager {частный статический Список _devices; общественный MockRegistryManager () {_devices = новый список (); } Общественного переопределение задачи OpenAsync () {певд NotImplementedException (); } ... внутренняя переопределение Task ExportRegistryAsync (строка storageAccountConnectionString, строка ИмяКонтейнера) {певд NotImplementedException (); } Внутренняя переопределение Задача ExportRegistryAsync (строка storageAccountConnectionString, строка ИмяКонтейнера, CancellationToken CancellationToken) {бросить новый NotImplementedException (); }} Есть ли лучший способ проверить класс, который использует RegistryManager? Любая помощь будет очень высоко ценится. } Внутренняя переопределение Задача ExportRegistryAsync (строка storageAccountConnectionString, строка ИмяКонтейнера, CancellationToken CancellationToken) {бросить новый NotImplementedException (); }} Есть ли лучший способ проверить класс, который использует RegistryManager? Любая помощь будет очень высоко ценится. } Внутренняя переопределение Задача ExportRegistryAsync (строка storageAccountConnectionString, строка ИмяКонтейнера, CancellationToken CancellationToken) {бросить новый NotImplementedException (); }} Есть ли лучший способ проверить класс, который использует RegistryManager? Любая помощь будет очень высоко ценится.
Reginbald
1

голосов
1

ответ
554

Просмотры

Инстанцировать DeviceClient с концентратором IoT

У меня есть консольное приложение, которая посылает команду непосредственно к Raspberry Pi через Azure IoT Hub. Это все работает отлично. Где я запутаться, хотя, на двух различных способов (возможно, больше?), Чтобы создать экземпляр DeviceClient. Пример: deviceClient = DeviceClient.Create (IOT_HUB_HOST_NAME, AuthenticationMethodFactory .CreateAuthenticationWithRegistrySymmetricKey (IOT_HUB_DEVICE, IOT_DEVICE_KEY), TransportType.Http1); или deviceClient = DeviceClient.CreateFromConnectionString (IOT_HUB_CONN_STRING); кажется, делают то же самое. Почему бы использовать один над другим? Я могу получать сообщения в любом случае.

Просмотр дополнительных вопросов

Связанные вопросы