Asteliks / AppleHomeKitADK-ESP32

12 stars 2 forks source link

Why gpio set in HandleLightBulbOnRead? #1

Closed skanico closed 4 years ago

skanico commented 4 years ago

Hello, I'm trying to understand your sample. I wonder, why do you set gpio level in HandleLightBulbOnRead? I thought it was only used to read characteristic state... Thanks

switch(i)
{
    case 2:
        gpio_pad_select_gpio(26);
        gpio_set_direction(26, GPIO_MODE_OUTPUT);
        gpio_set_level(26, !accessoryConfiguration.state.lightBulbOn[2]);
        break;

    case 3:
        gpio_pad_select_gpio(27);
        gpio_set_direction(27, GPIO_MODE_OUTPUT);
        gpio_set_level(27, !accessoryConfiguration.state.lightBulbOn[3]);
        break;
}
Asteliks commented 4 years ago

it is used to read characteristic state from the memory. Imagen a situation when there is a power outage with this code the esp will resume the previous state when power is back online

skanico commented 4 years ago

OK, I understand better. If the goal is to restore the state after a power outage, wouldn't it be better to set the gpio after LoadAccessoryState in AppCreate? Isn't it overkill to write to gpio each time you read the state? I'm just discovering ADK... sorry if this is a bad idea ;-) Btw, I'd like to understand how to catch gpio input interrupt. Have you ever tried something about it? Thanks

Asteliks commented 4 years ago

Probably yes it would be better but I wanted the changes as compact as they can be for new people. Might be a bad approach on my part. Yes it probably is. The idea is great if you want I can add you as a collaborator to this repository. TBH there is a ton of improvements to be done here but alone I just don't have the time.

In fact yes I have but as of now only with the arduino-IDE. Check this boi out: https://youtu.be/CJhWlfkf-5M If you are working on a ESP32 you may also enjoy this: https://youtu.be/k_D_Qu0cgu8