SDK для Go
Перед началом работы рекомендуется ознакомиться с принципами взаимодействия агентов и платформы — ключевых компонентов инфраструктуры IoT VK Cloud.
Установка проекта SDK происходит путем импорта репозитория IoT Go Agent SDK и его зависимостей, а затем установки пакета с помощью стандартного установщика модулей go mod.
- git (ссылка на страницу скачивания),
- Go 1.16+ (инструкция по установке),
- CMake 3.1+ (ссылка на перечень выпусков).
- github.com/go-openapi/errors v0.20.1
- github.com/go-openapi/runtime v0.21.0
- github.com/go-openapi/strfmt v0.21.1
- github.com/go-openapi/swag v0.19.15
- github.com/go-openapi/validate v0.20.3
Создайте рабочую директорию для хранения файлов SDK:
1mkdir vkcs-iot-go-agent-sdk 2cd vkcs-iot-go-agent-sdk
Импортируйте репозиторий IoT Go Agent SDK:
git clone https://github.com/vk-cs/iot-go-agent-sdk.git
Установите SDK с помощью стандартного установщика модулей go mod:
go install ./iot-go-agent-sdk
Перед началом разработки с помощью VK Cloud IoT SDK рекомендуется ознакомиться с типами данных, используемых платформой VK Cloud IoT, а также с методами, поддерживаемыми внешним публичным API платформы.
Примером использования VK Cloud IoT Go Agent SDK является имплементация обращения устройства к компонентам Агент и Платформа с целью обновления данных о статусе устройства:
1package main 2 3import ( 4 "context" 5 6 httptransport "github.com/go-openapi/runtime/client" 7 8 sdk "github.com/vk-cs/iot-go-agent-sdk" 9 "github.com/vk-cs/iot-go-agent-sdk/gen/swagger/http_client/client/agents" 10 "github.com/vk-cs/iot-go-agent-sdk/gen/swagger/http_client/client/events" 11 "github.com/vk-cs/iot-go-agent-sdk/gen/swagger/http_client/models" 12) 13 14func main() { 15 cli := sdk.NewHTTPClient() 16 17 // Получение файла конфигурации Агента 18 resp, _ := cli.Agents.GetAgentConfig(&agents.GetAgentConfigParams{ 19 // get latest version 20 Version: nil, 21 Context: context.Background(), 22 }, httptransport.BasicAuth("login", "password")) 23 cfg := resp.Payload 24 25 // Получение тэга статуса из файла конфигурации 26 statusTag, _ := sdk.FindTagByPath(cfg.Agent.Tag, sdk.StatusTagPath) 27 28 // Или использование враппера для быстрого доступа 29 tree := sdk.NewTagTree(cfg.Agent.Tag) 30 statusTagNode, _ := tree.GetStatusTag() 31 statusTag = statusTagNode.Tag 32 cfgVersion, _ := tree.GetConfigVersionTag() 33 cfgUpdatedAt, _ := tree.ConfigUpdatedAtTagPath() 34 35 // Отправка Платформе нового статуса Агента и версии файла конфигурации 36 now := sdk.Now() 37 cli.Events.AddEvent(events.AddEventParams{ 38 Context: context.Background(), 39 Body: &models.AddEvent{ 40 Tags: []*models.TagValueObject{ 41 // Обновление статуса Агента 42 { 43 ID: statusTag.ID, 44 Timestamp: &now, 45 Value: sdk.Online, 46 }, 47 // Обновление версии файла конфигурации Агента 48 { 49 ID: cfgVersion.Tag.ID, 50 Timestamp: &now, 51 Value: cfg.Version, 52 }, 53 { 54 ID: cfgUpdatedAt.Tag.ID, 55 Timestamp: &now, 56 Value: &now, 57 }, 58 }, 59 }, 60 }, httptransport.BasicAuth("login", "password")) 61 62 // Обновление тэга статуса устройства 63 deviceStatusTag, _ := sdk.FindTagByPath(cfg.Agent.Devices[0].Tag, sdk.StatusTagPath) 64 65 cli.Events.AddEvent(events.AddEventParams{ 66 Context: context.Background(), 67 Body: &models.AddEvent{ 68 Tags: []*models.TagValueObject{ 69 { 70 ID: deviceStatusTag.ID, 71 Timestamp: &now, 72 Value: sdk.Online, 73 }, 74 }, 75 }, 76 }, httptransport.BasicAuth("login", "password")) 77}
В качестве отладочного стенда можно использовать эмулятор устройства IoT, запрограммированный отправлять определенные данные на платформу. Подробнее о настройке устройства через личный кабинет пользователя платформы VK Cloud IoT можно узнать из раздела IoT на портале документации.
Вы можете импортировать исходный код эмулятора из репозитория VK Cloud IoT Emulators, или скачать собранный бинарный файл для вашей операционной системы.
Вы можете собрать http клиент по Swagger спецификации из репозитория VK Cloud IoT Go Agent SDK, выполнив следующую команду из корневой директории репозитория:
make generate