@alex-0 Kann dir im Moment leider nichts anbieten … Höchstens bei einer Lösung via Homebridge.

Aber bin gerade wieder mehr oder weniger an dem Thema dran, bzw. eher stöbere ich ein wenig.

Hier sind die charakteristiken der Accessories der ESP8266 HomeKit-Library aufgeführt.

https://github.com/Mixiaoxiao/Arduino-HomeKit-ESP8266/blob/master/src/homekit/characteristics.h

Normal kann man in der offiziellen Dokumentation von Apple nachschauen welche Typen gefodert werden etc, aber ich hab einen Source-Code gefunden, in dem dann auch nochmal die typen stehen.

https://github.com/apple/HomeKitADK/blob/master/HAP/HAPCharacteristicTypes.h

Als kleines Beispiel

in der ESP8266 HomeKit-Library characteristics.h findet man sowas:

/* Defines that the accessory constains a lock mechanism. This can be combined with Lock Management. Required Characteristics: - LOCK_CURRENT_STATE - LOCK_TARGET_STATE Optional Characteristics: - NAME */ #define HOMEKIT_SERVICE_LOCK_MECHANISM HOMEKIT_APPLE_UUID2("45")

Worüber man (denke ich) an die required Typen kommt mithilfe der HomeKitADK:

/** * Lock Current State. * * The current state of the physical security mechanism (e.g. deadbolt). * * - Format: UInt8 * - Permissions: Paired Read, Notify * - Minimum Value: 0 * - Maximum Value: 3 * - Step Value: 1 * * @see HomeKit Accessory Protocol Specification R14 * Section 9.52 Lock Current State */ /**@{*/ #define kHAPCharacteristicDebugDescription_LockCurrentState "lock-mechanism.current-state" extern const HAPUUID kHAPCharacteristicType_LockCurrentState; HAP_ENUM_BEGIN(uint8_t, HAPCharacteristicValue_LockCurrentState) { /** Unsecured. */ kHAPCharacteristicValue_LockCurrentState_Unsecured = 0, /** Secured. */ kHAPCharacteristicValue_LockCurrentState_Secured = 1, /** Jammed. */ kHAPCharacteristicValue_LockCurrentState_Jammed = 2, /** Unknown. */ kHAPCharacteristicValue_LockCurrentState_Unknown = 3 } HAP_ENUM_END(uint8_t, HAPCharacteristicValue_LockCurrentState); /**@}*/ /** * Lock Target State. * * The target state of the physical security mechanism (e.g. deadbolt). * * - Format: UInt8 * - Permissions: Paired Read, Paired Write, Notify * - Minimum Value: 0 * - Maximum Value: 1 * - Step Value: 1 * * @see HomeKit Accessory Protocol Specification R14 * Section 9.56 Lock Target State */ /**@{*/ #define kHAPCharacteristicDebugDescription_LockTargetState "lock-mechanism.target-state" extern const HAPUUID kHAPCharacteristicType_LockTargetState; HAP_ENUM_BEGIN(uint8_t, HAPCharacteristicValue_LockTargetState) { /** Unsecured. */ kHAPCharacteristicValue_LockTargetState_Unsecured = 0, /** Secured. */ kHAPCharacteristicValue_LockTargetState_Secured = 1 } HAP_ENUM_END(uint8_t, HAPCharacteristicValue_LockTargetState); /**@}*/

Ist jetzt natürlich erstmal nur Spekulation … Wollte es mir zuerst lokal notieren, aber dann dachte ich mir, ich teile es gleich. Denke das könnte hinhauen. 🙂

Nochmal zum Verständnis mit einem bereits vorhandenem Beispiel mit einem Temperaturfühler:

ESP8266 HomeKit:

void my_homekit_report() { float temperature_value = random_value(10, 30); // FIXME, read your real sensor here. cha_current_temperature.value.float_value = temperature_value; LOG_D("Current temperature: %.1f", temperature_value); homekit_characteristic_notify(&cha_current_temperature, cha_current_temperature.value); }

Woher weiß ich, dass ich die Temperatur als float_value setzen muss? Klar es kann auch 10.5°C haben aber hier der trust:

HomeKitADK:

/** * Current Temperature. * * This characteristic describes the current temperature of the environment in Celsius irrespective of display units * chosen in `Temperature Display Units`. * * - Format: Float * - Permissions: Paired Read, Notify * - Minimum Value: 0 * - Maximum Value: 100 * - Step Value: 0.1 * - Unit: Celsius * * @see HomeKit Accessory Protocol Specification R14 * Section 9.35 Current Temperature */ /**@{*/ #define kHAPCharacteristicDebugDescription_CurrentTemperature "temperature.current"

Bin dann mal weiter am lesen und stöbern. :heh:

€: Es hat sich was getan. :programmingparrot:

ESP8266 Türschloss nativ HomeKit

Hier ist das Tutorial dazu.