ESP8266 Primary GUI v2

Post Reply
krycha88
Posts: 422
Joined: Fri Nov 16, 2018 7:25 am

Fri Aug 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) Viewed 2140 times
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) Viewed 2140 times
  • 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 :)
Attachments
ESP8266TrueRandom.rar
(10.71 KiB) Downloaded 159 times
Last edited by krycha88 on Sat Aug 31, 2019 7:48 am, edited 1 time in total.
User avatar
Espablo
Posts: 1458
Joined: Wed Jun 29, 2016 5:04 pm
Location: Oświęcim
Contact:

Fri Aug 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
Posts: 67
Joined: Sun May 29, 2016 1:34 pm

Fri Aug 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
Posts: 422
Joined: Fri Nov 16, 2018 7:25 am

Fri Aug 30, 2019 7:00 pm

Rafaello wrote:
Fri Aug 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 wrote:
Fri Aug 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?
User avatar
shimano73
Posts: 910
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze

Fri Aug 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
Rafaello
Posts: 67
Joined: Sun May 29, 2016 1:34 pm

Fri Aug 30, 2019 8:10 pm

krycha88 wrote:
Fri Aug 30, 2019 7:00 pm
Rafaello wrote:
Fri Aug 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 wrote:
Fri Aug 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

Code: Select all

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

Code: Select all

void add_Relay_Button_Invert
krycha88
Posts: 422
Joined: Fri Nov 16, 2018 7:25 am

Fri Aug 30, 2019 8:37 pm

Rafaello wrote:
Fri Aug 30, 2019 8:10 pm
w nowym skrypcie chyba uciekła Ci linijka

Code: Select all

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

Code: Select all

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 wrote:
Fri Aug 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 wrote:
Fri Aug 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
Posts: 422
Joined: Fri Nov 16, 2018 7:25 am

Fri Aug 30, 2019 8:53 pm

Rafaello wrote:
Fri Aug 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
Posts: 67
Joined: Sun May 29, 2016 1:34 pm

Fri Aug 30, 2019 8:58 pm

Ustawiam w Primary_GUI_V2 SuplaDevice.addRelay zamiast SuplaDevice.addRelayButton

Code: Select all

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

Code: Select all

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

Code: Select all

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

Code: Select all

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
Posts: 422
Joined: Fri Nov 16, 2018 7:25 am

Fri Aug 30, 2019 9:09 pm

Rafaello wrote:
Fri Aug 30, 2019 8:58 pm
Ustawiam w Primary_GUI_V2 SuplaDevice.addRelay zamiast SuplaDevice.addRelayButton

Code: Select all

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

Code: Select all

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

Code: Select all

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?
Post Reply