ESP8266 Primary GUI v2

krycha88
Posty: 708
Rejestracja: pt lis 16, 2018 7:25 am

pt sie 30, 2019 5:02 pm

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 5444 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 5444 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 :)
Załączniki
ESP8266TrueRandom.rar
(10.71 KiB) Pobrany 444 razy
Ostatnio zmieniony sob sie 31, 2019 7:48 am przez krycha88, łącznie zmieniany 1 raz.
Awatar użytkownika
Espablo
Posty: 1465
Rejestracja: śr cze 29, 2016 5:04 pm
Lokalizacja: Oświęcim
Kontaktowanie:

pt sie 30, 2019 5:17 pm

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 :!:
Każde urządzenie elektryczne działa o wiele lepiej jeśli podłączysz je do prądu. :? :roll:
https://github.com/Espablo
Rafaello
Posty: 96
Rejestracja: ndz maja 29, 2016 1:34 pm

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. W dalszym ciągu nie mogę ustawić aby pamiętały przekaźniki stany.
krycha88
Posty: 708
Rejestracja: pt lis 16, 2018 7:25 am

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?
Awatar użytkownika
shimano73
Posty: 1088
Rejestracja: ndz lut 28, 2016 12:27 pm
Lokalizacja: Orzesze

pt sie 30, 2019 7:58 pm

@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
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie
Jak się dziś oddycha https://schimano73.aqi.eco/
https://github.com/shimano73
Rafaello
Posty: 96
Rejestracja: ndz maja 29, 2016 1:34 pm

pt sie 30, 2019 8:10 pm

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
krycha88
Posty: 708
Rejestracja: pt lis 16, 2018 7:25 am

pt sie 30, 2019 8:37 pm

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.
krycha88
Posty: 708
Rejestracja: pt lis 16, 2018 7:25 am

pt sie 30, 2019 8:53 pm

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?
Rafaello
Posty: 96
Rejestracja: ndz maja 29, 2016 1:34 pm

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.

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);

}
krycha88
Posty: 708
Rejestracja: pt lis 16, 2018 7:25 am

pt sie 30, 2019 9:09 pm

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?
ODPOWIEDZ