Neuer Versuch.
Ich hab die Logik für das schalten und auslesend es Pins jetzt ausgelagert.
Der PIN soll jetzt also auf mindestens einen eingeschalteten oder alle ausgeschalteten reagieren.
Wenn das nciht ist, kannst Du die Logik alleine umdrehen. Steht in der ersten Zeile. Da einfach LOW gegen HIGH tauschen.
Ich glaub ja, das die Anzeigelogik von der Schaltlogik entkoppelt ist, aber das werden wir noch sehen.
void cha_switch_on_setter16(const homekit_value_t value)
{
const bool AN = LOW; // HIER einstellen ob high oder low aktiv
//
bool on = !AN;
for (byte b = 0; b < 15; b++)
{
if (mcp.digitalRead(b) == AN)
{ on = AN; }
}
if (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);
}
}
Und ich kann Deinen Code nicht kompilieren.
Die Version die ich von der Homekit-Lib habe wird bemeckert...
/home/user1/arduino-1.8.19/portable/sketchbook/libraries/Arduino-HomeKit-ESP32-master/src/homekit_debug.h:42:22: error: 'start_time' defined but not used [-Werror=unused-variable]
static unsigned long start_time = 0;
^~~~~~~~~~
cc1plus: some warnings being treated as errors
Ich hab jetzt aber auch keine Lust da noch dran rumzufummeln...