Skip to content

eva-ics/evapanel

Repository files navigation

EvaPanel

EvaPanel is a lightweight WebKit-based kiosk web-browser with remote controls, focused on HMI (human-machine-interface) web-applications.

EvaPanel is developed for Linux. Building Windows binaries is possible, but certain functions may not work properly.

App

Features

  • A solution for full-screen kiosk applications

  • Works fine with most of web apps even on embedded systems with 512MB RAM (min. 300MB total system RAM is recommended)

  • Can restrict navigation to allowed URLs only

  • Remote-controlled

Building

It is quite hard to compile a static binary with WebKit embedded. Also, depending on system WebKit libraries makes much easier to apply updates. So EvaPanel is redistributed as the source-code only and can be built with:

apt install -y bash build-essential libwebkit2gtk-4.0-dev libayatana-appindicator3-dev
  • Build EvaPanel for your Linux distribution:
./build.sh

After, the binary can be shared between kiosks with the same CPU architecture and OS distribution.

Installing a kiosk system

  • install Linux and xorg with some lightweight window manager (e.g. i3wm)

  • display control remote functions require xrandr and xbacklight

  • if installing on another system, which had not been used for building, install the following system packages (the minor versions may differ):

apt install -y libwebkit2gtk-4.0-37
  • create a user

  • configure either graphical or console auto-login (recommended)

  • in case of console auto-login, put the following into the user's home directory:

append to ~/.profile

evapanel-launch.sh
  • put .xinitrc into the user's home directory:
i3 &
evapanel
  • put the compiled evapanel binary and evapanel-launch.sh script to e.g. /usr/local/bin/

  • put evapanel.yml to the user's home directory and edit the properties.

HMI apps integration

To transparently integrate a HMI application with EvaPanel, it must meet the following requirements:

Remote login/logout

The app must have JavaScript methods:

$eva.hmi.login(user, password);
$eva.hmi.logout();

Alerts

$eva.hmi.display_alert(text, level, timeout);

where:

  • text - a text to display
  • level - info or warning
  • timeout - an optional parameter, sets a timeout after which the alert is automatically closed

Automatic WASM support

If EVA ICS WebEngine WebAssembly extension is installed, the app can turn it on/off, based on the kiosk's configuration:

eva.wasm = config.wasm && (!window.navigator.userAgent.startsWith('EvaPanel ') || window.navigator.userAgent.search('/wasm ') > 0);

Remote control

EvaPanel uses BUS/RT protocol.

EvaPanel can work in two modes: bus server and bus client. In case of client, a local socket is opened (default: /tmp/evapanel.sock)

Commands can be called with the default bus client, payload format is MessagePack.

In server mode, the process registers itself as ".panel". In client mode, as "eva.panel.HOSTNAME".

List of the available commands is provided in eapi.yml

Orchestrating

Available with EVA ICS v4 HMI Kiosk manger service.

About

Lightweight Kiosk browser with remote controls

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published