Commit Graph

80 Commits

Author SHA1 Message Date
Cody Cutrer
826fc9e8d7
[homekit] make sure to convert step values to Celsius (#13796)
otherwise if your step is 1.0 in fahrenheit, then your
values will get rounded to 1.0 celsius, and you might not
even notice you've lost precision in the Home app.

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-11-28 23:11:40 +01:00
eugen
5c5b3c29c9
[homekit] support stop for blinds (#13788)
* implement new blinds logic
* fix NPE, improve emulated state

Signed-off-by: Eugen <eugen@relotrust.com>
2022-11-27 23:39:50 +01:00
eugen
54e934be3d
[homekit] simplify settings page, resize doc images (#13741)
* simplify config, resize images

Signed-off-by: Eugen <eugen@relotrust.com>
2022-11-20 20:07:45 +01:00
Cody Cutrer
66c7211b26
[homekit] increase flexibility of ColorTemperature (#13538)
* [homekit] increase flexibility of ColorTemperature

allow Number or Dimmer items, and mired or Kelvin units.

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-10-22 20:24:51 +02:00
Cody Cutrer
68b52ee15b
[homekit] Improve output of console's homekit show command (#13569)
* [homekit] Improve output of console's `homekit show` command

 * include the full JSON from all the characteristics, so you can confirm
   everything is configured correctly.
 * only use simple class names; the fully qualified package is just a
   distraction.
 * show linked services if they exist
 * include the class name of services, not just the GUID

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-10-19 20:17:55 +02:00
Cody Cutrer
91383250d4
[homekit] improve bundle deactivation time (#13566)
If you have many instances, it can take a while. So stop all the
instances in parallel. Also, fix a race condition where the update
debouncer might get called again after being stopped, because the
change listener was deregistered _after_ the debouncer was stopped.

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-10-19 11:18:02 +02:00
Cody Cutrer
507e714dd0
[homekit] fix BooleanItemReader to work with DimmerItems (#13507)
* [homekit] fix BooleanItemReader to work with DimmerItems

DimmerItems have a PercentType state, which is easily convertible
to OnOffType, but is not inherited from it. So take that into account.

i.e. a variable speed fan can use a single DimmerItem for both
ActiveStatus and RotationSpeed.

* [homekit] Document that Dimmer is a possible item type for several booleans

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-10-10 13:36:23 +02:00
Cody Cutrer
d83c32cd24
[homekit] allow configuring maxValue on VOCDensity (#13508)
* [homekit] allow configuring maxValue on VOCDensity

the default of 1000 is quite low in reality. tested and confirmed
working with iOS 16

* [homekit] allow step value to be configured for VOCDensity

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-10-10 13:30:13 +02:00
Cody Cutrer
0409484c2e
[homekit] allow RelativeHumidity as an optional characteristic on Thermostat (#13504)
also support QuantityType as a valid state type for double characteristics
(such as RelativeHumidity).

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-10-09 11:01:25 +02:00
Cody Cutrer
0aa28e5d40
[homekit] get min/max/step values from state description if possible (#13510)
this helps to auto-configure if the binding is providing the necessary info

metadata config still overrides

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-10-09 10:55:32 +02:00
Cody Cutrer
ccc199f429
[homekit] Allow Long type in configuration for numbers (#13509)
I.e. if it's set from a Ruby script

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-10-09 09:04:06 +02:00
Hans-Jörg Merk
31820ad740
Update README.md (#13497) 2022-10-06 23:15:55 +02:00
Cody Cutrer
64d97374ad
[homekit] allow NumberItems for BatteryLowStatus (#13449)
* [homekit] allow NumberItems for BatteryLowStatus

use a lowThreshold metadata config to infer if it's low

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-10-03 12:13:39 +02:00
Cody Cutrer
e4fe6889d0
[homekit] allow group items of the correct type anywhere that type is needed (#13236)
this is a theme, and I've extracted a helper method and applied it to several
other locations as well

example, I have a double-sliding door, with two contact sensors
in the alarm system, defined as:

```
Group:Contact:AND(CLOSED,OPEN) DeckDoor_Contact "Deck Door [%s]" <door> (gExteriorDoors, gWarningVisibility_Contact, gDoor, lMainFloor, gInflux) { homekit="ContactSensor" [instance=2] }
Contact DeckNDoor_Contact "Deck Door North" <door> (gInflux, DeckDoor_Contact, gGreatContacts) { channel="dscalarm:zone:46c52f35:zone11:zone_status" }
Switch DeckNDoor_Tamper "Deck Door North Tamper [%s]" <warning> (gTamper, gWarningVisibility_Switch) { channel="dscalarm:zone:46c52f35:zone11:zone_tamper" }
Contact DeckSDoor_Contact "Deck Door South" <door> (gInflux, DeckDoor_Contact, gGreatContacts) { channel="dscalarm:zone:46c52f35:zone12:zone_status" }
Switch DeckSDoor_Tamper "Deck Door South Tamper [%s]" <warning> (gTamper, gWarningVisibility_Switch) { channel="dscalarm:zone:46c52f35:zone12:zone_tamper" }
```

This allows the Group:Contact to be used for the ContactSensor.

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-09-26 18:58:59 +02:00
Cody Cutrer
e4c9a40d03
[homekit] allow multiple bridge instances to break the 150 limit (#13226)
fixes #11508, #12927

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-08-12 09:55:39 +02:00
Cody Cutrer
f4fef5f6df
[homekit] support actual booleans in metadata config (#13228)
as well as strings, too.

reduces confusion, if someone doesn't know it needed to be a string

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-08-08 20:50:42 +02:00
Cody Cutrer
581a04b72d
[homekit] fix collecting characteristics that don't belong to a complex accessory (#13233)
given:

```
Group eThermostat { homekit="Thermostat" }
Number:Temperature Thermostat_AmbTemp (eThermostat) { homekit="CurrentTemperature" }
Number:Temperature Thermostat_SetTemp (eThermostat) { homekit="TargetTemperature" }

Group gThermostatZoneContacts
// in reality there are multiple thermostats and multiple of these groups,
// so that a rule on members of gThermostatZoneContacts can find the related
// thermostat to turn it off when a window is open
Group:Contact:OR(OPEN,CLOSED) gWindows (eThermostat, gThermostatZoneContacts)

Contact Window_Contact (gWindows) { homekit="ContactSensor" }
```

When constructing the Thermostat accessory for eThermostat, detects the
Window_Contact as a mandatory characteristic, because it's a base accessory
in a nested group. This leads to lots of warnings about the temperature
value of a contact item being out of range.

The fix is two-fold - first of all, there's no reason to search nested
groups for characteristics of a complex accessory. Second of all,
even if for some reason you were to nest an accessory in an accessory,
the nested accessory does not actually belong to the outer accessory,
so don't add it as a mandatory characteristic of the outer.

I suspect there's still one more bug, because AbstractHomekitAccessoryImpl.
getCharacteristic(HomekitCharacteristicType.CURRENT_TEMPERATURE) was
returning Window_Contact, which is only tagged as a ContactSensor. But
after fixing the above two bugs, it was no longer reproducible, and I
didn't continue digging.

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-08-08 09:47:26 +02:00
Cody Cutrer
a191c16f50
[homekit] fix window coverings based on groups of rollershutters (#13232)
it was getting the state as a decimal type, not a percent type, so
it was getting 1 instead of 100.

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-08-08 09:43:54 +02:00
eugen
6f3cb286d9
[homekit] Target Fan state - add support for Switch Item (#12985)
* add support for SwitchItem for target fan state

Signed-off-by: Eugen Freiter <freiter@gmx.de>
2022-07-25 21:47:21 +02:00
eugen
94615b7728
[homekit] fix potential null pointer exceptions (#13122)
* fix potential null pointer exceptions
* use contains key

Signed-off-by: Eugen Freiter <freiter@gmx.de>
2022-07-13 17:01:02 +02:00
Kai Kreuzer
440f603e88
Apply spotless and resolver (#13027)
Signed-off-by: Kai Kreuzer <kai@openhab.org>
2022-06-27 16:00:37 +02:00
openhab-bot
ed4858ebbb [unleash-maven-plugin] Preparation for next development cycle. 2022-06-26 18:18:40 +00:00
eugen
565dc19508
[homekit] fix for battery charging state (#12959)
* fix for battery charging state

Signed-off-by: Eugen Freiter <freiter@gmx.de>
2022-06-22 11:20:36 +02:00
eugen
cddd2daae2
[homekit] fix issue with some hue lights, e.g. xiaomi (#12931)
* fix for hue

Signed-off-by: Eugen Freiter <freiter@gmx.de>
2022-06-13 19:16:13 +02:00
eugen
97b423b273
update configuration revision on start (#12854)
Signed-off-by: Eugen Freiter <freiter@gmx.de>
2022-06-01 22:44:05 +02:00
eugen
f310cf7ca0
[homekit] add support for additional homekit accessories (#12536)
Signed-off-by: Eugen Freiter <freiter@gmx.de>
2022-04-26 19:37:54 +02:00
JacekKac
cc2cde2ace
typo in valve accessorie (#12616) 2022-04-18 13:50:22 +02:00
eugen
a2a5c2e6ff
add support for dimmer (#12540)
Signed-off-by: Eugen Freiter <freiter@gmx.de>
2022-03-29 18:57:52 +02:00
eugen
f1176a062b
[homekit] add support for complex accessories (#12346)
* Add complex accessories

Signed-off-by: Eugen Freiter <freiter@gmx.de>
2022-03-28 00:11:44 +02:00
Cody Cutrer
d06cc6a60a
[homekit] do unit conversion for min/max heating/cooling temps (#12450)
this is especially important if you use the same item for both
TargetTemperature and HeatingThresholdTemperature characteristics,
since the former was already doing unit conversion for min/max.

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-03-09 08:53:01 +01:00
eugen
9e6b952b66
fix storage usage (#12305)
Signed-off-by: Eugen Freiter <freiter@gmx.de>
2022-02-22 06:50:19 +01:00
eugen
f29034fe87
[homekit] mark item dirty only if it has homekit metadata (#12293)
* mark item dirty only if it has homekit metadata

Signed-off-by: Eugen Freiter <freiter@gmx.de>
2022-02-19 09:21:52 +01:00
eugen
5901479f0e
[homekit] update java hap library (#12267)
* update hap
* correction for categories

Signed-off-by: Eugen Freiter <freiter@gmx.de>
2022-02-12 15:07:58 +01:00
eugen
fde78b3fea
make onChange synchronized (#12205)
Signed-off-by: Eugen Freiter <freiter@gmx.de>

Co-authored-by: Eugen Freiter <freiter@gmx.de>
2022-02-05 08:39:17 +01:00
Cody Cutrer
8794ff860e
[homekit] handle NULL/UNDEF for temperature characteristics (#12172)
recent regression from handling QuantityType

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-01-30 18:46:56 +01:00
eugen
ec93c3600e
[homekit] quick restart on network changes (#12072)
* quick restart on network changes

* only restart if needed
* add null check

Signed-off-by: Eugen Freiter <freiter@gmx.de>
2022-01-26 20:19:03 +01:00
Cody Cutrer
d4fb20d529
[homekit] use quantity type conversions for temperature characteristics (#12083)
if an Item associated with a temperature characteristic has a QuantityType
(of dimension Temperature) as its state, regardless of current unit,
use that to convert to celsius instead of any other configuration.

Note that this is only for supply values to HomeKit; commands coming from
HomeKit will still send a DecimalType with units according to the HomeKit-wide
useFahrenheit configuration.

Signed-off-by: Cody Cutrer <cody@cutrer.us>
2022-01-23 13:40:14 +01:00
eugen
843ca55c68
fix Fahrenheit conversion (#12024)
Signed-off-by: Eugen Freiter <freiter@gmx.de>
2022-01-14 22:56:50 +01:00
Hilbrand Bouwkamp
da59cdd255
Update license headers to 2022 (#11973)
Signed-off-by: Hilbrand Bouwkamp <hilbrand@h72.nl>
2022-01-06 18:14:47 +01:00
eugen
b6af3aba9f
return min value instead of 0 (#11803)
Signed-off-by: Eugen Freiter <freiter@gmx.de>

Co-authored-by: Eugen Freiter <freiter@gmx.de>
2021-12-28 13:19:55 +01:00
Marcel
cc47ef7f3e
pom update from http to https reference (#11833)
Signed-off-by: Marcel Verpaalen <marcel@verpaalen.com>
2021-12-23 19:40:44 +01:00
Kai Kreuzer
48746f5e3f Apply spotless
Signed-off-by: Kai Kreuzer <kai@openhab.org>
2021-12-20 09:07:55 +01:00
openhab-bot
6dc031e6cf [unleash-maven-plugin] Preparation for next development cycle. 2021-12-20 00:30:46 +00:00
Wouter Born
e752b51662
Add default translations for io add-ons (#11753)
* Add default translations for io add-ons

This makes the texts used by these add-ons translatable with Crowdin.

Signed-off-by: Wouter Born <github@maindrain.net>
2021-12-12 19:32:51 +01:00
eugen
b89ae048e2
[homekit] make min/max values for Color Temperature configurable (#11717)
* make min/max values for ColorTemprature configurable

Signed-off-by: Eugen Freiter <freiter@gmx.de>
2021-12-10 00:20:28 +01:00
eugen
1d65e10bba
[homekit] add setting to block homekit user/pairing deletion (#11731)
* add setting to block homekit user deletion and unpairing
* add logging
* remove . from settings label

Signed-off-by: Eugen Freiter <freiter@gmx.de>
2021-12-08 12:14:44 +01:00
eugen
4f26c65c0c
restart HomeKit bridge on network changes (#11720)
Signed-off-by: Eugen Freiter <freiter@gmx.de>

Co-authored-by: Eugen Freiter <freiter@gmx.de>
2021-12-06 19:11:36 +01:00
eugen
66d6a3f0a3
[homekit] switch to official Java HAP lib release (#11671)
Signed-off-by: Eugen Freiter <freiter@gmx.de>
2021-12-01 09:43:41 +01:00
Colin
ff617aceae
Add support for group item type to window covering (#10936)
Add support for setting TARGET_POSITION of Window Covering accessories from groups with a baseItem type

Closes #10812

Signed-off-by: Colin Keehan <github@colin.xyz>
2021-07-17 08:51:44 +02:00
Kai Kreuzer
bebab9ce29 applied spotless
Signed-off-by: Kai Kreuzer <kai@openhab.org>
2021-06-27 23:25:35 +02:00