Java客户端
客户端可帮助您从Java应用程序与ThingsBoard进行交互。
使用客户端您可以在ThingsBoard中以编程方式创建资产、设备、客户、用户和其他实体及其关系。
推荐使用Maven构建工具安装Java客户端。
社区版Java客户端
使用以下依赖项将REST客户端添加至Maven/Gradle项目中:
<dependencies><dependency><groupId>org.thingsboard</groupId><artifactId>rest-client</artifactId><version>3.1.1</version></dependency></dependencies>
注意:客户端基于Spring RestTemplate构建因此依赖于Spring Web(在撰写本文时为5.1.5.RELEASE)。
下载Java客户端依赖您应该将以下代码库添加到项目中或者您可以从github构建REST Client。
<repositories><repository><id>thingsboard</id><url>https://repo.thingsboard.io/artifactory/libs-release-public</url></repository></repositories>
代码审查
您可以在 此处 找到示例应用程序。
// ThingsBoard REST API URLString url = "http://localhost:8080";// Default Tenant Administrator credentialsString username = "tenant@thingsboard.org";String password = "tenant";// Creating new rest client and auth with credentialsRestClient client = new RestClient(url);client.login(username, password);// Creating an AssetAsset asset = new Asset();asset.setName("Building 1");asset.setType("building");asset = client.saveAsset(asset);// creating a DeviceDevice device = new Device();device.setName("Thermometer 1");device.setType("thermometer");device = client.saveDevice(device);// creating relations from device to assetEntityRelation relation = new EntityRelation();relation.setFrom(asset.getId());relation.setTo(device.getId());relation.setType("Contains");client.saveRelation(relation);
专业版Java客户端
使用以下依赖项将Java客户端添加至Maven/Gradle项目中:
<dependencies><dependency><groupId>org.thingsboard</groupId><artifactId>rest-client</artifactId><version>3.1.1PE</version></dependency></dependencies>
注意:Java客户端基于Spring RestTemplate构建,因此依赖于Spring Web(在撰写本文时为5.1.5.RELEASE)。
Java客户端仓库地址
<repositories><repository><id>thingsboard</id><url>https://repo.thingsboard.io/artifactory/libs-release-public</url></repository></repositories>
代码审查
您可以在 此处 找到示例应用程序。
// ThingsBoard REST API URLfinal String url = "http://localhost:8080";// Default System Administrator credentialsfinal String username = "sysadmin@thingsboard.org";final String password = "sysadmin";// creating new rest restClient and auth with system administrator credentialsrestClient = new RestClient(url);login(username, password);// Creating TenantTenant tenant = new Tenant();tenant.setTitle("Test Tenant");tenant = restClient.saveTenant(tenant);final String tenantUsername = "testtenant@thingsboard.org";final String tenantPassword = "testtenant";// Created User for TenantUser tenantUser = new User();tenantUser.setAuthority(Authority.TENANT_ADMIN);tenantUser.setEmail(tenantUsername);tenantUser.setTenantId(tenant.getId());tenantUser = restClient.saveUser(tenantUser, false);restClient.activateUser(tenantUser.getId(), tenantPassword);// login with Tenantlogin(tenantUsername, tenantPassword);// Loading Widget from file// Path widgetFilePath = Paths.get("src/main/resources/custom_widget.json");// JsonNode widgetJson = mapper.readTree(Files.readAllBytes(widgetFilePath));// loadWidget(widgetJson);// Loading Rule Chain from file// Path ruleChainFilePath = Paths.get("src/main/resources/rule_chain.json");// JsonNode ruleChainJson = mapper.readTree(Files.readAllBytes(ruleChainFilePath));// loadRuleChain(ruleChainJson, false);// Creating Dashboard Group on the Tenant LevelEntityGroup sharedDashboardsGroup = new EntityGroup();sharedDashboardsGroup.setName("Shared Dashboards");sharedDashboardsGroup.setType(EntityType.DASHBOARD);sharedDashboardsGroup = restClient.saveEntityGroup(sharedDashboardsGroup);// Loading Dashboard from fileJsonNode dashboardJson = mapper.readTree(RestClientExample.class.getClassLoader().getResourceAsStream("watermeters.json"));Dashboard dashboard = new Dashboard();dashboard.setTitle(dashboardJson.get("title").asText());dashboard.setConfiguration(dashboardJson.get("configuration"));dashboard = restClient.saveDashboard(dashboard);// Adding Dashboard to the Shared Dashboards GrouprestClient.addEntitiesToEntityGroup(sharedDashboardsGroup.getId(), Collections.singletonList(dashboard.getId()));// Creating Customer 1Customer customer1 = new Customer();customer1.setTitle("Customer 1");customer1 = restClient.saveCustomer(customer1);Device waterMeter1 = new Device();waterMeter1.setCustomerId(customer1.getId());waterMeter1.setName("WaterMeter1");waterMeter1.setType("waterMeter");waterMeter1 = restClient.saveDevice(waterMeter1);// Update device tokenDeviceCredentials deviceCredentials = restClient.getDeviceCredentialsByDeviceId(waterMeter1.getId()).get();deviceCredentials.setCredentialsId("new_device_token");restClient.saveDeviceCredentials(deviceCredentials);// Fetching automatically created "Customer Administrators" Group.EntityGroupInfo customer1Administrators = restClient.getEntityGroupInfoByOwnerAndNameAndType(customer1.getId(), EntityType.USER, "Customer Administrators").get();// Creating Read-Only RoleRole readOnlyRole = restClient.createGroupRole("Read-Only", Arrays.asList(Operation.READ, Operation.READ_ATTRIBUTES, Operation.READ_TELEMETRY, Operation.READ_CREDENTIALS));// Assigning Shared Dashboards to the Customer 1 AdministratorsGroupPermission groupPermission = new GroupPermission();groupPermission.setRoleId(readOnlyRole.getId());groupPermission.setUserGroupId(customer1Administrators.getId());groupPermission.setEntityGroupId(sharedDashboardsGroup.getId());groupPermission.setEntityGroupType(sharedDashboardsGroup.getType());groupPermission = restClient.saveGroupPermission(groupPermission);// Creating User for Customer 1 with default dashboard from Tenant "Shared Dashboards" group.String userEmail = "user@thingsboard.org";String userPassword = "secret";User user = new User();user.setAuthority(Authority.CUSTOMER_USER);user.setCustomerId(customer1.getId());user.setEmail(userEmail);ObjectNode additionalInfo = mapper.createObjectNode();additionalInfo.put("defaultDashboardId", dashboard.getId().toString());additionalInfo.put("defaultDashboardFullscreen", false);user.setAdditionalInfo(additionalInfo);user = restClient.saveUser(user, false);restClient.activateUser(user.getId(), userPassword);restClient.addEntitiesToEntityGroup(customer1Administrators.getId(), Collections.singletonList(user.getId()));
