Strona 1 z 3

Dodatkowy przycisk do podwójnego przekaźnika

: ndz lip 31, 2016 5:47 pm
autor: Rlech
Proszę o podpowiedź/pomoc w dodaniu przycisku sterującego do dodatkowego przekaźnika. Chciałbym skompilować firmware do podwójnego przekaźnika, który mógłbym jednocześnie sterować aplikacją i przyciskami – tak jak w WIFISOCKET tylko x2.

W ‘supla_esp.h’ zmodyfikowałem ‘__BOARD_wifisocket’ poprzez zdefiniowanie ‘RELAY2_PORT 13’ (zamiast diody)
oraz
w ‘supla_esp_devconn.c’ dodałem kod dla RELAY2:

Kod: Zaznacz cały

 srd.channels[1].Number = 1;
      srd.channels[1].Type = srd.channels[0].Type;
      srd.channels[1].FuncList = srd.channels[0].FuncList;
      srd.channels[1].Default = srd.channels[0].Default;
      srd.channels[1].value[0] = supla_esp_gpio_relay_on(RELAY2_PORT);
analogicznie jak w EgyIOT.

Po wgraniu firmwareu da się sterować oboma przekaźnikami z poziomu aplikacji lecz przycisk (na GPIO 5) steruje jedynie jednym z nich (co było do przewidzenia).
Czy istnieje prosty sposób na dołączenie dodatkowego przycisku?

Re: Dodatkowy przycisk do podwójnego przekaźnika

: pn sie 01, 2016 8:57 am
autor: pzygmunt
Zmieniasz

https://github.com/SUPLA/supla-core/blo ... gpio.c#L52

static struct single_key_param *single_key[1];
na
static struct single_key_param *single_key[2];


i dodajesz analogicznie
https://github.com/SUPLA/supla-core/blo ... pio.c#L501

single_key[1] = key_init_single(CFG2_PORT, supla_esg_gpio_cfg2_pressed, supla_esg_gpio_manual2_pressed);

Re: Dodatkowy przycisk do podwójnego przekaźnika

: sob sie 06, 2016 8:06 pm
autor: slawek
Próbuję dodać obsługę przyciskiem drugiego kanału socket, ale mam problem.
Dodałem wpisy jak w poście wyżej, ale przy kompilacji wyskakuje błąd jak na zrzucie.
Gdzie i czego brakuje - ktoś mógłby łopatologicznie podpowiedzieć?

Re: Dodatkowy przycisk do podwójnego przekaźnika

: ndz sie 07, 2016 8:59 pm
autor: Zybi
Wstawiając zapis:

single_key[1] = key_init_single(CFG2_PORT, supla_esg_gpio_cfg2_pressed, supla_esg_gpio_manual2_pressed);

odwołujesz się do dwóch nowych funkcji "supla_esg_gpio_cfg2_pressed" i "supla_esg_gpio_manual2_pressed", które nie są w programie nigdzie zdefiniowane. Analizując, kod źródłowy dopisałem te funkcje i udało mi się skompilować firmware, ale uzyskałem efekt jednoczesnego załączania dwóch kanałów i niestabilność układu. Im bardziej analizowałem kod programu, to tym bardziej nabierałem przekonania, że nie będzie to takie łatwe i bez Przemka nie da rady tego zrobić.

Re: Dodatkowy przycisk do podwójnego przekaźnika

: pn sie 08, 2016 9:59 am
autor: pzygmunt

Kod: Zaznacz cały


void supla_esg_gpio_manual2_pressed(void) {
   if ( supla_esp_cfgmode_started() == 0 ) {
        char hi = supla_esp_gpio_is_hi(RELAY2_PORT) == 1 ? 0 : 1;
	supla_esp_gpio_hi(RELAY2_PORT, hi);
	supla_esp_channel_value_changed(0, hi);
   };
};

void  supla_esg_gpio_cfg2_pressed(void) {
};


Re: Dodatkowy przycisk do podwójnego przekaźnika

: pn sie 08, 2016 5:18 pm
autor: Zybi
Uff - działa, ale należy jeszcze zmodyfikować:

keys.key_num = 1;
na
keys.key_num = 2;

Re: Dodatkowy przycisk do podwójnego przekaźnika

: pn sie 08, 2016 5:33 pm
autor: pzygmunt
Zybi pisze:Uff - działa, ale należy jeszcze zmodyfikować:

keys.key_num = 1;
na
keys.key_num = 2;
Zgadza się. Pisałem na forum z głowy bez testowania ;)

Re: Dodatkowy przycisk do podwójnego przekaźnika

: pn sie 08, 2016 6:49 pm
autor: slawek
Dzięki - działa.
Pozostało "przywrócić" termometr...

Re: Dodatkowy przycisk do podwójnego przekaźnika

: pn sie 08, 2016 7:11 pm
autor: Zybi
Przy testach wyszedł jeszcze jeden problem. Przy "ręcznym" sterowaniu oba przyciski powodują zmianę stanu ikon tego samego kanału (0) na smartfonie, przynajmniej u mnie, bo mam trochę zmodyfikowaną definicję płytek BOARD, a właściwie wprowadziłem nową. Dzięki temu działa mi termometr.

Re: Dodatkowy przycisk do podwójnego przekaźnika

: pn sie 08, 2016 7:23 pm
autor: slawek
A jak ze zmianą trybu btn/switch?
u mnie zmienia tylko dla 1 kanału...
okienko w konfigu mam jedno... i zmienia tylko 1 kanał, 2 mam button