Skip to content

Commit 419b8f1

Browse files
yfreccutrerEugen FreitersobeosEugen Freiter
authored
changes from HAP 2.1.0
* fix HAP subscription process * increase java version for travis * update fmt-maven-plugin to latest version * another fix for travis build. switch to openjdk * switch to openjdk8 * fix thermostat for io13. make temprature unit changeable * switch to openjdk * add subscribe/unsubscribe * fix the names of the garage door characteristics * switch to openjdk * hap-java#93 Fix discoverability & pairing with ios13 (hap-java#95) Switch discoverable to false once client is authenticated * Fixed package (hap-java#98) * add carbon dioxide sensor (hap-java#82) * increase java version * switch to openjdk8 * major refactoring to support optional attributes * add name, active and fault interfaces * make service characteristics complete * update CHANGES.md and README.md * Apply J-N-K patches for Openhab. update dependencies to be aligned with OH * fix some typos in the characteristics descriptions * fix for javadoc bug * fix potential NPE. adapt log level Signed-off-by: Eugen Freiter <freiter@gmx.de> * fix typo and add some logging Signed-off-by: Eugen Freiter <freiter@gmx.de> * Add Doorbell, Microphone, Slat, Speaker, StatelessProgrammableSwitch accessories Signed-off-by: Eugen Freiter <freiter@gmx.de> * update readme Signed-off-by: Eugen Freiter <freiter@gmx.de> * add air purifier and air quality Signed-off-by: Eugen Freiter <freiter@gmx.de> * reduce log leve. align more with OH guidance on logging Signed-off-by: Eugen Freiter <freiter@gmx.de> * add service label service and hap protocol version service. fix Mute characteristic Signed-off-by: Eugen Freiter <freiter@gmx.de> * fix the Id for TargetHorizontalTiltAngleCharacteristic Signed-off-by: Eugen Freiter <freiter@gmx.de> * add Faucet and HeaterCooler Signed-off-by: Eugen Freiter <freiter@gmx.de> * add humidifier dehumidifier accessory Signed-off-by: Eugen Freiter <freiter@gmx.de> * add irrigation system, clean up javadocs Signed-off-by: Eugen Freiter <freiter@gmx.de> * remove reference to spec Signed-off-by: Eugen Freiter <freiter@gmx.de> * add support for custom min/max values for temperatures Signed-off-by: Eugen Freiter <freiter@gmx.de> * fix typos. add support for custom min/max values for threshold temperatures Signed-off-by: Eugen Freiter <freiter@gmx.de> * add constants for default min/max values Signed-off-by: Eugen Freiter <freiter@gmx.de> * put debugData back Signed-off-by: Eugen Freiter <freiter@gmx.de> * fix the typo in CarbonDioxideSensorService * add support for valid-values (for enum characteristics) * CHANGES update * [hap-java#119] added support for valid values for target HumidifierDehumidifierState * [hap-java#119] added support for valid values for target HumidifierDehumidifierState * [hap-java#119] added support for valid values for target HumidifierDehumidifierState * [hap-java#119] added support for valid values for target HumidifierDehumidifierState * add support for qr code Signed-off-by: Eugen Freiter <freiter@gmx.de> * add default implementation for setup Id Signed-off-by: Eugen Freiter <freiter@gmx.de> * add support for linked services Some services require linked services to work, for example, the Television service which requires each input to be a linked service. With this change, support to link services is added, though it's not used in any existing service, as they don't need linking. This change also centralizes the generation of interface ids. They are now only generated in the registry. We were previously also generating them in the accessory controller, relying on an identical processing sequence. * port of hap-java#68 PR on jmDNS to latest code base Signed-off-by: Eugen Freiter <freiter@gmx.de> * incorporate review feedback Signed-off-by: Eugen Freiter <freiter@gmx.de> * Add support for FilterMaintenanceAccessory [hap-java#124](hap-java#124) * Add support for FilterMaintenanceAccessory [hap-java#124](hap-java#124) * [hap-java#124](hap-java#124 * Add support for FilterMaintenanceAccessory [hap-java#124](hap-java#124) * Add support for FilterMaintenanceAccessory [hap-java#124](hap-java#124) * Add support for FilterMaintenanceAccessory [hap-java#124](hap-java#124) typo in JavaDoc * Add support for FilterMaintenanceAccessory [hap-java#124](hap-java#124) JavaDoc error fixed * Add support for FilterMaintenanceAccessory [hap-java#124](hap-java#124) JavaDoc error fixed * add linked service API Signed-off-by: Eugen Freiter <freiter@gmx.de> * expose addLinkedService at Service interface Signed-off-by: Eugen Freiter <freiter@gmx.de> * prepare release Signed-off-by: Eugen Freiter <freiter@gmx.de> Co-authored-by: Cody Cutrer <cody@cutrer.us> Co-authored-by: Eugen Freiter <efreiter@deloitte.de> Co-authored-by: sobeos <sobeos@gmail.com> Co-authored-by: Eugen Freiter <freiter@gmx.de> Co-authored-by: Martin Hanes <martin.hanes@gmail.com> Co-authored-by: Jiří Václavovič <jvaclavovic@gmail.com> Co-authored-by: Gert-Jan van der Heiden <gjvdspam@gmail.com> Co-authored-by: Dennis Frommknecht <dfrommi@users.noreply.github.com>
1 parent 327596d commit 419b8f1

File tree

78 files changed

+745
-255
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+745
-255
lines changed

CHANGES.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,13 @@
77
* `services` package consists of services, which grouping characteristics. e.g. `WindowCoveringService` defines mandatory and optional characteristics for a window covering service as it is defined in HAP spec.
88
* `server` package consists classes to run HomeKit server and handle communication
99
* the process is following: client, e.g. openHAB bindings, extends accessory classes, e.g. `WindowCoveringAccessory` and implements all required methods. WindowCoveringAccessory is linked already to WindowCoveringService, that in turn is link to single characteristics.
10+
* linked service support
11+
12+
## New and improved
13+
14+
* Valid values are supported for enum characteristics instead of min and max values
15+
* Supported valid states for Thermostat, SecuritySystem, HeaterCooler and HumidifierDehumidifier [#108] [#120](https://github.com/hap-java/HAP-Java/pull/120)
16+
* Support for FilterMaintenance. Can be used as a linked service for an Air Purifier [#124](https://github.com/hap-java/HAP-Java/pull/124)
1017

1118
# HAP-Java 1.1.5
1219

@@ -21,6 +28,7 @@
2128
* Fix various spec violations and optimize communications to improve performance [#65](https://github.com/hap-java/HAP-Java/pull/65)
2229
* Fix a pairing issue in which HAP-Java could listen on a different interface than that which it advertises [#67](https://github.com/hap-java/HAP-Java/pull/67)
2330
* Allow window covering to be used without optional characteristics. The inclusion of `HoldPositionCharacteristic` did terrible things, and we're still not sure why. Addressed [#56](https://github.com/hap-java/HAP-Java/pull/56)
31+
* Air Purifier didn't support rotation speed characteristics. [#124](https://github.com/hap-java/HAP-Java/pull/124)
2432

2533
## New and improved
2634

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ After that, check out the [Sample](https://github.com/hap-java/HAP-Java/tree/sam
2323
Supported HomeKit Accessories
2424
=========
2525

26-
Current implementation fully supports 37 HomeKit accessory/services.
26+
Current implementation fully supports 38 HomeKit accessory/services.
2727

2828
| HomeKit Accessory & Service type | Supported by Java-HAP |
2929
|--------------------|--------------------|
@@ -41,7 +41,7 @@ Current implementation fully supports 37 HomeKit accessory/services.
4141
| Doorbell | :white_check_mark: |
4242
| Fan | :white_check_mark: |
4343
| Faucet | :white_check_mark: |
44-
| Filter Maintenance | :x: |
44+
| Filter Maintenance | :white_check_mark: |
4545
| Garage Door Opener | :white_check_mark: |
4646
| HAP Protocol Information | :white_check_mark: |
4747
| Heater Cooler | :white_check_mark: |

pom.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -134,9 +134,9 @@
134134
</dependency>
135135

136136
<dependency>
137-
<groupId>javax.jmdns</groupId>
137+
<groupId>org.jmdns</groupId>
138138
<artifactId>jmdns</artifactId>
139-
<version>3.4.1</version>
139+
<version>3.5.6</version>
140140
</dependency>
141141

142142
<dependency>
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package io.github.hapjava.accessories;
2+
3+
import io.github.hapjava.characteristics.HomekitCharacteristicChangeCallback;
4+
import io.github.hapjava.characteristics.impl.filtermaintenance.FilterChangeIndicationEnum;
5+
import io.github.hapjava.services.Service;
6+
import io.github.hapjava.services.impl.FilterMaintenanceService;
7+
import java.util.Collection;
8+
import java.util.Collections;
9+
import java.util.concurrent.CompletableFuture;
10+
11+
/**
12+
* A Filter maintenance with mandatory characteristics.
13+
*
14+
* <p>The HomeKit app doesn't support a separate FilterMaintenance, but as a linked service to
15+
* AirPurifier.
16+
*/
17+
public interface FilterMaintenanceAccessory extends HomekitAccessory {
18+
19+
/**
20+
* The filter change indictaion. It's either yes or no.
21+
*
22+
* @return FilterChangeIndicationEnum
23+
*/
24+
CompletableFuture<FilterChangeIndicationEnum> getFilterChangeIndication();
25+
26+
/**
27+
* Subscribes to changes in the filter change indication.
28+
*
29+
* @param callback the function to call when the state changes.
30+
*/
31+
void subscribeFilterChangeIndication(HomekitCharacteristicChangeCallback callback);
32+
33+
/** Unsubscribes from changes in the filter change indication. */
34+
void unsubscribeFilterChangeIndication();
35+
36+
@Override
37+
default Collection<Service> getServices() {
38+
return Collections.singleton(new FilterMaintenanceService(this));
39+
}
40+
}

src/main/java/io/github/hapjava/accessories/HeaterCoolerAccessory.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,24 @@ public interface HeaterCoolerAccessory extends HomekitAccessory {
9696
/** Unsubscribes from changes in the current temperature. */
9797
void unsubscribeCurrentTemperature();
9898

99+
/**
100+
* Valid values for current state.
101+
*
102+
* @return array of valid current states
103+
*/
104+
default CurrentHeaterCoolerStateEnum[] getCurrentHeaterCoolerStateValidValues() {
105+
return CurrentHeaterCoolerStateEnum.values();
106+
}
107+
108+
/**
109+
* Valid values for target state.
110+
*
111+
* @return array of valid target states
112+
*/
113+
default TargetHeaterCoolerStateEnum[] getTargetHeaterCoolerStateValidValues() {
114+
return TargetHeaterCoolerStateEnum.values();
115+
}
116+
99117
@Override
100118
default Collection<Service> getServices() {
101119
return Collections.singleton(new HeaterCoolerService(this));

src/main/java/io/github/hapjava/accessories/HumidifierDehumidifierAccessory.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,16 @@ public interface HumidifierDehumidifierAccessory extends HomekitAccessory {
5757
CompletableFuture<Void> setTargetHumidifierDehumidifierState(
5858
TargetHumidifierDehumidifierStateEnum state);
5959

60+
/**
61+
* Valid values for target state.
62+
*
63+
* @return array of valid target states.
64+
*/
65+
default TargetHumidifierDehumidifierStateEnum[]
66+
getTargetHumidifierDehumidifierStateValidValues() {
67+
return TargetHumidifierDehumidifierStateEnum.values();
68+
}
69+
6070
/**
6171
* Subscribes to changes in the humidifier/dehumidifier current state.
6272
*

src/main/java/io/github/hapjava/accessories/SecuritySystemAccessory.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,24 @@ public interface SecuritySystemAccessory extends HomekitAccessory {
6464
*/
6565
void unsubscribeTargetSecuritySystemState();
6666

67+
/**
68+
* Valid values for current state.
69+
*
70+
* @return array of valid current states.
71+
*/
72+
default CurrentSecuritySystemStateEnum[] getCurrentSecuritySystemStateValidValues() {
73+
return CurrentSecuritySystemStateEnum.values();
74+
}
75+
76+
/**
77+
* Valid values for target state.
78+
*
79+
* @return array of valid targe states.
80+
*/
81+
default TargetSecuritySystemStateEnum[] getTargetSecuritySystemStateValidValues() {
82+
return TargetSecuritySystemStateEnum.values();
83+
}
84+
6785
@Override
6886
default Collection<Service> getServices() {
6987
return Collections.singleton(new SecuritySystemService(this));

src/main/java/io/github/hapjava/accessories/ThermostatAccessory.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,24 @@ default double getMinStepTargetTemperature() {
189189
/** Unsubscribes from changes in the target temperature. */
190190
void unsubscribeTargetTemperature();
191191

192+
/**
193+
* Valid values for current state.
194+
*
195+
* @return array of valid current states.
196+
*/
197+
default CurrentHeatingCoolingStateEnum[] getCurrentHeatingCoolingStateValidValues() {
198+
return CurrentHeatingCoolingStateEnum.values();
199+
}
200+
201+
/**
202+
* Valid values for target state.
203+
*
204+
* @return array of valid targe states.
205+
*/
206+
default TargetHeatingCoolingStateEnum[] getTargetHeatingCoolingStateValidValues() {
207+
return TargetHeatingCoolingStateEnum.values();
208+
}
209+
192210
@Override
193211
default Collection<Service> getServices() {
194212
return Collections.singleton(new ThermostatService(this));
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package io.github.hapjava.accessories.optionalcharacteristic;
2+
3+
import io.github.hapjava.characteristics.HomekitCharacteristicChangeCallback;
4+
import java.util.concurrent.CompletableFuture;
5+
6+
/** Accessory with filter level characteristics */
7+
public interface AccessoryWithFilterLifeLevel {
8+
9+
/**
10+
* what's the filter life level, percentage wise
11+
*
12+
* @return filter life level
13+
*/
14+
CompletableFuture<Double> getFilterLifeLevel();
15+
16+
/**
17+
* Subscribes to changes in the filter life level.
18+
*
19+
* @param callback the function to call when the level changes.
20+
*/
21+
void subscribeFilterLifeLevel(HomekitCharacteristicChangeCallback callback);
22+
23+
/** Unsubscribes from changes in the current filter life level. */
24+
void unsubscribeFilterLifeLevel();
25+
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package io.github.hapjava.accessories.optionalcharacteristic;
2+
3+
import java.util.concurrent.CompletableFuture;
4+
5+
/** Accessory with filter reset characteristics */
6+
public interface AccessoryWithResetFilterIndication {
7+
8+
/**
9+
* Request to reset the filter level
10+
*
11+
* @param indication always 1, by HomeKit protocol. (to be ignored)
12+
* @return a future that completes when the change is made
13+
* @throws Exception when the change cannot be made
14+
*/
15+
CompletableFuture<Void> resetFilterIndication(Integer indication) throws Exception;
16+
}

0 commit comments

Comments
 (0)