]> git.basschouten.com Git - openhab-addons.git/blob
7e5dd5cb03d4a4095749be5af344ddaa1244a4bd
[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 package org.openhab.binding.velux.internal.bridge.common;
14
15 import org.eclipse.jdt.annotation.NonNullByDefault;
16 import org.eclipse.jdt.annotation.Nullable;
17
18 /**
19  * Definition of the 3rd Level I/O interface towards the <B>Velux</B> bridge.
20  * <P>
21  * It provides the one-and-only protocol specific 1st-level communication class.
22  * Additionally it provides all methods for different gateway interactions.
23  * <P>
24  * The following class access methods exist:
25  * <UL>
26  * <LI>{@link #getDeviceStatus} for retrieving the bridge state (i.e. IDLE, BUSY, a.s.o),</LI>
27  * <LI>{@link #getFirmware} for retrieving the firmware version of the bridge,</LI>
28  * <LI>{@link #getHouseStatus} for retrieving the information about device state changes recognized by the
29  * bridge,</LI>
30  * <LI>{@link #getLANConfig} for retrieving the complete LAN information of the bridge,</LI>
31  * <LI>{@link #getProduct} for retrieving the any information about a device behind the bridge,</LI>
32  * <LI>{@link #getProductLimitation} for retrieving the limitation information about a device behind the
33  * bridge,</LI>
34  * <LI>{@link #getProducts} for retrieving the any information for all devices behind the bridge,</LI>
35  * <LI>{@link #getScenes} for retrieving the any information for all scenes defined on the bridge,</LI>
36  * <LI>{@link #getWLANConfig} for retrieving the complete WLAN information of the bridge,</LI>
37  * <LI>{@link #login} for establishing a trusted connectivity by authentication,</LI>
38  * <LI>{@link #logout} for tearing down the trusted connectivity by deauthentication,</LI>
39  * <LI>{@link #runProductCommand} for manipulation of a device behind the bridge (i.e. instructing to
40  * modify a position),</LI>
41  * <LI>{@link #runProductDiscovery} for activation of learning mode of the bridge to discovery new
42  * products,</LI>
43  * <LI>{@link #runProductIdentification} for human-oriented identification a device behind the bridge (i.e.
44  * by winking or switching on-and-off),</LI>
45  * <LI>{@link #runProductSearch} for searching for lost products on the bridge,</LI>
46  * <LI>{@link #runScene} for manipulation of a set of devices behind the bridge which are tied together as scene,</LI>
47  * <LI>{@link #setHouseStatusMonitor} for activation or deactivation of the house monitoring mode to be informed about
48  * device state changes recognized by the bridge,</LI>
49  * <LI>{@link #setSceneVelocity} for changes the velocity of a scene defined on the bridge (i.e. silent or
50  * fast mode).</LI>
51  * </UL>
52  * <P>
53  * Message semantic: Retrieval of Bridge configuration and information of devices beyond the bridge.
54  * <P>
55  *
56  * It defines information how to send query and receive answer through the
57  * VeluxBridgeProvider as described by the BridgeCommunicationProtocol.
58  *
59  * @author Guenther Schreiner - Initial contribution.
60  */
61 @NonNullByDefault
62 public interface BridgeAPI {
63
64     Login login();
65
66     Logout logout();
67
68     @Nullable
69     SetHouseStatusMonitor setHouseStatusMonitor();
70
71     @Nullable
72     GetHouseStatus getHouseStatus();
73
74     RunProductDiscovery runProductDiscovery();
75
76     RunProductSearch runProductSearch();
77
78     RunProductIdentification runProductIdentification();
79
80     GetDeviceStatus getDeviceStatus();
81
82     GetFirmware getFirmware();
83
84     GetLANConfig getLANConfig();
85
86     GetWLANConfig getWLANConfig();
87
88     GetProducts getProducts();
89
90     @Nullable
91     GetProduct getProduct();
92
93     @Nullable
94     GetProductLimitation getProductLimitation();
95
96     @Nullable
97     SetProductLimitation setProductLimitation();
98
99     @Nullable
100     RunProductCommand runProductCommand();
101
102     GetScenes getScenes();
103
104     SetSceneVelocity setSceneVelocity();
105
106     RunScene runScene();
107
108     @Nullable
109     RunReboot runReboot();
110
111     @Nullable
112     GetProduct getProductStatus();
113 }