Skip to content

Commit 1372385

Browse files
author
Eugen Freiter
committed
add support for custom min/max values for temperatures
Signed-off-by: Eugen Freiter <[email protected]>
1 parent 2b7e9d7 commit 1372385

File tree

6 files changed

+124
-6
lines changed

6 files changed

+124
-6
lines changed

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

+30
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,36 @@ public interface TemperatureSensorAccessory extends HomekitAccessory {
2121
*/
2222
CompletableFuture<Double> getCurrentTemperature();
2323

24+
/**
25+
* return the min value for current temperature. overwrite if you want to change the default
26+
* value.
27+
*
28+
* @return min current temperature
29+
*/
30+
default double getMinCurrentTemperature() {
31+
return 0;
32+
}
33+
34+
/**
35+
* return the max value for current temperature. overwrite if you want to change the default
36+
* value.
37+
*
38+
* @return max current temperature
39+
*/
40+
default double getMaxCurrentTemperature() {
41+
return 100;
42+
}
43+
44+
/**
45+
* return the min step value for current temperature. overwrite if you want to change the default
46+
* value.
47+
*
48+
* @return min step current temperature
49+
*/
50+
default double getMinStepCurrentTemperature() {
51+
return 0.1;
52+
}
53+
2454
/**
2555
* Subscribes to changes in the current temperature.
2656
*

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

+58
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,36 @@ public interface ThermostatAccessory extends HomekitAccessory {
2424
*/
2525
CompletableFuture<Double> getCurrentTemperature();
2626

27+
/**
28+
* return the min value for current temperature. overwrite if you want to change the default
29+
* value.
30+
*
31+
* @return min current temperature
32+
*/
33+
default double getMinCurrentTemperature() {
34+
return 0;
35+
}
36+
37+
/**
38+
* return the max value for current temperature. overwrite if you want to change the default
39+
* value.
40+
*
41+
* @return max current temperature
42+
*/
43+
default double getMaxCurrentTemperature() {
44+
return 100;
45+
}
46+
47+
/**
48+
* return the min step value for current temperature. overwrite if you want to change the default
49+
* value.
50+
*
51+
* @return min step current temperature
52+
*/
53+
default double getMinStepCurrentTemperature() {
54+
return 0.1;
55+
}
56+
2757
/**
2858
* Retrieves the target temperature, in celsius degrees.
2959
*
@@ -39,6 +69,34 @@ public interface ThermostatAccessory extends HomekitAccessory {
3969
*/
4070
void setTargetTemperature(Double value) throws Exception;
4171

72+
/**
73+
* return the min value for target temperature. overwrite if you want to change the default value.
74+
*
75+
* @return min target temperature
76+
*/
77+
default double getMinTargetTemperature() {
78+
return 10;
79+
}
80+
81+
/**
82+
* return the max value for target temperature. overwrite if you want to change the default value.
83+
*
84+
* @return max target temperature
85+
*/
86+
default double getMaxTargetTemperature() {
87+
return 38;
88+
}
89+
90+
/**
91+
* return the min step value for target temperature. overwrite if you want to change the default
92+
* value.
93+
*
94+
* @return min step target temperature
95+
*/
96+
default double getMinStepTargetTemperature() {
97+
return 0.1;
98+
}
99+
42100
/**
43101
* Retrieves the current {@link CurrentHeatingCoolingStateEnum} of the thermostat.
44102
*

src/main/java/io/github/hapjava/characteristics/impl/thermostat/CurrentTemperatureCharacteristic.java

+13-3
Original file line numberDiff line numberDiff line change
@@ -11,19 +11,29 @@
1111
public class CurrentTemperatureCharacteristic extends FloatCharacteristic {
1212

1313
public CurrentTemperatureCharacteristic(
14+
double minValue,
15+
double maxValue,
16+
double minStep,
1417
Supplier<CompletableFuture<Double>> getter,
1518
Consumer<HomekitCharacteristicChangeCallback> subscriber,
1619
Runnable unsubscriber) {
1720
super(
1821
"00000011-0000-1000-8000-0026BB765291",
1922
"current temperature",
20-
0,
21-
100,
22-
0.1,
23+
minValue,
24+
maxValue,
25+
minStep,
2326
"C",
2427
Optional.of(getter),
2528
Optional.empty(),
2629
Optional.of(subscriber),
2730
Optional.of(unsubscriber));
2831
}
32+
33+
public CurrentTemperatureCharacteristic(
34+
Supplier<CompletableFuture<Double>> getter,
35+
Consumer<HomekitCharacteristicChangeCallback> subscriber,
36+
Runnable unsubscriber) {
37+
this(0, 100, 0.1, getter, subscriber, unsubscriber);
38+
}
2939
}

src/main/java/io/github/hapjava/characteristics/impl/thermostat/TargetTemperatureCharacteristic.java

+14-3
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,31 @@
1515
public class TargetTemperatureCharacteristic extends FloatCharacteristic {
1616

1717
public TargetTemperatureCharacteristic(
18+
double minValue,
19+
double maxValue,
20+
double minStep,
1821
Supplier<CompletableFuture<Double>> getter,
1922
ExceptionalConsumer<Double> setter,
2023
Consumer<HomekitCharacteristicChangeCallback> subscriber,
2124
Runnable unsubscriber) {
2225
super(
2326
"00000035-0000-1000-8000-0026BB765291",
2427
"target temperature",
25-
10,
26-
38,
27-
0.1,
28+
minValue,
29+
maxValue,
30+
minStep,
2831
"C",
2932
Optional.of(getter),
3033
Optional.of(setter),
3134
Optional.of(subscriber),
3235
Optional.of(unsubscriber));
3336
}
37+
38+
public TargetTemperatureCharacteristic(
39+
Supplier<CompletableFuture<Double>> getter,
40+
ExceptionalConsumer<Double> setter,
41+
Consumer<HomekitCharacteristicChangeCallback> subscriber,
42+
Runnable unsubscriber) {
43+
this(10, 38, 0.1, getter, setter, subscriber, unsubscriber);
44+
}
3445
}

src/main/java/io/github/hapjava/services/impl/TemperatureSensorService.java

+3
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ public TemperatureSensorService(
2525
public TemperatureSensorService(TemperatureSensorAccessory accessory) {
2626
this(
2727
new CurrentTemperatureCharacteristic(
28+
accessory.getMinCurrentTemperature(),
29+
accessory.getMaxCurrentTemperature(),
30+
accessory.getMinStepCurrentTemperature(),
2831
accessory::getCurrentTemperature,
2932
accessory::subscribeCurrentTemperature,
3033
accessory::unsubscribeCurrentTemperature));

src/main/java/io/github/hapjava/services/impl/ThermostatService.java

+6
Original file line numberDiff line numberDiff line change
@@ -46,10 +46,16 @@ public ThermostatService(ThermostatAccessory accessory) {
4646
accessory::subscribeTargetState,
4747
accessory::unsubscribeTargetState),
4848
new CurrentTemperatureCharacteristic(
49+
accessory.getMinCurrentTemperature(),
50+
accessory.getMaxCurrentTemperature(),
51+
accessory.getMinStepCurrentTemperature(),
4952
accessory::getCurrentTemperature,
5053
accessory::subscribeCurrentTemperature,
5154
accessory::unsubscribeCurrentTemperature),
5255
new TargetTemperatureCharacteristic(
56+
accessory.getMinTargetTemperature(),
57+
accessory.getMaxTargetTemperature(),
58+
accessory.getMinStepTargetTemperature(),
5359
accessory::getTargetTemperature,
5460
accessory::setTargetTemperature,
5561
accessory::subscribeTargetTemperature,

0 commit comments

Comments
 (0)