From a181fca75ecd79178febdca76554304f2837ba7e Mon Sep 17 00:00:00 2001 From: zhiheng123 <903292776@qq.com> Date: Mon, 18 Nov 2024 23:49:37 +0800 Subject: [PATCH 1/2] feat: add example to iotda server Signed-off-by: zhiheng123 <903292776@qq.com> --- .../mtconnect/examples/MTConnectClientExample.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/mtconnect-examples/src/main/java/io/github/protocol/mtconnect/examples/MTConnectClientExample.java b/mtconnect-examples/src/main/java/io/github/protocol/mtconnect/examples/MTConnectClientExample.java index 70a3bf5..5797288 100644 --- a/mtconnect-examples/src/main/java/io/github/protocol/mtconnect/examples/MTConnectClientExample.java +++ b/mtconnect-examples/src/main/java/io/github/protocol/mtconnect/examples/MTConnectClientExample.java @@ -1,14 +1,24 @@ package io.github.protocol.mtconnect.examples; import io.github.openfacade.http.HttpClientConfig; +import io.github.protocol.mtconnect.api.MTConnectDevices; import io.github.protocol.mtconnect.client.MTConnectClient; import io.github.protocol.mtconnect.client.MTConnectClientConfiguration; +import io.github.protocol.mtconnect.common.XmlUtil; +import lombok.extern.slf4j.Slf4j; +@Slf4j public class MTConnectClientExample { - public static void main(String[] args) { + public static void main(String[] args) throws Exception { MTConnectClientConfiguration configuration = new MTConnectClientConfiguration(); + configuration.setHost("127.0.0.1"); + configuration.setPort(36633); + HttpClientConfig httpClientConfig = new HttpClientConfig.Builder().build(); configuration.setHttpConfig(httpClientConfig); MTConnectClient mtConnectClient = new MTConnectClient(configuration); + + MTConnectDevices devices = mtConnectClient.devices(); + log.info(XmlUtil.toXml(devices)); } } From 387d09574da176ab3daea9fcf5d465d6092728f5 Mon Sep 17 00:00:00 2001 From: zhiheng123 <903292776@qq.com> Date: Tue, 19 Nov 2024 18:58:41 +0800 Subject: [PATCH 2/2] feat: connect to the cloud server of IoTDA Signed-off-by: zhiheng123 <903292776@qq.com> --- .../examples/MTConnectIoTDAServerExample.java | 9 ++- .../server/impl/IoTDAMtProcessor.java | 80 +++++++++++++++++-- 2 files changed, 80 insertions(+), 9 deletions(-) diff --git a/mtconnect-examples/src/main/java/io/github/protocol/mtconnect/examples/MTConnectIoTDAServerExample.java b/mtconnect-examples/src/main/java/io/github/protocol/mtconnect/examples/MTConnectIoTDAServerExample.java index 0886c02..50d1eb1 100644 --- a/mtconnect-examples/src/main/java/io/github/protocol/mtconnect/examples/MTConnectIoTDAServerExample.java +++ b/mtconnect-examples/src/main/java/io/github/protocol/mtconnect/examples/MTConnectIoTDAServerExample.java @@ -15,7 +15,14 @@ public static void main(String[] args) { .port(36633) .build(); configuration.setHttpConfig(httpServerConfig); - configuration.setMtProcessor(new IoTDAMtProcessor("your_ak", "your_sk")); + IoTDAMtProcessor ioTDAMtProcessor = new IoTDAMtProcessor.Builder() + .setAk(System.getenv("CLOUD_SDK_AK")) + .setSk(System.getenv("CLOUD_SDK_SK")) + .setProjectId("your_project_id") + .setEndpoint("ec138732b4.st1.iotda-app.cn-north-4.myhuaweicloud.com") + .build(); + + configuration.setMtProcessor(ioTDAMtProcessor); MTConnectServer mtConnectServer = new MTConnectServer(configuration); mtConnectServer.start().join(); } diff --git a/mtconnect-server/src/main/java/io/github/protocol/mtconnect/server/impl/IoTDAMtProcessor.java b/mtconnect-server/src/main/java/io/github/protocol/mtconnect/server/impl/IoTDAMtProcessor.java index 8fb3bbf..00564da 100644 --- a/mtconnect-server/src/main/java/io/github/protocol/mtconnect/server/impl/IoTDAMtProcessor.java +++ b/mtconnect-server/src/main/java/io/github/protocol/mtconnect/server/impl/IoTDAMtProcessor.java @@ -1,20 +1,31 @@ package io.github.protocol.mtconnect.server.impl; +import com.huaweicloud.sdk.core.auth.AbstractCredentials; +import com.huaweicloud.sdk.core.auth.BasicCredentials; +import com.huaweicloud.sdk.core.auth.ICredential; +import com.huaweicloud.sdk.core.exception.ConnectionException; +import com.huaweicloud.sdk.core.exception.RequestTimeoutException; +import com.huaweicloud.sdk.core.exception.ServiceResponseException; +import com.huaweicloud.sdk.core.region.Region; +import com.huaweicloud.sdk.iotda.v5.IoTDAClient; +import com.huaweicloud.sdk.iotda.v5.model.ListDevicesRequest; +import com.huaweicloud.sdk.iotda.v5.model.ListDevicesResponse; import io.github.protocol.mtconnect.api.AssetRequest; import io.github.protocol.mtconnect.api.DeviceRequest; import io.github.protocol.mtconnect.api.MTConnectAssets; import io.github.protocol.mtconnect.api.MTConnectDevices; import io.github.protocol.mtconnect.server.MTProcessor; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; +@Slf4j +@NoArgsConstructor public class IoTDAMtProcessor implements MTProcessor { - private final String ak; - - private final String sk; - - public IoTDAMtProcessor(String ak, String sk) { - this.ak = ak; - this.sk = sk; - } + private String ak; + private String sk; + private String projectId; + private String endpoint; + private IoTDAClient client; @Override public MTConnectAssets asset(AssetRequest assetRequest) { @@ -23,6 +34,59 @@ public MTConnectAssets asset(AssetRequest assetRequest) { @Override public MTConnectDevices device(DeviceRequest deviceRequest) { + ListDevicesRequest request = new ListDevicesRequest(); + try { + ListDevicesResponse response = client.listDevices(request); + log.info(response.toString()); + } catch (ConnectionException | RequestTimeoutException e) { + log.error(e.getMessage()); + } catch (ServiceResponseException e) { + log.error(e.getMessage()); + log.error(String.valueOf(e.getHttpStatusCode())); + log.error(e.getRequestId()); + log.error(e.getErrorCode()); + log.error(e.getErrorMsg()); + } return null; } + + public static class Builder { + private final IoTDAMtProcessor ioTDAMtProcessor = new IoTDAMtProcessor(); + + public Builder setAk(String ak) { + ioTDAMtProcessor.ak = ak; + return this; + } + public Builder setSk(String sk) { + ioTDAMtProcessor.sk = sk; + return this; + } + + public Builder setProjectId(String projectId) { + ioTDAMtProcessor.projectId = projectId; + return this; + } + + public Builder setEndpoint(String endpoint) { + ioTDAMtProcessor.endpoint = endpoint; + return this; + } + + public IoTDAMtProcessor build(){ + + ICredential auth = new BasicCredentials() + // 标准版/企业版需要使用衍生算法,基础版请删除配置"withDerivedPredicate"; + .withDerivedPredicate(AbstractCredentials.DEFAULT_DERIVED_PREDICATE) // Used in derivative ak/sk authentication scenarios + .withAk(ioTDAMtProcessor.ak) + .withSk(ioTDAMtProcessor.sk); + + ioTDAMtProcessor.client = IoTDAClient.newBuilder() + .withCredential(auth) + // 标准版/企业版:需自行创建Region对象,基础版:请使用IoTDARegion的region对象,如"withRegion(IoTDARegion.CN_NORTH_4)" + .withRegion(new Region("cn-north-4", ioTDAMtProcessor.endpoint)) + .build(); + + return ioTDAMtProcessor; + } + } }