]> git.basschouten.com Git - openhab-addons.git/commitdiff
[satel] Thing discovery fix (#9718)
authordruciak <druciak@users.noreply.github.com>
Wed, 13 Jan 2021 21:16:34 +0000 (22:16 +0100)
committerGitHub <noreply@github.com>
Wed, 13 Jan 2021 21:16:34 +0000 (13:16 -0800)
Signed-off-by: Krzysztof Goworek <krzysztof.goworek@gmail.com>
bundles/org.openhab.binding.satel/README.md
bundles/org.openhab.binding.satel/src/main/java/org/openhab/binding/satel/internal/SatelHandlerFactory.java
bundles/org.openhab.binding.satel/src/main/java/org/openhab/binding/satel/internal/discovery/SatelDeviceDiscoveryService.java

index cf36c3b3d4e88e11e63de001a33d7046f0b092dd..0fae89f751977352d488ad11a980e2291b9c8c2e 100644 (file)
@@ -289,7 +289,7 @@ The result of this action is compatible with channels of `event-log` thing and c
 Usage:
 
 ```
-    val actions = getActions("satel", "satel:event-log:home")
+    val actions = getActions("satel", "satel:event-log:home:EventLog")
     val eventRec = actions.readEvent(-1)
     logInfo("EventLog", eventRec.get("description"))
 ```
@@ -309,9 +309,9 @@ Bridge satel:ethm-1:home [ host="192.168.0.2", refresh=1000, userCode="1234", en
     Thing shutter KitchenWindow [ upId=2, downId=3 ]
     Thing output Siren [ id=17, wireless=true ]
     Thing atd-100 KitchenTemp [ id=10, refresh=30 ]
+    Thing system System []
+    Thing event-log EventLog []
 }
-Thing satel:system:home "System" (satel:ethm-1:home) []
-Thing satel:event-log:home "Event log" (satel:ethm-1:home) []
 
 ```
 
@@ -328,9 +328,9 @@ Switch BEDROOM_TAMPER "Bedroom PIR tampered" (Satel) { channel="satel:zone:home:
 Switch BEDROOM_TAMPER_M "Bedroom PIR tamper memory" (Satel) { channel="satel:zone:home:BedroomPIR:tamper_alarm_memory" }
 Switch KITCHEN_LAMP "Kitchen lamp" (Satel) { channel="satel:output:home:KitchenLamp:state" }
 Rollershutter KITCHEN_BLIND "Kitchen blind" (Satel) { channel="satel:shutter:home:KitchenWindow:shutter_state" }
-Switch SYSTEM_TROUBLES "Troubles in the system" (Satel) { channel="satel:system:home:troubles" }
+Switch SYSTEM_TROUBLES "Troubles in the system" (Satel) { channel="satel:system:home:System:troubles" }
 String KEYPAD_CHAR ">" <none> (Satel)
-String USER_CODE "User code" (Satel) { channel="satel:system:home:user_code" }
+String USER_CODE "User code" (Satel) { channel="satel:system:home:System:user_code" }
 Switch SIREN_LOBATT "Siren: low battery level" (Satel) { channel="satel:output:home:Siren:device_lobatt" }
 Switch SIREN_NOCOMM "Siren: no communication" (Satel) { channel="satel:output:home:Siren:device_nocomm" }
 Number:Temperature KITCHEN_TEMP "Kitchen temperature [%.1f °C]" <temperature> (Satel) { channel="satel:atd-100:home:KitchenTemp:temperature" }
@@ -380,7 +380,7 @@ rule "Keypad char entered"
 when
     Item KEYPAD_CHAR changed
 then
-    val org.joda.time.DateTime timeout = now.plusSeconds(20)
+    val timeout = now.plusSeconds(20)
 
     if (KEYPAD_CHAR.state == "-") {
         logInfo("Keypad", "Changing user code")
@@ -414,7 +414,7 @@ rule "Send event log"
 when
     Item Alarms changed to ON
 then
-    val actions = getActions("satel", "satel:event-log:home")
+    val actions = getActions("satel", "satel:event-log:home:EventLog")
     if (null === actions) {
         logInfo("EventLog", "Actions not found, check thing ID")
         return
index 23d50625e05d81758db97ab6915f921e57d2bf9e..d77b96603ed6b438220648c863f6c629a2c05965 100644 (file)
@@ -80,8 +80,6 @@ public class SatelHandlerFactory extends BaseThingHandlerFactory {
         if (effectiveUID == null) {
             if (DEVICE_THING_TYPES_UIDS.contains(thingTypeUID)) {
                 effectiveUID = getDeviceUID(thingTypeUID, thingUID, configuration, bridgeUID);
-            } else if (VIRTUAL_THING_TYPES_UIDS.contains(thingTypeUID) && bridgeUID != null) {
-                effectiveUID = new ThingUID(thingTypeUID, bridgeUID.getId());
             }
         }
         return super.createThing(thingTypeUID, configuration, effectiveUID, bridgeUID);
index a7b402bb143d9ac18f240a6f3d9e7836a80d215f..0b263773afc6f2b3014519cdaa56ba1e3dc543a2 100644 (file)
@@ -152,14 +152,10 @@ public class SatelDeviceDiscoveryService extends AbstractDiscoveryService {
 
     private void addThing(ThingTypeUID thingTypeUID, @Nullable String deviceId, String label,
             Map<String, Object> properties) {
-        ThingUID bridgeUID = bridgeHandler.getThing().getUID();
-        ThingUID thingUID;
-        if (deviceId == null) {
-            thingUID = new ThingUID(thingTypeUID, bridgeUID.getId());
-        } else {
-            thingUID = new ThingUID(thingTypeUID, bridgeUID, deviceId);
-        }
-        DiscoveryResult discoveryResult = DiscoveryResultBuilder.create(thingUID).withThingType(thingTypeUID)
+        final ThingUID bridgeUID = bridgeHandler.getThing().getUID();
+        final ThingUID thingUID = new ThingUID(thingTypeUID, bridgeUID,
+                deviceId == null ? toCamelCase(thingTypeUID.getId()) : deviceId);
+        final DiscoveryResult discoveryResult = DiscoveryResultBuilder.create(thingUID).withThingType(thingTypeUID)
                 .withBridge(bridgeUID).withLabel(label).withProperties(properties).build();
         thingDiscovered(discoveryResult);
     }
@@ -193,4 +189,19 @@ public class SatelDeviceDiscoveryService extends AbstractDiscoveryService {
                 return false;
         }
     }
+
+    private static String toCamelCase(String s) {
+        StringBuilder result = new StringBuilder();
+        boolean makeUpper = true;
+        for (int i = 0; i < s.length(); ++i) {
+            char c = s.charAt(i);
+            if (c == '-') {
+                makeUpper = true;
+            } else {
+                result.append(makeUpper ? Character.toUpperCase(c) : c);
+                makeUpper = false;
+            }
+        }
+        return result.toString();
+    }
 }