Представляем EdgexFoundry
В одном предложении представлена EdgeX Foundry, представляющая собой микросервисную среду нейтральных граничных вычислений с открытым исходным кодом, независимую от аппаратного обеспечения и операционной системы в рамках Linux Foundation, которая используется для унификации экосистемы решений граничных вычислений для промышленного Интернета вещей.
Создать сервис устройства через sdk
Сервис устройств, который мы создали сами, может быть предоставлен официальным поставщиком услуг edgex.device-sdk-goна основе трансформации.
Создание службы устройства в основном предназначено для реализации интерфейса, указанного в протоколдрайвере.В этом случае войдите в каталог драйвера, в основном для реализации функций Initialize, HandleReadCommands и HandleWriteCommands.
- Initialize
Initialize(lc logger.LoggingClient, asyncCh chan<- *dsModels.AsyncValues, deviceCh chan<- []dsModels.DiscoveredDevice) error
lc должен быть системой журналов, asynCh — каналом, мы можем загружать в coredata, назначив значение, которое мы хотим загрузить в asynCh, а deviceCh следует использовать для автоматического обнаружения устройств.
- HandleReadCommands
func (s *SimpleDriver) HandleReadCommands(deviceName string, protocols map[string]contract.ProtocolProperties, reqs []dsModels.CommandRequest) (res []*dsModels.CommandValue, err error)
Функция этой функции должна вызываться, когда пользователь отправляет команду получения через основную команду, и поведение аналогично физическому устройству, отправляющему запрос команды чтения.
- HandleWriteCommands
func (s *SimpleDriver) HandleWriteCommands(deviceName string, protocols map[string]contract.ProtocolProperties, reqs []dsModels.CommandRequest,
params []*dsModels.CommandValue) error {
Использование в основном такое же, как и у HandleRandomCommends, а параметры, загруженные через сообщение, помещаются в params.
Введение в структуру каталогов и конфигурационный файл
Структура каталогов показана на следующем рисунке:
- Введение в файл configuration.toml
В основном он используется для настройки адреса и номера порта службы устройства, регистрации в службе EdgeX и предварительного определения устройства. Если он развернут на сервере, вам нужно изменить Хост в [Сервис] на IP-адрес сервера, [Реестр], [Клиенты], [Устройство], [Ведение журнала] и т. Д. Не нужно изменять .
Найти [[DeviceList]] Этот раздел используется для предварительного определения устройств.
Имя — это имя созданного вами устройства.
Профиль — это файл конфигурации, используемый для создания Устройства, то есть значение имени в profile.yml.
[[DeviceList.AutoEvents]] используется для автоматической отправки командных запросов, соответствующий profile.yml — для вызова команды get, а соответствующий интерфейс SDK — для вызова функции HandleReadCommand.
Частота — это частота отправки запроса.
Ресурс — это тип данных, соответствующий отправляющему запросу, который соответствует deviceResources в proflie.yml.
- Введение в Profile.yml
Profile.yml используется для определения типа данных устройства и отправки команд на устройство через core-Command.
Связь между deviceResources, deviceCommands и coreCommands:
Значение в deviceResources определяет тип данных, загружаемых Device в deviceService.
coreComands определяет операции, которые команда ядра базовой службы может выполнять на устройстве, включая чтение (получение) и запись (помещение).
deviceCommands — это мост между coreCommands и deviceResources, он определяет, какие типы значений используются, когда coreCommands управляет устройством.
Первая строка имени соответствует имени в списке устройств в файле configuration.toml, которое является «именем» этого профиля.
имя в deviceResources: «SwitchButton» представляет собой имя типа данных этого устройства
Следующие свойства определяют основные числовые типы SwitchButton.
corecommands определяет два метода работы core-commands на устройстве: один — чтение (получение), а другой — запись (установка).
ожидаемые значения в get указывают тип ожидаемого значения для чтения, который согласуется с именем в каталоге имен в deviceResources
ПараметрNames в put указывает тип значения передаваемого параметра, который также согласуется с именем в каталоге имен в deviceResources.
deviceCommands соединяет deviceResources и coreCommands
Имя совпадает с именем в coreCommands
Если get определено в coreCommands, требуется get, а если определено put, требуется set.
deviceResource совпадает с именем в deviceResources
С помощью предопределенных файлов Device и Simple.yaml в Configuration.toml вы можете сгенерировать устройство и зарегистрировать его в основных метаданных.Конечно, вы также можете вручную зарегистрировать устройство с помощью Simple.yaml.