]> git.basschouten.com Git - openhab-addons.git/commitdiff
[nikohomecontrol] Nhc fixes (#12859)
authorMark Herwege <mherwege@users.noreply.github.com>
Thu, 2 Jun 2022 11:03:42 +0000 (13:03 +0200)
committerGitHub <noreply@github.com>
Thu, 2 Jun 2022 11:03:42 +0000 (13:03 +0200)
* Make trigger type items act on off
* Fix gson serializing empty values
* Fix some null pointer warnings

Signed-off-by: Mark Herwege <mark.herwege@telenet.be>
bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/protocol/nhc1/NhcMessageBase1.java
bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/protocol/nhc1/NhcMessageCmd1.java
bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/protocol/nhc1/NikoHomeControlCommunication1.java
bundles/org.openhab.binding.nikohomecontrol/src/main/java/org/openhab/binding/nikohomecontrol/internal/protocol/nhc2/NikoHomeControlCommunication2.java

index a2079ec06299ada4e0fc6b3c5c537d0920215326..4d53f6b5ddc5d4a876ad5012f3fe570ddd4d41cb 100644 (file)
@@ -13,6 +13,7 @@
 package org.openhab.binding.nikohomecontrol.internal.protocol.nhc1;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
 
 /**
  * Class {@link NhcMessageBase1} used as base class for output from gson for cmd or event feedback from Niko Home
@@ -26,11 +27,12 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
 @NonNullByDefault
 abstract class NhcMessageBase1 {
 
-    private String cmd = "";
-    private String event = "";
+    private @Nullable String cmd;
+    private @Nullable String event;
 
     String getCmd() {
-        return cmd;
+        String cmd = this.cmd;
+        return ((cmd != null) ? cmd : "");
     }
 
     void setCmd(String cmd) {
@@ -38,7 +40,8 @@ abstract class NhcMessageBase1 {
     }
 
     String getEvent() {
-        return event;
+        String event = this.event;
+        return ((event != null) ? event : "");
     }
 
     void setEvent(String event) {
index e4a334b7a3c51b84bd2d7121a60ad07e817fd261..5644d16e74b137a52506ccb9830701a775dcf4d0 100644 (file)
@@ -13,6 +13,7 @@
 package org.openhab.binding.nikohomecontrol.internal.protocol.nhc1;
 
 import org.eclipse.jdt.annotation.NonNullByDefault;
+import org.eclipse.jdt.annotation.Nullable;
 
 /**
  * Class {@link NhcMessageCmd1} used as input to gson to send commands to Niko Home Control. Extends
@@ -26,13 +27,13 @@ import org.eclipse.jdt.annotation.NonNullByDefault;
 @NonNullByDefault
 class NhcMessageCmd1 extends NhcMessageBase1 {
 
-    private int id;
-    private int value1;
-    private int value2;
-    private int value3;
-    private int mode;
-    private int overrule;
-    private String overruletime = "";
+    private @Nullable Integer id;
+    private @Nullable Integer value1;
+    private @Nullable Integer value2;
+    private @Nullable Integer value3;
+    private @Nullable Integer mode;
+    private @Nullable Integer overrule;
+    private @Nullable String overruletime;
 
     NhcMessageCmd1(String cmd) {
         super.setCmd(cmd);
index 2b5f1030c25dadcfde097229ea21650a84774f50..f37a04da055936baba0a0ff58dd131833ecc4727 100644 (file)
@@ -169,8 +169,11 @@ public class NikoHomeControlCommunication1 extends NikoHomeControlCommunication
         nhcEventsRunning = true;
 
         try {
-            while (!listenerStopped & (nhcIn != null) & ((nhcMessage = nhcIn.readLine()) != null)) {
-                readMessage(nhcMessage);
+            BufferedReader in = nhcIn;
+            if (in != null) {
+                while (!listenerStopped && ((nhcMessage = in.readLine()) != null)) {
+                    readMessage(nhcMessage);
+                }
             }
         } catch (IOException e) {
             if (!listenerStopped) {
index f2ff07c0bd5cca5f922f3e49ebc08effdfc3d9c3..13693be37fb83d1021d92def994e810822bbcf9a 100644 (file)
@@ -39,6 +39,7 @@ import org.openhab.binding.nikohomecontrol.internal.protocol.NhcEnergyMeter;
 import org.openhab.binding.nikohomecontrol.internal.protocol.NhcThermostat;
 import org.openhab.binding.nikohomecontrol.internal.protocol.NikoHomeControlCommunication;
 import org.openhab.binding.nikohomecontrol.internal.protocol.NikoHomeControlConstants.ActionType;
+import org.openhab.binding.nikohomecontrol.internal.protocol.nhc2.NhcDevice2.NhcParameter;
 import org.openhab.binding.nikohomecontrol.internal.protocol.nhc2.NhcDevice2.NhcProperty;
 import org.openhab.binding.nikohomecontrol.internal.protocol.nhc2.NhcMessage2.NhcMessageParam;
 import org.openhab.core.io.transport.mqtt.MqttConnectionObserver;
@@ -357,9 +358,9 @@ public class NikoHomeControlCommunication2 extends NikoHomeControlCommunication
 
     private void addDevice(NhcDevice2 device) {
         String location = null;
-        if (device.parameters != null) {
-            location = device.parameters.stream().map(p -> p.locationName).filter(Objects::nonNull).findFirst()
-                    .orElse(null);
+        List<NhcParameter> parameters = device.parameters;
+        if (parameters != null) {
+            location = parameters.stream().map(p -> p.locationName).filter(Objects::nonNull).findFirst().orElse(null);
         }
 
         if ("action".equals(device.type) || "virtual".equals(device.type)) {
@@ -620,10 +621,6 @@ public class NikoHomeControlCommunication2 extends NikoHomeControlCommunication
         switch (action.getType()) {
             case GENERIC:
             case TRIGGER:
-                if (!NHCON.equals(value)) {
-                    // Only trigger for ON
-                    return;
-                }
                 property.basicState = NHCTRIGGERED;
                 break;
             case RELAY: