Czy znajdę podstawowy projekt

Adamo28
Posts: 223
Joined: Sun Nov 08, 2020 2:54 pm

Post

Witam, czy znajdę gdzieś na forum czysty projekt na nowej bibliotece z samym logowaniem do konta supli i serwerem http do wprowadzania późniejszych zmian (zmiana wifi/konta supli) gdzie mógłbym sam dopisać swoje oprzyrządowanie? Próbowałem okroić GUI Generic ale strasznie tam tego dużo i żmudnie to idzie.
Mmof
Posts: 1220
Joined: Sun Jan 26, 2020 5:49 pm
Has thanked: 34 times
Been thanked: 4 times

Post

Adamo28 wrote: Thu Mar 04, 2021 9:07 pm Witam, czy znajdę gdzieś na forum czysty projekt na nowej bibliotece z samym logowaniem do konta supli i serwerem http do wprowadzania późniejszych zmian (zmiana wifi/konta supli) gdzie mógłbym sam dopisać swoje oprzyrządowanie? Próbowałem okroić GUI Generic ale strasznie tam tego dużo i żmudnie to idzie.
Tu masz GUI generic ale sam generujesz co chcesz. Może to ci się przyda. A wszystkie aktualne biblioteki są u krycha88 i u Espablo na GitHub-ie.
viewtopic.php?f=11&t=8142
Zapraszam na Facebook do wspólnej pomocy mniej zawansowanym użytkownikom Supla.
https://www.facebook.com/groups/suplazamel
https://www.facebook.com/groups/supladiy
https://www.facebook.com/groups/suplaauraton
User avatar
klew
Posts: 13909
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 135 times
Been thanked: 137 times

Post

Nie widziałem nigdzie takiego projektu. Ale jeśli aktualny GUI Generic jest zbyt duży do prostej analizy, to może jakiś pierwszy commit do tego projektu będzie prostszy? Tylko nie wiem czy to się nadal kompiluje i czy działa:
https://github.com/Espablo/GUI-Generic/ ... 50d16f5e2c
Najlepsze suple dla Twojego domu :mrgreen:
dobo
Posts: 1051
Joined: Sun Apr 07, 2019 8:14 pm
Location: Nadarzyn

Post

Też o tym myślałem, że przydała by się taka podstawa.
Bo robię sterownik schodowy na PWM program został napisany w arduino na ATMega328
I może w prosty sposób dało by się to przenieść do ESP z możliwością ustawień czasów załączania przez przeglądarkę.
Adamo28
Posts: 223
Joined: Sun Nov 08, 2020 2:54 pm

Post

Dzięki i "...do prostej analizy" :lol:
Adamo28
Posts: 223
Joined: Sun Nov 08, 2020 2:54 pm

Post

Mmof wrote: Fri Mar 05, 2021 8:04 am Tu masz GUI generic ale sam generujesz co chcesz. Może to ci się przyda. A wszystkie aktualne biblioteki są u krycha88 i u Espablo na GitHub-ie.
viewtopic.php?f=11&t=8142
Fajne fajne ale generuje samą binarke. Ten komit GUI Generic jest jeszcze z trigerami więc nie skompiluje się na aktualnych bibliotekach. Jutro kawa z rana i siadam do tego twardo może się człowiek czegoś nauczy przy okazji.
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

Tu masz podstawowy projekt na którym zbudowaliśmy GUI-Generic

https://github.com/krycha88/Primary_GUI_nexo
https://gui-generic-builder.supla.io/
Adamo28
Posts: 223
Joined: Sun Nov 08, 2020 2:54 pm

Post

A gdybym chciał w zakladce np config wyświetlić bieżącą wartość z A0 tylko w aby plynnie sie zmieniała. Rozumiem że muszę użyć XlmHttpRequesta ale nie chciał bym calej strony odswierzac tylko sam span z tą wartością. Kombinuje że może zrobic pod stronę z samym A0 gdzie ladnie to pracuje i to wstawiać do podstrony config ale czy mozna to jakos inaczej wykombinować?
User avatar
Goral64
Posts: 3258
Joined: Fri Dec 27, 2019 6:22 pm
Location: Żerniki Wrocławskie
Has thanked: 2 times
Been thanked: 1 time

Post

Możesz zrobić i tak i tak. Jak Ci będzie wygodniej.
Widzimy się na Supla Offline Party Season 2026 :D

Image
Adamo28
Posts: 223
Joined: Sun Nov 08, 2020 2:54 pm

Post

Ok więc tak, na podstawie wyżej zamieszczonej jednej z pierwszych wersji GUI Generic wykomentowałem wszystko co najlepsze i w SuplaWebServer.cpp dodałem

Code: Select all

void SuplaWebServer::createWebServer() {
 ...
  path = PATH_START;  
  path += PATH_A0;  // /A0raw
  httpServer.on(path, std::bind(&SuplaWebServer::handleA0, this));
}

void SuplaWebServer::handleA0() {
String opt(a0_raw);
httpServer.send(200, "text/html", opt.c_str()); 

}

String SuplaWebServer::SuplaJavaScriptA0() {

String java_script2 = F("<script>myTimer(); var myVar = setInterval(myTimer, 1000);function myTimer() {");
java_script2 += F("var xhttp = new XMLHttpRequest();xhttp.onreadystatechange = function() { ");
java_script2 += F("if (this.readyState == 4 && this.status == 200) {document.getElementById(\"aaa\").innerHTML = this.responseText;}};");
java_script2 += F("xhttp.open('GET', '/A0raw' , true); xhttp.send();}</script>");
     
return java_script2;
}

W supla_webpage_config() zrobiłem trochę htmla i na podstawie tego co było polepiłem kalibrację min/max

Code: Select all

int A0min, A0max;
  
  String page = "";
  page += SuplaMetas();
  page += SuplaStyle();
 // page += SuplaJavaScriptA0();
  page += SuplaSaveResult(save);
  page += SuplaJavaScript(PATH_CONFIG);
  page += F("<div class='s'>");
  page += SuplaLogo();
  page += SuplaSummary();
  page += F("<form method='post' action='");
  page += PATH_SAVE_CONFIG;
  page += F("'><div class='w'><h3>Ustawienia kalibracji A0</h3>");
  page += F("<div class='dA0con'> <div class='dA0opi'>Wartość RAW A0: </div>  <div class='dA0war' id=\"aaa\">");
  page += a0_raw;
  page += F("</div></div>");


A0min = ConfigManager->get(KEY_A0_MIN)->getValueInt();
A0max = ConfigManager->get(KEY_A0_MAX)->getValueInt();

           
           page += F("<i><label>");
           page += F("Ustawienie MIN</label>");
           page += F("<input name='");
           page+= INPUT_A0_MIN;
           page+= F("' type='number' min='0' max='1023' value='");
           page += A0min;
           page += F("'></i>");

           page += F("<i><label>");
           page += F("Ustawienie MAX</label>");

           page += F("<input name='");
           page+= INPUT_A0_MAX;
           page+= F("' type='number' min='0' max='1023' value='");
           page += A0max;
           page += F("'>");

  page += F("</i>");
  page += F("</div><button type='submit'>Zapisz</button></form>");
  page += F("<br>");
  page += F("<a href='/'><button>Powrót</button></a></div>");
  
  page += SuplaJavaScriptA0();
  return page;
Używam NodeMcu V3 który wejście A0 ma już w przedziale 0-3.3V (0-1023 punkty, na płytce jest już dzielnik samo esp ma wejście do 1V) do tego podłączam bocznik na rezystorach dla pętli 4-20mA z mojej sondy poziomu gdzie odkłada mi się napięcie w ww. przedziale. Do tego kanał na termometrze gdzie skaluje ilość tych punktów od 0-100 z odczytanego A0. W CONFIG mam bieżącą wartość raw aby można było poprawnie skalibrować odczyt. A no i zastosowałem duble reset detector do robienia factory reset bo nie potrafię (jeszcze) wymusić GUI wejścia w tryb config

Code: Select all

...
   
  double getValue() {
    //map(value, fromLow, fromHigh, toLow, toHigh)
    a0_value =  map(analogRead(pin), tA0Min ,tA0Max, 0, 100);
    return a0_value;
    }
...    

Całkiem pouczające doświadczenie dla kogoś kto uczy się dopiero języka. Chciał bym jeszcze zamiast factory reset wchodzić w tryb config oraz jakoś po ludzku odwoływać się do tej wartości odczytanej z A0 w głównym loopie, na tą chwile stworzyłem dodatkowy plik.h gdzie tworze zmienna a0_raw która jest przekazywana do pliku cpp webservera ale jestem prawie pewien że da się to jakoś inaczej tam wstawić przy pomocy wskaźników których nie ogarniam (jeszcze) można poprosić o jakąś podpowiedź jak przekazać z głównego loopa zmienną do plików cpp webservera ?
You do not have the required permissions to view the files attached to this post.

Return to “Pomoc”