Связь между датчиками XBee, ConnectPort X4H и Digi Cloud

Мы являемся платформой для мониторинга удаленного строительства в стартапе для строительной отрасли. Мы хорошо разбираемся в веб-разработке (веб-приложения, веб-API, визуализация данных), но у нас 0 знаний о низкоуровневой инженерии и программировании.

Более того, чрезвычайно сложно найти любого разработчика XBee в нашей области. Чтобы сделать это возможным и доставить MVP, мы решили приобрести готовые к использованию наборы и Digi Cloud, поэтому мы получили:

Что мы уже знаем:

  • Мы обнаружили ConnectPort с видимой сетью ZigBee в Digi Cloud, да, он виден и может быть настроен онлайн.
  • Мы знаем, что ConnectPort имеет встроенный движок Python, однако поддерживается только версия Python 2.4.3.
  • Мы знаем, что можем загружать файлы Python напрямую в ConnectPort, используя Digi ESP для Python
  • Мы знаем, что можем загружать файлы Python в ConnectPort с помощью Digi Cloud
  • Мы знаем, что датчики могут отправлять данные в потоки данных, срок действия которых истекает через некоторое время.
  • Мы знаем, что мы можем использовать Monitor API для пересылки данных в наш собственный внешний веб-сервис каждый раз, когда они загружаются в поток данных.

Чего мы хотим достичь и есть вопросы:

Сценарий 1 (простой):

В этом сценарии мы хотим указать все настройки и выборку с помощью онлайн-интерфейса Digi Cloud.

  • Создавайте потоки данных, используя Digi Cloud Interface
    • Поскольку каждый датчик XBee имеет 1 датчик температуры, 1 влажность и 1 датчик освещения, мы хотим указать 3 потока данных для каждого датчика XBee. Всего 4 х 3 потока данных.
    • Каждый поток данных, кроме значения данных, должен иметь дополнительные свойства, такие как: NodeId (идентификатор XBee Sensor), SensorTypeId (идентификатор из словаря типов), SamplingFrequency (значение в миллисекундах, 0 = реальное время) DateStart (дата, с которой точка должна собирать данные), DateEnd (дата после сбора данных не требуется), MeasurementZoneId(Id зоны измерения, указанной пользователем, например, Этаж 1), PlacementVector (x, y, z местоположение внутри конструкции)
  • Каким-то образом связать каждый поток данных с каждым датчиком внутри датчиков XBee и "Включить выборку"
  • Смотрите изменения данных онлайн в Digi Cloud

Вопросы:

  1. Можно ли расширить метаданные потока данных указанными выше свойствами?
  2. Можно ли определить один поток данных на один датчик внутри одного датчика XBee?
  3. Можно ли определить частоту дискретизации и включить выборку из интерфейса Digi Cloud без написания кода Python для ConnectPort (без необходимости использования таймера бесконечного цикла)?
  4. Если в коде Python нет необходимости включать выборку и отправку данных, как это сделать?
  5. Если код Python является обязательным, означает ли это, что каждый раз, когда мы хотим назначить датчики XBee для другой зоны измерения, нам нужно загрузить новый файл Python в ConnectPort?

Сценарий 2 (расширенный):

В этом сценарии мы хотим настроить устройства и выборку из нашего собственного внешнего API и использовать Digi Cloud в качестве посредника для конфигурации и пересылки данных.

  • Имея те же параметры, создайте потоки данных, используя Digi Cloud API из вечного веб-сервиса (это будет веб-сервис.NET, написанный на C#)
  • Имея те же параметры, создавайте пересылку данных во внешний веб-сервис (это будет веб-сервис.NET, написанный на C#) с использованием Monitor API, каждый раз, когда новые данные будут загружаться в Digi Cloud
  • При одинаковых параметрах, каким-то образом связать каждый поток данных с каждым датчиком внутри датчиков XBee и "Включить выборку" с помощью Digi Cloud API из вечного веб-сервиса (это будет веб-сервис.NET, написанный на C#)
  • Получать данные в вечном веб-сервисе без необходимости ручных запросов

Вопросы:

  1. Можно ли расширить метаданные потока данных указанными свойствами, используя Digi Cloud API из внешнего веб-сервиса?
  2. Можно ли определить один поток данных на один датчик внутри одного датчика XBee, используя Digi Cloud API из внешнего веб-сервиса?
  3. Можно ли определить частоту выборки и включить выборку, используя Digi Cloud API из внешнего веб-сервиса, без написания кода Python для ConnectPort (без необходимости в таймере бесконечного цикла)?
  4. Если в коде Python нет необходимости включать выборку и отправку данных, как это сделать?
  5. Если код Python является обязательным, означает ли это, что каждый раз, когда мы хотим назначить датчики XBee для разных зон измерения, нам нужно сгенерировать и загрузить с помощью нового Python-файла Digi Cloud API в ConnectPort?

Мы будем благодарны за любую помощь с вышеописанными сценариями.

1 ответ

Решение

Будет сложно рассмотреть все конкретно в вашем посте, учитывая его широту и детали, необходимые для точного ответа, но вот попытка:

Сценарий 1:

У вас есть пара вариантов. Вы можете написать собственный скрипт Python, который запускается на шлюзе, поскольку существуют API для взаимодействия с узлами XBee и для отправки точек данных в Device Cloud, структурированные так, как вы хотите. Это дает вам большой контроль без дополнительных затрат фреймворка, но вы можете обнаружить, что вам нужно покопаться в ряде деталей, чтобы выяснить, как выполнить каждую задачу.

Кроме того, взгляните на платформу DIA Python, которая может работать на шлюзе ( http://www.digi.com/support/productdetail?pid=3632&type=drivers). Эта структура пытается абстрагировать устройства и отчеты о данных, так что вы можете добиться многого, прежде всего, с помощью конфигурации, без необходимости писать какой-либо код. Я мог бы порекомендовать вам, по крайней мере, начать с этим и попробовать его, и если вам кажется слишком обременительным настраивать, по крайней мере, у вас есть отправная точка, чтобы посмотреть.

  1. API на стороне устройства позволяет предоставлять описание вместе с каждой загружаемой точкой данных. Хотя многие вещи, которые вы перечислили, не поддерживаются, вы можете прийти к соглашению включить эту информацию в поле описания (например, отформатировать описание как json). Невозможно автоматически настроить отчетность на стороне сервера, чтобы она автоматически отражалась на стороне устройства. В Device Cloud есть API-интерфейсы, которые позволяют отправлять сообщения на устройство... чтобы вы могли передавать отчеты об изменениях с помощью этого API-интерфейса.

  2. Да, используя Python и API для загрузки данных, вы можете размещать свои потоки так, как хотите. Определенно имеет смысл иметь один поток для каждого уникального источника данных, и это будет по умолчанию способ, которым DIA будет распределять потоки.

  3. Это может быть возможно с DIA. Я полагаю, что датчики XBee могут быть настроены на периодическую отправку выборок ввода-вывода, а затем DIA будет загружать их на сервер. Затем вы можете отрегулировать настройки на узлах XBee с учетом частоты дискретизации ввода-вывода, чтобы все изменилось. Это не будет очень просто, однако.

  4. Как уже упоминалось, попробуйте DIA, чтобы увидеть, отвечает ли он вашим потребностям. Может потребоваться некоторая конфигурация и собрать пакет кода Python, который выполняется на шлюзе, не требуя написания какого-либо Python.

  5. Вы можете отправлять сообщения в свой код Python через API в Device Cloud. Таким образом, вы можете определенно реализовать его, чтобы на вашем устройстве был файл конфигурации, который отслеживает зону измерения для каждого устройства, а затем поддерживает получение сообщения из Device Cloud для обновления и сохранения новой конфигурации зоны измерения. Вы не сможете интегрировать это в пользовательский интерфейс самого Device Cloud, но вы можете выполнить необходимый API с помощью API Explorer в Device Cloud.

Сценарий 2

  1. Вы можете получить список всех потоков и точек данных с помощью API в Device Cloud. Вы также можете создавать новые точки данных или делать такие вещи, как редактировать описания для потоков или точек данных.

  2. Вы можете создавать потоки данных и размещать их по своему усмотрению с помощью API в Device Cloud (см. / Ws/DataStream и /ws/DataPoint или их более новый вариант /ws/v1/streams)

  3. Предполагая, что решение №3 в первом сценарии работает, вы можете настроить частоту дискретизации ввода-вывода конечных узлов XBee с помощью API-интерфейсов веб-служб в Device Cloud.

  4. Попробуйте структуру DIA и посмотрите, соответствует ли она вашим потребностям.

  5. То же, что и раньше, так как он использовал API.

Другие вопросы по тегам