Wszystko o kompilacja | Webinsider - Internet widziany od środka ™

Tag: kompilacja

Błąd kompilacji „redefinition of uint32_t iteration” w ESPHome 2026.4, czyli zagnieżdżonym repeat i problematyczny delay

Po premierze ESPHome w wersji 2026.4 musiałem przerobić m.in. kod swojego „inteligentnego dzwonka” na ESP32, bo „coś tam się zmieniło” i skompilować już się nie dało. Od razu uznałem, że może to zainteresować jeszcze kogoś, a więc warto zrobić o tym wpis. Jak pomyślałem, tak… nie zrobiłem, i temat ostatecznie trafił do przepastnego katalogu z pomysłami na artykuły. Ale dziś odezwał się do mnie kolega, który na bazie mojego dzwonka robił swój, a właśnie dokonał aktualizacji ESPHome, czy może u siebie miałem problem z… Tak więc uznałem, że to dobra okazja, by temat wyciągnąć i wrzucić na tapet. Zwłaszcza że niebawem zapewne premiera ESPHome w wersji 2026.5 i kto wie, może będzie nieaktualny…

Zmiana „w locie” poziomu logowania w ESPHome za pomocą komponentu „select” (nie tylko z poziomu Home Assistant)

Niedawno byłem u znajomego i przy okazji temat zszedł na Home Assistant oraz ESPHome. Od słowa do słowa wyszło, że gdzieś tam z czymś jest problem. Poprosiłem, by odpalił logi w ESPHome, co wydawało się oczywiste w tej sytuacji. Kolega więc dokonał  szybkiej zmiany w pliku YAML (zmiana poziomu logowania z WARN na DEBUG) pierwszego urządzenia z ESPHome i przystąpił do kompilacji zmienionego kodu, by następnie wgrać je do urządzenia, za pomocą mechanizmu OTA. Niby nic nadzwyczajnego, pewnie wiele osób tak robi, ale w tym momencie musiałem zadać pytanie: czemu tak sobie utrudnia życie?! Zwłaszcza że chyba każdy użytkownik ESPHome wie, że prędzej czy później, na każdym urządzeniu będzie trzeba zajrzeć w logi. Nawet jeśli ktoś nie aktualizuje… ;-)

ESPHome i błąd „Could not find one of 'package.json’ manifest files in the package”, czyli najprościej usunąć katalog „.esphome”

Zadzwonił do mnie kolega z pytaniem, czy wiem może, o co chodzi, bo podczas próby aktualizacji oprogramowania dla ESP w ESPHome pojawia mu się błąd „Could not find one of 'package.json’ manifest files in the package”, a standardowa metoda „clean build files” nie pomaga. Na jego szczęście, mogłem mu pomóc, bo nie tak dawno temu sam miałem podobny problem. Co więcej, nawet „na wszelki wypadek”, zrobiłem sobie notatki, jakby się okazało, że będę chciał napisać o tym problemie artykuł.

Gdy ESPHome podczas kompilacji oprogramowania blokuje cały system (komputer), można ograniczyć maksymalną liczbę jednoczesnych procesów kompilacji

Obecnie rolę serwera – od strony sprzętu – dla m.in. Home Assistant i ESPHome pełni u mnie Raspberry Pi 3B+, czyli nie jest to może demon wydajności, ale na moje potrzeby obecnie wystarcza. Zresztą z takiej samej Maliny korzysta kolega, który przyczynił się do pomysłu na ten artykuł. Z tą różnicą, że ja Home Assistant i ESPHome mam w ramach Dockera (Home Assistant Container), a kolega w ramach dedykowanego systemu, czyli Home Assistant Operating System (HAOS). A poszło o to, o co przy takim demonie wydajności mogło pójść, czyli o wydajność. A konkretnie obciążenie Raspberry Pi przy kompilowaniu oprogramowania dla płytek (np. ESP8266, ESP32) z poziomu ESPHome.

Sterownik do piwnej lodówki, czyli grzanie i chłodzenie (brzeczki, piwa), na bazie ESPHome i Home Assistant, z integracją z Brewfather

Z racji tego, że po kilku latach przerwy wróciłem do warzenia piwa, to używany przez ten czas moduł działający na ESP8266 i oprogramowaniu BrewPiLess, pilnujący, by „piwna lodówka” (leżaki) miała odpowiednią temperaturę, przeszedł solidną rewitalizację. I choć spisuje się więcej niż dobrze, to testowo kontrolę nad piwną lodówką, jak i fermentacją piwa, postanowiłem tym razem powierzyć układowi opartemu na innym oprogramowaniu.

Błąd aktualizacji OTA w ESPHome dla ESP8266 ESP-01(S) i ogólne problemy z ESP32 S2 mini, czyli esptool przychodzi z pomocą

Z różnych układów ESP8266 korzystam od dawna. Od niedawna zacząłem wykorzystywać też nowsze układy ESP32. Dodatkowo od jakiegoś czasu korzystam z Home Assistant, gdzie przenoszę zarządzanie większością elementów tzw. „inteligentnego domu” (sic! ;-)), a więc i wcześniej działające najczęściej na autorskim kodzie układy ESP migruję do ESPHome (poza BrewPiLess i iSpindel, ale to inna bajka). I choć w większości przypadków ta migracja jest nie tylko bezproblemowa, to jeszcze jestem pozytywnie zaskoczony wygoda pracy z ESPHome, nie tylko w połączeniu z Home Assistant (tylko ten nieszczęsny YAML i zabawa ze spacjami… ;-)). Nie oznacza to jednak, że nie pojawiają się problemy wyzwania…

Modyfikacja i wgrywanie własnych ekranów startowych (Watch Faces) do opaski sportowej Xiaomi Mi Band 4 (kolorowy ekran)

Kilka dni temu przyszła do mnie opaska Xiaomi Mi Band 4 (2019.09.01 12:12 Singapore SAL -> 2019.09.03 już u mnie!) i powoli szykuje się do jakiegoś artykułu na jej temat (+ na temat Mi Band 3, bo jakoś tak się złożyło, że temat uciekł). Ale zanim do niego usiądę, to… Nie, nie będzie ani „unboxingu”, ani „pierwszych wrażeń”, bo tematów mam aż nadto, bez takich zabiegów. Od razu mięso, czyli modyfikacja (spolszczenie) alternatywnych (własnych) tarczy wyświetlacza…

Automatyczna wersja aplikacji na podstawie czasu kompilacji (data i godzina) w C/C++ na przykładzie Arduino IDE i ESP8266

Jestem właśnie w trakcie przygotowania pewnego rozwiązania programowo-sprzętowego, z którego oprócz mnie będą korzystały – jeśli wszystko pójdzie dobrze – również osoby „z zewnątrz”. Obok odpowiedniego sprzętu, istotnym elementem jest oprogramowanie, które całością zarządza. Z racji tego, że użytkownik będzie mógł samodzielnie zaktualizować oprogramowanie urządzenia, pojawiła się potrzeba wyraźnego i jednoznacznego określenia wersji, tak by w razie wystąpienia jakichś problemów (lub pytań ;-)) od razu było wiadomo z którą wersją mamy(y) do czynienia.
Oczywiście można to zrobić ręcznie, zmieniając przed każdą kompilacją numerek na wyższy, ale… Jeśli można coś relatywnie małym nakładem sił zautomatyzować, i nie ma to wpływu na parametry produktu/usługi, to zazwyczaj nie ma co się nawet zastanawiać…

Raspberry Pi i kamerka USB, czyli prosty sposób na monitoring i zdjęcia poklatkowe (timelapse)

Przeglądając pudełko z „archiwalnymi sprzętami” trafiłem na 2 „dość archaiczne” (rozdzielczość 640×480) kamerki internetowe (USB), i tak sobie pomyślałem, że jak mają leżeć tak bezproduktywnie, to lepiej je do jakiejś pracy zaprząc, zwłaszcza że w duecie z Raspberry Pi można z tego zrobić prosty system monitorujący (choć patrząc na jakoś tych kamerek to raczej sztuka dla sztuki, niż realna potrzeba, ale może Wy w swoim pudełku znajdziecie macie lepsze ;-)).

Loading

Pin It on Pinterest