ESP8266 Primary GUI v2

Rafaello
Posty: 67
Rejestracja: ndz maja 29, 2016 1:34 pm

pt sie 30, 2019 9:16 pm

Generalnie dla kogoś kto ma tylko sobie ustawić swojego cloud.supla nie wie który kanał jest do bramy a który do światła, a tak to na jednym ma do wyboru tylko typy GATE a na drugim SOCKET, tak były przygotowane pierwsze moduły. Firmware SUPLA-SOCKET miał tylko dwa typy światło i zasilanie, zaś SUPLA-GATE-MODULE tylko GATE czyli bramowe i to z punktu widzenia użytkownika jest wygodne.
krycha88
Posty: 617
Rejestracja: pt lis 16, 2018 7:25 am

pt sie 30, 2019 9:20 pm

No ok, ale przez to tracisz uniwersalność softu. Zawsze przy kompilacji musisz pamiętać o zmianie a w Cloudzie ustawiasz raz i zapominasz ;-)
Rafaello
Posty: 67
Rejestracja: ndz maja 29, 2016 1:34 pm

pt sie 30, 2019 9:28 pm

krycha88 pisze:
pt sie 30, 2019 9:20 pm
No ok, ale przez to tracisz uniwersalność softu. Zawsze przy kompilacji musisz pamiętać o zmianie a w Cloudzie ustawiasz raz i zapominasz ;-)
Patrząc pod kątem uniwersalności masz zupełną rację. Jednakże dzięki twojej ogromnej robocie jaką włożyłeś w skrypt no i warto tu wspomnieć o Espablo, QLQ i innych co tworzyli źródło, kolejni mogą go dostosowywać do swoich potrzeb. Myślę że przez weekend coś ciekawego na tej bazie wymodzę, jakby co nie omieszkam poprosić o pomoc.
Jeszcze raz dzięki.
krycha88
Posty: 617
Rejestracja: pt lis 16, 2018 7:25 am

sob sie 31, 2019 5:14 am

Rafaello pisze:
pt sie 30, 2019 8:58 pm
Ustawiam w Primary_GUI_V2 SuplaDevice.addRelay zamiast SuplaDevice.addRelayButton

Kod: Zaznacz cały

void add_Relay(int relay) {
  relay_button_channel[nr_relay] = relay;
  nr_relay++;
   SuplaDevice.addRelay(relay);
  // SuplaDevice.addRelayButton(relay, -1, 0, read_supla_relay_flag(nr_relay));
}
Natomiast w SuplaDevice.cpp zmodyfikowałem delikatnie twój ostatni
dla przekaźnika GATE ustawionego na addRelayButton mam

Kod: Zaznacz cały

bool SuplaDeviceClass::addRelayButton(int relayPin, int buttonPin, int type_button, int flag, bool hiIsLo) {
	return addRelayButton(relayPin, buttonPin, type_button, flag, hiIsLo, SUPLA_BIT_RELAYFUNC_CONTROLLINGTHEGATEWAYLOCK
																			| SUPLA_BIT_RELAYFUNC_CONTROLLINGTHEGATE
																			| SUPLA_BIT_RELAYFUNC_CONTROLLINGTHEGARAGEDOOR) > -1;
}

bool SuplaDeviceClass::addRelayButton(int relayPin, int buttonPin, int type_button, int flag) {
	return addRelayButton(relayPin, buttonPin, type_button, flag, false, SUPLA_BIT_RELAYFUNC_CONTROLLINGTHEGATEWAYLOCK
																			| SUPLA_BIT_RELAYFUNC_CONTROLLINGTHEGATE
																			| SUPLA_BIT_RELAYFUNC_CONTROLLINGTHEGARAGEDOOR) > -1;
zaś dla SOCKET ustawiony na addRelay

Kod: Zaznacz cały

bool SuplaDeviceClass::addRelay(int relayPin, bool hiIsLo) {
	return addRelay(relayPin, 0, hiIsLo, false, SUPLA_BIT_RELAYFUNC_POWERSWITCH
                              | SUPLA_BIT_RELAYFUNC_LIGHTSWITCH) > -1;
}

bool SuplaDeviceClass::addRelay(int relayPin1) {
	return addRelay(relayPin1, false) > -1;
}
i wtedy na jednym mam do wyboru tylko bramy i drzwi a na drugim mam włącznik światłu lub zasilania.
Tak to sobie wykombinowałem, nie wiem czy dobrze, najważniejsze że uzyskałem to na czym mi zależy.
Dzisiaj na spokojnie na to spojrzałem i wcale nie musisz modyfikować SuplaDevice wystarczy, że poprawisz sobie np. metodę add_Relay_Button

Kod: Zaznacz cały

void add_Relay_Button(int relay, int button, int type) {
  relay_button_channel[nr_relay] = relay;
  nr_button++;
  nr_relay++;
  if (type == CHOICE_TYPE) {
    int select_button = read_supla_button_type(nr_button);
    type = select_button;
  }

  SuplaDevice.addRelayButton(relay, -1, 0, read_supla_relay_flag(nr_relay), false, SUPLA_BIT_RELAYFUNC_POWERSWITCH);
}
Wtedy w cloudzie będziesz miał tylko wyłącznik światła, można by się pokusić i przerobić to tak żeby rodzaj ustawiało się supla_board_settings.cpp ale myślę, że tak jak teraz jest dobrze.
Rafaello
Posty: 67
Rejestracja: ndz maja 29, 2016 1:34 pm

sob sie 31, 2019 6:41 am


Dzisiaj na spokojnie na to spojrzałem i wcale nie musisz modyfikować SuplaDevice wystarczy, że poprawisz sobie np. metodę add_Relay_Button

Kod: Zaznacz cały

void add_Relay_Button(int relay, int button, int type) {
  relay_button_channel[nr_relay] = relay;
  nr_button++;
  nr_relay++;
  if (type == CHOICE_TYPE) {
    int select_button = read_supla_button_type(nr_button);
    type = select_button;
  }

  SuplaDevice.addRelayButton(relay, -1, 0, read_supla_relay_flag(nr_relay), false, SUPLA_BIT_RELAYFUNC_POWERSWITCH);
}
Wtedy w cloudzie będziesz miał tylko wyłącznik światła, można by się pokusić i przerobić to tak żeby rodzaj ustawiało się supla_board_settings.cpp ale myślę, że tak jak teraz jest dobrze.
A jakby tak dało się zadeklarować przy
add_Relay_Button aby w Cloud mieć wybór między światłem a zasilaniem byłoby super, wtedy można by na tej bazie stworzyć powiedzmy add_Relay_Button_Gate i ustawić przekaźniki typu bramowego, choć nie wiem czy dobra droga. Gdyby w board_setting był wybór typu przekaźnika Gate lub Socket byłaby bajka. Np add_relay(4, GATE) 😀
krycha88
Posty: 617
Rejestracja: pt lis 16, 2018 7:25 am

sob sie 31, 2019 6:55 am

Rafaello pisze:
sob sie 31, 2019 6:41 am
A jakby tak dało się zadeklarować przy
add_Relay_Button aby w Cloud mieć wybór między światłem a zasilaniem byłoby super, wtedy można by na tej bazie stworzyć powiedzmy add_Relay_Button_Gate i ustawić przekaźniki typu bramowego, choć nie wiem czy dobra droga. Gdyby w board_setting był wybór typu przekaźnika Gate lub Socket byłaby bajka. Np add_relay(4, GATE) 😀
to wtedy robisz:

Kod: Zaznacz cały

SuplaDevice.addRelayButton(relay, button, type, read_supla_relay_flag(nr_relay), false, SUPLA_BIT_RELAYFUNC_POWERSWITCH | SUPLA_BIT_RELAYFUNC_LIGHTSWITCH)
myślę, że nic z tym nie będę robić, bo wydaje się proste do ogarnięcia :)
cino111
Posty: 710
Rejestracja: pn maja 07, 2018 8:00 pm

sob sie 31, 2019 6:57 am

Moim zdaniem nie ma to sensu. Zostawmy tak jak jest, a jest super.
Rafaello
Posty: 67
Rejestracja: ndz maja 29, 2016 1:34 pm

sob sie 31, 2019 7:11 am

to wtedy robisz:

Kod: Zaznacz cały

SuplaDevice.addRelayButton(relay, button, type, read_supla_relay_flag(nr_relay), false, SUPLA_BIT_RELAYFUNC_POWERSWITCH | SUPLA_BIT_RELAYFUNC_LIGHTSWITCH)
myślę, że nic z tym nie będę robić, bo wydaje się proste do ogarnięcia :)
Dzięki sprawdzę, macie racje w samym GUI źródłowym nie ma sensu ruszać, natomiast jakby ktoś chciał to ustawić i na własną rękę modyfikować wie ewentualnie gdzie i co zmieniać.
Rafaello
Posty: 67
Rejestracja: ndz maja 29, 2016 1:34 pm

sob sie 31, 2019 7:55 am

Zmodyfikowałem GUI według wskazówek, add_Relay_Button_Invert ustawiłem dla Socket, natomiast add_Relay_Button dla Gate, i tu w cloudzie pokazuje OK, SuplaDevice nie modyfikowałem. Natomiast nadal mam problem z pamięcią stanu po restarcie załącza przekaźnik ale na kilka sekund po czym go rozłącza, cloud podąża za zmianami. Jak mam ustawiony w konfiguratorze Reset wtedy jest OK i po restarcie nie odpala przekaźników.
Jeszcze jedna rzecz jak w supla_boar_setting mamy skonfigurowany przekaźnik add_Relay; a nie add_Relay_Button nie działa DS.
krycha88
Posty: 617
Rejestracja: pt lis 16, 2018 7:25 am

sob sie 31, 2019 8:03 am

Rafaello pisze:
sob sie 31, 2019 7:55 am
Natomiast nadal mam problem z pamięcią stanu po restarcie załącza przekaźnik ale na kilka sekund po czym go rozłącza, cloud podąża za zmianami.
Ale docelowo ustawia Ci się stan zapamiętany przed restartem? Jeżeli tak jest to chyba będzie ciężko coś z tym zrobić bo jest to czas który jest potrzebny do uruchomienia urządzenia (spojrzę później może da się szybciej ustawić prawidłowy stan).

Rozwiązaniem wydaj się ustawienie za pomocą add_Relay_Button lub add_Relay_Button_Invert stanu który domyślnie jest częściej używany.
ODPOWIEDZ