@cooper das wäre sehr nett, vielen Dank
Homekit Fahrstuhl Buttons
-
Moin,
Habe folgendes Anliegen: Eine alte Fahrstuhl Steuerung (siehe Bilder) soll ´´Smart´´ werden. Sie soll am Ende des Tages mit ihren 7 Schaltern Geräte steuern können. Ähnlich wie hier
jedoch 7 mal und möglichst mit einem Bord. Bin relativ neu mit dem schreiben von scripten in der Arduino IDE, deswegen wäre mir eine fertige Firmware oder fertiges script am liebsten
. Es ist bereits ein Homebridge System vorhanden, daher wäre ein Umweg nicht so schlimm.
Vielen Dank im Voraus.
[Link Text](Link Adresse)
-
Also eigentlich nur 7x Button einlesen und dementsprechend eine Request senden? Batterie oder per Netzteil? Ansonsten wäre für Batterie der Deep-Sleep geeignet:
https://makesmart.net/esp8266-deep-sleep-tutorial/Wie man eine HTTP-Request sendet an Homebridge dann zB kannst du u.a hier nachlesen:
https://makesmart.net/esp8266-http-get-request/Sollt jetzt eigentlich nicht so das riesen Ding sein.
-
Gibt es überhaupt einen Button in homekit? Oder stellt der esp einen ´´Switch´´ zum schalten da? Gibt es den Code des Buzzers oder der Fernbedienung irgendwo?
MfG
-
@zockerplayshd es gibt glaub ein homebridge Plugin was auch so einen push button beinhaltet. ist dann quasi ein Taster also denke ich mal
-
Moin, nach längerer Zeit mal ein Update/Hilferuf
. Ich habe mir das Beispiel des stateless programmable switch aus der esp Homekit Bibliothek vorgenommen und modifiziert. (https://github.com/Mixiaoxiao/Arduino-HomeKit-ESP8266)
Example03_statelessProgrammableSwitch
#include <Arduino.h> #include <arduino_homekit_server.h> #include "wifi_info.h" #include "ESPButton.h" #define LOG_D(fmt, ...) printf_P(PSTR(fmt "\n") , ##__VA_ARGS__); void setup() { Serial.begin(115200); wifi_connect(); my_homekit_setup(); } void loop() { my_homekit_loop(); delay(10); } //============================== // HomeKit setup and loop //============================== extern "C" homekit_server_config_t config; extern "C" homekit_characteristic_t cha_programmable_switch_event; extern "C" homekit_characteristic_t cha_programmable_switch_event2; #define PIN_BUTTON1 0 #define PIN_BUTTON2 2 #define HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS 0 #define HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_DOUBLE_PRESS 1 #define HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_LONG_PRESS 2 homekit_value_t cha_programmable_switch_event_getter() { return HOMEKIT_NULL_CPP(); } homekit_value_t cha_programmable_switch_event2_getter() { return HOMEKIT_NULL_CPP(); } void my_homekit_setup() { pinMode(PIN_BUTTON1, INPUT_PULLUP); ESPButton.add(0, PIN_BUTTON1, LOW, true, true); ESPButton.setCallback([&](uint8_t id, ESPButtonEvent event) { LOG_D("Button Event: %s", ESPButton.getButtonEventDescription(event)); uint8_t cha_value = 0; if (event == ESPBUTTONEVENT_SINGLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS; } else if (event == ESPBUTTONEVENT_DOUBLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_DOUBLE_PRESS; } else if (event == ESPBUTTONEVENT_LONGCLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_LONG_PRESS; } cha_programmable_switch_event.value.uint8_value = cha_value; homekit_characteristic_notify(&cha_programmable_switch_event, cha_programmable_switch_event.value); }); ESPButton.begin(); cha_programmable_switch_event.getter = cha_programmable_switch_event_getter; arduino_homekit_setup(&config); pinMode(PIN_BUTTON2, INPUT_PULLUP); ESPButton.add(0, PIN_BUTTON2, LOW, true, true); ESPButton.setCallback([&](uint8_t id, ESPButtonEvent event) { // Only one button is added, no need to check the id. LOG_D("Button Event: %s", ESPButton.getButtonEventDescription(event)); uint8_t cha_value = 0; if (event == ESPBUTTONEVENT_SINGLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS; } else if (event == ESPBUTTONEVENT_DOUBLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_DOUBLE_PRESS; } else if (event == ESPBUTTONEVENT_LONGCLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_LONG_PRESS; } cha_programmable_switch_event2.value.uint8_value = cha_value; homekit_characteristic_notify(&cha_programmable_switch_event2, cha_programmable_switch_event2.value); }); ESPButton.begin(); cha_programmable_switch_event2.getter = cha_programmable_switch_event2_getter; arduino_homekit_setup(&config); } static uint32_t next_heap_millis = 0; void my_homekit_loop() { ESPButton.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()); } }
my_accessory.c
#include <homekit/homekit.h> #include <homekit/characteristics.h> void my_accessory_identify(homekit_value_t _value) { printf("accessory identify\n"); } homekit_characteristic_t cha_programmable_switch_event = HOMEKIT_CHARACTERISTIC_(PROGRAMMABLE_SWITCH_EVENT, 0); homekit_characteristic_t cha_programmable_switch_event2 = HOMEKIT_CHARACTERISTIC_(PROGRAMMABLE_SWITCH_EVENT, 0); homekit_accessory_t *accessories[] ={ HOMEKIT_ACCESSORY(.id=1, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) { HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) { HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch1"), 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(STATELESS_PROGRAMMABLE_SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){ HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch"), &cha_programmable_switch_event, 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, "Stateless Programmable Switch2"), HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Arduino HomeKit"), HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "0123457"), HOMEKIT_CHARACTERISTIC(MODEL, "ESP8266/ESP32"), HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"), HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify), NULL }), HOMEKIT_SERVICE(STATELESS_PROGRAMMABLE_SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){ HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch"), &cha_programmable_switch_event2, NULL }), NULL }), NULL }; homekit_server_config_t config = { .accessories = accessories, .password = "111-11-111" };
Folgendes Problem:
Das Script wird ohne Probleme Hochgeladen, doch die Buttons werden nicht von der Home app gefunden. Bin mittlerweile Ratlos
Vielen Dank im Vorraus -
Soooo, bin mittlerweile doch noch ein ganzes stück weiter. Ich war wohl mit meinem Code vorher irgendwie auf dem Holzweg
Ich habe es mittlerweile hinbekommen, dass alle Buttons in der Home app hinzugefügt und erkannt werden. Allerdings wird nun bei jedem Pin den ich definierte habe nur 1 Button in der Home App getriggert. Das heißt, egal welchen Knopf ich drücke es wird immer der gleiche ´´Digitale´´ Button in der Home App getriggert. Ich poste nochmal meinen aktuellen Code rein, vielleicht kann mir ja jemand helfen.
my_buttons
#include <Arduino.h> #include <arduino_homekit_server.h> #include "wifi_info.h" #include "ESPButton.h" #define LOG_D(fmt, ...) printf_P(PSTR(fmt "\n") , ##__VA_ARGS__); void setup() { Serial.begin(115200); wifi_connect(); // in wifi_info.h homekit_storage_reset(); // to remove the previous HomeKit pairing storage when you first run this new HomeKit example my_homekit_setup(); } void loop() { my_homekit_loop(); delay(10); } //============================== // HomeKit setup and loop //============================== extern "C" homekit_server_config_t config; extern "C" homekit_characteristic_t cha_programmable_switch_event2; extern "C" homekit_characteristic_t cha_programmable_switch_event3; extern "C" homekit_characteristic_t cha_programmable_switch_event4; extern "C" homekit_characteristic_t cha_programmable_switch_event5; extern "C" homekit_characteristic_t cha_programmable_switch_event6; extern "C" homekit_characteristic_t cha_programmable_switch_event7; extern "C" homekit_characteristic_t cha_programmable_switch_event8; #define PIN_BUTTON2 D1 #define PIN_BUTTON3 D2 #define PIN_BUTTON4 D3 #define PIN_BUTTON5 D4 #define PIN_BUTTON6 D5 #define PIN_BUTTON7 D6 #define PIN_BUTTON8 D7 #define PIN_BUTTON9 D8 #define HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS 0 #define HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_DOUBLE_PRESS 1 #define HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_LONG_PRESS 2 // Called when the value is read by iOS Home APP homekit_value_t cha_programmable_switch_event_getter(){ // Should always return "null" for reading, see HAP section 9.75 return HOMEKIT_NULL_CPP(); } void my_homekit_setup() { pinMode(PIN_BUTTON2, INPUT_PULLUP); pinMode(PIN_BUTTON3, INPUT_PULLUP); pinMode(PIN_BUTTON4, INPUT_PULLUP); pinMode(PIN_BUTTON5, INPUT_PULLUP); pinMode(PIN_BUTTON6, INPUT_PULLUP); pinMode(PIN_BUTTON7, INPUT_PULLUP); pinMode(PIN_BUTTON8, INPUT_PULLUP); pinMode(PIN_BUTTON9, INPUT_PULLUP); ESPButton.add(2, PIN_BUTTON2, LOW, true, true); ESPButton.add(3, PIN_BUTTON3, LOW, true, true); ESPButton.add(4, PIN_BUTTON4, LOW, true, true); ESPButton.add(5, PIN_BUTTON5, LOW, true, true); ESPButton.add(6, PIN_BUTTON6, LOW, true, true); ESPButton.add(7, PIN_BUTTON7, LOW, true, true); ESPButton.add(8, PIN_BUTTON8, LOW, true, true); ESPButton.add(9, PIN_BUTTON9, LOW, true, true); ESPButton.setCallback([&](uint8_t id = 2, ESPButtonEvent event) { // Only one button is added, no need to check the id. LOG_D("Button Event: %s", ESPButton.getButtonEventDescription(event)); uint8_t cha_value = 0; if (event == ESPBUTTONEVENT_SINGLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS; } else if (event == ESPBUTTONEVENT_DOUBLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_DOUBLE_PRESS; } else if (event == ESPBUTTONEVENT_LONGCLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_LONG_PRESS; } cha_programmable_switch_event2.value.uint8_value = cha_value; homekit_characteristic_notify(&cha_programmable_switch_event2, cha_programmable_switch_event2.value); }); ESPButton.setCallback([&](uint8_t id = 3, ESPButtonEvent event) { // Only one button is added, no need to check the id. LOG_D("Button Event: %s", ESPButton.getButtonEventDescription(event)); uint8_t cha_value = 0; if (event == ESPBUTTONEVENT_SINGLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS; } else if (event == ESPBUTTONEVENT_DOUBLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_DOUBLE_PRESS; } else if (event == ESPBUTTONEVENT_LONGCLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_LONG_PRESS; } cha_programmable_switch_event3.value.uint8_value = cha_value; homekit_characteristic_notify(&cha_programmable_switch_event3, cha_programmable_switch_event3.value); }); ESPButton.setCallback([&](uint8_t id = 4, ESPButtonEvent event) { // Only one button is added, no need to check the id. LOG_D("Button Event: %s", ESPButton.getButtonEventDescription(event)); uint8_t cha_value = 0; if (event == ESPBUTTONEVENT_SINGLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS; } else if (event == ESPBUTTONEVENT_DOUBLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_DOUBLE_PRESS; } else if (event == ESPBUTTONEVENT_LONGCLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_LONG_PRESS; } cha_programmable_switch_event4.value.uint8_value = cha_value; homekit_characteristic_notify(&cha_programmable_switch_event4, cha_programmable_switch_event4.value); }); ESPButton.setCallback([&](uint8_t id = 5, ESPButtonEvent event) { // Only one button is added, no need to check the id. LOG_D("Button Event: %s", ESPButton.getButtonEventDescription(event)); uint8_t cha_value = 0; if (event == ESPBUTTONEVENT_SINGLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS; } else if (event == ESPBUTTONEVENT_DOUBLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_DOUBLE_PRESS; } else if (event == ESPBUTTONEVENT_LONGCLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_LONG_PRESS; } cha_programmable_switch_event5.value.uint8_value = cha_value; homekit_characteristic_notify(&cha_programmable_switch_event5, cha_programmable_switch_event5.value); }); ESPButton.setCallback([&](uint8_t id = 6, ESPButtonEvent event) { // Only one button is added, no need to check the id. LOG_D("Button Event: %s", ESPButton.getButtonEventDescription(event)); uint8_t cha_value = 0; if (event == ESPBUTTONEVENT_SINGLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS; } else if (event == ESPBUTTONEVENT_DOUBLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_DOUBLE_PRESS; } else if (event == ESPBUTTONEVENT_LONGCLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_LONG_PRESS; } cha_programmable_switch_event6.value.uint8_value = cha_value; homekit_characteristic_notify(&cha_programmable_switch_event6, cha_programmable_switch_event6.value); }); ESPButton.setCallback([&](uint8_t id = 7, ESPButtonEvent event) { // Only one button is added, no need to check the id. LOG_D("Button Event: %s", ESPButton.getButtonEventDescription(event)); uint8_t cha_value = 0; if (event == ESPBUTTONEVENT_SINGLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS; } else if (event == ESPBUTTONEVENT_DOUBLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_DOUBLE_PRESS; } else if (event == ESPBUTTONEVENT_LONGCLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_LONG_PRESS; } cha_programmable_switch_event7.value.uint8_value = cha_value; homekit_characteristic_notify(&cha_programmable_switch_event7, cha_programmable_switch_event7.value); }); ESPButton.setCallback([&](uint8_t id = 8, ESPButtonEvent event) { // Only one button is added, no need to check the id. LOG_D("Button Event: %s", ESPButton.getButtonEventDescription(event)); uint8_t cha_value = 0; if (event == ESPBUTTONEVENT_SINGLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS; } else if (event == ESPBUTTONEVENT_DOUBLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_DOUBLE_PRESS; } else if (event == ESPBUTTONEVENT_LONGCLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_LONG_PRESS; } cha_programmable_switch_event8.value.uint8_value = cha_value; homekit_characteristic_notify(&cha_programmable_switch_event8, cha_programmable_switch_event8.value); }); /*ESPButton.setCallback([&](uint8_t id = 9, ESPButtonEvent event) { // Only one button is added, no need to check the id. LOG_D("Button Event: %s", ESPButton.getButtonEventDescription(event)); uint8_t cha_value = 0; if (event == ESPBUTTONEVENT_SINGLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_SINGLE_PRESS; } else if (event == ESPBUTTONEVENT_DOUBLECLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_DOUBLE_PRESS; } else if (event == ESPBUTTONEVENT_LONGCLICK) { cha_value = HOMEKIT_PROGRAMMABLE_SWITCH_EVENT_LONG_PRESS; } cha_programmable_switch_event.value.uint8_value = cha_value; homekit_characteristic_notify(&cha_programmable_switch_event, cha_programmable_switch_event.value); });*/ ESPButton.begin(); cha_programmable_switch_event2.getter = cha_programmable_switch_event_getter; cha_programmable_switch_event3.getter = cha_programmable_switch_event_getter; cha_programmable_switch_event4.getter = cha_programmable_switch_event_getter; cha_programmable_switch_event5.getter = cha_programmable_switch_event_getter; cha_programmable_switch_event6.getter = cha_programmable_switch_event_getter; cha_programmable_switch_event7.getter = cha_programmable_switch_event_getter; cha_programmable_switch_event8.getter = cha_programmable_switch_event_getter; arduino_homekit_setup(&config); } static uint32_t next_heap_millis = 0; void my_homekit_loop() { ESPButton.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()); } }
my_accesory.c
/* * my_accessory.c * Define the accessory in C language using the Macro in characteristics.h * * Created on: 2020-05-16 * Author: Mixiaoxiao (Wang Bin) */ #include <homekit/homekit.h> #include <homekit/characteristics.h> void my_accessory_identify(homekit_value_t _value) { printf("accessory identify\n"); } // Stateless Programmable Switch (HAP section 8.37) // required: PROGRAMMABLE_SWITCH_EVENT // optional: NAME, SERVICE_LABEL_INDEX // format: uint8; HAP section 9.75; write the .getter function and always return "null" for reading homekit_characteristic_t cha_programmable_switch_event2 = HOMEKIT_CHARACTERISTIC_(PROGRAMMABLE_SWITCH_EVENT, 0); homekit_characteristic_t cha_programmable_switch_event3 = HOMEKIT_CHARACTERISTIC_(PROGRAMMABLE_SWITCH_EVENT, 0); homekit_characteristic_t cha_programmable_switch_event4 = HOMEKIT_CHARACTERISTIC_(PROGRAMMABLE_SWITCH_EVENT, 0); homekit_characteristic_t cha_programmable_switch_event5 = HOMEKIT_CHARACTERISTIC_(PROGRAMMABLE_SWITCH_EVENT, 0); homekit_characteristic_t cha_programmable_switch_event6 = HOMEKIT_CHARACTERISTIC_(PROGRAMMABLE_SWITCH_EVENT, 0); homekit_characteristic_t cha_programmable_switch_event7 = HOMEKIT_CHARACTERISTIC_(PROGRAMMABLE_SWITCH_EVENT, 0); homekit_characteristic_t cha_programmable_switch_event8 = HOMEKIT_CHARACTERISTIC_(PROGRAMMABLE_SWITCH_EVENT, 0); homekit_accessory_t *accessories[] ={ HOMEKIT_ACCESSORY(.id=1, .category=homekit_accessory_category_bridge, .services=(homekit_service_t*[]) { HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) { HOMEKIT_CHARACTERISTIC(NAME, "Multiple Switches"), HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Homekit Switches"), HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "1234567"), HOMEKIT_CHARACTERISTIC(MODEL, "ESP8266 D1 Mini"), 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, "Stateless Programmable Switch1"), 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(STATELESS_PROGRAMMABLE_SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){ HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch"), &cha_programmable_switch_event2, NULL }), NULL }), HOMEKIT_ACCESSORY(.id=3, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) { HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) { HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch2"), HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Arduino HomeKit"), HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "0123457"), HOMEKIT_CHARACTERISTIC(MODEL, "ESP8266/ESP32"), HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"), HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify), NULL }), HOMEKIT_SERVICE(STATELESS_PROGRAMMABLE_SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){ HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch"), &cha_programmable_switch_event3, NULL }), NULL }), HOMEKIT_ACCESSORY(.id=4, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) { HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) { HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch3"), 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(STATELESS_PROGRAMMABLE_SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){ HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch"), &cha_programmable_switch_event4, NULL }), NULL }), HOMEKIT_ACCESSORY(.id=5, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) { HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) { HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch4"), HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Arduino HomeKit"), HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "0123457"), HOMEKIT_CHARACTERISTIC(MODEL, "ESP8266/ESP32"), HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"), HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify), NULL }), HOMEKIT_SERVICE(STATELESS_PROGRAMMABLE_SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){ HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch"), &cha_programmable_switch_event5, NULL }), NULL }), HOMEKIT_ACCESSORY(.id=6, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) { HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) { HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch5"), HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Arduino HomeKit"), HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "0123457"), HOMEKIT_CHARACTERISTIC(MODEL, "ESP8266/ESP32"), HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"), HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify), NULL }), HOMEKIT_SERVICE(STATELESS_PROGRAMMABLE_SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){ HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch"), &cha_programmable_switch_event6, NULL }), NULL }), HOMEKIT_ACCESSORY(.id=7, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) { HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) { HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch6"), HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Arduino HomeKit"), HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "0123457"), HOMEKIT_CHARACTERISTIC(MODEL, "ESP8266/ESP32"), HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"), HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify), NULL }), HOMEKIT_SERVICE(STATELESS_PROGRAMMABLE_SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){ HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch"), &cha_programmable_switch_event7, NULL }), NULL }), HOMEKIT_ACCESSORY(.id=8, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) { HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) { HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch7"), HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Arduino HomeKit"), HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "0123457"), HOMEKIT_CHARACTERISTIC(MODEL, "ESP8266/ESP32"), HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"), HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify), NULL }), HOMEKIT_SERVICE(STATELESS_PROGRAMMABLE_SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){ HOMEKIT_CHARACTERISTIC(NAME, "Stateless Programmable Switch"), &cha_programmable_switch_event8, NULL }), NULL }), NULL }; homekit_server_config_t config = { .accessories = accessories, .password = "111-11-111" };
-
Hallo~ Ich bin auch auf das gleiche Problem gestoßen wie du. Entschuldigung… Hast du dieses Problem jetzt gelöst?
Hello~ I also encountered the same problem as you. Excuse me… Have you solved this problem now?
-
I asked the author of this code (mixiaoxiao), but the answer he gave is not very detailed, I don’t understand…!
Ich habe den Autor dieses Codes (mixiaoxiao) gefragt, aber die Antwort, die er gab, ist nicht sehr detailliert, ich verstehe nicht …
-
Hi, thanks for your example. I will try to help. The trick is index. There is no sample code yet but I will give it a try. If it works I will let you kno