Zainstalowałem Linuxa na tablecie, którego nikt nie chciał, i przerobiłem go na dedykowany terminal przepisów

Stworzyłem interaktywny terminal przepisów na starym tablecie Fire, wykorzystując Dockera i Pythona, aby ułatwić żonie wyszukiwanie przepisów bez zbędnych opowieści.
Szukanie przepisów w sieci bywa frustrujące. Nie potrzebuję słuchać czyichś osobistych opowieści przed otrzymaniem tego, czego szukam. Postanowiłem więc stworzyć terminal przepisów na zmodyfikowanym tablecie Fire, z wykorzystaniem Pythona i Dockera.
Projekt domowy: terminal przepisów z starego urządzenia
Żona, mistrzyni kuchni, potrzebuje wsparcia w wyszukiwaniu przepisów
Chciałem stworzyć interaktywny terminal przepisów, który pomoże jej w organizowaniu i wyszukiwaniu inspiracji. Ma tablet, którego już nie używa, a ja pomyślałem, że to będzie przydatny prezent dla niej.
W internecie jest mnóstwo przepisów, które uwielbia, a także kilka książek kucharskich. Myślałem, że coś bardziej angażującego byłoby lepszym rozwiązaniem. Istnieją różne drogi, by to osiągnąć:
- Zmodyfikować urządzenie; wolałbym wykorzystać stary Kindle HD7, ale jeśli to się nie uda, mam plan B.
- Użycie lokalnie hostowanego dużego modelu językowego, by stworzyć interaktywny terminal.
- Wykorzystanie Dockera oraz Pythona do realizacji terminalu.
Wybrałem ostatnią opcję.
Początkowo myślałem o Kindle Fire HD7. Niestety, nie udało mi się go uruchomić. Ostatecznie zainstalowałem Linuksa na innym, nowszym tablecie Fire z 2021 roku.
Efekt? O wiele lepsza współpraca.
Potrzebowałem Docker, Pythona i strony internetowej
W końcu nadszedł czas na składniki
Aby tablet Fire działał, zainstalowałem Linuksa (detale wkrótce). Potem zainstalowałem Textual Development Framework dla Pythona i Docker Desktop na komputerze z Windows. To miało sens, ponieważ żona będzie korzystać z terminalu.
Wybrałem podstawową konfigurację: stworzenie back-endu Dockera, interfejsu w Textual oraz podpięcie do API Mealie, by pobierać przepisy.
Mealie wydaje się idealne w mojej lokalnej sieci (ustawienia YML na GitHubie). Można importować przepisy przez URL lub dodawać własne. Dodałem kilka jej ulubionych przepisów i pobrałem kilka własnych z bazy Open Stove.
Wygenerowałem token API w Mealie do skryptu terminalowego, a potem ręcznie dodałem kilka przepisów do testów.
Pisząc skrypt, użyłem Pythona Requests do komunikacji z siecią oraz Textual do interfejsu. Zainstalowałem Textual na Linuxie w tablecie i stworzyłem prosty interfejs, zgodnie z ich samouczkiem. Nazwałem go STEVE, na cześć…
jej byłego szefa – mojego dobrego kumpla, który odpowiadał na niektóre moje pytania dotyczące Pythona; było ich sporo.
Przejrzenie przepisów
Testowanie funkcjonalności terminalu
Czas na konkretny test. Uruchomiłem wszystko na Linuksie, na Fire OS. Musiałem utworzyć wirtualne środowisko (venv), uruchamiając ./.venv/bin/python steve.py. Ustawienia Wi-Fi trzymam w trybie Prywatny, gdy łączę się z innymi urządzeniami.
Interfejs? Działa sprawnie. Wybierasz przepis w jednym oknie, a w drugim się wyświetla. Kiedy dodaję nowe przepisy (zazwyczaj kilka na raz) do Mealie, wszystko aktualizuje się po ponownym uruchomieniu STEVE. Myślę też o napisaniu skryptu, który wyciągnie przepisy i wkomponuje je w program.
Bawiłem się świetnie, tworząc interfejs w Textual. Cały projekt zajął może trzy godziny; najwięcej czasu pochłonęła zabawa i konfigurowanie przepisów w Mealie.
Dobry start w terminalu przepisów
Przyszłość tego projektu wymaga pracy, ale naprawdę warto. Nauczyłem się sporo w trakcie i mam więcej pomysłów na przyszłość. Poznałem Pythona i odkryłem narzędzia takie jak Textual. Moja żona korzysta z terminalu przepisów stworzonego z urządzenia, które miało trafić na szrot. Wszyscy wygrywają, a to tylko część radości pracy w domowym laboratorium. Możliwość gotowania potraw, które tworzymy, to dodatkowy bonus.
Jeśli ciekawią Cię artykuły podobne do Zainstalowałem Linuxa na tablecie, którego nikt nie chciał, i przerobiłem go na dedykowany terminal przepisów, zajrzyj do kategorii Linux i odkryj jeszcze więcej interesujących treści.
Dodaj komentarz

Możesz być zainteresowany