Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

ESP8266, Biblioteka secrets.h: Użycie, przechowywanie danych, połączenie z WiFi i ThingSpeak

TDA2593 30 May 2023 11:59 228 7
  • #1
    TDA2593
    Level 9  
    Witam.
    Niestety nie wiem, jak poradzić sobie z biblioteką "secrets.h"?

    Z tego co wiem "Secrets.h" nie jest standardową biblioteką w Arduino i chyba nie da się jej "normalnie" pobrać, zainstalować. Pozwala przechowywać poufne dane w specjalnym pliku.

    Jak sobie z nią poradzić? Jak to działa.
    Czy można ja odkomentować? Bo tak zrobiłem, ale nie mogę się połączyć z routerem.

    Poniżej kod i strona, z której korzystam.

    https://makerslab.dev/kurs-esp-przesylanie-danych-do-chmury

    Code: arduino
    Log in, to see the code


    Pozdrawiam.
  • #2
    JacekCz
    Level 40  
    Po pierwsze rzadko "xxxx.h" to biblioteka, choćby wszyscy święci arduinowcy tak mówili.

    Po drugie jak zadajesz pytanie i jesteś rzeczywiście zainteresowany progresem w wątku, to wklej zawartość, "coś się powie".
  • #5
    TDA2593
    Level 9  
    Witam.

    Faktycznie wystarczyło odkomentować "secrets.h" w 2 miejscach w kodzie.
    Zrobiłem to wczesniej (jak napisałem w poście), tylko połączyłem ESP z routerem w pasmie 5GHz (podobne nazwy sieci) i stąd wyniknął mój problem.

    Natomiast jak poprawnie użyć i wykorzystać tę bibliotekę chetnie się dowiem.

    Pozdrawiam.
  • #6
    gps79
    Level 33  
    Kolega @JacekCz w #2 prosił o zawartość pliku. Nie wiemy, co się w nim znajduje. secrets.h nie jest standardowym nagłówkiem. Moich przypuszczeń też nie potwierdziłeś. Nie bawmy się dalej w strzelanie na oślep.
  • #7
    jvoytech
    Level 19  
    JacekCz wrote:
    Po pierwsze rzadko "xxxx.h" to biblioteka, choćby wszyscy święci arduinowcy tak mówili.

    Biblioteka może być nagłówkowa i nie jest to takie rzadkie. Nic nie stoi na przeszkodzie żeby wszystko władować do pliku "xxxx.h" i zaincludować ten plik do własnego projektu. Trzeba tylko zastosować odpowiednie instrukcje makroprocesora, żeby nie było problemu z redefinicjami.

    TDA2593 wrote:
    Z tego co wiem "Secrets.h" nie jest standardową biblioteką w Arduino i chyba nie da się jej "normalnie" pobrać, zainstalować. Pozwala przechowywać poufne dane w specjalnym pliku.

    Jak sobie z nią poradzić? Jak to działa.
    Czy można ja odkomentować? Bo tak zrobiłem, ale nie mogę się połączyć z routerem.

    plik "secret.h" nie jest biblioteką tylko pełni funkcję konfiguracji projektu zrealizowaną w dość pokrętny i nieprawidłowy sposób. Ogólnie takie rzeczy nie umieszcza się repozytorium i ten plik powinien być generowany zazwyczaj z pliku "secret.h.in", w którym znajdują się placeholdery. Taki przykład przy użyciu cmake gdzie z pliku "config.h.in" o zawartości:
    Code: c
    Log in, to see the code

    generowany jest plik "config.h":
    Code: objc
    Log in, to see the code

    Dzieje się to przy pierwszym użyciu "cmake" i nazwa tego pliku konfiguracji "config.h", powinna znaleźć się w ".gitignore". Przy użyciu innych narzędzi (np. "./configure" z Autotools) również stosuje się ten wzorzec "xxx.h.in -> xxx.h". Konfiguracje można by wprowadzać z palca jako makro przy wywoływaniu gcc, wtedy nie trzeba dołączać "secret.h":
    Code: bash
    Log in, to see the code

    zapobiega to umieszczanie wrażliwych danych w kodzie, ale przy takim sposobie konfiguracji projektu warto zadbać o to, żeby kompilujący dostarczył wszystkie potrzebne makra, np. coś tym stylu:
    Code: c
    Log in, to see the code


    IDE Arduino jest ułomne i raczej nie ma opcji żeby wygenerować odpowiednią konfigurację dla projektu i poproszenie użytkownika o dane. Dlatego w "examples" dla danej biblioteki powinien być instruktarz jak taki plik tworzyć i informować go żeby nie palnął głupoty i umieścił go w repozytorium.
  • #8
    JacekCz
    Level 40  
    jvoytech wrote:
    JacekCz wrote:
    Po pierwsze rzadko "xxxx.h" to biblioteka, choćby wszyscy święci arduinowcy tak mówili.

    Biblioteka może być nagłówkowa i nie jest to takie rzadkie. Nic nie stoi na przeszkodzie żeby wszystko władować do pliku "xxxx.h" i zaincludować ten plik do własnego projektu. Trzeba tylko zastosować odpowiednie instrukcje makroprocesora, żeby nie było problemu z redefinicjami.


    I to jest max "zabezpieczeń" jakie można z siebie wydukać w Arduino.
    Tymczasem wiele bibliotek (bibliotusiów, jedno headerowych) opiera nazwę pliku / głównej klasy / zmiennej (o! zmienna w bibliotece, jedno z genialniejszych pomysłów) od głównego chipu ABC_1234, który stara się obsługiwać. 1/3 kłopotów tutaj, to adept łączący dwa "kody" (uwielbiam słowo "kody" w liczbie mnogiej) i wchodzący na konflikt.
    A takie piękne "zabezpieczenie" C++ jakim jest namespace jest wybitnym programistom arduino nieznane, diabeł vs święcona woda.

    Za tym idzie powszechne mówienie przez pacjentów o nazwie biblioteki, jako nazwie pliku headera, bez nazwiska autora, linka na githuba, nic, "żadnej dystynkcji w rozumowaniu" *).
    Zdecydowanie tak uważam, ludzie są tak słabi, jak słabe są treści jakimi się karmią. Jak się bezrefleksyjnie kopiuje przypadkowe wyniki searcha, to się nie wie skąd się kopiuje.

    *) https://www.elektroda.pl/rtvforum/viewtopic.php?p=16885936#16885936

    Dodano po 15 [minuty]:

    jvoytech wrote:
    IDE Arduino jest ułomne i raczej nie ma opcji żeby


    To zaledwie drobny dodatek do złych wzorców.
    Nie ma potrzeb w społeczności -> IDE nie dostaje ficzerów