VK Cloud logo

SDK для Go

Перед началом работы рекомендуется ознакомиться с принципами взаимодействия агентов и платформы — ключевых компонентов инфраструктуры IoT VK Cloud.

Установка SDK

Установка проекта SDK происходит путем импорта репозитория IoT Go Agent SDK и его зависимостей, а затем установки пакета с помощью стандартного установщика модулей go mod.

Минимальные требования

Список зависимостей репозитория

  • 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 платформы.

Обращение к компонентам платформы с помощью методов SDK

Примером использования 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

В качестве отладочного стенда можно использовать эмулятор устройства IoT, запрограммированный отправлять определенные данные на платформу. Подробнее о настройке устройства через личный кабинет пользователя платформы VK Cloud IoT можно узнать из раздела IoT на портале документации.

Вы можете импортировать исходный код эмулятора из репозитория VK Cloud IoT Emulators, или скачать собранный бинарный файл для вашей операционной системы.

Сборка http клиента

Вы можете собрать http клиент по Swagger спецификации из репозитория VK Cloud IoT Go Agent SDK, выполнив следующую команду из корневой директории репозитория:

make generate