logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Jak skonfigurować WiFi w przełącznikach Zamel przez ESP8266?

madiz08 08 Gru 2019 16:22 2511 18
  • #1 18327234
    madiz08
    Poziom 14  
    Posty: 517
    Pomógł: 4
    Ocena: 172
    Zamówiłem ostatnio dwa moduły przełączników elektrycznych firmy Zamel do starowania oświetleniem i roletą przez WiFi z telefonu:
    Jak skonfigurować WiFi w przełącznikach Zamel przez ESP8266?
    Przy okazji dowiedziałem się, że ta puszka jest sterowana przez ESP8266. Zastanawiałem się jak to może być sterowane przez moje Wifi jeżeli urządzenie nie zna mojego hasła do WiFi, a podobno wszystko jest konfigurowane bezprzewodowo.
    Okazuje się, że zrobili to w bardzo ciekawy sposób:
    1. Po wciśnięciu jedynego przycisku na minimum 5 sekund, urządzenie wchodzi w tryb konfiguracji
    2. Po wejściu w ten tryb w dostępnych sieciach WiFi pojawia mi się otwarte połączenie mające swoją nazwę (np. ZAMEL_ROW-02)
    3. Po połączeniu i wpisaniu w przeglądarce 192.168.4.1 wyskakuje mi okno z możliwością wpisania mojej sieci WiFi i hasła (oraz kilku innych rzeczy)
    4. Po zapisaniu tych zmian i restarcie urządzenia, łączy się ono już z moją siecią WiFi i mogę nim sterowac z telefonu.

    Temat zaciekawił mnie, bo często jak robię jakieś układziki na swoim ESP32, to zachodzi potrzeba korekty jakichś parametrów i ich zapamiętania. Aby za każdym razem tego nie robić wgrywając program z Arduino IDE, piszę czasami aplikacje na Visual Studio, komunikujące się przez UART z ESP32. Jednak za każdym razem muszę podejść z komputerem i łączyć się przewodowo.

    Czy moglibyście naprowadzić mnie na jakieś strony z taka tematyką, gdzie można o czymś takim się dowiedzieć. Chodzi mi o postawienie sieci WiFi na ESP32, w jaki sposób jest to możliwe?
  • Pomocny post
    #2 18327272
    maly_13
    Poziom 20  
    Posty: 495
    Pomógł: 21
    Ocena: 70
    supla poszukaj jest forum ostatnio dość intensywnie rozwijane
  • Pomocny post
    #3 18327293
    Konto nie istnieje
    Poziom 1  
  • #4 18327444
    madiz08
    Poziom 14  
    Posty: 517
    Pomógł: 4
    Ocena: 172
    No faktycznie :) Nawet tak samo trzeba wpisać 192.168.4.1. Świetna sprawa, na razie mam przykład z sterowaniem LED (klasyczne ON/OFF), muszę trochę odświeżyć sobie HTML. Widziałem też że są przykłady z gotowymi skryptami ustawiającymi hasło i login do WiFi.
  • Pomocny post
    #5 18327646
    Konto nie istnieje
    Poziom 1  
  • Pomocny post
    #6 18330558
    pabl0
    Poziom 10  
    Posty: 44
    Pomógł: 1
    Ocena: 1
    madiz08 napisał:

    Czy moglibyście naprowadzić mnie na jakieś strony z taka tematyką, gdzie można o czymś takim się dowiedzieć. Chodzi mi o postawienie sieci WiFi na ESP32, w jaki sposób jest to możliwe?


    Dokładnie w ten sam sposób zachowuje się ESP Easy.
  • #7 18346880
    madiz08
    Poziom 14  
    Posty: 517
    Pomógł: 4
    Ocena: 172
    Jeszcze tylko potrzebowałbym jeżeli ktoś wie, jak mogę to co wpisze w Textbox-ie wrzucić do zmiennej typu string na arduino. Mam taki kod:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod

    i tak wygląda strona 192.168.4.1
    Jak skonfigurować WiFi w przełącznikach Zamel przez ESP8266?
    Jeżeli dobrze rozumiem to nazwą tego textboxa jest textbox5:

    Jak skonfigurować WiFi w przełącznikach Zamel przez ESP8266?
    Jak skonfigurować WiFi w przełącznikach Zamel przez ESP8266?
    i jak teraz zamiast tego co zaznaczyłem na czerwono mogę wysłać tekst z textboxa?
    Chciałbym użyć kilka textboxów i wysyłać teksty z nich wszystkich, coś na zasadzie:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
    , gdzie później już w arduino porozdzielałbym sobie ten tekst na poszczególne stringi.

    Dodano po 26 [minuty]:

    Jak próbuje korzystac z jakichś java script-ów to oczywiście błędy kompilacji

    Dodano po 5 [godziny] 41 [minuty]:

    Panowie, a może udało by sie mi pomóc na podstawie poniższego kodu:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    na podstawie strony :
    https://randomnerdtutorials.com/esp32-esp8266-input-data-html-form/
    Powyższy kod pozwala na wyswietlenie na serial monitorze jednego z trzech textboxów, ale jak chciałbym aby jeden przycisk wyswietlał dane z trzech pól to każda moja modyfikacja jest albo błedem, albo nic nie daje
  • Pomocny post
    #8 18348166
    ex-or
    Poziom 28  
    Posty: 784
    Pomógł: 147
    Ocena: 151
    Musisz umieścić wszystkie tagi input (trzy typu text i jeden submit) w jednym formularzu. Zobacz sobie przykład: https://www.w3schools.com/tags/tryit.asp?filename=tryhtml_form_submit
    Oczywiście trzeba także zmodyfikować ify dekodujące odpowiedź bo w tej chwili program spodziewa się tylko jednego parametru w odpowiedzi a otrzyma trzy.
  • #9 18348796
    madiz08
    Poziom 14  
    Posty: 517
    Pomógł: 4
    Ocena: 172
    Faktycznie działa, dzięki :)
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #10 18351349
    madiz08
    Poziom 14  
    Posty: 517
    Pomógł: 4
    Ocena: 172
    Na poniższym przykładzie udało mi się już stworzyć przejście w tryb konfiguracyjny, na zasadzie access pointu, gdzie mogę wprowadzić nazwę, hasło wifi oraz inne parametry. Jeżeli je wprowadzę, ESP32 resetuje się i wchodzi w tryb pracy, gdzie łączy się już z moja siecią wifi i dodatkowo sterownikiem PLC:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Kolejnym krokiem jaki chciałbym zrobić jest możliwość wysyłania poleceń z przeglądarki lub aplikacji, gdzie dla przykładu wysłanie 192.168.0.85/H spowoduje zapalenie na razie diody. Wcześniej jak robiłem takie rzeczy korzystałem z :
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Jednak przy dodaniu czegoś takiego do mojego obecnego kodu powoduje błędy kompilacji informujęce, że :

    Jak skonfigurować WiFi w przełącznikach Zamel przez ESP8266?

    Jak dla biblioteki AsyncWebServer mogę napisać odczytywanie tego co nadeszło od klienta, a następnie względem tego wykonywac dane działania?
  • #11 18352260
    madiz08
    Poziom 14  
    Posty: 517
    Pomógł: 4
    Ocena: 172
    Może inaczej powinienem zadać pytanie:
    Problem polega na tym, że chciałbym korzystać w dwóch różnych bibliotek w różnych przypadkach, a wszystkie deklaruję na początku.
    1. Jak po włączeniu ESP32 jestem w trybie konfiguracji i chciałym wprowadzic parametry ze strony postawionej na sieci wifi mojego ESP32 to korzystam z ESPAsyncWebServer.h
    2. Jak po włączeniu ESP32 jest w normalnym trybie pracy, czyli połączył się z moim wifi na podstawie wcześniej podanych parametrów w trybie konfiguracyjnym, to teraz chciałbym aby biblioteka ESPAsyncWebServer.h nie była już brana pod uwagę i nie wpływała na błędy kompilacji WiFiClient client = server.available();. W tym momencie chciałbym korzystać ze standardowej biblioteki wifi.h tylko

    Zależność czy wchodze w tryb konfiguracji wynika z odczytu EERROMread(0). Jeżeli wartość tego bajtu jest <10 to jestem w zwykłym trybie pracy, a w przeciwnym wypadku w trybie konfiguracyjnym

    Czy jest możliwość korzystania z jednej lub drugiej biblioteki w zależności od warunku, lub tez czy można je jakoś zmienic dla takiej potrzeby?
  • Pomocny post
    #12 18352874
    Konto nie istnieje
    Poziom 1  
  • #13 18353477
    madiz08
    Poziom 14  
    Posty: 517
    Pomógł: 4
    Ocena: 172
    Czyli masz na myśli, że całą ta bibliotekę powinienem wkleić do osobnej funkcji? Nie do końca chyba rozumiem, czy to ma byc na wzór:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod
  • #14 18353495
    Konto nie istnieje
    Poziom 1  
  • #15 18353656
    madiz08
    Poziom 14  
    Posty: 517
    Pomógł: 4
    Ocena: 172
    Ok, dziękuję. Dzisiaj już nie będę mógł do tego przysiąść. Jutro rano postaram się solidnie do tego zabrać.
  • #16 18354128
    madiz08
    Poziom 14  
    Posty: 517
    Pomógł: 4
    Ocena: 172
    Na początku uszczupliłem kod do wejścia jedynie w tryb konfiguracyjny:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    i w takiej postaci próbowałem to wszystko tak zmodyfikować aby całość była w funkcji konfiguracji.
    W pierwszej kolejności próbowałem przenieść tam stronę HTML, bez sukcesu, ale po zakomentowaniu bibliotek i tego co w funkcji konfiguracji kompilator nie wywalił mi błędów dla konstrukcji HTML, także chyba to mogłoby tak zostać?

    Jak wydać funkcja_trybu_konfiguracyjnego() wykonuje się tylko raz, dlatego pętla do-while jest pusta

    w końcu zabrałem sie za przeniesienie bibliotek. Na początku spróbowałem po prostu w ten sposób:
    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    Jak skonfigurować WiFi w przełącznikach Zamel przez ESP8266?


    Jak zamiast danej biblioteki wkleiłem jej cała zawartość to co chwilę błedy kompilacyjne na brak różnych innych bibliotek

    Mógłbyś mnie naprowadzić jak zadeklarować zmienną lokalną 'server', może w tym tkwi problem
  • #17 18354255
    Konto nie istnieje
    Poziom 1  
  • #18 18354538
    madiz08
    Poziom 14  
    Posty: 517
    Pomógł: 4
    Ocena: 172
    Działa!!!!!!!!!!!!!!!!!! :)
    Odnośnie tego zapętlenia, to dobrze sobie zdaje sprawę z bezsęsowności, tylko testowo tak zrobiłem, żeby ie wychodzić z tego trybu.
    Czyli #include zawsze na początku kodu, a AsyncWebServer server(80); dałem w funkcji konfiguracji.
    Na razie działa to tak jak moduł firmy ZAMEL:
    1. Jak nie jestem w trybie konfiguracji (a potrzebuję ustawic parametry), to wciskam przycisk na 2 sekundy, po czym do EEPROM(0) zapisywana jest wartość >10 i nastepuje reset ESP
    2. Jak po starcie EEPROM(0) >10, to ESP wchodzi w funkcję konfiguracji, gdzie ładowany jest AsyncWebServer server(80); i mieli nieustannie w do-while
    3. Jak za pomocą przeglądarki wprowadze odpowiednie parametry i klikne zapisz, wszystkie te parametry są zapisywane do EEPROM, w tym EEPROM(0)<10
    4. Po resecie ESP32 sprawdza że EEPROM(0)<10 i wchodzi do funkcji normalnego_trybu pracy, ładując WiFiServer server(80); ze standardowej biblioteki WiFi, łącząc sie z moja siecią lokalną. Moge teraz łączyc się z PLC i oczekiwać na informacje z przeglądarki (chociaz jeszcze tego nie sprawdzałem). Wszystko wykonuje sie w do-while, czyli główna petla loop jest niewykorzystywana.
    W tej petli jest tez sprawdzanie stanu przycisku, który jak przytrzymam na 2s to ESP sie zresetuje i przejdzie w tryb konfiguracji.

    Dzięki za pomoc

    Dodano po 8 [minuty]:

    Własnie zapaliłem i zgasiłem LED-a z przegladarki. Super sprawa wiedzieć, że można korzystac z danej biblioteki w zależności od potrzeby :)

Podsumowanie tematu

✨ Użytkownicy dyskutują na temat konfiguracji przełączników WiFi firmy Zamel, które wykorzystują moduł ESP8266. Proces konfiguracji polega na włączeniu trybu konfiguracji przez przytrzymanie przycisku przez 5 sekund, co umożliwia połączenie z otwartą siecią WiFi urządzenia. Następnie, po połączeniu z adresem 192.168.4.1, można wprowadzić dane swojej sieci WiFi. W dyskusji poruszono również kwestie związane z używaniem bibliotek do programowania, takich jak IotWebConf i ESPAsyncWebServer, oraz zarządzaniem danymi w EEPROM. Użytkownicy dzielą się przykładami kodu oraz wskazówkami dotyczącymi implementacji i rozwiązywania problemów.
Wygenerowane przez model językowy.
REKLAMA