From b582829e50325eb2140ca0d402685810a3a31e7b Mon Sep 17 00:00:00 2001 From: Cody Cutrer Date: Wed, 19 Oct 2022 12:17:55 -0600 Subject: [PATCH] [homekit] Improve output of console's `homekit show` command (#13569) * [homekit] Improve output of console's `homekit show` command * include the full JSON from all the characteristics, so you can confirm everything is configured correctly. * only use simple class names; the fully qualified package is just a distraction. * show linked services if they exist * include the class name of services, not just the GUID Signed-off-by: Cody Cutrer Signed-off-by: Andras Uhrin --- .../internal/HomekitCommandExtension.java | 26 +++++++++++++++---- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/HomekitCommandExtension.java b/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/HomekitCommandExtension.java index 8b6fc43a763bf..0904832023f2a 100644 --- a/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/HomekitCommandExtension.java +++ b/bundles/org.openhab.io.homekit/src/main/java/org/openhab/io/homekit/internal/HomekitCommandExtension.java @@ -26,6 +26,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import io.github.hapjava.services.Service; + /** * Console commands for interacting with the HomeKit integration * @@ -119,6 +121,24 @@ private void listAccessories(Console console) { }); } + private void printService(Console console, Service service, int indent) { + console.println(" ".repeat(indent) + "Service Type: " + service.getClass().getSimpleName() + " (" + + service.getType() + ")"); + console.println(" ".repeat(indent + 2) + "Characteristics:"); + service.getCharacteristics().forEach((c) -> { + try { + console.println( + " ".repeat(indent + 4) + c.getClass().getSimpleName() + ": " + c.toJson(0).get().toString()); + } catch (InterruptedException | ExecutionException e) { + } + }); + if (service.getLinkedServices().isEmpty()) { + return; + } + console.println(" ".repeat(indent + 2) + "Linked Services:"); + service.getLinkedServices().forEach((s) -> printService(console, s, indent + 2)); + } + private void printAccessory(String id, Console console) { homekit.getAccessories().forEach(v -> { try { @@ -126,11 +146,7 @@ private void printAccessory(String id, Console console) { && (v.getName().get().toUpperCase().contains(id.toUpperCase())))) { console.println(v.getId() + " " + v.getName().get()); console.println("Services:"); - v.getServices().forEach(s -> { - console.println(" Service Type: " + s.getType()); - console.println(" Characteristics: "); - s.getCharacteristics().forEach(c -> console.println(" : " + c.getClass())); - }); + v.getServices().forEach(s -> printService(console, s, 2)); console.println(""); } } catch (InterruptedException | ExecutionException e) {