[-]
Szybkie szukanie


Baner sklepu jdtech.pl
Odpowiedz 
 
Ocena wątku:
  • 0 Głosów - 0 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
ESPHome rozszerzenie Home Assistanta o DIY oparte na ESP
16-11-2019, 05:10 (Ten post był ostatnio modyfikowany: 14-02-2020 14:57 przez szopen.)
Post: #2
Home Assistant (Hass.io) - ogromne możliwości integracji ID
W międzyczasie dotarł do mnie dość miniaturowy wyświetlacz e-ink (znów e-papier Tongue) Waveshare E-Paper 1,54' w wersji czarno-białej (póki co tylko do takiej jest wsparcie w ESPHome, Arduino ma już wsparcie także dla wersji biało-żółto-czarnej i biało-czerwono-czarnej, więc i tu się pewnie z czasem pojawi) z interfejsem 4-Wire SPI, jest to kwadratowy wyświetlacz o rozdzielczości 200x200pix wielkościowo mniej więcej połowa wyświetlacza opisanego w linku:
https://esphome.io/components/display/wa...paper.html
po 2 dniach "walki" uzyskałem końcową konfigurację, która póki co mnie zadowala
(1 dzień to były testy jak się zachowuje sam wyświetlacz i co umożliwia środowisko ESPHome i zabawa w kotka i myszkę co zrobić, aby sobie nie uwalić działającego kodu Tongue, drugi dzień przygotowanie layoutu już "na czysto" i nawet wstępnie mnie on zadowala, choć pozostawiłem sobie dwie naprzemiennie wyświetlane strony, więc jeszcze coś tam można upchnąć gdyby była potrzeba; sam układ elektryczny można jeszcze zoptymalizować, teraz użyłem wszystkich przewodów wyświetlacza, a w finalnym układzie będzie uproszczenie, bo coś czuję, że mi linii GPIO braknie - właściwie to już brakło Big Grin choć nie musiało)

Polecam na początek przeanalizować taki nieskomplikowany przykład użycia wyświetlacza OLED (bazującego na SSD1306 lub SH1106 - takie wyświetlacze swoją drogą są dość taniutkie) a zwracam na to uwagę, bo projekt ESPHome jest dość ciekawy dla początkujących użytkowników HA i umożliwia wymianę danych w obie strony bez uruchamiania dodatkowego brokera MQTT, a w tym przykładzie jest to ładnie opisane:
https://esphome.io/cookbook/display_time_temp_oled.html

Generalnie do pracy z wyświetlaczami trzeba poczytać przed próbami użycia, bo silnik renderujący żywcem opiera się na funkcjach z języka C++ i składnia jest dość radykalnie inna od pozostałych komponentów ESPHome czy HA, gdzie przeważa YAML (ale i tak trzeba pilnować wcięć, bo nawet jedna zbędna spacja nawet przed komentarzem może rozwalić kod na tyle, że kompilacja nie będzie możliwa)
https://esphome.io/components/display/index.html

Parę uwag:
- wpadłem na genialny pomysł aby podpiąć linię Reset wyświetlacza do GPIO0 ESP8266, bo nie chciało mi się szukać rezystora do pullup'u (to finalnie będzie jedno z uproszczeń), a tymczasem zapomniałem, że GPIO0 jest zarezerwowanym pinem, gdy się korzysta z bajeru z pomiarem napięcia na procku, a tymczasem to dopiero co opisałem w poprzednim poście Big Grin… i pół dnia poszłooo, już myślałem że doszedł uszkodzony wyświetlacz (akurat folia ochronna jest na nim uszkodzona jak po uderzeniu, a opakowanie było wręcz śmieszne… uszkodzenie widać na zdjęciu w dolnej linijce między 1 a 3, bo tej folii póki co nie usuwam - poczeka do ostatecznego montażu w obudowie)
- współrzędne pikseli są numerowane (przynajmniej w przypadku mojego wyświetlacza, ale reguła wygląda na bardziej ogólną) od 0 do 199, a nie od 1 do 200 (dla rozdzielczości 200pix)
- na polskie literki prawdopodobnie nie ma co liczyć (nakombinowałem się ze znalezieniem jakiejś fajnej czcionki z PL znakami, ale odpuściłem znalezienie rozwiązania, bo wiele znaków się i tak nie renderuje jak należy, dlatego użyłem "PM1" zamiast zapisanych symbolicznie "mikrogramów na metr sześcienny"), fonty to zwyczajne *.ttf trzeba je wrzucić do katalogu ESPHome (lub lepiej do podkatalogu by nie utknąć w bałaganie i podawać do ścieżkę względną z nazwą katalogu)
- jeśli chodzi o renderowanie grafiki, to przećwiczyłem *.png z alfakanałem - chciałem mieć ikonki MDI, czyli zgodne wyglądem z HA, pobierając je z https://materialdesignicons.com/ właśnie takie dostaniemy - nie działają, alfakanał jest ignorowany (może można to zrobić prościej, ale nie wiem jak, może nie dokopałem się w dokumentacji?) obszedłem to obrabiając grafikę by się pozbyć alfakanału, przy okazji zredukowałem ilość kolorów do 2 (nie jestem przekonany, czy był to dobry pomysł, ale chciałem zoptymalizować ich rozmiar, a zależy mi tez na czytelności, nie wiem czy się wyświetlą szarości)
- w ramach testów wyszło na to, że obsługiwane są pliki *.bmp, *.gif i *.png (więcej formatów nie próbowałem) byleby bez alfakanału, teoretycznie renderer obsługuje skalowanie, ale skoro już obrabiałem grafikę, to przygotowałem sobie ikony w finalnym rozmiarze 48x48pix (co daje możliwość wyświetlenia 4 linii z wiodąca ikoną), ale oczywiście nie ma musu - testowałem też mniejsze wymiary, ale te były idealne na moje potrzeby (mniejsze niż 24x24pix raczej nie mają sensu); uwaga odnośnie katalogów identyczna jak dla czcionek

A tak wygląda już po konfiguracji (na zdjęciu pierwszy layout - czyli 1 strona, na drugiej mam zegar z datą, czyli nic ciekawego), 3 pierwsze wskazania to lokalne czujniki (opisałem je wcześniej), a czwarte to poziom pyłu PM1 odczytywany z najbliższej miejscu ostatecznej instalacji stacji badania jakości powietrza Airly ("państwowej" tj. sponsorowanej przez gminę).
   

No OK wyświetlanie czasu jednak też jest ciekawe
https://esphome.io/components/time.html#strftime
ja sobie podbieram czas z HA
https://esphome.io/components/time.html#...ime-source
ale można też choćby z… modułu GPS, albo z internetu przez powszechnie stosowany SNTP



Tak przy okazji - pod poniższym linkiem jest sporo przykładów gotowych projektów, na których można się oprzeć budując prosty samodzielny projekt (można oprzeć się na samym ESPHome bez Home Asistant'a, bo ESPHome może też pracować stand alone, ale dużo ciekawiej jednak mieć to spięte z HA)
https://esphome.io/cookbook/
i podgląd z ikonkami:
https://esphome.io/index.html#cookbook

Przy czym dość ciekawym projektem z tam przedstawionych może być też port expander
https://esphome.io/cookbook/arduino_port_extender.html
(choć wymaga użycia standardowego IDE dla Arduino, by zaprogramować płytkę, bo spod ESPHome się nie da tego zrobić co jest chyba zrozumiałe)
Oczywiście to dodatkowa komplikacja w konfiguracji, ale może być warta zachodu jeśli pragniemy użyć większej ilości sprzętu podpiętego do pojedynczego modułu ESP.
A wspomniałem o nim, bo po podłączeniu do ESP8266 2 czujników (DHT używa 1 GPIO, a ultradźwięki 2GPIO) i wyświetlacza (6 GPIO ale da się zredukować do 4) osiągnąłem już niemal kraniec możliwości ESP8266 (który ma w tym wykonaniu jakiego używam ma dostępne 9 GPIO (z czego 1 ma opcję wejścia analogowego, a 3 to są naprawdę GPO Tongue bo mogą być tylko wyjściami - akurat OK dla wyświetlacza, więc właściwie mamy tylko 5 wejść cyfrowych lub 6 jeśli nie użyjemy analog-in).

Edit: okazuje się, że tańszym i wygodniejszym rozwiązaniem może być… użycie po prostu ESP32, albo gotowych ekstenderów SX1509, PCF8574 lub PCF8575, choć nie wiem czy w takim wypadku realnie będzie taniej (jakkolwiek jeszcze krzyżyka nie stawiam na pomyśle użycia ekstendera, bo jakieś płytki na układach Atmela mi zalegają szufladę po upadłym projekcie, niestety to wersje 5V, ale podobno niektóre działają poza specyfikacja i na 3,3V)

Statystyki Folding@home
[Obrazek: sigimage.php?un=szopen&t=247478]
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika
Podziękuj Odpowiedz cytując ten post
Odpowiedz 


Wiadomości w tym wątku
Home Assistant (Hass.io) - ogromne możliwości integracji ID - szopen - 16-11-2019 05:10
ESPHome [split] - szopen - 01-12-2019, 17:48
ESPHome [split] - szopen - 24-04-2021, 23:43

Podobne wątki
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Home Assistant (Hass.io) - ogromne możliwości integracji ID szopen 109 57 816 14-10-2024 14:24
Ostatni post: szopen
  HACS (Home Assistant Community Store) - alternatywny "sklep" z rozszerzeniami dla HA szopen 29 15 167 03-02-2023 13:23
Ostatni post: szopen
  ESPHome i tworzenie interfejsu uzytkownika na wyświetlaczu arekark 3 2 561 17-03-2021 16:02
Ostatni post: szopen
  Wybór sprzętu na "bazę" pod Home Assistant Ekonomista 46 17 427 08-08-2020 06:12
Ostatni post: Ekonomista



MyBB SQL Error

MyBB has experienced an internal SQL error and cannot continue.

SQL Error:
1017 - Can't find file: './c1jdtech_forum/threadviews.MYI' (errno: 2 "No such file or directory")
Query:
INSERT INTO threadviews (tid) VALUES('5644')