Strona 1 z 87

ESP8266 Primary GUI v2

: pt sie 30, 2019 5:02 pm
autor: krycha88
Jest to moja modyfikacja dobrze przyjętego softu kolegi z forum @Espablo viewtopic.php?f=11&t=4161
Założyłem nowy temat ponieważ robił się bałagan w wątku wymieniony wyżej.
primary_v2.JPG
primary_v2.JPG (92.22 KiB) Przejrzano 11788 razy
Wersja zawiera wszystkie zmiany z projektu wymienionego wyżej między innymi:
  • GUID - jest generowane podobnie jak w w oficjalnej wersji. Potrzebna jest biblioteka ESP8266TrueRandom"
  • Jeśli nie ma danych do sieci Wi-Fi to moduł przechodzi automatycznie w tryb konfiguracji i rozgłasza sieć Wi-Fi należy zalogować się wtedy na IP urządzenia 192.168.4.1,
  • Obsługa przycisków fizycznycznych monostabilnych i bistabilnych z możliwością zapamiętania stanu,
  • Różne kolory GUI dla tryby normalnego i konfiguracyjnego,
  • Dodana LED CONFIG,
  • Tryb konfiguracji to 2 x reset,
  • Możliwa aktualizacja po Wi_Fi
Dodałem:
  • Możliwość pracy przycisków bez połączenia Wi-Fi,
  • Tryb konfiguracyjny po przez przytrzymania przycisku przez co najmniej 5s, ustawia się go #define CONFIG_PIN,
  • Zapamiętywanie stanu dla add_Relay ora add_Relay_Invert,
  • Uruchomienie wielu DS18B20 na jednym pinie add_DS18B20Multi_Thermometer, ilośc czujników definiuje się #define MAX_DS18B20,
    Adresy czujników można zdefiniować na dwa sposoby:
    1. Wywołanie "Szukaj DS" a następnie wykonać "Zapis znalezione DSy" - zapisze wszystkie znalezione adresy
    2. Przez wpisanie adresów ręcznie na stronie głównej, adresy można odczytać w "Szukaj DS"
    primary_v2_ds.JPG
    primary_v2_ds.JPG (61.69 KiB) Przejrzano 11788 razy
  • inne poprawki o których nie pamiętam :)
Do prawidłowego działania trzeba również podmienić SuplaDevice oznaczyłem go wersją 2.0.0

Zawsze aktualne źródła znajdziecie na:
https://github.com/krycha88/Primary_GUI
https://github.com/krycha88/SuplaDevice

Miłej zabawy i testowania :)

Re: ESP8266 Primary GUI v2

: pt sie 30, 2019 5:17 pm
autor: Espablo
Szkoda, że nie mam czasu na przetestowanie ale wygląda obiecująco :D . Najbardziej podoba mi się to "Wywołanie "Szukaj DS" a następnie wykonać "Zapis znalezione DSy" - zapisze wszystkie znalezione adresy" - tak trzymaj :!:

Re: ESP8266 Primary GUI v2

: pt sie 30, 2019 5:52 pm
autor: Rafaello
Dobra robota. To chyba będę pierwszy do testów, pierwsze spostrzeżenia odnośnie DSów, przy jednym DSie po restarcie modułu traci zapisane DSy, natomiast przy ustawionych kilku DSach, co prawda widzi DSa nie traci zapisu po restarcie ale niestety nie czyta wtedy temperatury. W dalszym ciągu nie mogę ustawić aby pamiętały przekaźniki stany.

Re: ESP8266 Primary GUI v2

: pt sie 30, 2019 7:00 pm
autor: krycha88
Rafaello pisze: pt sie 30, 2019 5:52 pm Dobra robota. To chyba będę pierwszy do testów, pierwsze spostrzeżenia odnośnie DSów, przy jednym DSie po restarcie modułu traci zapisane DSy, natomiast przy ustawionych kilku DSach, co prawda widzi DSa nie traci zapisu po restarcie ale niestety nie czyta wtedy temperatury.
Dzięki za pomoc ;)

Trochę moje nie dopatrzenie, dla add_DS18B20_Thermometer na stronie głównej powinna wyświetlać się tylko temperatura nic nie powinno się zapisywać, a dla add_DS18B20Multi_Thermometer już temperatura plus adresy które można zmieniać. Poprawiłem kod już wrzuciłem.
Dla add_DS18B20Multi_Thermometer po restarcie na stronie głównej wyświetlają Ci się zapisane adresy? Niestety nie mogę powtórzyć tego problemu.
Rafaello pisze: pt sie 30, 2019 5:52 pm W dalszym ciągu nie mogę ustawić aby pamiętały przekaźniki stany.
Rozumiem, że w konfiguracji ustawiasz pamiętaj stan i robisz restart urządzenia?

Re: ESP8266 Primary GUI v2

: pt sie 30, 2019 7:58 pm
autor: shimano73
@krycha88 kawał dobrej roboty, ja również przetestuję , a może dałbyś radę zmodyfikować soft tak aby podłączone diody rgb które świeciły przed wyłączeniem zasilania zaświeciły się po jego przywróceniu

Re: ESP8266 Primary GUI v2

: pt sie 30, 2019 8:10 pm
autor: Rafaello
krycha88 pisze: pt sie 30, 2019 7:00 pm
Rafaello pisze: pt sie 30, 2019 5:52 pm Dobra robota. To chyba będę pierwszy do testów, pierwsze spostrzeżenia odnośnie DSów, przy jednym DSie po restarcie modułu traci zapisane DSy, natomiast przy ustawionych kilku DSach, co prawda widzi DSa nie traci zapisu po restarcie ale niestety nie czyta wtedy temperatury.
Dzięki za pomoc ;)

Trochę moje nie dopatrzenie, dla add_DS18B20_Thermometer na stronie głównej powinna wyświetlać się tylko temperatura nic nie powinno się zapisywać, a dla add_DS18B20Multi_Thermometer już temperatura plus adresy które można zmieniać. Poprawiłem kod już wrzuciłem.
Dla add_DS18B20Multi_Thermometer po restarcie na stronie głównej wyświetlają Ci się zapisane adresy? Niestety nie mogę powtórzyć tego problemu.
Rafaello pisze: pt sie 30, 2019 5:52 pm W dalszym ciągu nie mogę ustawić aby pamiętały przekaźniki stany.
Rozumiem, że w konfiguracji ustawiasz pamiętaj stan i robisz restart urządzenia?
Kwestia DSów wydaje się być ogarnięta, działają dla jednego DSa add_DS18B20_Thermometer(2); jak i dla przetestowanych dwóch add_DS18B20Multi_Thermometer(2);.
Zauważyłem że add_Relay jak i add_Relay_Button w ostateczności domyślnie ląduje w SuplaDevice.addRelayButton, zaś przy ustawieniu na SuplaDevice.addRelay jest problem z odczytem DSa nic nie znajduje. Zależy mi na dwóch typach przekaźników gdyż w SuplaDevice.cpp mam ustawione jedne jako GATE a drugie jako SOCKET. Z tego co zauważyłem jest problem z zapamiętaniem stanów przekaźników typu SuplaDevice.addRelay po restarcie wstają na kilkanaście sekund, natomiast tego problemu nie ma SuplaDevice.addRelayButton. Może pokombinuje z obydwoma jako SuplaDevice.addRelayButton z tym że jeden zrobię jako Invert z true zamiast false, w nowym skrypcie chyba uciekła Ci linijka

Kod: Zaznacz cały

SuplaDevice.addRelayButton(relay, button, type, read_supla_relay_flag(nr_relay), false); 
dla

Kod: Zaznacz cały

void add_Relay_Button_Invert

Re: ESP8266 Primary GUI v2

: pt sie 30, 2019 8:37 pm
autor: krycha88
Rafaello pisze: pt sie 30, 2019 8:10 pm w nowym skrypcie chyba uciekła Ci linijka

Kod: Zaznacz cały

SuplaDevice.addRelayButton(relay, button, type, read_supla_relay_flag(nr_relay), false); 
dla

Kod: Zaznacz cały

void add_Relay_Button_Invert
masz rację mój babol;) ale powinno być SuplaDevice.addRelayButton(relay, button, type, read_supla_relay_flag(nr_relay), true) - poprawkę wrzuciłem.

jak add_Relay_Button oraz add_Relay opierają się SuplaDevice.addRelayButton dlatego ważne abyś wrzuciła SuplaDevice z mojego źródła.
Rafaello pisze: pt sie 30, 2019 8:10 pm zaś przy ustawieniu na SuplaDevice.addRelay jest problem z odczytem DSa nic nie znajduje.
może jakiegoś screena wrzuć i co ustawiasz w supla_board_settings.cpp bo nie mogę tego powtórzyć
Rafaello pisze: pt sie 30, 2019 8:10 pm Zależy mi na dwóch typach przekaźników gdyż w SuplaDevice.cpp mam ustawione jedne jako GATE a drugie jako SOCKET.
Nie wiem co masz na myśli mówiąc GATE a drugie jako SOCKET.

Re: ESP8266 Primary GUI v2

: pt sie 30, 2019 8:53 pm
autor: krycha88
Rafaello pisze: pt sie 30, 2019 8:10 pm Z tego co zauważyłem jest problem z zapamiętaniem stanów przekaźników typu SuplaDevice.addRelay po restarcie wstają na kilkanaście sekund, natomiast tego problemu nie ma SuplaDevice.addRelayButton.
Udało mi się powtórzyć takie zachowanie, gdy robię bardzo szybki restart. Spróbuj zrobić dłużysz restart aby urządzenie się rozłączyło w aplikacji czy wtedy też masz ten problem?

Re: ESP8266 Primary GUI v2

: pt sie 30, 2019 8:58 pm
autor: Rafaello
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.

W supla_board_settings mam

Kod: Zaznacz cały

void supla_board_configuration(void) {
  
  add_Relay(12);
  add_Relay_Button(4, 0, CHOICE_TYPE);
  //  add_Relay_Button_Invert(13, 12, CHOICE_TYPE);
 // add_Relay(15);
  //  add_Relay_Invert(5);
  //  add_Roller_Shutter_Relays(5, 13) ;
  //  add_Roller_Shutter_Buttons(0, 14, 12);
  //  SuplaDevice.setRollerShutterFuncImpl(&supla_rs_SavePosition, &supla_rs_LoadPosition, &supla_rs_SaveSettings, &supla_rs_LoadSettings);
    add_Sensor(5);
  //  add_Sensor(16);
 // add_DS18B20Multi_Thermometer(2);
    add_DS18B20_Thermometer(2);
  //  add_DHT11_Thermometer(12);
  //  add_DHT22_Thermometer(4);
  add_Led_Config(LED_CONFIG_PIN);
  add_Config(CONFIG_PIN);

}

Re: ESP8266 Primary GUI v2

: pt sie 30, 2019 9:09 pm
autor: krycha88
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.
Ale po co tak robić? Nie lepiej ustawić to po stronie cloud.supla.org?