...albo czegoś tu nie rozumiem i mam braki w kodzie, albo w tej funkcjonalności nie wszystko działa tak jak powinno.
Z uwagi na to, że Cloud mam na malinie w wersji dockerowej, a jak wiadomo docker jeszcze nie jest aktualny, przepiąłem się z testowym modułem na beta-cloud.supla.org, gdzie tytułowa funkcjonalność już jest.
Kompiluję sobie taką konfigurację i po flashowaniu ustawiam moduł i podpinam go do cloud.
Jak widać poniżej mam 2 przekaźnik sterowane przez 2 przyciski na kanałach 0 i 1.
supla_esp_board_gpio_init wygląda tak
Kod: Zaznacz cały
supla_input_cfg[0].type = INPUT_TYPE_BTN_MONOSTABLE;
supla_input_cfg[0].gpio_id = B_BTN1_PORT;
supla_input_cfg[0].flags = INPUT_FLAG_PULLUP | INPUT_FLAG_CFG_BTN;
supla_input_cfg[0].relay_gpio_id = B_RELAY1_PORT;
supla_input_cfg[0].channel = 0;
supla_input_cfg[1].type = INPUT_TYPE_BTN_MONOSTABLE;
supla_input_cfg[1].gpio_id = B_BTN2_PORT;
supla_input_cfg[1].flags = INPUT_FLAG_PULLUP | INPUT_FLAG_CFG_BTN;
supla_input_cfg[1].relay_gpio_id = B_RELAY2_PORT;
supla_input_cfg[1].channel = 1;
supla_relay_cfg[0].gpio_id = B_RELAY1_PORT;
supla_relay_cfg[0].flags = RELAY_FLAG_RESET;
supla_relay_cfg[0].channel = 0;
supla_relay_cfg[1].gpio_id = B_RELAY2_PORT;
supla_relay_cfg[1].flags = RELAY_FLAG_RESET;
supla_relay_cfg[1].channel = 1;
Kod: Zaznacz cały
*channel_count = 2;
channels[0].Number = 0;
channels[0].Type = SUPLA_CHANNELTYPE_RELAY;
channels[0].FuncList = SUPLA_BIT_RELAYFUNC_POWERSWITCH \
| SUPLA_BIT_RELAYFUNC_LIGHTSWITCH \
| SUPLA_BIT_RELAYFUNC_STAIRCASETIMER;
channels[0].Default = 0;
channels[0].value[0] = supla_esp_gpio_relay_on(B_RELAY1_PORT);
channels[1].Number = 1;
channels[1].Type = channels[0].Type;
channels[1].FuncList = channels[0].FuncList;
channels[1].Default = 0;
channels[1].value[0] = supla_esp_gpio_relay_on(B_RELAY2_PORT);
Kod: Zaznacz cały
supla_esp_channel_value_changed(0, supla_esp_gpio_relay_on(B_RELAY1_PORT));
supla_esp_channel_value_changed(1, supla_esp_gpio_relay_on(B_RELAY2_PORT));
Zacieram ręce i sprawdzam działanie.
Uruchamiam w telefonie automat i przekaźnik pstryka, a po upływie ustalonego czasu następuje wyłączenie, przekaźnik pstryka. Sprawdzam w apce wyłączenie przed upływem ustawionego czasu, działa super.
Biorę łącznik w łapki wciskam przycisk, przekaźnik pstryka czekam, czekam... ustalony czas mija i cisza (tu spodziewałem się zmiany stanu kanału jak to miało miejsce przy wykonaniu akcji z aplikacji w tel). Zerkam w telefon bo nie wiem czy nie dosłyszałem zmiany, ale niestety nie. Stan kanału się nie zmienił, hmm.. ale dlaczego? Ponowne naciskam przycisk, kanał zmienia stan, przekaźnik pstryka. Sprawdziłem kilka razy i zawsze to samo, chyba że włączę już włączony kanał na telefonie, to wtedy odliczy czas i zmienia stan.
Czy czegoś mi brakuje w tej konfiguracji? Powinienem mieć tu jeszcze coś, jakoś, gdzieś? Czy to po prostu jakiś bug po stronie działania funkcji? Szukałem w źródłach jakiegoś tropu czemu to tak, ale ślad mi się urwał.....
P.S. Źródła mam aktualne