From d18e734e3852803a72369766b96f067a62ae2789 Mon Sep 17 00:00:00 2001 From: David Geisler Date: Fri, 25 Nov 2022 01:29:16 +0100 Subject: [PATCH] add some comments --- .../examples/scenetriggers/SceneTriggers.java | 88 ++++++++++++------- 1 file changed, 55 insertions(+), 33 deletions(-) diff --git a/dirigera-client-examples/src/main/java/de/dvdgeisler/iot/dirigera/client/examples/scenetriggers/SceneTriggers.java b/dirigera-client-examples/src/main/java/de/dvdgeisler/iot/dirigera/client/examples/scenetriggers/SceneTriggers.java index 289fea3..cb1a30e 100644 --- a/dirigera-client-examples/src/main/java/de/dvdgeisler/iot/dirigera/client/examples/scenetriggers/SceneTriggers.java +++ b/dirigera-client-examples/src/main/java/de/dvdgeisler/iot/dirigera/client/examples/scenetriggers/SceneTriggers.java @@ -42,39 +42,6 @@ public SceneTriggers(final DirigeraApi dapi, final ClientApi capi, final ObjectM this.json = json; } - private static SceneTriggerController createTrigger(final Device device, final int buttonIndex) { - return new SceneTriggerController( // trigger for button 0 (turn light on) - null, false, null, null, - new SceneTriggerControllerTrigger( - null, - DeviceType.SHORTCUT_CONTROLLER, - buttonIndex, - device.id)); - } - - private Scene createDummyScene(final Device device, final int button) { - final Scene scene; - final String name; - - name = String.format("%s button %d", device.attributes.state.customName, button); - - scene = this.dapi.scene.create(name, "Icon") - .doOnSuccess(s -> log.info("Created Scene {}: name={}, icon={}", s.id, s.attributes.info.name, s.attributes.info.icon)) - .block(); // create dummy scene - - return this.dapi.scene.setTrigger(scene, List.of( - new SceneTriggerApp(null, null, null, null), - createTrigger(device, button)) - ).block(); - } - - private Stream createDummyScenes(final Device device) { - return Stream.of( - this.createDummyScene(device, 0), - this.createDummyScene(device, 1), - this.createDummyScene(device, 2)); // button 3 raises an error on the dirigera - } - @Bean public CommandLineRunner run() { return (String... args) -> { @@ -117,6 +84,7 @@ public CommandLineRunner run() { log.error(e.getMessage()); } + // clean up scenes.stream() .peek(scene -> log.info("Delete scene {}", scene.attributes.info.name)) .map(this.dapi.scene::delete) @@ -124,6 +92,60 @@ public CommandLineRunner run() { }; } + /** + * Create button for dedicaterd trigger for specific button + * @param device + * @param buttonIndex + * @return + */ + private static SceneTriggerController createTrigger(final Device device, final int buttonIndex) { + return new SceneTriggerController( + null, false, null, null, + new SceneTriggerControllerTrigger( + null, + DeviceType.SHORTCUT_CONTROLLER, + buttonIndex, + device.id)); + } + + /** + * Create a dummy scene to catch the given button press + * @param device + * @param button + * @return + */ + private Scene createDummyScene(final Device device, final int button) { + final Scene scene; + final String name; + + name = String.format("%s button %d", device.attributes.state.customName, button); + + scene = this.dapi.scene.create(name, "Icon") + .doOnSuccess(s -> log.info("Created Scene {}: name={}, icon={}", s.id, s.attributes.info.name, s.attributes.info.icon)) + .block(); // create dummy scene + + return this.dapi.scene.setTrigger(scene, List.of( + new SceneTriggerApp(null, null, null, null), + createTrigger(device, button)) + ).block(); + } + + /** + * Create dummy scenes for all possible buttons + * @param device + * @return + */ + private Stream createDummyScenes(final Device device) { + return Stream.of( + this.createDummyScene(device, 0), + this.createDummyScene(device, 1), + this.createDummyScene(device, 2)); // button 3 raises an error on the dirigera + } + + /** + * Log the button press + * @param s + */ private void logButtonPress(final String s) { final Map json, data, info; final String type;