OK wracam do tematu, skoro obiecałem.
Ograniczę się tylko do takiego wyrywka, ale sekrety można stosować w wielu innych miejscach, gdzie są jakiekolwiek tokeny czy hasła które niekoniecznie chcemy gdziekolwiek udostępniać publicznie
# Your Wi-Fi SSID and password
# wifi_ssid: "HOME_EXT"
# wifi_password: "156990....."
wifi:
networks:
- ssid: !secret HOME_EXT
password: !secret 156990......
Co mi w konfiguracji wyżej nie pasuje? - no wygląda jakby ktoś obcy Ci to zrobił, ale nie wykorzystałeś tego jak należy (bo w komentarzach są jakieś wartości które później pojawiają się jako nazwa sekretu… no to dość dziwne).
Załóżmy, że prawdziwe wyglądają tak: SSID tej sieci WiFi to HOME_EXT
a hasło do niej to 156990supertajnehasloktoregoniechceujawniac
Więc sekcję WiFi można skonfigurować na parę różnych sposobów
Przy publikacji ujawniamy wszelkie dane (oczywiście publikując można zamalować, czy “zaiksować”, ale po takim ukryciu źle się z tego korzysta, źle wygląda, kod nie jest przenośny dla innych użytkowników itd.)
wifi:
networks:
- ssid: HOME_EXT
password: 156990supertajnehasloktoregoniechceujawniac
Jak wyżej tylko cudzysłowy (lub apostrofy zwyczajne) dają pewność, że ciąg jest typu string
te akurat są, ale załóżmy, że ktoś sobie wymyśli hasło 0xdeadbeef
a to po prostu liczba szesnastkowa… wtedy może zostać nieprawidłowo zinterpretowana (nie jak string tylko jako hex i nici z logowania do sieci… najnowsze wersje ESPHome wprawdzie zwykle radzą sobie nawet w takich wypadkach (w zamian za to kod jest interpretera YAML bardziej skomplikowany…) ale jednak lepiej dmuchać na zimne, niech string pozostanie na zawsze stringiem
wifi:
networks:
- ssid: "HOME_EXT"
password: "156990supertajnehasloktoregoniechceujawniac"
- A teraz zróbmy to tak by nie trzeba było niczego zamalowywać, zakropkowywać itd. = wymyślamy samodzielnie jakieś nazwy sekretów, które potencjalnemu czytelnikowi powiedzą co tam jest ukryte (a mimo tego nie ujawniają żadnych potencjalnie wrażliwych danych)
Najpierw to co jest wtedy w pliku secrets.yaml
(tym należącym do ESPHome, bo takich plików w HA bywa więcej!) jak sama nazwa wskazuje tej zawartości nie ujawniamy.
moje_ukryte_ssid: "HOME_EXT"
moje_ukryte_haslo_wifi: "156990supertajnehasloktoregoniechceujawniac"
i nasz YAML urządzenia używający tych sekretów - można go publikować śmiało w całym internecie
wifi:
networks:
- ssid: !secret moje_ukryte_ssid
password: !secret moje_ukryte_haslo_wifi
- zasadniczo zawsze i wszędzie można używać rozwiązania z punktu 3. ALE…
ESPHome compiler (builder/IDE, czy jakkolwiek sobie go nie nazwiemy) wyposażono w kreator nowych urządzeń… i on korzysta z pewnych predefiniowanych nazw sekretów (więc nie warto z tym walczyć lepiej je po prostu wykorzystać) akurat właściwie predefiniowane są tylko 2 nazwy dotyczące ssid i klucza zazwyczaj jedynej sieci WiFi (w konfiguracji wszystkich urządzeń jednego zwykłego użytkownika)
typowa zawartość secrets.yaml
po jednorazowym użyciu kreatora urządzenia (o ile wtedy wprowadzimy te hasła co poprzednio)
# Your Wi-Fi SSID and password
wifi_ssid: "HOME_EXT"
wifi_password: "156990supertajnehasloktoregoniechceujawniac"
wtedy oczywiście YAML urządzenia ma wyglądać tak
wifi:
networks:
- ssid: !secret wifi_ssid
password: !secret wifi_password
- a teraz już idziemy po całości do
secrets.yaml
można sobie dopisać wszystko co się może przydać w każdym tyowym urządzeniu
# aby nie walczyć niepotrezbnie z kreatorem te 2 linijki niech sobie zostaną
wifi_ssid: "HOME_EXT"
wifi_password: "156990supertajnehasloktoregoniechceujawniac"
# można zduplikować te same tajne sekrety od innymi nazwami, to nie rzeszkadza
moje_ukryte_ssid: "HOME_EXT"
moje_ukryte_haslo_wifi: "156990supertajnehasloktoregoniechceujawniac"
# można dodać wiele więcej
wifi_ssid_secondary: "HOME_INT"
wifi_password_secondary: "supertajnehaslo156990ktoregoniechceujawniac"
# i zdublować pod krótszym aliasem
wifi_ssid_2: "HOME_INT"
wifi_password_2: "supertajnehaslo156990ktoregoniechceujawniac"
wifi_ssid_tertiarary: "HOME_MID"
wifi_password_tertiarary: "supertajnehaslo156990ktorego156990nie156990chceujawniac"
wifi_ssid_3: "HOME_MID"
wifi_password_3: "supertajnehaslo156990ktorego156990nie156990chceujawniac"
# chyba łątwo zgadnąć do czego będą służyły sekrety o takich nazwach
wifi_rcvr: "zgadnijmnie"
api_key: "KDA+68+xhvgirM17wuoL8KtIU7zR44GEnXzmdahiB3I="
ota_pass: "3ffe73763da8903e2b4fed36cd062cc7"
# dla przykładu apostrofy zwyczajne niżej
web_username: 'esphome'
web_password: 'esphome'
i na koniec taka
UWAGA
nigdy nie należy kopiować cudzych haseł gdzieś wygrzebanych w sieci razem z cudzą konfiguracją, którą zastosujemy u siebie, jeśli nie mamy pomysłu istnieją nawet generatory haseł czy tokenów, oczywiście czasem konfiguracja wymaga haseł gdzie nie są realnie potrzebne silne hasła, ale to już zupełnie inna kwestia jak sobie zapewniacie bezpieczeństwo…