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

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
0

голосов
0

ответ
5

Просмотры

How can a client know if it is already subscribed to a MQTT topic?

Я подписавшись на MQTT тема (в моем случае это приложение уникальный идентификатор пользователя) .Я с использованием основных услуг AWS IOT для subscription.Whenever домашний экран открывает и я подключился обратный вызов от awsConnectClient, я делаю вызов для подписки , Теперь, что происходит, если приложение получает открыть три раза он подписался на эту же тему 3 Time.now всякий раз, когда какое-либо сообщение публикации в этой topic.It полученного приложения 3 раза. Теперь то, что я хочу делать, что я хочу знать, что если этот идентификатор пользователя уже подписался с этого устройства я бы не сделать звонок для подписки снова с того же устройства. Один из подходов могут быть, если я сохраню в моем приложении, что я уже подписался на эту тему и не делаю вызов для подписки снова. но я сомневаюсь, что такой подход может быть правильным для всех scenarios.Could быть возможно, что мы могли бы вести эту логику от только на стороне сервера, если какой-либо AWS IOT апи может дать мне, что это уже подписан. весело connectClick () {Log.d (TAG, "ClientId = $ ClientId") пытаются {mqttManager.connect (clientKeyStore) {состояние, Throwable -> Log.d (TAG, "Status =" + status.toString ()) вар formattedStatus = String.Format (GetString (R.string.status_msg), status.toString ()), если (состояние == AWSIotMqttClientStatusCallback.AWSIotMqttClientStatus.Connected) {Log.i (TAG, "подписались -" + VoiceXPreference (это). rosterName) отказаться от подписки () subscribeClick (VoiceXPreference (это) .rosterName)} {runOnUiThread tv_iot_status.text = formattedStatus если (Throwable! = NULL) {Log.e (TAG, «ошибка соединения.
user3086765
1

голосов
1

ответ
60

Просмотры

Пользовательские OSK: Слушайте TextBox Фокус

Я написал пользовательскую экранную клавиатуру как UserControl, чтобы иметь больший контроль над тем, что пользователь может ввести (буквенно-цифровую / Numpad / кнопки навигации - такие вещи, как, что) и иметь больший контроль над размещением экрана во время разработки. ОСК работает путем манипулирования отметить учебы и выбор-свойство / функции текстового поля-контроль. Моя главная проблема заключается в том, чтобы найти правильный TextBox, чтобы впрыснуть текст в. Мой первый, наивный подход к регистрации каждому TextBox я хочу использовать с Control OSK вручную и использовать GotFocus / LostFocus этих зарегистрированных TextBoxes для определения активного контроля: общественного недействительного RegisterInput (TextBox текст) {если (_listeners.ContainsKey ( текст)) {_listeners.Add (текст, режимы); text.GotFocus + = Input_OnGotFocus; text.LostFocus + = Input_OnLostFocus; }} Частный аннулируются отправитель Input_OnLostFocus (объект, RoutedEventArgs RoutedEventArgs) {если (_focused == отправитель) {_focused = NULL; IsEnabled = FALSE; UpdateKeyboardMode (); //
CShark
1

голосов
0

ответ
69

Просмотры

Чтение данных из Oral B Зубная щетка - Bluetooth 4.1 с низким энергопотреблением

Сейчас я работаю над интеграцией моего Oral B зубной щетки с зачислены интеллектуальными функциями. Зубная щетка связи через Bluetooth с небольшим экраном, отображающим прожитые данными. Кроме того, можно подключить смартфон с оральным приложением б до или во время уборки, а также для отображения живых значений там. Я уже был в состоянии соединиться с помощью благородного (модуля Node.js BLE) после нажатия на кнопку Bluetooth для подключения к устройству и читать услуги и характеристики, которые также обновляют. Как только вы начинаете процесс очистки, то клиент разрывает соединение и соединение больше не возможно во время процесса очистки, но затем он снова работает. Существует SDK и API для зубной щетки, которая только для ИОС и андроид приложений. https: //developer.oralb. ком / Теперь для меня вопрос, как получить или SDK отображение живых значений во время процесса очистки? есть аутентификации или что-то подобное за что? Кто-нибудь уже имел опыт работы с подобными устройствами или с BLE устройствами? Сервис a0f0fff050474d5382084f72616c2d42 a0f0fff150474d5382084f72616c2d42 (Command) свойства чтения, записи, уведомит значение 00 | '' A0f0fff250474d5382084f72616c2d42 (данные) свойства чтения, записи значение 00000000 | '' A0f0fff350474d5382084f72616c2d42 (Auth) свойства чтения, записи значения 00 | '' A0f0fff450474d5382084f72616c2d42 (Secret) свойства чтения, записи значение 00000000 | '' Сервис a0f0ff0050474d5382084f72616c2d42 a0f0ff0150474d5382084f72616c2d42 (Handle ID) свойства прочитать значение 00000000 | «» a0f0ff0250474d5382084f72616c2d42 (Handle) Тип свойства прочитать значение 01 | '' A0f0ff0350474d5382084f72616c2d42 (User Account) свойства прочитать значение 01 | «» A0f0ff0450474d5382084f72616c2d42 (Состояние устройства) свойства чтения, уведомит значение 0200 | «» A0f0ff0550474d5382084f72616c2d42 (уровень заряда батареи) свойства чтения, уведомит значение 34 | '4' a0f0ff0650474d5382084f72616c2d42 (кнопка State) свойства чтения, уведомит значение 00000000 | «» A0f0ff0750474d5382084f72616c2d42 (Кисть Mode) свойства чтения уведомляют значение 01 | «» A0f0ff0850474d5382084f72616c2d42 (Чистки) Время свойства чтения уведомляют значение 0000 | '' A0f0ff0950474d5382084f72616c2d42 (Quadrant) свойства чтения уведомляют значение 00 | «» a0f0ff0a50474d5382084f72616c2d42 (смайлик) свойства чтения уведомляют значение 00 | «» A0f0ff0b50474d5382084f72616c2d42 (датчик давления) свойства чтения уведомляет значение 00 | '' A0f0ff0c50474d5382084f72616c2d42 (Cache) свойства чтения, записи, уведомить значение | '' Service a0f0ff2050474d5382084f72616c2d42 a0f0ff2150474d5382084f72616c2d42 (Status) свойства чтения, записи, уведомить значение 8200 | '' A0f0ff2250474d5382084f72616c2d42 (RTC) свойства чтения, записи значение 8d15ac21 | 'A0f0ff2350474d5382084f72616c2d42 (Timezone) свойства чтения, записи значение a7 | ''»A0f0ff2450474d5382084f72616c2d42 (Кисть Timer) свойства чтения, записи значения 0f | «» A0f0ff2550474d5382084f72616c2d42 (Кисть режимы) свойства чтения, записи значения 0105020403060000 | ' 'A0f0ff2650474d5382084f72616c2d42 (Quadrant Times) свойства чтения, записи значение 1e001e001e001e000000000000000000 | '' A0f0ff2750474d5382084f72616c2d42 (Tongue Time) свойства чтения, записи значения 00 | '' A0f0ff2850474d5382084f72616c2d42 (давления) свойства чтения, записи значения 03 | '' A0f0ff2950474d5382084f72616c2d42 (данные) свойства считанное значение 4ef1a721800002010000046478801d00 | ! 'Nq' дх»a0f0ff2a50474d5382084f72616c2d42 (режим полета) свойства чтения, записи значения 00 | «» a0f0ff2850474d5382084f72616c2d42 (давления) свойства чтения, записи значения 03 | '' A0f0ff2950474d5382084f72616c2d42 (данные) свойства считанное значение 4ef1a721800002010000046478801d00 | ! 'Nq' дх»a0f0ff2a50474d5382084f72616c2d42 (режим полета) свойства чтения, записи значения 00 | «» a0f0ff2850474d5382084f72616c2d42 (давления) свойства чтения, записи значения 03 | '' A0f0ff2950474d5382084f72616c2d42 (данные) свойства считанное значение 4ef1a721800002010000046478801d00 | ! 'Nq' дх»a0f0ff2a50474d5382084f72616c2d42 (режим полета) свойства чтения, записи значения 00 | «»
DorNickie
1

голосов
0

ответ
120

Просмотры

Raspberry Pi 3 Detect микрофона в томе C #

Я работаю на C # проекта Microsoft IoT Ядра, где мне нужно, чтобы обнаружить что-то вроде: если (micInVolume> = SetVolume) {DoSomething (); } Это должно было быть в режиме реального времени на Raspberry Pi 3 с внешней USB звуковой картой и только микрофон. Я посмотрел в NAudio немного, но я не думаю, что это будет работать, или это может быть просто, что я не делал это правильно, и не имеют надлежащих ссылок. Я смотрел на этот пост, но не смог получить, что работать, и я думаю, что может быть, потому что я просто не понимаю, это хорошо.
Ytgr11
1

голосов
0

ответ
141

Просмотры

Настройки SSL в RabbitMQ

Я установил RabbitMQ на моей системе со статическим IP и доменное имя, а также. Я использовал letsencrypt для создания SSL-сертификатов для RabbitMQ но RabbitMQ не работает, когда я включаю SSL порт я использовал следующие настройки конфигурации: listeners.ssl.default = 5671 ssl_options.verify = verify_peer ssl_options.fail_if_no_peer_cert = ложь ssl_options.cacertfile = ( путь к cacert.pem) ssl_options.certfile = (путь к cert.pem) ssl_options.keyfile = (путь к key.pem) есть ли какие-либо другие параметры, которые остаются или я делаю что-то неправильно?
Pranjal Kaler
1

голосов
0

ответ
64

Просмотры

IoT Край хроностоп Удален модули - Отправка в списках Модуля побратимов * BUG *

Я создал устройство IoT Hub Грань. В начале, по умолчанию $ edgeAgent и $ модули edgeHub вошли. Это хорошо. Затем я добавил «barkModule» (обратите внимание на нижний регистр B в начале) - просто тестовый модуль для воспроизведения с сообщениями о событиях d2c и DirectMethod вызовы к модулю. Позже, я удалил этот модуль и добавил новый, на этот раз с BarkModule (капитал B). Been качалки таким образом в течение недели. Я сделал это немного кода, чтобы получить список из устройств модуля близнецов (_deviceTwins это близнецы всех устройств на ступице, это в основном просто получить все модули для устройства): Еогеасп (вар _device в _deviceTwins) {вар moduleList = ждут registryManager.GetModulesOnDeviceAsync (_device.DeviceId); DeviceList.Add (новые DeviceAndModules {DeviceTwin = _device, модули = moduleList.ToList ()}); }; В своем модуле двойной список - я получаю запись для обоих BarkModule и barkModule. Даже если мое устройство только имеет $ edgeAgent, $ edgeHub и BarkModule модулей. Я даже пошел рыть в модуле близнеца $ edgeAgent, и есть тонна мета-данные истории событий вещи (серьезно, это абсурдно большое) - но нет никаких ссылок на строчном-б «barkModule» в любом месте. Как это сохранение этой информации? Почему это до сих пор показывает? Есть ли способ, что я могу удалить это? Это показывает модули: Это показывает, что есть только три: са тонны мета-данных истории событий вещи (серьезно, это абсурдно большой) - но нет никаких ссылок на строчными-б «barkModule» в любом месте. Как это сохранение этой информации? Почему это до сих пор показывает? Есть ли способ, что я могу удалить это? Это показывает модули: Это показывает, что есть только три: са тонны мета-данных истории событий вещи (серьезно, это абсурдно большой) - но нет никаких ссылок на строчными-б «barkModule» в любом месте. Как это сохранение этой информации? Почему это до сих пор показывает? Есть ли способ, что я могу удалить это? Это показывает модули: Это показывает, что есть только три:
Jason
1

голосов
0

ответ
31

Просмотры

Как общаться с IoT аппаратного устройства и API сервера

Я работаю с развитием аппаратного устройства IoT. Я делал примеры проектов в Android на фотонной частицы устройства. Который был очень простой для меня. Просто требуется 2-3 шага, чтобы соединиться с IoT устройством Теперь мой вопрос Как поставщик оборудования разрабатывать код, который я могу добавить, как SDK в моем андроида кода? Какие рамки они будут использовать для разработки кода? Я разоблачит REST API, разработанный в Spring Hibernate. Как они будут называть HTTP REST API? Будет ли сообщение было сделано с помощью JSON или MQTT? Мой клиент предложил этот сервер, который будет использоваться для API. Как я должен направлять свою поставщику оборудования, чтобы начать работу по разработке SDK? Или есть ли другой способ сделать это? Вывод: я могу развивать Android код, если SDK обеспечивается даже я могу выставить API Rest, который был разработан в Spring, Hibernate. Но, Как разработчик аппаратных средств будет разрабатывать SDK и может использовать мою открытую REST API для хранения данных Этого проект хранит данные уровня бака для воды общества. Таким образом, участники могут проверить уровень емкости для воды на мобильном телефоне, когда они хотят. Заранее спасибо!!!
AmitCharkha
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

голосов
0

ответ
24

Просмотры

Android приложение, которое добавляет свойство устройства, а затем можно разделить этот конфигурационный файл другого пользователя

Вот моя проблема, я сделал приложение для настройки домашнего устройства IoT и сохраняю эти свойства устройства на простом SharedPreferences файл, что уже сделано, но другая цель состоит в том, чтобы дать это приложение возможности «Пригласить» другой пользователь с помощью это приложение так, что пользователь может контролировать это уЖЕ устройство сконфигурировано ... у меня возникли проблемы с поиском конкретного имени этого «особенности», в этот момент я думал просто добавляющий capabily пиршества этого файла в других приложение, как «Share My Devices», и пара телефонов, так что другие получают файл с уже настроенными устройствами. Но я полагаю, более уместно сценарий «Пригласить пользователя» для управления устройствами, и когда это делать, приложение получает уведомление о принятии, но ...
Steve
1

голосов
2

ответ
136

Просмотры

MQTT-in-iOS - mqttDidDisconnect: Socket closed by remote peer

Я попытался реализации MQTT в ИО, но я получаю сообщение об ошибке в публикации mqttDidDisconnect: «гнездо закрыто удаленным компьютером». Является ли эта проблема на сервере или отправив запрос? deletegate код FUNC mqttDidPing (_ MQTT: CocoaMQTT) {Print ( "mqttDidPing")} функ mqttDidReceivePong (_ MQTT: CocoaMQTT) {Print ( "mqttDidReceivePong")} функ MQTT (_ MQTT: CocoaMQTT, didPublishAck ID: UInt16) {печать ( "didPublishAck: \ (идентификатор)")} функ MQTT (_ MQTT: CocoaMQTT, didPublishComplete ID: UInt16) {Print ( "didPublishComplete: \ (идентификатор)")} функ MQTT (_ MQTT: CocoaMQTT, didSubscribeTopic тема: String) { печать ( "didSubscribeTopic: \ (тема)")} функ MQTT (_ MQTT: CocoaMQTT, didUnsubscribeTopic тема: String) {Print ( "didUnsubscribeTopic: \ (тема)"
Adam Kaylin
1

голосов
0

ответ
29

Просмотры

Как отправить предупреждающее сообщение только один раз, когда температура устройства была больше, чем 25 или менее 19 с помощью узла JS

Вот код, но я до сих пор не могу понять, как сделать это может отправить только одно сообщение времени: если (температура> 25) {// для отправки сообщения на адрес электронной почты вар mailOptions = {из: «отправителя @ gmail.com. ком», чтобы:„[email protected]“, при условии:„Отправка электронной почты с помощью Node.js“, текст:„устройство с темой“+ тема +„была выше, чем температура 25, которая“+ температура }; transporter.sendMail (mailOptions, функция (ошибка, информация) {если (ошибка) {console.log (ошибка);} еще {console.log ( 'отправлено Email:' + info.response);}}); } Иначе, если (температура {если (ошибка) {бросок ошибки;} иначе, если (response.messages [0] .status = '0') {консоль!. Ошибка (ответ); бросок «Nexmo вернулся ненулевой статус»; } Еще {console.log (ответ); }}); } Ситуация такова, что когда MQTT опубликовать тему с температурой, которая более чем 25 он будет посылать уведомительное сообщение электронной почты или номер телефона, но это произошло только одно время, которое означает, что температура в следующий раз опубликовать в MQTT брокера, если это больше, чем 25 не будет посылать снова сообщение до тех пор, пока температура не меньше 19, то он будет посылать снова по электронной почте сообщение с уведомлением и тот же это произошло только один раз. Пожалуйста, помогите, спасибо. } Ситуация такова, что когда MQTT опубликовать тему с температурой, которая более чем 25 он будет посылать уведомительное сообщение электронной почты или номер телефона, но это произошло только одно время, которое означает, что температура в следующий раз опубликовать в MQTT брокера, если это больше, чем 25 не будет посылать снова сообщение до тех пор, пока температура не меньше 19, то он будет посылать снова по электронной почте сообщение с уведомлением и тот же это произошло только один раз. Пожалуйста, помогите, спасибо. } Ситуация такова, что когда MQTT опубликовать тему с температурой, которая более чем 25 он будет посылать уведомительное сообщение электронной почты или номер телефона, но это произошло только одно время, которое означает, что температура в следующий раз опубликовать в MQTT брокера, если это больше, чем 25 не будет посылать снова сообщение до тех пор, пока температура не меньше 19, то он будет посылать снова по электронной почте сообщение с уведомлением и тот же это произошло только один раз. Пожалуйста, помогите, спасибо.
johnhour
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

голосов
1

ответ
142

Просмотры

RaspberryPi AWS - проблемы CERT ИТН

Я пытаюсь соединиться от моего RaspPi к AWS IoT. Я получаю информацию, как показано ниже. «Не удалось проверить сертификат сервера. Либо он является недействительным, или вы не установили ca_file или ca_path соответствующее значение.» Мои настройки: #define AWS_IOT_MQTT_HOST "xxxx.iot.us-west-2.amazonaws.com" #define AWS_IOT_MQTT_PORT 443 #define AWS_IOT_MQTT_CLIENT_ID "RaspberryPi" #define AWS_IOT_MY_THING_NAME "RaspberryPi" #define AWS_IOT_ROOT_CA_FILENAME "AmazonRootCA2.pem" #define AWS_IOT_CERTIFICATE_FILENAME " ххх-certificate.pem.crt»#define AWS_IOT_PRIVATE_KEY_FILENAME„ххх-private.pem.key“Я не знаю, какой ROOTCA я должен поставить и где его найти. Когда я создаю сертификаты ВГД у меня есть две клавиши (Prv / PUB) и "
marcinwal
1

голосов
2

ответ
172

Просмотры

AWS IoT Правило - Обновление нескольких столбцов в DynamoDB

Я был в состоянии использовать документацию AWS, чтобы вставить сообщение MQTT в один столбец в таблице. Я хотел бы иметь возможность обновлять (не вставлять) несколько столбцов в таблице. Я использовал действие DynamoDbv2 в моем правиле IoT, и я изменил IAM роль UpdateItem, но ничего не происходит. Есть ли способ, чтобы увидеть, где / когда эти ошибки происходя? Должен ли я создать функцию лямбда, чтобы справиться с этим, а? Есть ли пример этого? Благодарю.
Josh Field
1

голосов
1

ответ
326

Просмотры

C# Sending value from WebSocket Server Thread to Main()

I am trying to write a program to control home automation devices. This involves a WebSocket server that runs infinitely in a background thread listening for clients. The client sends JSON packets that contain settings. When the server gets a JSON packet, I want it to read and change any settings as needed in the Main() I have a working WebSocket server and I have tried to use the PropertyChangedEvent but it never seems to see the handler. I suspect this occurs because they exist in different threads. I have attached my code below as well as the example I have been working off of. There is a chance I am way off the mark here but this is the best I could find with the reading I have been doing. Any help would be appreciated! This is the Main(): using System; using System.Threading; using System.ComponentModel; namespace HomeAutomation { class Controller { static void Main(string[] args) { bool passGo = false; Thread SocketThread = new Thread(Socket.WebSocketServer); SocketThread.IsBackground = true; SocketThread.Start(); //This line lets the user know the Socket Thread is running in the background Console.WriteLine("Socket Thread is running in the background: {0}", SocketThread.IsBackground); do { char input = Console.ReadKey().KeyChar; if (input == 'x') { passGo = true; } } while (passGo == false); Console.ReadLine(); /* Settings s = new Settings(); s.PropertyChanged += new PropertyChangedEventHandler(S_PropertyChanged); while (true) { string str = Console.ReadLine(); s.State = str; }*/ } public static void S_PropertyChanged(object sender, PropertyChangedEventArgs e) { Settings RecSettings = (Settings)sender; Console.WriteLine("The {0} has changed to {1}", e.PropertyName, RecSettings.State); } } public class Settings : INotifyPropertyChanged //The Class Object 'Settings' is used to recieve the variable(s) from the client software { #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyChanged; #endregion string state = string.Empty; public string State { get { return state; } set { state = value; if (PropertyChanged != null) { PropertyChanged(this, new PropertyChangedEventArgs("State")); Console.WriteLine("Event has been called"); } } } } } This is my webSocket: using System; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading; using Newtonsoft.Json; namespace HomeAutomation { class Socket { public static void WebSocketServer() { //Declaring variables used in the program IPAddress ipAddress = Dns.GetHostEntry("localhost").AddressList[0]; TcpListener server = new TcpListener(ipAddress, 8080); try { //Starts the server server.Start(); Console.WriteLine("Starting Server..."); } catch (Exception ex) { //If the server cannot start the error will be caught and printed to console Console.WriteLine(ex.ToString()); Console.ReadLine(); } while (true) { TcpClient client = server.AcceptTcpClient(); MakeNewConnection(client); } } public static void MakeNewConnection(TcpClient client) { var thread = new Thread(NewClient); thread.Start(client); } public static void NewClient(object data) { var client = (TcpClient)data; Settings RecSettings = new Settings(); //Lets you know the address of the connected client string address = client.Client.AddressFamily.ToString(); Console.WriteLine("{0} has connected!", address); //creates a network stream for information to flow through NetworkStream stream = client.GetStream(); byte[] receivedBuffer = new byte[100]; stream.Read(receivedBuffer, 0, receivedBuffer.Length); StringBuilder msg = new StringBuilder(); foreach (byte b in receivedBuffer) { if (b.Equals(00)) { break; } else { msg.Append(Convert.ToChar(b).ToString()); } } Console.WriteLine("Client Says: {0}", msg.ToString()); RecSettings = JsonConvert.DeserializeObject(msg.ToString()); Console.WriteLine(RecSettings.State.ToString()); RecSettings.State = "Off"; int byteCount = Encoding.ASCII.GetByteCount("Thank you"); byte[] sendData = new byte[byteCount]; sendData = Encoding.ASCII.GetBytes("Thank you"); stream.Write(sendData, 0, sendData.Length); } } } This is the event handler example I am using: using System; using System.ComponentModel; namespace HomeAutomation { class Program { static void Main(string[] args) { TestClass sample = new TestClass(); sample.PropertyChanged += new PropertyChangedEventHandler(sample_PropertyChanged); while (true) { string str = Console.ReadLine(); int val; if (int.TryParse(str, out val)) sample.TestValue = val; } } static void sample_PropertyChanged(object sender, PropertyChangedEventArgs e) { TestClass sample = (TestClass)sender; /* * Use expression behind if you have more the one property instead sample.TestValue * typeof(TestClass).GetProperty(e.PropertyName).GetValue(sample, null)*/ Console.WriteLine("Value of property {0} was changed! New value is {1}", e.PropertyName, sample.TestValue); } } public class TestClass : INotifyPropertyChanged { #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyChanged; #endregion int testValue = 0; public int TestValue { get { return testValue; } set { testValue = value; if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("TestValue")); } } } }
Nile Ellis
1

голосов
0

ответ
81

Просмотры

SerialDevice метод Dispose не работает в некоторых случаях, Windows 10 ВГД

Я разработал простой UWP приложения для связи через последовательный порт. Я использую класс SerialDevice для общения. Перед чтением каких-либо данных из последовательного порта, если я распоряжаюсь объект SerialDevice это Dispose методы отлично работает, как только я начинаю чтение данных через последовательный порт, а затем, если я хочу, чтобы отключить к этому устройству и я распоряжаюсь объект SerialDevice, он застрял в Dispose метод. Ниже приведены мои функции, которые я использую для чтения, записи и отсоединять: общественный класс UARTCommunicationProvider {SerialDevice _serialPort; частный DataReader _serialPortReader; частный DataWriter _serialPortWriter; частный CancellationTokenSource _serialPortReadWriteCTS = NULL; общественного UARTCommunicationProvider () {_serialPortReadWriteCTS = новый CancellationTokenSource (); } Общественных асинхронной Task ConnectAsync (строка comportId) {_serialPort = ждут SerialDevice.FromIdAsync (comportId); если (_serialPort! = NULL) {_serialPort.WriteTimeout = TimeSpan.FromMilliseconds (50); _serialPort.ReadTimeout = TimeSpan.FromMilliseconds (50); _serialPort.BaudRate = 9600; _serialPort.Parity = SerialParity.None; _serialPort.StopBits = SerialStopBitCount.One; _serialPort.DataBits = 8; _serialPort.Handshake = SerialHandshake.None; _serialPortReader = новый DataReader (_serialPort.InputStream); // Установить InputStreamOptions для завершения асинхронной операции чтения, когда один или несколько байт доступно _serialPortReader.InputStreamOptions = InputStreamOptions.Partial; _serialPortWriter = новый DataWriter (_serialPort.OutputStream); возвращает истину; } Еще {вернуться ложным; }} Общественного асинхронный недействительный CollectData () {вар команда = "FL 1 \ п"; в то время как (истинно) {ответ вар = ждут ResponseForCommandAsync (команда); Debug.WriteLine (ответ)}} общественный недействительный Disconnect () {попробуйте {_serialPort .Dispose (?); // Застрял в этот момент, когда я пытаюсь избавиться после прочтения нескольких блоков данных из последовательного порта _serialPortReadWriteCTS.Cancel (); _serialPort = NULL; } Задвижка (Исключение ех) {выбросить; }} Общественного асинхронной Task ResponseForCommandAsync (командная строка) {строка ответ = String.Empty; если (_serialPort! = NULL) {// загружает текст из SendText ввода текстового поля объекта _serialPortWriter.WriteString dataWriter (команды); UInt32 bytesWritten = ждут _serialPortWriter.StoreAsync (); если (bytesWritten> 0) {ByteCount = ByteCount + (INT) bytesWritten; _logger.WriteLine ( "Отправленные данные успешно", AEIoTCommon.Common.LoggingType.Verbose); ответ = ждут ReadAsync (); }} Возвращать ответ; } Частная асинхронной Task ReadAsync () {строка valueRead = NULL; Задача loadAsyncTask; UINT ReadBufferLength = 1024; попробуйте {CancellationToken CancellationToken = _serialPortReadWriteCTS.Token; // Если отмена задачи было предложено выполнить cancellationToken.ThrowIfCancellationRequested (); используя (Var childCancellationTokenSource = новый CancellationTokenSource (3000)) {// Создать объект задачи ждать данных по serialPort.InputStream loadAsyncTask = _serialPortReader.LoadAsync (ReadBufferLength) .AsTask (childCancellationTokenSource.Token); // Запуск задачи и ждать UInt32 BytesRead = ждут loadAsyncTask; если (BytesRead> 0) {// байт [] буфера = новый байт [BytesRead]; Значение вар = _serialPortReader.ReadString (BytesRead); valueRead = значение; }}} Задвижка (TaskCanceledException ех) {Отключить (); } Вернуть valueRead; }}
user224332
1

голосов
1

ответ
275

Просмотры

Как передать сообщение от углового узла шаблона в узле красный

Я пытаюсь передать входное значение текстового поля, нажав на кнопку вар ч = this.scope.myHot; // переменная с = {{}} холодной; значение вар = H; // или перезаписать значение в функции обратного вызова ... this.scope.action = функция () {возвращаемое значение; } Горячая: Cold: Нажмите меня
E.day
1

голосов
0

ответ
77

Просмотры

Windows Remote Event Arduino StringMessageReceived

Хорошо, я устал прибегая к помощи. Поэтому я работаю над проектом, который использует Windows Remote Arduino. Я только начинаю, так что я нахожусь в «просто взломать его вместе сцену.» Arduino работает стандартный firmata и я звоню функцию SYSEX которая возвращает некоторые данные из некоторых датчиков. Я подписался на StringMessageReceived события, но то, что я вывод, что событие не всегда стрельбы. Я «должен» получать данные каждый раз, когда я отправить команду SYSEX. Я нашел закрытый вопрос на узловом сайте мерзавца для дистанционного подключения, который говорит, чтобы вызвать Flush () на firmata объекта, который я делаю, но я не получаю 1 1 ответ. Вот пример вывода я получаю. Устройство Ready Event Timer Уволен Tick! Таймер Tick! {\ "TEMP1 \": 21,50, \ "рН \": 0,000} Таймер Tick! {\ "TEMP1 \" : 21,50, \ "рН \": 0,000} Таймер Tick! Таймер Tick! Таймер Tick! {\ "TEMP1 \": 21,50, \ "рН \": 0,000} Таймер Tick! Таймер Tick! Таймер Tick! Таймер Tick! {\ "TEMP1 \": 21,50, \ "рН \": 0,000} Таймер Tick! Таймер Tick! Таймер Tick! Таймер Tick! {\ "TEMP1 \": 21,50, \ "рН \": 0,000} {\ "TEMP1 \": 21,50, \ "рН \": 0,000} Таймер Tick! Таймер Tick! Таймер Tick! {\ "TEMP1 \": 21,50, \ "рН \": 0,000} Таймер Tick! {\ "TEMP1 \": 21,50, \ "рН \": 0,000} Таймер Tick! Таймер Tick! Таймер Tick! {\ «TEMP1 \»: 21,50, \ «рН \»: 0,000}.»Я знаю, что Arduino становится все мои команды, потому что я могу видеть светодиоды на одном из моих датчиков обработки команды Вот мой UWP код общественного опечатаны частично. класс MainPage: Page {IStream соединение; RemoteDevice Arduino; UwpFirmata firmata; DispatcherTimer таймер; общественного MainPage () {this.InitializeComponent (); } Частная пустота btnConnect_Click (объект отправителя, RoutedEventArgs е) {Соединение = Новый UsbSerial ( "VID_0403", "PID_6001"); firmata = новый UwpFirmata (); Arduino = новый RemoteDevice (firmata); Таймер = новый DispatcherTimer (); firmata.begin (соединение); connection.begin (57600, SerialConfig.SERIAL_8N1); arduino.DeviceReady + = Настройка; arduino.DeviceConnectionFailed + = ConnectFailed; arduino.StringMessageReceived + = StringRecieved; timer.Interval = новый TimeSpan (0, 0, 5); timer.Tick + = timerTick; timer.Start (); } Частная пустота timerTick (объект отправителя, объект е) {Windows.ApplicationModel.Core. CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, () => {lblPhData.Text + = "Таймер Tick! \ П";}); байт PH_QUERY = 0x44; firmata.sendSysex (PH_QUERY, новый байт [] {} .AsBuffer ()); firmata.flush (); } Частная пустота StringRecieved (строка сообщения) {Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, () => {lblPhData.Text + = сообщение + «\ п «;}); } Общественного недействительными ConnectFailed (String сообщение) {Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, () => {LblPhData.Text + = сообщение; }); } Общественного недействительными Setup () {Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, () => {lblPhData.Text + = «Device Ready Event Уволен \ п «;}); } Частная пустота btnGetData_Click (объект отправителя, RoutedEventArgs е) {Байт PH_QUERY = 0x44; firmata.sendSysex (PH_QUERY, новый байт [] {} .AsBuffer ()); firmata.flush (); }} Я должен быть что-то действительно очень просто отсутствует. RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, () => {lblPhData.Text + = "Device Ready Event Уволен \ п";}); } Частная пустота btnGetData_Click (объект отправителя, RoutedEventArgs е) {Байт PH_QUERY = 0x44; firmata.sendSysex (PH_QUERY, новый байт [] {} .AsBuffer ()); firmata.flush (); }} Я должен быть что-то действительно очень просто отсутствует. RunAsync (Windows.UI.Core.CoreDispatcherPriority.Normal, () => {lblPhData.Text + = "Device Ready Event Уволен \ п";}); } Частная пустота btnGetData_Click (объект отправителя, RoutedEventArgs е) {Байт PH_QUERY = 0x44; firmata.sendSysex (PH_QUERY, новый байт [] {} .AsBuffer ()); firmata.flush (); }} Я должен быть что-то действительно очень просто отсутствует.
bjbowen4
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
1

голосов
1

ответ
84

Просмотры

AWS IoT исключает переиздание от одного к другому thingShadow

У меня есть два Node.js приложений, один работает в RPI (устройство1), а другой на экземпляре AWS EC2 (устройство2). device1 использует thingShadow класса и обновление на регулярной основе статус на тему $ AWS / вещи / DEVICE1 / теневом / обновление. устройство2 использует класс устройств и выписывает на тему $ AWS / вещи / устройство2 / тени / обновление. Я создал AWS IoT правила переиздать от $ AWS / вещей / device1 / тень Темы / обновления до $ AWS / вещей / устройство2 / тень / обновление темы: SELECT * FROM '$ AWS / вещей / device1 / тень / обновления' и публикую до $ AWS / вещи / устройство2 / тень / обновление Когда device1 обновления $ AWS / вещи / device1 / тени / обновление можно отслеживать сообщения с использованием программного обеспечения, как MQTT.fx, однако абсолютно ничего не отправляется $ AWS / вещи / устройство2 / тень / обновление. Что может быть не так?
Paulo S. Abreu
1

голосов
1

ответ
47

Просмотры

Передний план процесс зависает при запуске, в ожидании доступа к IP-адресам блокируется брандмауэром

У нас есть устройство IoT ядра с небольшим дисплеем работает три процесса. Устройство находится за межсетевым экраном и имеют только ограниченный доступ к Интернету. Два фоновые процессы выполняются в порядке прямо от запуска, но на переднем плане процесс зависает, отображение экрана-заставки с поперечным символом. Если открыть брандмауэр процесс запускается, как это предполагается. «Зависание» происходит до того, как пользовательский код введен, мы швы, чтобы быть в каком-то начальной загрузке части приложения. Когда мы смотрим на IP-адресе, что устройство он пытается получить доступ они все адреса Microsoft, и большинство из них связаны с обновлением окна. Какова природа этого повесить? Является ли проверка лицензии? Как мы можем предотвратить процесс переднего плана от подвешивания, не открывая брандмауэр? Мы пытались открытия для всех обновлений окон Dns записи, Windows 10 использует, но этот конкретный брандмауэр не позволяет подстановочные DNS в его правилах. Приложение ясно UWP.
Fknut
1

голосов
1

ответ
63

Просмотры

UWP как отличить устройство ввода

Я ищу способ отличить, откуда пришел вход (с какого устройства, например, клавиатуру, сканер штрих-кодов, магнитных карт сканера. Что-то вроде этого). Я думал, что будет кусок пирога из-за DeviceId, но, к сожалению, KeyEventArgs.DeviceId, KeyRoutedEventArgs.DeviceId, Windows.UI.Core.CoreWindow.GetForCurrentThread (). GetCurrentKeyEventDeviceId () не работают. Все, что я упомянул возвращает пустую строку (возможно, я что-то не хватает?). Я искал другое решение, но ничего не мог найти.
Bardr
1

голосов
1

ответ
118

Просмотры

Linux код в пользовательском пространстве для связи между правлением Linux и каждый узел работает Contiki УДП отправителе пример кода

Я использую Contiki создать продукт IoT с участием нескольких узлов на основе STM32L152 и платы Linux. У меня есть один встроенная плата Linux (на основе iMX6), который получает данные из узлов, посылает к Интернету через сотовые и 10 узлов, которые воспринимают различные параметры окружающей среды и доставить на борт Linux. доска Linux имеет сопроцессор, который работает граница / край код маршрутизатора, UART2 линия этого сопроцессора подключен к плате Linux. Я использую Contiki инструмент tunslip6 создать интерфейс tun0, я могу пинговать каждый узел. Для того, чтобы вопрос более понятно, я объясню установку оборудования и шаг, который я выполнил. Я бег UDP пример отправитель кода (STM32CubeExpansion_SUBG1_V3.0.0 / Проектов / Multi / Применение / Contiki / Udp-отправитель) на STM32L152RE-NÚCLEO плате, которая имеет й-нуклео-ids01a5 (модуль SPSGRF-915) доску сидит на вершине. На второй аналогичной установки оборудования, я бегу Border-маршрутизатор пример кода. кабель USB подключен к моей коробке Linux. после того, как делать это; Судо ./tunslip6 -s / DEV / ttyACM0 аааа :: 1/64, я могу видеть соседний узел на веб-странице, я могу ping6 каждый узел тоже. Я хочу написать код приложения на Linux для приема и передачи данных на каждом узле, я застрял в этой точке. Суд ./tunslip6 -s / DEV / ttyACM0 аааа :: 1/64 ******** SLIP началась `` / Dev / ttyACM0 '' открыл чан устройства `` / DEV / tun0 '' Ifconfig tun0 INET ` hostname` МТУ 1500 до Ifconfig tun0 добавить аааа :: 1/64 Ifconfig tun0 добавить fe80 :: 0: 0: 0: 1/64 Ifconfig tun0 tun0 Ссылка ENCAP: UNSPEC HWaddr 00-00-00-00-00-00-00 -00-00-00-00- 00-00-00-00-00 инет адр: 127.0.1.1 PtP: 127.0.1.1 Mask: 255.255.255.255 inet6 адр: fe80 :: 1/64 Область применения: Ссылка inet6 адр: AAAA :: / 64 DEV tun0 прото ядро ​​метрики 256 прив среда Это то, что я вижу на веб-странице, у меня есть один сосед узел Я могу свистеть это. ping6 AAAA :: fdff: d2fa: 2d05 PING AAAA :: fdff: d2fa: 2d05 (AAAA :: fdff: d2fa: 2d05) байт данных 56 64 байта из AAAA :: fdff: d2fa: 2d05: icmp_seq = 1 ТТЛ = 63 раз = 130 мс 64 байтов от AAAA :: fdff: d2fa: 2d05: icmp_seq = 2 = ТТЛ 63 раз = 131 мс 64 байтов от AAAA :: fdff: d2fa: 2d05: icmp_seq = 3 = 63 ТТЛ время = 130 мс 64 байт из AAAA :: fdff: d2fa: 2d05: icmp_seq = 4 TTL = 63 время = 130 мс 64 байтов от AAAA :: fdff: d2fa: 2d05: icmp_seq = 6 = ТТЛ 63 раз = 130 мс 64 байтов от AAAA :: fdff: d2fa : 2d05: icmp_seq = 7 = ТТЛ 63 раз = 130 мс 64 байтов от AAAA :: fdff: d2fa: 2d05: icmp_seq = 8 = 63 ТТЛ время = 131 мс ^ C --- AAAA :: fdff: d2fa: 2d05 пинг статистика --- 8 пакетов, передаваемых, 7 получали, 12% потери пакетов, время 7040ms RTT мин / ср / макс / mdev = 130,681 / 131,068 / 131,863 / 0. 555 мс Я не эксперт в области сетевых и программированием сокетов, я написал код, который я нашел в Интернете и пытался. Я пытался что-то вроде этого; импорт сокет UDP_IP = "аааа :: fdff: d2fa: 2d05" UDP_PORT = 1234 печать "UDP целевой IP:" UDP_IP печать "UDP порт назначения:" UDP_PORT носка = socket.socket (socket.AF_INET6, socket.SOCK_DGRAM) # UDP sock.connect ((UDP_IP, UDP_PORT)), а Истинные: данные = sock.recv (1024) печать «Полученное», магнезии (данные) Вопрос: в Linux пользовательском пространстве, мой коллега хочет написать код приложения, который может читать и писать каждый узел (в данном случае AAAA :: fdff: d2fa: 2d05), как мы можем достичь этого? На плате микроконтроллера я могу читать и писать с двумя узлами, но не в Linux пространстве. Пожалуйста, помогите мне, как я могу читать и писать данные из Linux в пользовательском пространстве каждого узла? Если это возможно, пожалуйста, поделитесь некоторые примеры кода. Спасибо! Обновление - Я пытался общаться между Linux хостом и узлом с другом, например Contiki, Contiki / примеры / ipv6 / RPL-УДП / УДФ-client.c и имел успех, я был в состоянии получить данные от узла. Мой питон код; импорт сокет, структура UDP_LOCAL_IP = 'аааа :: 1' UDP_LOCAL_PORT = 5678 UDP_REMOTE_IP = 'fe80 :: fdff: d2fa: 2d05' UDP_REMOTE_PORT = 8765 попытка: socket_rx = socket.socket (socket.AF_INET6, socket.SOCK_DGRAM) socket_rx.setsockopt ( socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) socket_rx.bind ((UDP_LOCAL_IP, UDP_LOCAL_PORT)), за исключением Exception: печать "ОШИБКА: сервер Port Binding Failed" печать 'сервер UDP готов:% s' % UDP_LOCAL_PORT печати, а Истинных: данные, адр = socket_rx.
Arya
1

голосов
0

ответ
40

Просмотры

Узел JavaScript Backend Отправка данных из MySQLDb в ESP8266

Я строил лампу IoT, что я хочу, чтобы иметь возможность выключить и включить с моим телефоном. Я работаю код для загрузки данных из ESP 8266 в моем заднем конце -> моей базу данных MySQL PhpMyAdmin. Но когда я пытаюсь отправить значения на устройство не будет работать, если я использую какую-то con.query ( «SELECT * FROM переключатель», функция (ERR, результат) {}. Это не работает с .then и отправить данные из него либо см комментариев ниже (1 работа, 2-3 не) я пробовал со многими вещами бассейна, как вы видите ниже среди них Const = выразить требует ( «экспресса»),... константный маршрутизатор = экспресс (); вар MySQL = требуется ( "MySQL"); вар кон = mysql.createConnection ({хоста: "локальный", пользователь: "корень", пароль: "", база данных: "свет"}); уаг бассейн = mysql.createPool ({connectionLimit: 100, ConnectTimeout: +500000, acquireTimeout: +500000, queueLimit: 30, ведущий: 'локальный' пользователь: 'корень', пароль: '', базы данных: 'свет', multipleStatements: правда,}); con.connect (функция (ERR) {если (ERR) бросить ERR;}); router.get ( '/', (REQ, Рез, следующий) => {// res.send ( "привет"); // 1 РАБОТА уага GetLight = функция () {вернуть новый Promise (функцию (решение, отклонить) {con.query ( "SELECT * FROM переключатель", функция (ERR, результат) {// res.send ( "Привет"); // 2 не работают, если (ERR) {возвращение отвергают (ERR);} еще {возвращение решения (результат);}});});} GetLight (), а затем (Resultat => {// Res.. Статус (200) .json (Resultat); // 3 не работают}) поймать (ERR => {console.log (ERR); res.status (500) .json ({ошибка: ERR});.}); });
user3725569
1

голосов
0

ответ
53

Просмотры

Правильная последовательность AT-команды для UDP дейтаграммы отправки

Не могли бы вы помочь устранить мое замешательство? Читаю AT команд инструкции для моего SIM800L модуля, все понятно в рамках одной команды. Но не ясно, какая последовательность лучше при передаче пакета UDP. Так, я знаю, что порядок команд выглядит следующим образом: AT + CIICR Воспитывает беспроводное соединение AT + CIFSR Получить локальный IP-адрес AT + CIPSTART устанавливает соединение с сервером. AT + CIPSEND Посылает данные при установлении соединения. AT + CIPCLOSE ОК, но мне нужно посылать датаграммы времени до времени. Скажем, период от нескольких минут до часа. Я вижу, что AT + CIICR может вернуть УЖЕ СВЯЗАННЫЙ для последующих вызовов, и я предполагаю, что я не должен называть его более чем один раз. Таким образом, вопрос: какая последовательность должна быть использована для следующих дейтаграмм ?: 1) AT + CIPSTART AT + CIPSEND AT + CIPCLOSE или просто: 2) AT + CIPSEND и AT + CIPCLOSE где-то перед модемом выключения. Есть ли какое-то время к проживанию АТ + CIPSTART состояния? Что такое лучшая практика?
eugene-nikolaev
1

голосов
0

ответ
119

Просмотры

Pymodbus получать адрес ведомого устройства

Я работаю над проектом, в котором я, соединяющей две коробки MOXA с малиновым пи. Я использую pymodbus для подключения к устройству, и некоторые светодиоды соединены так, что я в состоянии написать на катушку и зажгите их. Я использую этот код: импорт импорта во время регистрации logging.basicConfig () Вход = logging.getLogger () log.setLevel (logging.DEBUG) от pymodbus.client.sync импорта ModbusTcpClient как ModbusClient клиента = ModbusClient ( 'хххх', порт = 502) client.connect () client.write_coil (2, True, единица = 1) client.write_coil (2, False, единица = 1) Выдается светодиод включения и выключения, и если я увеличиваю первый номер загорается следующий и т.д. Тем не менее, проблема заключается в том, что я не могу получить доступ к аппарату подчиненного и его катушки. В панели администратора я проверил «Включить Modbus / TCP Подчиненный Протокол» но я не единичный идентификатор, ни адрес для подчиненного устройства. Ведомого подключается к ведущему через сетевой кабель, и мастер подключен к сети через другой сетевой кабель. Я гугл моих мозгов, но не могу найти, где достать ID?
user2868900
1

голосов
0

ответ
21

Просмотры

Connect fails from paho to AWS

Я пытаюсь подключиться к АМС с использованием Pāho MQTT C библиотеки. Я правильно настроить мой AWS вещь и сертификаты. Я тестировал его публикации с использованием mosquitto и инструментов MQTTFx. Я попытался картирование подключить URL, файлы и ключи сертификатов для параметров, необходимых MQTTClient.ssl., Но подключения вызова держит неудачу. Я не могу отправить весь код здесь, так что я буду просто опубликовать соответствующие биты. #define АДРЕС "SSL: //xxxxxxxxxxxxxxxx-2.amazonaws.com: 8883" #define ClientId "testclient" #define TOPIC_REQ "REQ / 16000393" // это тема, я подписавшись на AWS стороне (публикации от клиента ноутбук) ... #define CRT_FILE "./certificate.pem.crt" #define KEY_FILE "./private.pem.key" #define CA_FILE "./rootCA.pem" ... ИНТ главный (интермедиат ARGC, символ * ARGV []) {MQTTClient клиент; MQTTClient_connectOptions conn_opts = MQTTClient_connectOptions_initializer; MQTTClient_message pubmsg = MQTTClient_message_initializer; MQTTClient_deliveryToken маркер; MQTTClient_SSLOptions sslopts = MQTTClient_SSLOptions_initializer; INT гс; ИНТ ч; conn_opts.ssl = & sslopts; conn_opts.ssl-> = CRT_FILE доверенное хранилище; conn_opts.ssl-> KeyStore = CA_FILE; conn_opts.ssl-> PrivateKey = KEY_FILE; conn_opts.ssl-> проверить = 1; MQTTClient_create (& клиент, АДРЕС, ClientID, MQTTCLIENT_PERSISTENCE_NONE, NULL); conn_opts.keepAliveInterval = 20; conn_opts.cleansession = 1; MQTTClient_setCallbacks (клиент, NULL, connlost, msgarrvd, доставлен); если ((гс = MQTTClient_connect (клиент, и conn_opts))! = MQTTCLIENT_SUCCESS) {Е ( "Не удалось подключиться, код возврата% d \ N", гс); Выход (EXIT_FAILURE); } ... Связь держит неудачу. Пожалуйста, помогите! Я из идей.
Aashish Sharma
1

голосов
0

ответ
58

Просмотры

GrovePi / Не удается найти модуль «i2c-автобус»

Я хотел бы использовать Node-красный на моем RaspberryPi B 3+ с GrovePi, но я получаю то же сообщение об ошибке снова каждый раз, и снова. [Узел-красно-вно-grovepi / grovepi] Ошибка: Не удается найти модуль «i2c шины» i2c включена в raspi-конфигурации и у меня есть все, что установлено, что я прочитал на узле Red / Configuration RPI. Спасибо всем!
Elliot
1

голосов
0

ответ
69

Просмотры

Правильный способ реализации петли infinte в Python3

Я новичок в кодирование питона и еще учусь, так что, скорее всего, это будет глупым вопросом для многих. Но то, что я ищу, логика, а не код. Мой сценарий: У меня есть датчик IoT, который будет посылать мне данные через последовательный порт, как JSON файлы на регулярные промежутки времени. Файл всегда будет таким же именем. Сейчас я пишу питон скрипт, чтобы прочитать этот файл JSON в бесконечном цикле. Идея заключается в том, что если нет данных в формате JSON, то цикл должен просто сломать и отправить мне сообщение. В противном случае, просто разобрать словарь. Я написал его, как это с попыткой и кроме. Защиту readDataInLoop (Я,): в то время как True: попробуйте: # Чтение JSON с открытым ( 'dummyzigbee.json') как F: данные = json.load (е) # Проверка данных: Если данные пусто, выход из цикла с сообщением об ошибке, если не данные: печать ( "Error !! Нет данных получил ...") печать ( "Conenction потерял в {}" .format (time.asctime (time.localtime (time.time ())) )) перерыв еще: # Если данные получили затем разобрать self.parseData данных (данные), за исключением: передать # Дайте отдохнуть в процессор time.sleep (1) Это, кажется, работает, но я искал эффективным образом. Я не уверен, если это хороший подход или плохой подход. время ())))) перерыв остальное: # Если данные получили затем разобрать self.parseData данных (данные), за исключением: передать # Дайте отдохнуть в процессор time.sleep (1) Это похоже на работу, но я ищу эффективным способом. Я не уверен, если это хороший подход или плохой подход. время ())))) перерыв остальное: # Если данные получили затем разобрать self.parseData данных (данные), за исключением: передать # Дайте отдохнуть в процессор time.sleep (1) Это похоже на работу, но я ищу эффективным способом. Я не уверен, если это хороший подход или плохой подход.
Tanay Rastogi
1

голосов
1

ответ
340

Просмотры

Esp8266 не может соединиться с firebase - ошибка [установка / номер не удалось]

I would like to connect via the esp8266 card to my firebase database. I tried to use the demo code that provides the firebase library for Arduino, but it does not work. I correctly enter my wi-fi data and I can establish a connection, but when I try to connect to the database the Arduino console I get the following error: setting/number failed: Code: #include #include // Set these to run example. #define FIREBASE_HOST "-.firebaseio.com" #define FIREBASE_AUTH "----" #define WIFI_SSID "----" #define WIFI_PASSWORD "----" void setup() { Serial.begin(9600); // connect to wifi. WiFi.begin(WIFI_SSID, WIFI_PASSWORD); Serial.print("connecting"); while (WiFi.status() != WL_CONNECTED) { Serial.print("."); delay(500); } Serial.println(); Serial.print("connected: "); Serial.println(WiFi.localIP()); Firebase.begin(FIREBASE_HOST, FIREBASE_AUTH); } int n = 0; void loop() { // set value Firebase.setFloat("number", 42.0); // handle error if (Firebase.failed()) { Serial.print("setting /number failed:"); Serial.println(Firebase.error()); return; } delay(1000); // update value Firebase.setFloat("number", 43.0); // handle error if (Firebase.failed()) { Serial.print("setting /number failed:"); Serial.println(Firebase.error()); return; } delay(1000); // get value Serial.print("number: "); Serial.println(Firebase.getFloat("number")); delay(1000); // remove value Firebase.remove("number"); delay(1000); // set string value Firebase.setString("message", "hello world"); // handle error if (Firebase.failed()) { Serial.print("setting /message failed:"); Serial.println(Firebase.error()); return; } delay(1000); // set bool value Firebase.setBool("truth", false); // handle error if (Firebase.failed()) { Serial.print("setting /truth failed:"); Serial.println(Firebase.error()); return; } delay(1000); // append a new value to /logs String name = Firebase.pushInt("logs", n++); // handle error if (Firebase.failed()) { Serial.print("pushing /logs failed:"); Serial.println(Firebase.error()); return; } Serial.print("pushed: /logs/"); Serial.println(name); delay(1000); } I would like to establish a connection with my firebase database.
Salvatore Raccardi
0

голосов
0

ответ
4

Просмотры

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

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

голосов
0

ответ
41

Просмотры

Как исправить проблему RX в Sender основании Orchestra Планирования с ОАС?

Я осознав сценарий корня DAG и DAG узла в среде Contiki NG с отправителем Based оркестр при использовании UDP между nodes.But У меня есть проблема отсутствия RX в моем Cooja моделирования после включения Clear Channel Assesment (CCA) в моем Проект- conf.h файл. Что я должен изменить в моих файлах, чтобы решить эту проблему? Я использую один узел для корня DAG и один узел для DAG узла (при использовании файлов под Contiki NG а именно УДФ-server.c и УДФ-client.c). После ОСО у меня была ошибка, как! ДЛ-мисс TXbeforeTX 2800 2120 на выходе Частица COOJA. Как я это была проблема в сроках. Поэтому я изменил ОАС смещение (по умолчанию 1800 мкс) до 1000 нас и, видимо, стер предупреждение. Но этот подход не работает в связи с отсутствием RX в особенности на основе отправителя одноадресного и EB slotframes. Видя TX для упомянутых slotframes, RX не наблюдалось. Я мог видеть на выходе сучка узел пытается отправить пакет, но он никогда не признается. Также через некоторое время я заметил, что узлы покидают сеть. Я ожидаю, чтобы иметь RX слотов для EB и отправителя на основе однонаправленной slotframes как хорошо, но фактический результат я получаю RX только для широковещательного slotframe. Что я должен изменить в моих файлах конфигурации?
Macy Fischer
1

голосов
0

ответ
18

Просмотры

Сколько частиц микропрограмм работы Electron ВГД Модульные?

SO я узнавал, как встроенное программное обеспечение электронного написано и как работает модульная система прошивка. до сих пор все хорошо. потому что я выяснить основную функцию, которая в core_hal.c, но до сих пор не поняла, что, когда загрузчик переходит к CORE_FW_ADDRESS тогда как микропрограммная система переходит к другим модулям? что-то, как я понимаю, загрузчик -> прошивки системы 3 -> userapplication. но я не нашел ни малейшего понятия о том, как система прошивка 1 и 2 работают или вызываются из встроенного программного обеспечения системы 3. Пожалуйста, помогите! чтобы понять. я хочу портировать его на stm32f207, а затем способствовать ВГД частиц. так как сектор вспышки называется с с кодом или просто используя .ld файлы, которые компоновщик файлы? можно ли получить рабочий пример модульного аппаратно-программного обеспечения STM32.
Robokishan
1

голосов
0

ответ
33

Просмотры

Почему моя Подписаться Функция не Запуск?

Я последовал примеру на сайте AWS к тройнику https://aws-amplify.github.io/docs/js/pubsub и независимо от того, что происходит каждый раз, когда я бегу ждут PubSub.publish я не получаю никакого ответа от AWS. Любая помощь будет оценена. Я получаю тайм-ауты для кода. Triend diffrent способы взаимодействия с АМС над MQTT реагируют родной. Искал везде. Никакие примеры этого не используются. импорта Amplify, {PubSub, Авт} от 'AWS-Amplify'; импорт {AWSIoTProvider} от '@ AWS-амплификации / PubSub / Библиотека / провайдеров; импорт aws_exports из»./src/aws-exports'; // aythentication импорта импорта {} withAuthenticator от 'АМС-амплификации реагируют родной'; Amplify.configure (aws_exports); Amplify.addPluggable (новый AWSIoTProvider ({aws_pubsub_region: 'мы-восток-1', aws_pubsub_endpoint: «WSS: //azk3aah4ivg82-ats.iot. us-east-1.amazonaws.com/mqtt»,})); . PubSub.subscribe ([ '$ AWS / вещи / B_Bone_1 / тени / получить / принято', '$ AWS / вещи / B_Bone_1 / тень / получить / отклоненных']) {подписаться (следующая: данные => console.log (» Сообщение получено получить признание», данные), ошибка: ошибка => console.error (ошибка), близко: () => console.log ( 'Done')}); класс // экспорта по умолчанию Main расширяет React.Component {// ...... знак в хлам Это просто делает Cognito accound и позволяет мне войти. Его рабочий класс} App расширяет компонент {// constuct реквизита ///. .. обновление = асинхронной () => {ждут PubSub.publish ( '$ AWS / вещи / B_Bone_1 / тень / обновление', {тзд: { "состояние": { "сообщил": { "темп": -1} }}}); Alert.alert ( «Обновить все локальные значения из устройства Shadow»); } Визуализации () {возвращение (// страница с кнопкой, которая запускает функцию обновления); }} // стилевого материал При вызове обновления программы необходимо запустить функцию подписки. Но я получаю сообщение об ошибке тайм-аут, как ничего не возвращается. Любая помощь будет удивительно.
Jwoj
1

голосов
1

ответ
273

Просмотры

Установка IDAS Использование с ORION CB

У меня есть Orion CB работает на виртуальной машине просто отлично. Теперь у меня есть gateaway, который общается в MQTT. Поэтому я хочу, чтобы использовать IDAS как ВГД агента, чтобы сделать связь между моим GW и Orion CB. Мой вопрос, как я установить IDAS? У меня есть это: https://github.com/telefonicaid/fiware-IoTAgent-Cplusplus/ Это на самом деле не ясно, все какие spteps предпринять для того, чтобы установить и использовать его. Может ли один объяснить? Или есть какой-либо вид виртуальной машины с IDAS уже установленным на нем, как на ORION CB? Спасибо
JajaDrinker
1

голосов
1

ответ
571

Просмотры

Сервер Raspberry пи-не отвечает

Я начал проект клиентского сервера с моей Raspberry Pi 2 бегущих окнами 10 IoT что очень приятно, потому что вы можете запускать то же приложение на обоих ПК и RPI2. Имея это в виду, я только создал одно приложение, которое может выступать в качестве клиента и сервера, которые я затем развернуть на обоих устройствах и использовать одну из них в качестве сервера, а другой в качестве Клиента. Единственная проблема заключается в том, что на стороне сервера не отвечает на подключения клиентов вызов. Мой код выглядит следующим образом: Сервер: /// имя_сервер это порт, который я использую /// hostadapter это адаптер помощник OBJ, который имеет свойство HostName установить на мой IP-адрес. общественный асинхронные недействительный Start (строка имя_сервер, HostName hostAdapter) {// создать "сервер" объект serverListener = новый StreamSocketListener (); serverListener.ConnectionReceived + = ServerListener_ConnectionReceived; попробуйте {Await serverListener.BindEndpointAsync (hostAdapter, имя_серверы); Started = истина; } Задвижка (исключение й) {Started = ложь; myConsole.Print ( "ошибка при запуске сервера:" + ee.Message); }} Частный асинхронной аннулируются ServerListener_ConnectionReceived (StreamSocketListener отправитель, StreamSocketListenerConnectionReceivedEventArgs арг) {myConsole.Print ( "соединение получило обратный вызов называется"); DataReader читатель = новый DataReader (args.Socket.InputStream); DataWriter ServerWriter = новый DataWriter (args.Socket.OutputStream); Строка ServerAnswer = «сообщение мь сервером»; попробовать {в то время как (истинно) {// Читаем первые 4 байта (длина последующей строки). UINT sizeFieldCount = ждут reader.LoadAsync (SizeOf (UINT)); если (sizeFieldCount! = SizeOf (UINT)) {// Основополагающий сокет был закрыт, прежде чем мы смогли прочитать все данные. вернуть; } // Читаем строку. UINT StringLength = reader.ReadUInt32 (); UINT actualStringLength = ждут reader.LoadAsync (StringLength); если (StringLength! = actualStringLength) {// Основополагающий сокет был закрыт, прежде чем мы смогли прочитать все данные. вернуть; } ServerWriter. WriteUInt32 (ServerWriter.MeasureString (ServerAnswer)); ServerWriter.WriteString (ServerAnswer); ждут ServerWriter.StoreAsync (); }} Задвижка (исключение Исключение) {myConsole.Print (exception.Message); }} Клиент: общественный асинхронной аннулируются Connect (строка ServerIP, строка ServerPort) {попробуйте {ServerHost = новый HostName (ServerIP); } Задвижка (исключение й) {возвращение; } {// попытаться открыть сокет ClientSocket = новый StreamSocket (); ждут ClientSocket.ConnectAsync (ServerHost, ServerPort); Connected = истина; } Задвижка (Исключение ех) {ClientSocket.Dispose (); ClientSocket = NULL; myConsole. Печать (ex.Message); Connected = ложь; } } Любая помощь высоко ценится. Я downlaoded Wireshark, чтобы иметь возможность следить за networkdata и я нахожусь ТСР [син] пакет, который отправляет клиент, но я не могу видеть любой TCP [SYN ACK] пакеты.
narancha

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

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