Skip to content

Commit e2969c1

Browse files
authored
Merge pull request #1358 from bwssytems/devbranch5.4.1
Devbranch5.4.1 fixes #1267
2 parents b3f2c25 + c99777e commit e2969c1

File tree

6 files changed

+54
-22
lines changed

6 files changed

+54
-22
lines changed

README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,20 +57,20 @@ Then locate the jar and start the server with:
5757
ATTENTION: Due to port 80 being the default, Linux restricts this to super user. Use the instructions below.
5858

5959
```
60-
java -jar ha-bridge-5.4.0.jar
60+
java -jar ha-bridge-5.4.1.jar
6161
```
6262

6363
## Manual installation of ha-bridge and setup of systemd service
6464
Next gen Linux systems (this includes the Raspberry Pi), use systemd to run and manage services.
6565
Here is a link on how to use systemd: https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units
6666

67-
Create the directory and make sure that ha-bridge-5.4.0.jar is in your /home/pi/ha-bridge directory.
67+
Create the directory and make sure that ha-bridge-5.4.1.jar is in your /home/pi/ha-bridge directory.
6868

6969
```
7070
pi@raspberrypi:~ $ mkdir ha-bridge
7171
pi@raspberrypi:~ $ cd ha-bridge
7272
73-
pi@raspberrypi:~/ha-bridge $ wget https://github.com/bwssytems/ha-bridge/releases/download/v5.4.0/ha-bridge-5.4.0.jar
73+
pi@raspberrypi:~/ha-bridge $ wget https://github.com/bwssytems/ha-bridge/releases/download/v5.4.1/ha-bridge-5.4.1.jar
7474
```
7575

7676
Create the ha-bridge.service unit file:
@@ -89,7 +89,7 @@ After=network.target
8989
Type=simple
9090
9191
WorkingDirectory=/home/pi/ha-bridge
92-
ExecStart=/usr/bin/java -jar -Dconfig.file=/home/pi/ha-bridge/data/habridge.config /home/pi/ha-bridge/ha-bridge-5.4.0.jar
92+
ExecStart=/usr/bin/java -jar -Dconfig.file=/home/pi/ha-bridge/data/habridge.config /home/pi/ha-bridge/ha-bridge-5.4.1.jar
9393
9494
[Install]
9595
WantedBy=multi-user.target
@@ -161,7 +161,7 @@ pi@raspberrypi:~ $ docker run \
161161
--volume=$PWD:/ha-bridge/data \
162162
--volume=/etc/localtime:/etc/localtime:ro \
163163
--volume=/etc/timezone:/etc/timezone:ro \
164-
habridge/ha-bridge-raspberry-pi3 \
164+
habridge/ha-bridge-raspberrypi3 \
165165
-Dserver.port=8080 \
166166
-Dsecurity.key=secret
167167
```

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
<groupId>com.bwssystems.HABridge</groupId>
77
<artifactId>ha-bridge</artifactId>
8-
<version>5.4.0-java11</version>
8+
<version>5.4.1RC1-java11</version>
99
<packaging>jar</packaging>
1010

1111
<name>HA Bridge</name>
@@ -71,7 +71,7 @@
7171
<dependency>
7272
<groupId>org.apache.httpcomponents</groupId>
7373
<artifactId>httpclient</artifactId>
74-
<version>4.5.1</version>
74+
<version>4.5.13</version>
7575
</dependency>
7676
<dependency>
7777
<groupId>org.apache.httpcomponents</groupId>

src/main/java/com/bwssystems/HABridge/BridgeSettingsDescriptor.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,9 @@ public class BridgeSettingsDescriptor {
138138
@SerializedName("linkbuttontimeout")
139139
@Expose
140140
private Integer linkbuttontimeout;
141+
@SerializedName("uidnineoctets")
142+
@Expose
143+
private boolean uidnineoctets;
141144

142145
// @SerializedName("activeloggers")
143146
// @Expose
@@ -202,6 +205,7 @@ public BridgeSettingsDescriptor() {
202205
this.configfile = Configuration.CONFIG_FILE;
203206
this.upnpadvanced = false;
204207
this.linkbuttontimeout = Configuration.LINK_BUTTON_TIMEOUT;
208+
this.uidnineoctets = false;
205209
}
206210

207211
public String getUpnpConfigAddress() {
@@ -873,4 +877,12 @@ public Integer getLinkbuttontimeout() {
873877
public void setLinkbuttontimeout(Integer linkbuttontimeout) {
874878
this.linkbuttontimeout = linkbuttontimeout;
875879
}
880+
881+
public boolean isUidnineoctets() {
882+
return uidnineoctets;
883+
}
884+
885+
public void setUidnineoctets(boolean uidnineoctets) {
886+
this.uidnineoctets = uidnineoctets;
887+
}
876888
}

src/main/java/com/bwssystems/HABridge/dao/DeviceRepository.java

Lines changed: 29 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
import com.bwssystems.HABridge.api.CallItem;
1919
import com.bwssystems.HABridge.api.hue.DeviceResponse;
2020
import com.bwssystems.HABridge.api.hue.DeviceState;
21-
import com.bwssystems.HABridge.dao.DeviceDescriptor;
21+
// import com.bwssystems.HABridge.dao.DeviceDescriptor;
2222
import com.bwssystems.HABridge.plugins.hue.HueHome;
2323
import com.bwssystems.HABridge.util.BackupHandler;
2424
import com.bwssystems.HABridge.util.JsonTransformer;
@@ -43,16 +43,18 @@ public class DeviceRepository extends BackupHandler {
4343
private Gson gson;
4444
private Integer nextId;
4545
private Integer seedId;
46+
private boolean uidnineoctets;
4647
private Logger log = LoggerFactory.getLogger(DeviceRepository.class);
4748

48-
public DeviceRepository(String deviceDb, Integer seedid) {
49+
public DeviceRepository(String deviceDb, Integer seedid, boolean uidnineoctets_setting) {
4950
super();
5051
gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();
5152
repositoryPath = null;
5253
repositoryPath = Paths.get(deviceDb);
5354
setupParams(repositoryPath, ".bk", "device.db-");
5455
nextId = seedid;
5556
seedId = seedid;
57+
uidnineoctets = uidnineoctets_setting;
5658
_loadRepository(repositoryPath);
5759
}
5860

@@ -311,22 +313,35 @@ private String hueUniqueId(Integer anId) {
311313
log.warn("Cannot get MD5 utility to hash unique ids.");
312314
}
313315

314-
if(md != null) {
316+
if (md != null) {
315317
md.update(anId.toString().getBytes());
316318
byte[] digest = md.digest();
317-
theUniqueId = String.format("%s:%s:%s:%s:%s:%s:%s-%s",
318-
HexLibrary.encodeHexString(digest).substring(0, 2),
319-
HexLibrary.encodeHexString(digest).substring(2, 4),
320-
HexLibrary.encodeHexString(digest).substring(4, 6),
321-
HexLibrary.encodeHexString(digest).substring(6, 8),
322-
HexLibrary.encodeHexString(digest).substring(8, 10),
323-
HexLibrary.encodeHexString(digest).substring(10, 12),
324-
HexLibrary.encodeHexString(digest).substring(12, 14),
325-
HexLibrary.encodeHexString(digest).substring(14, 16));
326-
}
319+
if (uidnineoctets) {
320+
theUniqueId = String.format("00:%s:%s:%s:%s:%s:%s:%s-%s",
321+
HexLibrary.encodeHexString(digest).substring(0, 2),
322+
HexLibrary.encodeHexString(digest).substring(2, 4),
323+
HexLibrary.encodeHexString(digest).substring(4, 6),
324+
HexLibrary.encodeHexString(digest).substring(6, 8),
325+
HexLibrary.encodeHexString(digest).substring(8, 10),
326+
HexLibrary.encodeHexString(digest).substring(10, 12),
327+
HexLibrary.encodeHexString(digest).substring(12, 14),
328+
HexLibrary.encodeHexString(digest).substring(14, 16));
329+
330+
} else {
331+
theUniqueId = String.format("%s:%s:%s:%s:%s:%s:%s-%s",
332+
HexLibrary.encodeHexString(digest).substring(0, 2),
333+
HexLibrary.encodeHexString(digest).substring(2, 4),
334+
HexLibrary.encodeHexString(digest).substring(4, 6),
335+
HexLibrary.encodeHexString(digest).substring(6, 8),
336+
HexLibrary.encodeHexString(digest).substring(8, 10),
337+
HexLibrary.encodeHexString(digest).substring(10, 12),
338+
HexLibrary.encodeHexString(digest).substring(12, 14),
339+
HexLibrary.encodeHexString(digest).substring(14, 16));
327340

341+
}
342+
}
328343

329-
if(theUniqueId == null) {
344+
if (theUniqueId == null) {
330345
newValue = anId % 256;
331346
if (newValue <= 0)
332347
newValue = 1;

src/main/java/com/bwssystems/HABridge/devicemanagmeent/DeviceResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public class DeviceResource {
4848

4949
public DeviceResource(BridgeSettings theSettings, HomeManager aHomeManager) {
5050
bridgeSettings = theSettings;
51-
this.deviceRepository = new DeviceRepository(bridgeSettings.getBridgeSettingsDescriptor().getUpnpDeviceDb(), bridgeSettings.getBridgeSettingsDescriptor().getSeedid());
51+
this.deviceRepository = new DeviceRepository(bridgeSettings.getBridgeSettingsDescriptor().getUpnpDeviceDb(), bridgeSettings.getBridgeSettingsDescriptor().getSeedid(), bridgeSettings.getBridgeSettingsDescriptor().isUidnineoctets());
5252
this.groupRepository = new GroupRepository(bridgeSettings.getBridgeSettingsDescriptor().getUpnpGroupDb());
5353
homeManager = aHomeManager;
5454
aGsonHandler = new GsonBuilder().create();

src/main/resources/public/views/system.html

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -829,6 +829,11 @@ <h1 class="panel-title">Bridge Settings</h1>
829829
<td><input type="checkbox" ng-model="bridge.settings.upnpadvanced" ng-true-value=true
830830
ng-false-value=false> {{bridge.settings.upnpadvanced}}</td>
831831
</tr>
832+
<tr>
833+
<td>Unique ID to use 9 Octets (Renumber after saving this setting)</td>
834+
<td><input type="checkbox" ng-model="bridge.settings.uidnineoctets" ng-true-value=true
835+
ng-false-value=false> {{bridge.settings.uidnineoctets}}</td>
836+
</tr>
832837
<tr>
833838
<td>Trace UPNP Calls</td>
834839
<td><input type="checkbox" ng-model="bridge.settings.traceupnp" ng-true-value=true

0 commit comments

Comments
 (0)