Ekran dotykowy w HAOS - Add-On HAOS-kiosk

Wiele osób ma nieodpartą chęć podłączenia pod swój komputer z HAOS ekranu dotykowego. Inni zaczynają swoje pierwsze kroki z HAOS na leżakowych laptopach i intuicyjnie chcą wykorzystywać ich matryce do wyświetlania swojego dashboard z HA. Słyszę w wyobraźni jęk zawodu i wspominam swoje rozczarowanie. Gdy dowiadujemy się, że to nie takie proste na serwerze zaplanowanym do bycia “bezgłowym”, a po podłączeniu monitora widzimy dobrze nam znany czarny ekran konsoli CLI.


Lecz niedawno odkryłem, że pojawiło się w tym roku (jakże eleganckie) rozwiązanie w postaci dodatku HAOS-kiosk

Prosta konfiguracja z UI i mamy obsługę pulpitów nawigacyjnych i sterowanie HA za pomocą wyświetlacza podłączonego bezpośrednio do serwera HAOS.

Od teraz jest też API umożliwiające budowanie automatyzacji wykorzystujące akcje.

Przykłady:

actions:
  - action: rest_command.haoskiosk_launch_url
    data:
      url: "https://homeassistant.local/my_dashboard"

  - action: rest_command.haoskiosk_refresh_browser

  - action: rest_command.haoskiosk_is_display_on

  - action: rest_command.haoskiosk_display_on
  - action: rest_command.haoskiosk_display_on
    data:
      timeout: 300

  - action: rest_command.haoskiosk_display_off

  - action: rest_command.haoskiosk_current_processes

  - action: rest_command.haoskiosk_xset
    data:
      args: "<arg-string>"

  - action: rest_command.haoskiosk_run_command
    data:
      cmd: "command"
      cmd_timeout: <seconds>

  - action: rest_command.haoskiosk_run_commands
    data:
      cmds:
        - "<command1>"
        - "<command2>"
        ...
      cmd_timeout: <seconds>

Zasoby dla tego kontenera z X-Windows, menedżerem okien OpenBox i przeglądarką Luakit.- utylizacja CPU dochodzi do 30%, w większości czasu waha się w okolicach 20%. Zajętość RAM znikoma, zużycie prądu wzrosło ok. 6-8W (dla samego hosta) + to co zjada monitor. W moim przypadku to mini PC z Intel N95.

4 polubienia

Też to widziałem kilka dni temu i mnie mega zainteresowało, niestety jeszcze tego nie sprawdzałem ale jeśli to już zrobiłeś to piwo dla ciebie za test :beers:

Lepiej postaw kawę twórcy :wink:

Jeśli z tego będę docelowo korzystać to będzie i kawa :wink:
Wiąże się to z przeprowadzką serwera w inne miejsce czyli już na starcie same komplikacje :smile:

Czy ja wiem?
Po pierwsze to trzeba mieć monitor z digitajzerem (dotykiem), bo dopiero to realizuje w pełni sens kiosku.

Po drugie są rozwiązania umożliwiające umieszczenie komputera daleko od monitora - wystarczy dostatecznie długi kabel HDMI (nie testowałem tego jeszcze, ale mam 10 metrowy światłowodowy, który mi został z innego projektu) + przedłużacz USB dla digitajzera (do ~3 metrów problemu z pasywnym kablem nie widzę, więcej wymaga nieco bardziej specjalistycznego przedłużacza z reclokerem).
Oczywiście w zależności od warunków przeniesienie hosta HAOS może mieć większy sens niż ciągnięcie długich kabli.


Gdybym jutro nie wyjeżdżał na zlecenie prawie na miesiąc, to byłoby to już testowane (mam gdzieś monitor z digitajzerem, wprawdzie zaledwie 7 cali, ale na taki rozmiar można przygotować oddzielny dashboard), a już widzę, że to rozwiązanie jest OK.

Do samych testów mogę coś zorganizować ale żeby to miało ręce i nogi to musiał bym dobrze przemyśleć miejsce panelu jeszcze przed potencjalnym remontem salonu który i tak kiedyś mnie czeka (więc problem faktycznie rośnie do rangi: poważnych :sweat_smile:)

A musiałem to wytestować na własnej skórze :smile: bawiłem się dosłownie 5 minut i przez ten okres mogę powiedzieć tak:
na prawdę jest to rewolucja dla instalacji HAOS i sama idea na prawdę mi się podoba, zakup monitora >14 cali jest na pewno bardziej opłacalne niż kupowanie tak dużego tabletu na androidzie. Najlepiej by było połączyć się pojedynczym kablem USB c żeby jakoś się to prezentowało (a zakup mini pc N100/N150 z takim gniazdem i jest już nieco bardziej ograniczone). Sprawdziłem też reakcję rest_command na wybudzanie ekranu i tutaj też reakcja nie jest natychmiastowa co może być uciążliwe to wybudzania np. czujnikiem ruchu (tak mam zrobiona automatyzację z tabletem i reakcja jest natychmiastowa). Kolejna niedogodnością dla mnie jest możliwość wyświetlania tylko w 2 trybach motywu (light/dark) a ja akurat korzystam z motywu niestandardowego.
Pomimo kilku niedogodności i tak oceniam Addon bardzo pozytywnie :+1:

2 polubienia

Jakbyś jeszcze napisał na jakim sprzęcie masz obecną instalację to byłby jakiś punkt odniesienia (moje testy najwcześniej za miesiąc o ile nie będę miał nic ważniejszego do roboty, moją dużą instalację z celeronka 6 gen przeniosłem w końcu - po około 2 latach od kupna sprzętu - na i3 10gen).

Firebat AK2 Plus. Łączyłem się po HDMI z ekranem

Dla mnie to właśnie ekran dotykowy w HA to pełne wykorzystanie tego systemu.Do tej pory 10 calowy panel dotykowy działał z terminalem Hp wyse połączony przez parę kabli HDMI + USB ok 10 m .Działało to na debianie 12 z supervisorem,jak wiadomo instalacja core i supervisor po 2025 ta metoda nie będzie już wspierana więc ten dodatek jest idealną odpowiedzią dla użytkowników ,którzy tak jak ja, nie muszą już instalować(dokupić) dodatkowego urządzenia na którym odpalą przeglądarkę w trybie kiosk z ha.I co jest mega dodatek szybko się loguje na ekranie .

1 polubienie

@angler miałeś jakieś problemy z dotykiem? Teraz podłączyłem 14" wyświetlacz z dotykiem i póki co martwy. Zero reakcji na dotyk :upside_down_face:

Nie miałem żadnych. U mnie testowane na WINCOR NIXDORF BA91W 10,1” oraz na chińskim monitorze przenośnym PM1600XTS występującym pod różnymi brandami (u mnie Electrons). W obu przypadkach obraz po HDMI a dotyk po USB.
Proponuję zastosować się do wskazówek autora:


Spróbować wersji testowej z tego repozytorium, a jeśli nie pomaga zrobić zgłoszenie na gihub:

Dobra tym razem ja zamuliłem… Kupiłem monitor Anmite i podłączałem go przez HDMI bo nie mam USB C w moim teminalu. Zasilanie było z zewnętrznego źródła a nie pomyślałem że HDMI nie odsłuży dotyku :sweat_smile:
Kolejne szybkie wnioski:
:green_circle: obsługuje audio out więc można korzystać z wbudowanych głośników za pomocą VLC
:green_circle: wykrywa też mikrofon więc jest szansa na działanie asystenta głosowego z pomocą Assist microphone
:red_circle: napotkałem problemy z obrazem z kamery za pomocą WebRTC. 3 kamery tej samej firmy, ta tama integracja a tylko na jednej migotanie ekranu.

Ale wystarcza zwykłe gniazdo USB.

W sensie że nie mam USB C DP alt żeby wszystko poszło po jednym kablu

Też w końcu zrobiłem swoje testy na takich dość dziwacznych (dedykowanych do DIY) monitorkach z dotykiem i wstępnie jestem na tyle zadowolony, że myślę o obudowach dla nich, bo rozwiązanie ma przyszłość.

OFF TOPIC materiał na inny wątek
Oraz w 1 przypadku na specjalnie udziwnionej instalacji HAOS-generic - chciałem się przekonać jak bardzo negatywny wpływ na wydajność ma instalacja na hdd zamiast ssd, no i… pod wieloma względami jest naprawdę tragicznie - czas restartu HA, czas aktualizacji, dostęp do dużej liczny danych z bazy naraz, czy kompilacja ESPHome wloką się jak żółw (pierwsza kompilacja wsadu “maszyna H” z tego posta zajęła ~20 minut, a konkretnie 1150.36s, a samo linkowanie, gdy już mamy w cache wszystkie obiekty 34.75s to w sumie materiał na inny temat, bo robię testy porównawcze tej kompilacji na kilku innych maszynach, w rożnych lokalizacjach i niestety różnej specyfikacji (realnie początkowo to był test czy ten wsad się daje skompilować… ale akurat framework arduino tu idealnie pokazuje swoje słabe strony, dzięki czemu świetnie obciąża srzęt do testu), maszyna T mocniejszy procesor, ssd nvme, to samo 1Gbps łącze z internetem: 495.75s/14.30s , maszyna S ten sam procesor, ssd sata, łącze z internetem 20x wolniejsze ~ 50Mbps (kolosalny wpływ!) 1457.45s/36.44s , maszyna B ten sam procesor, ssd sata, łącze z internetem wolniejsze od T - tu ciekawostka 4x nie udało mi się skompilować w pierwszym przebiegu i kompilacja stawała w trakcie, nie mam czasu na dociekanie dlaczego ani nawet możliwości restartu HAOS teraz (zakładam możliwość uszkodzonego systemu plików lub jakieś błędy konfiguracji), więc brak wyniku!/35.06s), ale dla małej niezbyt intensywnie wykorzystywanej instalacji nawet taki laptopowy hdd 2.5’ jest do zaakceptowania.
koniec OFF TOPICa

przykładowa działająca stabilnie na wersji 1.1.1 Dodatku konfiguracja

ha_url: http://localhost:8123
ha_dashboard: lovelace-wlasny/default_view # przykład niestandardowego dashboardu
login_delay: 1
zoom_level: 100
browser_refresh: 0
screen_timeout: 0
output_number: 1
dark_mode: true
ha_sidebar: none
rotate_display: normal
map_touch_inputs: true
keyboard_layout: us
cursor_timeout: 5
onscreen_keyboard: false
save_onscreen_config: false
xorg_conf: ""
xorg_append_replace: append
allow_user_commands: false
rest_port: 8880
rest_bearer_token: ""
debug_mode: false
ha_username: panel
ha_password: haslo}nie2zlamania@aMozeZaSlabe! #no polecam nawet dla zwykłych użytkowników mieć jakieś hasła trudne do złamania, to tylko przykład niezbyt udany

Ekran 5 cali, 800x480pix, niestety tochyba TN i kąty rzyzwoitego widzenia są mocno ograniczone, ale kiedyś to był mój pierwszy ekranik specjalnie do maliny, wkrótce się okazało, że wzrok mi się kończy i poleciał do szuflady (ale gdyby dostosować prosty dashboard do jego malutkiej rozdzielczości to wciąż może mieć sens)

Ekran 7 cali, 1024x600pix, całkiem ładny obrazek chyba IPS,
mimo szczerych chęci nie umiem nic więcej o nim powiedzieć poza faktem, że ma 2 złącza USB micro-B każdym z nich można zasilać, ale jedno jest też złączem digitajzera, 1x normalne (duże) gniazdo HDMI oraz wyłącznik na górnej ściance (jeśli z prawej strony będziemy mieli HDMI i 2x USB).
edit - a jednak się dogrzebałem do jakiejś specyfikacji
https://www.lcdwiki.com/7inch_HDMI_Display-C


Niestety sprzęt mam nieporównywalny, więc jedyne co można zrobić, to zamiana na krzyż tych monitorów by stwierdzić wpływ rozdzielczości na wydajność (ale nie miałem na to czasu jak dotąd).

Na celeronku J3455 z ekranem 5 cali 800x480pix obciążenie procesora na wersji 1.1.1 Dodatku to zwykle okolice 60%-75% rdzenia =~ 15%-20% procesora.

Na i3-10110U z ekranem 7 cali 1024x600pix (czyli 1.6x wyższa rozdzielczość od tego małego) obciążenie procesora na wersji 1.1.1 Dodatku to zwykle okolice 20%-30% procesora (strasznie dużo, ale ten procek to jest 2C4T i to nie jest dobry wybór - czas pokazał, że 2 rdzenie to mało) w/g Glances jest to koło 100%-150% wątku=50%-75% rdzenia (czyli niby powinno się przekładać na wyższe średnie obciążenie procesora niż zaobserwowałem).


Więcej szczegółów wkrótce, bo dzisiaj wyszła aktualizacja do v1.2.0 której jeszcze nie próbowałem, a wprowadzająca dużo zmian i poprawek (w tym obsługę audio, wiele nowych sterowników dla ekranów dotykowych itd.).

edit: pierwsze wrażenie - z tego audio to chyba wiele nie będzie, ale tyłek mi urwało ile urządzeń HID ta nowa wersja rozpoznaje
niestety wzrosło też obciążenie procesora…

1 polubienie

Ja już zgłaszałem 2 issue i autor dosyć sprawnie działał poprawiając wersję testową i na niej miałem przeprowadzać próby. Jeden został już wciągnięty w aktualna wersję. Niestety teraz trochę spowolnił tempa i jeden poważny problem został jeszcze nie rozwiązany a zaczynają wskakiwać kolejne od użytkowników. Porzuciłem tymczasowo temat do momentu aż będzie odzew od autora.

Jest dobrze ale nie jest perfekcyjnie

Nie czytałem nawet issues - u mnie jedyny poważny problem, czyli krzaczenie się Dodatku występował w moich pecetach (podpiąłem ekraniki do instalacji “produkcyjnej” i do testowej) tylko w przypadku niezerowego czasu odświeżania (załatwia ustawienie zera browser_refresh: 0), czyli całkiem inaczej niż w dokumentacji jest zalecane dla maliny (to załatwia kwestię “białego ekranu”).
Inne mniej istotne

  • obsługiwana jedynie klawiatura US (keyboard_layout: us) tu trzeba sobie wyklikać język polski z panelu
  • niestandardowy dashboard wymaga podania w konfiguracji części linka bez rozpoczynającego ukośnika (dodaję to do przykładowej konfiguracji, bo skopiowałem przykład z instalacji gdzie ładuję domyślny, a w sumie po to wrzuciłem przykład, by ktokolwiek miał coś na start, bo znalezienie tych rozwiązań też zajęło mi niezerowy czas).

Jeśli chodzi o ładowanie innego motywu niż standardowy, też działa (wystarczy wpisać jego nazwę, ale z racji już kiepskiego wzroku preferuję coś czytelnego…), natomiast w przykładach zostawiłem login_delay: 1 bo wiem, że tu chodzi o stabilność startu i zero to może być za mało na słabszym sprzęcie (u mnie wystarcza 0).

Idealnie nie jest, ale Dodatek jest już na etapie podstawowej używalności (to nie była godzina używania tylko tydzień, wiem, że to mało, ale wiem że 1.1.1 było wystarczająco stabilne), korzystać z API rest nawet nie próbowałem (docelowo by się przydało), a teraz weszła obsługa gestów, więc niżej wrzucę zaktualizowaną konfigurację na 1.2.0 (bez modyfikacji nowych ustawień - zostały standardowe)

ha_url: http://localhost:8123
ha_dashboard: lovelace-wlasny/default_view
login_delay: 1
zoom_level: 100
browser_refresh: 0
screen_timeout: 0
output_number: 1
dark_mode: true
ha_theme: ""
ha_sidebar: none
rotate_display: normal
map_touch_inputs: true
keyboard_layout: us
cursor_timeout: 5
onscreen_keyboard: false
save_onscreen_config: true
xorg_conf: ""
xorg_append_replace: append
audio_sink: usb
rest_ip: 127.0.0.1
rest_port: 8080
rest_bearer_token: ""
debug_mode: false
gestures:
  - >-
    "1_ANY_1_CORNER_TOPRIGHT": {"cmds": [["dbus-send", "--type=method_call",
    "--dest=org.onboard.Onboard", "/org/onboard/Onboard/Keyboard",
    "org.onboard.Onboard.Keyboard.ToggleVisible"]], "msg": "Toggling Onboard
    keyboard..."}
  - >-
    "[Left]_MOUSE_3_CLICK": {"cmds": [["dbus-send", "--type=method_call",
    "--dest=org.onboard.Onboard", "/org/onboard/Onboard/Keyboard",
    "org.onboard.Onboard.Keyboard.ToggleVisible"]], "msg": "Toggling Onboard
    keyboard..."}
  - >-
    "3_TOUCH_1_TAP": {"cmds": [["dbus-send", "--type=method_call",
    "--dest=org.onboard.Onboard", "/org/onboard/Onboard/Keyboard",
    "org.onboard.Onboard.Keyboard.ToggleVisible"]], "msg": "Toggling Onboard
    keyboard..."}
  - >-
    "3_TOUCH_2_TAP": {"cmds": [["xdotool", "key", "--clearmodifiers",
    "ctrl+r"]], "msg": "Refresh Browser"}
  - >-
    "3_TOUCH_3_TAP": {"cmds": "luakit \"$HA_URL/$HA_DASHBOARD\"", "msg":
    "Restore default dashboard"}
  - >-
    "3+_TOUCH_1_SWIPE_LEFT": {"cmds": [["xdotool", "key", "--clearmodifiers",
    "ctrl+Right"]], "msg": "Go forward in the history browser"}
  - >-
    "3+_TOUCH_1_SWIPE_RIGHT": {"cmds": [["xdotool", "key", "--clearmodifiers",
    "ctrl+Left"]], "msg": "Go back in the history browser"}
  - >-
    "2_TOUCH_3_TAP": {"cmds": "luakit \"www.google.com\"", "msg": "Open Google
    search"}
command_whitelist: >-
  cat|date|dbus-send|echo|false|grep|head|ls|luakit|notify-send|ping|ping6|ps|pstree|sleep|tail|test|top|tree|true|xdotool|xset
ha_username: panel
ha_password: haslo}nie2zlamania@aMozeZaSlabe!