]> git.basschouten.com Git - openhab-addons.git/blob
6beeb16c13e6f8200ff1a378867a6b63a313b02e
[openhab-addons.git] /
1 /**
2  * Copyright (c) 2010-2023 Contributors to the openHAB project
3  *
4  * See the NOTICE file(s) distributed with this work for additional
5  * information.
6  *
7  * This program and the accompanying materials are made available under the
8  * terms of the Eclipse Public License 2.0 which is available at
9  * http://www.eclipse.org/legal/epl-2.0
10  *
11  * SPDX-License-Identifier: EPL-2.0
12  */
13
14 package org.openhab.binding.nobohub.internal.model;
15
16 import java.time.Duration;
17
18 import org.eclipse.jdt.annotation.NonNullByDefault;
19
20 /**
21  * Contains information about the Hub we are communicating with.
22  *
23  * @author Jørgen Austvik - Initial contribution
24  */
25 @NonNullByDefault
26 public class Hub {
27
28     private final SerialNumber serialNumber;
29
30     private final String name;
31
32     private int activeOverrideId;
33
34     private final int defaultAwayOverrideLength;
35
36     private final String softwareVersion;
37
38     private final String hardwareVersion;
39
40     private final String productionDate;
41
42     public Hub(SerialNumber serialNumber, String name, int defaultAwayOverrideLength, int activeOverrideId,
43             String softwareVersion, String hardwareVersion, String productionDate) {
44         this.serialNumber = serialNumber;
45         this.name = name;
46         this.defaultAwayOverrideLength = defaultAwayOverrideLength;
47         this.activeOverrideId = activeOverrideId;
48         this.softwareVersion = softwareVersion;
49         this.hardwareVersion = hardwareVersion;
50         this.productionDate = productionDate;
51     }
52
53     public static Hub fromH05(String h05) throws NoboDataException {
54         String[] parts = h05.split(" ", 8);
55
56         if (parts.length != 8) {
57             throw new NoboDataException(
58                     String.format("Unexpected number of parts from hub on H5 call: %d", parts.length));
59         }
60
61         return new Hub(new SerialNumber(ModelHelper.toJavaString(parts[1])), ModelHelper.toJavaString(parts[2]),
62                 Integer.parseInt(parts[3]), Integer.parseInt(parts[4]), ModelHelper.toJavaString(parts[5]),
63                 ModelHelper.toJavaString(parts[6]), ModelHelper.toJavaString(parts[7]));
64     }
65
66     public String generateCommandString(final String command) {
67         return String.join(" ", command, serialNumber.toString(), ModelHelper.toHubString(name),
68                 Integer.toString(defaultAwayOverrideLength), Integer.toString(activeOverrideId),
69                 ModelHelper.toHubString(softwareVersion), ModelHelper.toHubString(hardwareVersion),
70                 ModelHelper.toHubString(productionDate));
71     }
72
73     public SerialNumber getSerialNumber() {
74         return serialNumber;
75     }
76
77     public String getName() {
78         return name;
79     }
80
81     public Duration getDefaultAwayOverrideLength() {
82         return Duration.ofMinutes(defaultAwayOverrideLength);
83     }
84
85     public int getActiveOverrideId() {
86         return activeOverrideId;
87     }
88
89     public void setActiveOverrideId(int id) {
90         activeOverrideId = id;
91     }
92
93     public String getSoftwareVersion() {
94         return softwareVersion;
95     }
96
97     public String getHardwareVersion() {
98         return hardwareVersion;
99     }
100
101     public String getProductionDate() {
102         return productionDate;
103     }
104 }