Ich möchte ein 16 Kanal Homekit Relais Switch erstellen.
Ich nutze einen Wemos D1 mini Clone den ich mit mit der HomeKit ESP8266 Bibliothek flashe und zusätzlich verwende ich einen MCP23017 mit der Adafruit MCP23017 Arduino Bibliothek.
Ich hab ebereits die Kanäle au seinem Beispiel im Internet auf 16 erweitert und konnte 16 Kanäle in Homekit einbinden.
Mit einem Beispiel Sketch konnte ich auch alle Relais (High Level SSR) über den MCP23017 ansteuern.
Leider fonktioniert mein Projekt aber nicht. Zum einen Schaltet sich der Schalter 4 immer nach wenigen Sekunden von alleine ab (nur dieser Schalter die anderen bleiben an bis ich sie betätige), zum anderen Schaltet nur das erste Relais und das auch nur wenn ich den Schalter auf "aus" stelle. Die anderen werden garnicht angesprochen. Verkabelung sollte korrekt sein, sonst würde der andere Sketch ja nicht funktionieren aber irgendetwas muss ich flasch machen und ich erkenne es leider nicht....
Wäre Toll wenn jemand drüber gucken könnte. der Skretch besteht aus 3 Datein wobei nur 2 davon relevant sind. Die dritte bezieht sich auf das Wlan
/*
* switch.ino
*
* Created on: 2020-05-15
* Author: Mixiaoxiao (Wang Bin)
*
* Modified on 2021-05-18
* Author: Dynmi (Haris Wang)
* HAP section 8.38 Switch
* An accessory contains 4 switches.
*
*
*/
#include <Arduino.h>
#include <arduino_homekit_server.h>
#include "wifi_info.h"
#include <Adafruit_MCP23X17.h>
#define LOG_D(fmt, ...) printf_P(PSTR(fmt "\n"), ##__VA_ARGS__);
Adafruit_MCP23X17 mcp;
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();
if (!mcp.begin_I2C()) {
//if (!mcp.begin_SPI(CS_PIN)) {
Serial.println("Error.");
while (1)
;
}
}
void loop() {
my_homekit_loop();
delay(10);
}
//==============================
// HomeKit setup and loop
//==============================
// access your HomeKit characteristics defined in my_accessory.c
extern "C" homekit_server_config_t config;
extern "C" homekit_characteristic_t cha_switch_on;
extern "C" homekit_characteristic_t cha_switch_on2;
extern "C" homekit_characteristic_t cha_switch_on3;
extern "C" homekit_characteristic_t cha_switch_on4;
extern "C" homekit_characteristic_t cha_switch_on5;
extern "C" homekit_characteristic_t cha_switch_on6;
extern "C" homekit_characteristic_t cha_switch_on7;
extern "C" homekit_characteristic_t cha_switch_on8;
extern "C" homekit_characteristic_t cha_switch_on9;
extern "C" homekit_characteristic_t cha_switch_on10;
extern "C" homekit_characteristic_t cha_switch_on11;
extern "C" homekit_characteristic_t cha_switch_on12;
extern "C" homekit_characteristic_t cha_switch_on13;
extern "C" homekit_characteristic_t cha_switch_on14;
extern "C" homekit_characteristic_t cha_switch_on15;
extern "C" homekit_characteristic_t cha_switch_on16;
static uint32_t next_heap_millis = 0;
#define PIN_SWITCH 0
#define PIN_SWITCH2 1
#define PIN_SWITCH3 2
#define PIN_SWITCH4 3
#define PIN_SWITCH5 4
#define PIN_SWITCH6 5
#define PIN_SWITCH7 6
#define PIN_SWITCH8 7
#define PIN_SWITCH9 8
#define PIN_SWITCH10 9
#define PIN_SWITCH11 10
#define PIN_SWITCH12 11
#define PIN_SWITCH13 12
#define PIN_SWITCH14 13
#define PIN_SWITCH15 14
#define PIN_SWITCH16 15
//Called when the switch value is changed by iOS Home APP
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");
mcp.digitalWrite(PIN_SWITCH, on ? LOW : HIGH);
}
void cha_switch_on_setter2(const homekit_value_t value) {
bool on = value.bool_value;
cha_switch_on2.value.bool_value = on; //sync the value
LOG_D("Switch: %s", on ? "ON" : "OFF");
mcp.digitalWrite(PIN_SWITCH2, on ? LOW : HIGH);
}
void cha_switch_on_setter3(const homekit_value_t value) {
bool on = value.bool_value;
cha_switch_on3.value.bool_value = on; //sync the value
LOG_D("Switch: %s", on ? "ON" : "OFF");
mcp.digitalWrite(PIN_SWITCH3, on ? LOW : HIGH);
}
void cha_switch_on_setter4(const homekit_value_t value) {
bool on = value.bool_value;
cha_switch_on4.value.bool_value = on; //sync the value
LOG_D("Switch: %s", on ? "ON" : "OFF");
mcp.digitalWrite(PIN_SWITCH4, on ? LOW : HIGH);
}
void cha_switch_on_setter5(const homekit_value_t value) {
bool on = value.bool_value;
cha_switch_on5.value.bool_value = on; //sync the value
LOG_D("Switch: %s", on ? "ON" : "OFF");
mcp.digitalWrite(PIN_SWITCH5, on ? LOW : HIGH);
}
void cha_switch_on_setter6(const homekit_value_t value) {
bool on = value.bool_value;
cha_switch_on6.value.bool_value = on; //sync the value
LOG_D("Switch: %s", on ? "ON" : "OFF");
mcp.digitalWrite(PIN_SWITCH6, on ? LOW : HIGH);
}
void cha_switch_on_setter7(const homekit_value_t value) {
bool on = value.bool_value;
cha_switch_on7.value.bool_value = on; //sync the value
LOG_D("Switch: %s", on ? "ON" : "OFF");
mcp.digitalWrite(PIN_SWITCH7, on ? LOW : HIGH);
}
void cha_switch_on_setter8(const homekit_value_t value) {
bool on = value.bool_value;
cha_switch_on8.value.bool_value = on; //sync the value
LOG_D("Switch: %s", on ? "ON" : "OFF");
mcp.digitalWrite(PIN_SWITCH8, on ? LOW : HIGH);
}
void cha_switch_on_setter9(const homekit_value_t value) {
bool on = value.bool_value;
cha_switch_on9.value.bool_value = on; //sync the value
LOG_D("Switch: %s", on ? "ON" : "OFF");
mcp.digitalWrite(PIN_SWITCH9, on ? LOW : HIGH);
}
void cha_switch_on_setter10(const homekit_value_t value) {
bool on = value.bool_value;
cha_switch_on10.value.bool_value = on; //sync the value
LOG_D("Switch: %s", on ? "ON" : "OFF");
mcp.digitalWrite(PIN_SWITCH10, on ? LOW : HIGH);
}
void cha_switch_on_setter11(const homekit_value_t value) {
bool on = value.bool_value;
cha_switch_on11.value.bool_value = on; //sync the value
LOG_D("Switch: %s", on ? "ON" : "OFF");
mcp.digitalWrite(PIN_SWITCH11, on ? LOW : HIGH);
}
void cha_switch_on_setter12(const homekit_value_t value) {
bool on = value.bool_value;
cha_switch_on12.value.bool_value = on; //sync the value
LOG_D("Switch: %s", on ? "ON" : "OFF");
mcp.digitalWrite(PIN_SWITCH12, on ? LOW : HIGH);
}
void cha_switch_on_setter13(const homekit_value_t value) {
bool on = value.bool_value;
cha_switch_on13.value.bool_value = on; //sync the value
LOG_D("Switch: %s", on ? "ON" : "OFF");
mcp.digitalWrite(PIN_SWITCH13, on ? LOW : HIGH);
}
void cha_switch_on_setter14(const homekit_value_t value) {
bool on = value.bool_value;
cha_switch_on14.value.bool_value = on; //sync the value
LOG_D("Switch: %s", on ? "ON" : "OFF");
mcp.digitalWrite(PIN_SWITCH14, on ? LOW : HIGH);
}
void cha_switch_on_setter15(const homekit_value_t value) {
bool on = value.bool_value;
cha_switch_on15.value.bool_value = on; //sync the value
LOG_D("Switch: %s", on ? "ON" : "OFF");
mcp.digitalWrite(PIN_SWITCH15, on ? LOW : HIGH);
}
void cha_switch_on_setter16(const homekit_value_t value) {
bool on = value.bool_value;
cha_switch_on16.value.bool_value = on; //sync the value
LOG_D("Switch: %s", on ? "ON" : "OFF");
mcp.digitalWrite(PIN_SWITCH16, on ? LOW : HIGH);
}
void my_homekit_setup() {
mcp.pinMode(PIN_SWITCH, OUTPUT);
mcp.digitalWrite(PIN_SWITCH, HIGH);
mcp.pinMode(PIN_SWITCH2, OUTPUT);
mcp.digitalWrite(PIN_SWITCH2, HIGH);
mcp.pinMode(PIN_SWITCH3, OUTPUT);
mcp.digitalWrite(PIN_SWITCH3, HIGH);
mcp.pinMode(PIN_SWITCH4, OUTPUT);
mcp.digitalWrite(PIN_SWITCH4, HIGH);
mcp.pinMode(PIN_SWITCH5, OUTPUT);
mcp.digitalWrite(PIN_SWITCH5, HIGH);
mcp.pinMode(PIN_SWITCH6, OUTPUT);
mcp.digitalWrite(PIN_SWITCH6, HIGH);
mcp.pinMode(PIN_SWITCH7, OUTPUT);
mcp.digitalWrite(PIN_SWITCH7, HIGH);
mcp.pinMode(PIN_SWITCH8, OUTPUT);
mcp.digitalWrite(PIN_SWITCH8, HIGH);
mcp.pinMode(PIN_SWITCH9, OUTPUT);
mcp.digitalWrite(PIN_SWITCH9, HIGH);
mcp.pinMode(PIN_SWITCH10, OUTPUT);
mcp.digitalWrite(PIN_SWITCH10, HIGH);
mcp.pinMode(PIN_SWITCH11, OUTPUT);
mcp.digitalWrite(PIN_SWITCH11, HIGH);
mcp.pinMode(PIN_SWITCH12, OUTPUT);
mcp.digitalWrite(PIN_SWITCH12, HIGH);
mcp.pinMode(PIN_SWITCH13, OUTPUT);
mcp.digitalWrite(PIN_SWITCH13, HIGH);
mcp.pinMode(PIN_SWITCH14, OUTPUT);
mcp.digitalWrite(PIN_SWITCH14, HIGH);
mcp.pinMode(PIN_SWITCH15, OUTPUT);
mcp.digitalWrite(PIN_SWITCH15, HIGH);
mcp.pinMode(PIN_SWITCH16, OUTPUT);
mcp.digitalWrite(PIN_SWITCH16, HIGH);
//Add the .setter function to get the switch-event sent from iOS Home APP.
//The .setter should be added before arduino_homekit_setup.
//HomeKit sever uses the .setter_ex internally, see homekit_accessories_init function.
//Maybe this is a legacy design issue in the original esp-homekit library,
//and I have no reason to modify this "feature".
cha_switch_on.setter = cha_switch_on_setter;
cha_switch_on2.setter = cha_switch_on_setter2;
cha_switch_on3.setter = cha_switch_on_setter3;
cha_switch_on4.setter = cha_switch_on_setter4;
cha_switch_on4.setter = cha_switch_on_setter5;
cha_switch_on4.setter = cha_switch_on_setter6;
cha_switch_on4.setter = cha_switch_on_setter7;
cha_switch_on4.setter = cha_switch_on_setter8;
cha_switch_on4.setter = cha_switch_on_setter9;
cha_switch_on4.setter = cha_switch_on_setter10;
cha_switch_on4.setter = cha_switch_on_setter11;
cha_switch_on4.setter = cha_switch_on_setter12;
cha_switch_on4.setter = cha_switch_on_setter13;
cha_switch_on4.setter = cha_switch_on_setter14;
cha_switch_on4.setter = cha_switch_on_setter15;
cha_switch_on4.setter = cha_switch_on_setter16;
arduino_homekit_setup(&config);
//report the switch value to HomeKit if it is changed (e.g. by a physical button)
//bool switch_is_on = true/false;
//cha_switch_on.value.bool_value = switch_is_on;
//homekit_characteristic_notify(&cha_switch_on, cha_switch_on.value);
}
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());
}
}
und die zweite Datei:
/*
* my_accessory.c
* Define the accessory in C language using the Macro in characteristics.h
*
* Created on: 2020-05-15
* Author: Mixiaoxiao (Wang Bin)
*
* Modified on 2023-08-12
* Author: Name
*/
#include <homekit/homekit.h>
#include <homekit/characteristics.h>
void my_accessory_identify(homekit_value_t _value) {
printf("accessory identify\n");
}
// Switch (HAP section 8.38)
// required: ON
// optional: NAME
// format: bool; HAP section 9.70; write the .setter function to get the switch-event sent from iOS Home APP.
homekit_characteristic_t cha_switch_on = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_switch_on2 = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_switch_on3 = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_switch_on4 = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_switch_on5 = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_switch_on6 = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_switch_on7 = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_switch_on8 = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_switch_on9 = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_switch_on10 = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_switch_on11 = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_switch_on12 = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_switch_on13 = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_switch_on14 = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_switch_on15 = HOMEKIT_CHARACTERISTIC_(ON, false);
homekit_characteristic_t cha_switch_on16 = HOMEKIT_CHARACTERISTIC_(ON, false);
// format: string; HAP section 9.62; max length 64
homekit_characteristic_t cha_name = HOMEKIT_CHARACTERISTIC_(NAME, "Bewaesserung");
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, "Kreis 1"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
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=2, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) {
HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) {
HOMEKIT_CHARACTERISTIC(NAME, "Kreis 2"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
&cha_switch_on2,
&cha_name,
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, "Kreis 3"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
&cha_switch_on3,
&cha_name,
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, "Kreis 4"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
&cha_switch_on4,
&cha_name,
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, "Kreis 5"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
&cha_switch_on5,
&cha_name,
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, "Kreis 6"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
&cha_switch_on6,
&cha_name,
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, "Kreis 7"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
&cha_switch_on7,
&cha_name,
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, "Kreis 8"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
&cha_switch_on8,
&cha_name,
NULL
}),
NULL
}),
HOMEKIT_ACCESSORY(.id=9, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) {
HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) {
HOMEKIT_CHARACTERISTIC(NAME, "Kreis 9"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
&cha_switch_on9,
&cha_name,
NULL
}),
NULL
}),
HOMEKIT_ACCESSORY(.id=10, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) {
HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) {
HOMEKIT_CHARACTERISTIC(NAME, "Kreis 10"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
&cha_switch_on10,
&cha_name,
NULL
}),
NULL
}),
HOMEKIT_ACCESSORY(.id=11, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) {
HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) {
HOMEKIT_CHARACTERISTIC(NAME, "Kreis 11"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
&cha_switch_on11,
&cha_name,
NULL
}),
NULL
}),
HOMEKIT_ACCESSORY(.id=12, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) {
HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) {
HOMEKIT_CHARACTERISTIC(NAME, "Kreis 12"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
&cha_switch_on12,
&cha_name,
NULL
}),
NULL
}),
HOMEKIT_ACCESSORY(.id=13, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) {
HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) {
HOMEKIT_CHARACTERISTIC(NAME, "Kreis 13"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
&cha_switch_on13,
&cha_name,
NULL
}),
NULL
}),
HOMEKIT_ACCESSORY(.id=14, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) {
HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) {
HOMEKIT_CHARACTERISTIC(NAME, "Kreis 14"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
&cha_switch_on14,
&cha_name,
NULL
}),
NULL
}),
HOMEKIT_ACCESSORY(.id=15, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) {
HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) {
HOMEKIT_CHARACTERISTIC(NAME, "Kreis 15"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
&cha_switch_on15,
&cha_name,
NULL
}),
NULL
}),
HOMEKIT_ACCESSORY(.id=16, .category=homekit_accessory_category_switch, .services=(homekit_service_t*[]) {
HOMEKIT_SERVICE(ACCESSORY_INFORMATION, .characteristics=(homekit_characteristic_t*[]) {
HOMEKIT_CHARACTERISTIC(NAME, "Kreis 16"),
HOMEKIT_CHARACTERISTIC(MANUFACTURER, "Name"),
HOMEKIT_CHARACTERISTIC(SERIAL_NUMBER, "20010221"),
HOMEKIT_CHARACTERISTIC(MODEL, "Bewaesserung"),
HOMEKIT_CHARACTERISTIC(FIRMWARE_REVISION, "1.0"),
HOMEKIT_CHARACTERISTIC(IDENTIFY, my_accessory_identify),
NULL
}),
HOMEKIT_SERVICE(SWITCH, .primary=true, .characteristics=(homekit_characteristic_t*[]){
&cha_switch_on16,
&cha_name,
NULL
}),
NULL
}),
NULL
};
homekit_server_config_t config = {
.accessories = accessories,
.password = "111-11-111"
};
Vielen Dank im Voraus!

