Arduino-HomeKit-ESP8266 icon indicating copy to clipboard operation
Arduino-HomeKit-ESP8266 copied to clipboard

Dimmable Lights

Open sto-chastic opened this issue 4 years ago • 9 comments

Hello, again thank you for your amazing work. I was wondering if you have some guidelines for how to control a dimmable light?

sto-chastic avatar Jul 20 '20 13:07 sto-chastic

It depends how your lights work. DC or AC, PWM or current control, etc. There is no common way.

Mixiaoxiao avatar Jul 20 '20 14:07 Mixiaoxiao

I understand. However, from the configuration homekit_accessory_t *accessories[] of the device, for a simple switch, in HomeKit app it only shows two states, how can I configure a dimmer. If you have an example for a DC dimmer, I would very much appreciate, I think from There I can understand the logic and extend it

sto-chastic avatar Jul 21 '20 07:07 sto-chastic

Refer to the HAP doc. See legcy/simple_led to know how to define a light_bulb with brightness control.

Mixiaoxiao avatar Jul 21 '20 07:07 Mixiaoxiao

Thank you I will take a look

sto-chastic avatar Jul 22 '20 15:07 sto-chastic

anything new to make a brightness control with a switch

RobinH6 avatar Dec 06 '20 21:12 RobinH6

Refer to the HAP doc. See legcy/simple_led to know how to define a light_bulb with brightness control.

I'm new to this project, why are all the LED examples legacy?

ApplebaumIan avatar Dec 29 '20 02:12 ApplebaumIan

You need to define your switch as a lightbulb instead if you want a dimmer control in HomeKit.

paullj1 avatar Mar 06 '21 17:03 paullj1

this is my code so far, but i only get a switch, no dimming option on ios. any hints?

/*
 * my_accessory.c
 * Define the accessory in C language using the Macro in characteristics.h
 *
 *  Created on: 2020-05-15
 *      Author: Mixiaoxiao (Wang Bin)
 */

#include <homekit/homekit.h>
#include <homekit/characteristics.h>

void my_accessory_identify(homekit_value_t _value) {
	printf("accessory identify\n");
}


homekit_characteristic_t cha_on = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_name = HOMEKIT_CHARACTERISTIC_(NAME, "Dimmer");
homekit_characteristic_t cha_bright = HOMEKIT_CHARACTERISTIC_(BRIGHTNESS, 50);

homekit_accessory_t *accessories[] = {
    HOMEKIT_ACCESSORY(.id=1, .category=homekit_accessory_category_lightbulb, .services=(homekit_service_t*[]) {
        HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) {
            HOMEKIT_CHARACTERISTIC(NAME, "Dimmer"),
            HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Arduino HomeKit"),
            HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "0123456"),
            HOMEKIT_CHARACTERISTIC(MODEL, "ESP8266/ESP32"),
            HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
            HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
            NULL
        }),
		HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
			&cha_on,
			&cha_name,
      &cha_bright,
			NULL
		}),
        NULL
    }),
    NULL
};

homekit_server_config_t config = {
		.accessories = accessories,
		.password = "111-11-111"
};

mstaack avatar Mar 12 '22 18:03 mstaack

Your HOMEKIT_SERVICE needs to be “LIGHTBULB” not SWITCH

paullj1 avatar Mar 12 '22 20:03 paullj1