2 * Copyright (c) 2010-2023 Contributors to the openHAB project
4 * See the NOTICE file(s) distributed with this work for additional
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
11 * SPDX-License-Identifier: EPL-2.0
14 package org.openhab.binding.nobohub.internal.model;
16 import java.time.Duration;
18 import org.eclipse.jdt.annotation.NonNullByDefault;
21 * Contains information about the Hub we are communicating with.
23 * @author Jørgen Austvik - Initial contribution
28 private final SerialNumber serialNumber;
30 private final String name;
32 private int activeOverrideId;
34 private final int defaultAwayOverrideLength;
36 private final String softwareVersion;
38 private final String hardwareVersion;
40 private final String productionDate;
42 public Hub(SerialNumber serialNumber, String name, int defaultAwayOverrideLength, int activeOverrideId,
43 String softwareVersion, String hardwareVersion, String productionDate) {
44 this.serialNumber = serialNumber;
46 this.defaultAwayOverrideLength = defaultAwayOverrideLength;
47 this.activeOverrideId = activeOverrideId;
48 this.softwareVersion = softwareVersion;
49 this.hardwareVersion = hardwareVersion;
50 this.productionDate = productionDate;
53 public static Hub fromH05(String h05) throws NoboDataException {
54 String[] parts = h05.split(" ", 8);
56 if (parts.length != 8) {
57 throw new NoboDataException(
58 String.format("Unexpected number of parts from hub on H5 call: %d", parts.length));
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]));
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));
73 public SerialNumber getSerialNumber() {
77 public String getName() {
81 public Duration getDefaultAwayOverrideLength() {
82 return Duration.ofMinutes(defaultAwayOverrideLength);
85 public int getActiveOverrideId() {
86 return activeOverrideId;
89 public void setActiveOverrideId(int id) {
90 activeOverrideId = id;
93 public String getSoftwareVersion() {
94 return softwareVersion;
97 public String getHardwareVersion() {
98 return hardwareVersion;
101 public String getProductionDate() {
102 return productionDate;