Commit Graph

77 Commits

Author SHA1 Message Date
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
jenkins 8c5c81e256 [unleash-maven-plugin] Preparation for next development cycle. 2021-06-27 17:35:01 +00:00
Wouter Born f5f922eaf4
Fix or suppress SAT CompareObjectsWithEquals findings (#10631)
* Fix or suppress SAT CompareObjectsWithEquals findings

Signed-off-by: Wouter Born <github@maindrain.net>
2021-05-05 21:06:04 +02:00
Wouter Born aaeddc8119
Update Netty dependencies to 4.1.63.Final (#10606)
Signed-off-by: Wouter Born <github@maindrain.net>
2021-04-28 12:22:11 +02:00