Open Max5040309 opened 6 months ago
void my_accessory_identify(homekit_value_t _value) { printf("accessory identify\n"); }
homekit_characteristic_t cha_switch_on = HOMEKITCHARACTERISTIC(ON, false); //homekit_characteristic_t cha_name = HOMEKITCHARACTERISTIC(NAME, "Switch"); homekit_characteristic_t cha_bright = HOMEKITCHARACTERISTIC(BRIGHTNESS, 50);
homekit_accessory_t accessories[] = { HOMEKIT_ACCESSORY(.id = 1, .category = homekit_accessory_category_other, .services = (homekit_service_t[]) { HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics = (homekit_characteristic_t[]) { HOMEKIT_CHARACTERISTIC(NAME, "Universal Controller"), HOMEKIT_CHARACTERISTIC(MANUFACTURER, "smart.ledstairs.com.ua"), HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "smart"), HOMEKIT_CHARACTERISTIC(MODEL, "Universal Controller"), HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"), HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify), NULL }), NULL }), //=============================================================================== HOMEKIT_ACCESSORY(.id = 2, .category = homekit_accessory_category_switch, .services = (homekit_service_t[]) { HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics = (homekit_characteristic_t[]) { HOMEKIT_CHARACTERISTIC(NAME, "Switch"), HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify), NULL }), HOMEKIT_SERVICE(SWITCH, .primary = true, .characteristics = (homekit_characteristic_t[]) { &cha_switch_on, //&cha_name, NULL }), NULL }), //=============================================================================== HOMEKIT_ACCESSORY(.id = 3, .category = homekit_accessory_category_lightbulb, .services = (homekit_service_t[]) { HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics = (homekit_characteristic_t[]) { HOMEKIT_CHARACTERISTIC(NAME, "Brightness"), HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify), NULL }), // Обратите внимание, что для использования нескольких сервисов LIGHTBULB вам нужно создать отдельный массив characteristics HOMEKIT_SERVICE(LIGHTBULB, .primary = true, .characteristics = (homekit_characteristic_t*[]) { HOMEKIT_CHARACTERISTIC(NAME, "Brightness of Steps"), &cha_bright, NULL }), NULL }), //===============================================================================
//===============================================================================
//===============================================================================
//===============================================================================
//===============================================================================
//===============================================================================
//===============================================================================
NULL
};
homekit_server_config_t accessory_config = { .accessories = accessories, .password = "111-11-111" };
extern "C" homekit_server_config_t accessory_config; extern "C" homekit_characteristic_t cha_switch_on; extern "C" homekit_characteristic_t cha_bright;
static uint32_t next_heap_millis = 0;
void my_homekit_setup() { cha_bright.setter = set_bright; cha_switch_on.setter = cha_switch_on_setter; arduino_homekit_setup(&accessory_config); }
void my_homekit_loop() { arduino_homekit_loop(); const uint32_t t = millis(); if (t > next_heap_millis) { // show heap info every 5 seconds next_heap_millis = t + 5 * 1000; LOG_D("Free heap: %d, HomeKit clients: %d", ESP.getFreeHeap(), arduino_homekit_connected_clients_count());
} }
//=============================================================================== void cha_switch_on_setter(const homekit_value_t value) { bool on = value.bool_value; cha_switch_on.value.bool_value = on; // sync the value LOG_D("Switch: %s", on ? "ON" : "OFF"); digitalWrite(vikl, on ? HIGH : LOW);
if (on) { vikluchatel(); // Вызываем функцию при включении } else { vikluchatel(); } homekit_characteristic_notify(&cha_switch_on, cha_switch_on.value); }
//=============================================================================== void set_bright(const homekit_value_t v) { int brightness_percentage = v.int_value; // Принимаем значение яркости в процентах mainColor = constrain(brightness_percentage * 40, 0, 4000); // Преобразуем проценты в абсолютный цвет и ограничиваем диапазон cha_bright.value.int_value = brightness_percentage; // Обновляем значение яркости в переменной homekit
saveConfig(); Serial.println(mainColor); for (int k = 0; k <= kol_st - 1; k++) { led(k, mainColor); // Проверка всех ступенек } delay(2000); for (int k = 0; k <= kol_st - 1; k++) { led(k, 0); // Тушим }
homekit_characteristic_notify(&cha_bright, cha_bright.value); // Отправляем новую яркость в HomeKit }
I don’t understand why it gives code -2 and doesn’t add the device
Free heap: 11136, HomeKit clients: 0