From 9a1bf0476f82ecc090b40e2ffee761a3ca6889ba Mon Sep 17 00:00:00 2001 From: hubaksis Date: Thu, 23 Sep 2021 20:57:37 +1200 Subject: [PATCH] Added Device list request --- .../binding/miio/internal/MiIoCommand.java | 4 ++++ .../internal/handler/MiIoAbstractHandler.java | 19 +++++++++++++++ .../miio/internal/json/GatewayDeviceItem.java | 24 +++++++++++++++++++ .../internal/json/GatewayDevicesList.java | 20 ++++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/json/GatewayDeviceItem.java create mode 100644 bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/json/GatewayDevicesList.java diff --git a/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoCommand.java b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoCommand.java index a3770d3fc..0e811f5e8 100644 --- a/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoCommand.java +++ b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/MiIoCommand.java @@ -114,6 +114,10 @@ public enum MiIoCommand { GET_NIGHTLIGHT_RGB("get_night_light_rgb"), GET_LUMI_BIND("get_lumi_bind"), + TELNET_ENABLE("enable_telnet_service"), + + GET_DEVICE_LIST("get_device_list"), + UNKNOWN(""); private final String command; diff --git a/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoAbstractHandler.java b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoAbstractHandler.java index 68d238df1..56c77adad 100644 --- a/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoAbstractHandler.java +++ b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/handler/MiIoAbstractHandler.java @@ -47,6 +47,9 @@ import org.openhab.binding.miio.internal.basic.MiIoDatabaseWatchService; import org.openhab.binding.miio.internal.cloud.CloudConnector; import org.openhab.binding.miio.internal.transport.MiIoAsyncCommunication; + +import org.openhab.binding.miio.internal.json.GatewayDevicesList; + import org.openhab.core.cache.ExpiringCache; import org.openhab.core.common.NamedThreadFactory; import org.openhab.core.config.core.Configuration; @@ -467,6 +470,11 @@ private void updateDeviceIdConfig(String deviceId) { protected boolean initializeData() { this.miioCom = getConnection(); + + if (this.miioCom != null && this instanceof MiIoGatewayHandler) { + sendCommand(MiIoCommand.GET_DEVICE_LIST); + } + return true; } @@ -649,6 +657,9 @@ public void onMessageReceived(MiIoSendCommand response) { } updateNetwork(response.getResult().getAsJsonObject()); break; + case GET_DEVICE_LIST: + parseDeviceList(response.getResponse().toString()); + break; default: break; } @@ -663,4 +674,12 @@ public void onMessageReceived(MiIoSendCommand response) { logger.debug("Error while handing message {}", response.getResponse(), e); } } + + private void parseDeviceList(String str){ + GatewayDevicesList message = new Gson().fromJson(str, GatewayDevicesList.class); + logger.info("Found devices count: {}", message.result.size()); + //if(bridge != null) + // bridge.getDevicesListRequestCompleted(message); + + } } diff --git a/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/json/GatewayDeviceItem.java b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/json/GatewayDeviceItem.java new file mode 100644 index 000000000..1e54d2508 --- /dev/null +++ b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/json/GatewayDeviceItem.java @@ -0,0 +1,24 @@ +package org.openhab.binding.miio.internal.json; + +import org.eclipse.jdt.annotation.Nullable; +import org.eclipse.jdt.annotation.NonNull; + +import com.google.gson.annotations.SerializedName; + +public class GatewayDeviceItem { + @SerializedName("did") + @NonNull + public String did = ""; + + @SerializedName("model") + @NonNull + public String model = ""; + + @SerializedName("num") + @Nullable + public Integer num; + + @SerializedName("total") + @Nullable + public Integer total; +} diff --git a/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/json/GatewayDevicesList.java b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/json/GatewayDevicesList.java new file mode 100644 index 000000000..e9a148bc4 --- /dev/null +++ b/bundles/org.openhab.binding.miio/src/main/java/org/openhab/binding/miio/internal/json/GatewayDevicesList.java @@ -0,0 +1,20 @@ +package org.openhab.binding.miio.internal.json; + +import org.eclipse.jdt.annotation.Nullable; + +import com.google.gson.annotations.SerializedName; + +import org.eclipse.jdt.annotation.NonNullByDefault; +import java.util.List; + + +@NonNullByDefault +public class GatewayDevicesList { + @SerializedName("code") + @Nullable + public Integer code; + + @SerializedName("result") + @Nullable + public List result; +}