Standalone desktop app voor toegangscontrole met Mifare Classic NFC tags ontwikkeld voor de Deurnese IJsberen vzw. Geschreven in Electronjs, met Svelte componenten. Pouchdb database synchroniseert met online Couchdb (CouchDb, Cloudant, Pouchdb). De app werkt offline-first. Dus internet verbinding is geen absolute vereiste. Doch voor de veiligheid is het nodig om altijd verbinding te maken nadat nieuwe data is toegevoegd zodat de nieuwe data niet verloren kan gaan. Leden-data wordt verkregen door leden export vanuit Assist. De aangemaakte tags worden gekoppeld aan de lidnummers.
Het programma kent twee algemene modi:
- een registratie-modus: om nieuwe tags te initialiseren (aan leden te koppelen), om leden-data in te laden (met xls bestanden vanuit Assist), om toegang met tags te registreren, om manuele toegangs-registratie uit te voeren (zonder tags).
- Een poort modus: enkel voor toegangs-registratie met tags waarbij eventueel een elektrische poort wordt aangestuurd.
- OS Ubuntu 22.04, 24.04
- NFC tag reader ACR122u
- NFC tag reader MFRC522 (Kiosk modus met Raspberry Pi 4B)
- ACR122u driver
sudo apt-get install libnfc-bin
sudo apt-get install pcscd pcsc-toolsBlacklist pre-installed drivers
sudo nano /etc/modprobe.d/blacklist.confVoeg toe aan het einde van dit bestand:
install nfc /bin/false
install pn533 /bin/falsesudo apt-get install libpcsclite1 libpcsclite-dev
sudo apt-get install build-essential
sudo apt-get install gcc
sudo apt-get install gpiod libgpiod2 libgpiod-dev libnode-devVoor de kiosk-modus met buzzer en MFRC522 Mifare tag lezer moet de user toegang hebben tot /dev/gpiochipX (buzzer pin) en /dev/spidevO.O (MFRC522).
sudo groupadd spi
sudo groupadd gpiochip
sudo usermod -aG gpiochip,spi $USERGeef schrijf/lees rechten voor de spi en gpiochip groepen met udev rules.
sudo nano /etc/udev/roles.d/90-gpiochip.rules
# /etc/udev/roles.d/90-gpiochip.rules
KERNEL=="gpiochip*", SUBSYSTEM=="gpio", MODE="0660", GROUP="gpiochip"sudo nano /etc/udev/roles.d/91-spi.rules
# /etc/udev/roles.d/91-spi.rules
SUBSYSTEM=="spidev", GROUP="spi", MODE="0660"Herlaad udev rules en reboot
sudo udevadm control --reload-rules
sudo udevadm trigger
sudo rebootCheck na reboot de rechten.
> ls -l /dev/spidev*
crw-rw----+ 1 root spi 153, 0 Jun 21 08:30 /dev/spidev0.0
crw-rw----+ 1 root spi 153, 1 Jun 21 08:30 /dev/spidev0.1
> ls -l /dev/gpiochip*
crw-rw----+ 1 root gpiochip 254, 0 Jun 21 08:30 /dev/gpiochip0
crw-rw---- 1 root gpiochip 254, 1 Jun 21 08:30 /dev/gpiochip1Installeer node 22 en npm met nvm (Node Version Manager)
wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.2/install.sh | bash
# reopen terminal
nvm install 22npm install --global yarnInstalleer node-gyp
yarn global add node-gypInstalleer Git
sudo apt-get install gitDownload code
git clone https://github.com/eeemarv/ijspoortIn de nieuw gecreëerde directory ijspoort, installeer node modules
yarn installBuild
yarn buildStart app (dev mode)
yarn devBuild Linux
yarn build:linuxVoor mogelijk probleem met node-gyp
pip install setuptools
# or
python3 -m pip install --break-system-packages setuptoolsVoor ARM builds (Raspberry Pi, Orange Pi), see these workarounds
export SNAPCRAFT_BUILD_ENVIRONMENT=host
export USE_SYSTEM_FPM=true
yarn run electron-builder --arm64 --armv7l --linuxDe builds worden gegenereerd in de dist directory.
Voor AppImage is in Ubuntu 22.04 libfuse2 nodig
sudo add-apt-repository universe
sudo apt-get install libfuse2Zie dot_env_info voor informatie over alle omgevingsvariabelen waarmee de applicatie opgestart wordt, te plaatsen in een .env bestand in de zelfde directory als de AppImage.
De applicatie opstarten kan waarschijnlijk enkel zonder sandbox.
cd dist
./ijspoort.AppImage --no-sandbox