diff --git a/auto_startx_bashrc b/auto_startx_bashrc
new file mode 100755
index 0000000..50f85ad
--- /dev/null
+++ b/auto_startx_bashrc
@@ -0,0 +1,9 @@
+#! /bin/bash
+if grep "#modif bashrc = ok" /home/sysop/.bashrc > /dev/null
+then
+ echo 'bashrc déjà modifié pour auto startx !'
+else
+ sudo echo 'export TYPE_SERVEUR_NFC=VMA405' >> /home/sysop/.bashrc
+ sudo echo '#modif bashrc = ok' >> /home/sysop/.bashrc
+ sudo echo '[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && startx -- -nocursor' >> /home/sysop/.bashrc
+fi
diff --git a/autostart b/autostart
index 1672291..a5198df 100755
--- a/autostart
+++ b/autostart
@@ -18,5 +18,5 @@ rm -fr /home/sysop/.config/chromium/Default/
xrandr --output DSI-1 --rotate right
# lance chromium avec un user agent spécifique hostname,password,periph,ip (provenant en partie de .chromium_env)
-cd /home/sysop/serveurNfcNodeJs/
+cd /home/sysop/serveurNfcNodeJsVma405/
node serveur_nfc.js
diff --git a/branchement_ecran_pi.png b/branchement_ecran_pi.png
new file mode 100644
index 0000000..a83094c
Binary files /dev/null and b/branchement_ecran_pi.png differ
diff --git a/install_1024x600_vma405_chromium.yml b/install_1024x600_vma405_chromium.yml
new file mode 100644
index 0000000..8e320fd
--- /dev/null
+++ b/install_1024x600_vma405_chromium.yml
@@ -0,0 +1,248 @@
+---
+- hosts: dsi1024x600_vma405Pi2
+ remote_user: sysop
+ become: yes
+ tasks:
+ - name: Maj dépôts
+ apt:
+ upgrade: yes
+ update_cache: yes
+
+ - name: install "7zip"
+ apt:
+ name: p7zip-full
+ state: present
+
+ - name: install git
+ apt:
+ name: git
+ state: present
+
+ - name: install "xserver-xorg"
+ apt:
+ name: xserver-xorg
+ state: present
+
+ - name: install "x11-xserver-utils"
+ apt:
+ name: x11-xserver-utils
+ state: present
+
+ - name: install "xinit"
+ apt:
+ name: xinit
+ state: present
+#
+ - name: install "openbox"
+ apt:
+ name: openbox
+ state: present
+
+ - name: install "chromium-browser"
+ apt:
+ name: chromium-browser
+ state: present
+
+ - name: install "xdotool"
+ apt:
+ name: xdotool
+ state: present
+
+ - name: Copie du fichier de démarrage automatique de Xorg
+ copy:
+ src: ./auto_startx_bashrc
+ dest: /home/sysop/auto_startx_bashrc
+ owner: sysop
+ group: sysop
+ mode: '0770'
+ backup: yes
+
+ - name: Ajout du fichier de démarrage automatique de Xorg au fichier .bashrc
+ shell: /home/sysop/auto_startx_bashrc
+
+ - name: Copie du fichier autostart
+ copy:
+ src: ./autostart
+ dest: /home/sysop/autostart
+ owner: sysop
+ group: sysop
+ mode: '0770'
+ backup: yes
+
+ - name: Remplacer le fichier autostart
+ shell:
+ cmd: cp /home/sysop/autostart /etc/xdg/openbox/autostart
+
+ - name: Copie du fichier serveurNfcNodeJsVma405.7z
+ copy:
+ src: ./serveurNfcNodeJsVma405.7z
+ dest: /home/sysop/serveurNfcNodeJsVma405.7z
+ owner: sysop
+ group: sysop
+ backup: yes
+
+ - name: décompresser le fichier serveurNfcNodeJsVma405.7z
+ shell:
+ cmd: 7z x serveurNfcNodeJsVma405.7z
+
+ - name: Changer les droits du dossier serveurNfcNodeJsVma405
+ shell:
+ cmd: chown -R sysop:sysop /home/sysop/serveurNfcNodeJsVma405
+
+ - name: Ajout du dépot nodes js
+ shell: curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
+
+ - name: install "nodejs"
+ apt:
+ name: nodejs
+ state: present
+
+ - name: Pour nodejs, installation de "gcc" pour la compilation
+ apt:
+ name: gcc
+ state: present
+
+ - name: Pour nodejs, installation de "g++" pour la compilation
+ apt:
+ name: g++
+ state: present
+
+ - name: Pour nodejs, installation de "make" pour la compilation
+ apt:
+ name: make
+ state: present
+
+ - name: Pour nodejs, installation de "apt-transport-https" pour la compilation
+ apt:
+ name: apt-transport-https
+ state: present
+
+ - name: Installer les modules du serveurNfcNodeJsVma405
+ shell:
+ cmd: npm i
+ chdir: /home/sysop/serveurNfcNodeJsVma405/
+
+ - name: Création du fichier de configuration
+ shell: cp chromium_env.exemple .chromium_env
+ args:
+ chdir: /home/sysop/serveurNfcNodeJsVma405/
+
+ - name: Modification du hostname du fichier de configuration
+ shell:
+ cmd: sed -i "s/__hostname__/{{ hostname }}/" /home/sysop/serveurNfcNodeJsVma405/.chromium_env
+
+ - name: Modification du mot de passe du fichier de configuration
+ shell:
+ cmd: sed -i "s/__mdp__/{{ password }}/" /home/sysop/serveurNfcNodeJsVma405/.chromium_env
+
+ - name: Modification du token wifi du fichier de configuration
+ shell:
+ cmd: sed -i "s/__token__/{{ token }}/" /home/sysop/serveurNfcNodeJsVma405/.chromium_env
+
+ - name: Modification du type de front du fichier de configuration
+ shell:
+ cmd: sed -i "s/__frontType__/{{ frontType }}/" /home/sysop/serveurNfcNodeJsVma405/.chromium_env
+
+ - name: Modification du protocole(serveur) du fichier de configuration
+ shell:
+ cmd: sed -i "s/__protocole__/{{ protocole }}/" /home/sysop/serveurNfcNodeJsVma405/.chromium_env
+
+ - name: Modification de l'adresse du serveur du fichier de configuration
+ shell:
+ cmd: sed -i "s/__serveur__/{{ serveur }}/" /home/sysop/serveurNfcNodeJsVma405/.chromium_env
+
+ - name: Création du dossier repos "7inch-DSI-LCD-C"
+ file:
+ path: /home/sysop/7inch-DSI-LCD-C
+ state: directory
+ mode: '0775'
+
+ - name: Rapatrier le driver de l'écran
+ git:
+ repo: https://github.com/waveshare/7inch-DSI-LCD-C.git
+ dest: /home/sysop/7inch-DSI-LCD-C/
+ clone: yes
+ update: no
+
+ - name: Installer le driver
+ shell: /home/sysop/7inch-DSI-LCD-C/32/5.10.103/pi3/WS_7inchDSI1024x600.sh
+ args:
+ chdir: /home/sysop/7inch-DSI-LCD-C/32/5.10.103/pi3/
+
+ - name: Ajouter la rotation de 90° au fichier de configuration /boot/config.txt
+ shell:
+ cmd: echo "#90°" >> /boot/config.txt && echo "dtoverlay=WS_7inchDSI1024x600_Touch,invertedx,swappedxy" >> /boot/config.txt
+
+ - name: installe "splash screen"
+ apt:
+ name: rpd-plym-splash
+ state: present
+
+ - name: Installation de "fbi", pour visualiser le splash screen(logo)
+ apt:
+ name: fbi
+ state: present
+
+ - name: install "xserver-xorg-video-fbturbo"
+ apt:
+ name: xserver-xorg-video-fbturbo
+ state: present
+
+ - name: Copie du fichier image splash.png
+ copy:
+ src: ./splash.png
+ dest: /home/sysop/splash.png
+ owner: sysop
+ group: sysop
+ backup: yes
+
+ - name: Suppression du logo raspberry pi, modification du fichier /boot/cmdline.txt
+ shell:
+ cmd: echo "\nconsoleblank=0 loglevel=1 quiet logo.nologo" >> /boot/cmdline.txt
+
+ - name: Autoriser startx
+ shell:
+ cmd: sed -i "s/quiet splash plymouth.ignore-serial-consoles//" /boot/cmdline.txt
+
+ - name: Copie du fichier du service "splashscreen.service"
+ copy:
+ src: ./splashscreen.service
+ dest: /etc/systemd/system/splashscreen.service
+ owner: sysop
+ group: sysop
+ mode: '0770'
+ backup: yes
+
+ - name: Activer "splashscreen.service"
+ shell:
+ cmd: sudo systemctl enable splashscreen.service
+
+ - name: Démarrer "splashscreen.service"
+ shell:
+ cmd: sudo systemctl start splashscreen.service
+
+ - name: Active SPI
+ shell:
+ cmd: echo "dtparam=spi=on" >> /boot/config.txt
+
+ - name: Auto-login
+ shell:
+ cmd: raspi-config nonint do_boot_behaviour B2
+
+ - name: Changer le propriétaire et le groupe dupériphérique
+ shell: chown root:gpio /dev/gpiomem
+
+ - name: Configurer les droits du groupe en lecture ecriture
+ shell: chmod g+rw /dev/gpiomem
+
+ - name: Ajout de l'utilisateur au groupe gpio
+ shell: usermod -a -G gpio $USER
+
+ - name: Ajout de l'utilisateur au groupe spi
+ shell: usermod -a -G spi $USER
+
+ - name: Ajout de l'utilisateur au groupe netdev
+ shell: usermod -a -G netdev $USER
+
+ - name: Redémarrage !
+ reboot:
diff --git a/node.yml b/node.yml
deleted file mode 100755
index b6351cd..0000000
--- a/node.yml
+++ /dev/null
@@ -1,47 +0,0 @@
----
-- hosts: testDsiPi
- remote_user: sysop
- become: yes
- tasks:
-
- - name: install "splash screen"
- apt:
- name: rpd-plym-splash
- state: present
-
- - name: Active SPI
- shell:
- cmd: echo "dtparam=spi=on" >> /boot/config.txt
-
- - name: Ajout du dépot nodes js
- shell: curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
-
- - name: install "nodejs"
- apt:
- name: nodejs
- state: present
-
- - name: Pour nodejs, installation de "gcc" pour la compilation
- apt:
- name: gcc
- state: present
-
- - name: Pour nodejs, installation de "g++" pour la compilation
- apt:
- name: g++
- state: present
-
- - name: Pour nodejs, installation de "make" pour la compilation
- apt:
- name: make
- state: present
-
- - name: Pour nodejs, installation de "apt-transport-https" pour la compilation
- apt:
- name: apt-transport-https
- state: present
-
- - name: Installation des modules node js
- shell:
- cmd: npm i
- chdir: /home/sysop/nodeJsVma405/
diff --git a/readme.md b/readme.md
index d5e5ace..52d2125 100755
--- a/readme.md
+++ b/readme.md
@@ -13,37 +13,38 @@
- | 39 | 37 | 35 | 33 | 31 | 29 | 27 | 25 | SCK | MISO | MOSI | 17 | 15 | 13 | 11 | GND | 7 | 5 | 3 | vcc |
+ côté usb | 39 | 37 | 35 | 33 | 31 | 29 | 27 | 25 | SCK | MISO | MOSI | 17 | 15 | 13 | 11 | GND | 7 | 5 | 3 | vcc |
- | 40 | 38 | 36 | 34 | 32 | 30 | 28 | 26 | NSS | RST | 20 | 18 | 16 | 14 | 12 | 10 | 8 | 6 | 4 | 2 |
+ reseau | 40 | 38 | 36 | 34 | 32 | 30 | 28 | 26 | NSS | RST | 20 | 18 | 16 | 14 | 12 | 10 | 8 | 6 | 4 | 2 |
-
-
- | VMA405 | PI 3 B+ | Couleur cable |
-
-
-
- | VCC | 1 | marron |
- | RST | 22 | rouge |
- | GND | 9 | orange |
- | MISO | 21 | jaune |
- | MOSI | 19 | vert |
- | SCK | 23 | bleu |
- | NSS | 24 | violet |
- | IRQ | pas utilisé | |
-
+
+
+ | RC522 / VMA405 | PI 3 B+ | Couleur cable |
+
+
+
+ | 3.3v / VCC | 1 | rouge |
+ | RST | 22 | marron |
+ | GND | 9 | noir |
+ | IRQ | pas utilisé | |
+ | MISO | 21 | jaune |
+ | MOSI | 19 | vert |
+ | SCK | 23 | bleu |
+ | SDA | 24 | violet |
+
+
# installation de node js (ansible)
-node.yml
+install_1024x600_vma405_chromium.yml
# splash screen (écran de boot = pub)
```
diff --git a/rfid_rc522.jpg b/rfid_rc522.jpg
new file mode 100644
index 0000000..64c0908
Binary files /dev/null and b/rfid_rc522.jpg differ
diff --git a/serveurNfcNodeJsVma405.7z b/serveurNfcNodeJsVma405.7z
new file mode 100644
index 0000000..7b65656
Binary files /dev/null and b/serveurNfcNodeJsVma405.7z differ
diff --git a/serveurNfcNodeJsVma405/chromium_env.exemple b/serveurNfcNodeJsVma405/chromium_env.exemple
index 2acded4..46778d1 100644
--- a/serveurNfcNodeJsVma405/chromium_env.exemple
+++ b/serveurNfcNodeJsVma405/chromium_env.exemple
@@ -1,16 +1,16 @@
#cp chromium_env.exemple .chromium_env
#utilisateur
-hostname = testDsiPi
+hostname = __hostname__
#front
-front_type = FPI
+front_type = __frontType__
#url du serveur
-url = https://django-local.org:8501/wv/login_hardware
+url = __protocole__://__serveur__/wv/login_hardware
#mode_nfc = NFCMO
mode_nfc = NFCLO
-password = xxxxxxxxxxxxxxxxxxxxx
-token = xxxxxxxxxxxxxxxxxx
+password = __mdp__
+token = __token__
diff --git a/serveurNfcNodeJsVma405/serveur_nfc.js b/serveurNfcNodeJsVma405/serveur_nfc.js
index 4c68f28..fac1f59 100755
--- a/serveurNfcNodeJsVma405/serveur_nfc.js
+++ b/serveurNfcNodeJsVma405/serveur_nfc.js
@@ -7,7 +7,7 @@
// même action pour le fichier sudo nano /usr/lib/pcsc/drivers/ifd-acsccid.bundle/Contents/Info.plist (pour desktop)
let script, ip, memSudoMdp = '', etatUrl = 0
-let TAB = ['A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '!', '#', '$', '%', '&', '?','0','1','2','3','4','5','6','7','8','9'];
+let TAB = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '!', '#', '$', '%', '&', '?', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'];
let max_TAB = TAB.length - 1
let donneesFichierConfiguration = {}
// type de lecteur nfc
@@ -19,9 +19,9 @@ let dev = 1
const vma405Emitter = require('./vma405.js')
const os = require('os')
-const hostname= os.hostname()
+const hostname = os.hostname()
-const { spawn, exec } = require('child_process')
+const {spawn, exec} = require('child_process')
const IP = require('ip')
const path = require('path')
const fs = require('fs')
@@ -42,7 +42,7 @@ let fichier = '', contentType = ''
* @param {String|'ipv4'|'ipv6'} famille
* @returns {string}
*/
-function obtenirIp(typeReseau, famille){
+function obtenirIp(typeReseau, famille) {
ip = IP.address(typeReseau, famille)
let retour = "erreur"
if (ip !== "127.0.0.1" && ip !== "0.0.0.0") {
@@ -53,18 +53,18 @@ function obtenirIp(typeReseau, famille){
// --- nfc ---
vma405Emitter.on('tagId', (tagId) => {
- if (retour !== null){
- retour['tagId'] = tagId.toUpperCase()
- client_globale.emit('envoieTagId',retour)
- console.log('--> demande carte, envoi tag id = ' + tagId.toUpperCase())
- retour = null
- } else {
- // console.log('-> Aucune demande, carte :' + card.uid.toString().toUpperCase())
- console.log('-> Aucune demande, carte :' + tagId.toUpperCase())
- if (client_globale !== null) {
- client_globale.emit('infosTagId', tagId.toUpperCase())
- }
+ if (retour !== null) {
+ retour['tagId'] = tagId.toUpperCase()
+ client_globale.emit('envoieTagId', retour)
+ console.log('--> demande carte, envoi tag id = ' + tagId.toUpperCase())
+ retour = null
+ } else {
+ // console.log('-> Aucune demande, carte :' + card.uid.toString().toUpperCase())
+ console.log('-> Aucune demande, carte :' + tagId.toUpperCase())
+ if (client_globale !== null) {
+ client_globale.emit('infosTagId', tagId.toUpperCase())
}
+ }
})
vma405Emitter.on('msgVma405', (msg) => {
@@ -72,7 +72,6 @@ vma405Emitter.on('msgVma405', (msg) => {
})
-
// --- commandes système ---
/** @function
* Obtenir ip extérieur (wan/box)
@@ -84,7 +83,7 @@ function obtenirIpWan() {
})
prog.on('close', (code) => {
- if (code === 0 ){
+ if (code === 0) {
// ok: ip = prog.resultatRequete
} else {
// erreur
@@ -98,15 +97,15 @@ function obtenirIpWan() {
* @param {String} fichier - nom du fichier à lire
* @returns {{msg, erreur: number}|{valeurs: {}, erreur: number}}
*/
-function obtenirConfigurationDunFichier(rechercher,fichier) {
+function obtenirConfigurationDunFichier(rechercher, fichier) {
try {
- const fic = fs.readFileSync(fichier, {encoding:'utf8', flag:'r'}).split('\n')
+ const fic = fs.readFileSync(fichier, {encoding: 'utf8', flag: 'r'}).split('\n')
let obj = {}
for (let index = 0; index < fic.length; index++) {
let ligne = fic[index].toString()
if (ligne.length > 0 && ligne[0] !== '#' && ligne.indexOf('=') !== -1) {
let tab = ligne.split('=')
- for ( let im in rechercher) {
+ for (let im in rechercher) {
mot = rechercher[im]
if (mot === (tab[0].trim())) {
obj[tab[0].trim()] = tab[1].trim()
@@ -116,18 +115,18 @@ function obtenirConfigurationDunFichier(rechercher,fichier) {
}
return {erreur: 0, valeurs: obj}
} catch (error) {
- return {erreur:1 , msg: error}
+ return {erreur: 1, msg: error}
}
}
-function afficherInfoServeur(donnees){
+function afficherInfoServeur(donnees) {
// console.log('-> fonction afficherInfoServeur !')
// console.log('donnees = ', donnees)
if (donnees.erreur === 0) {
let bruteUrl = donnees.valeurs.url
let posDeuxSlashs = bruteUrl.indexOf('//') + 2
let posFinDomaine = bruteUrl.indexOf('/wv/login_hardware')
- let domaine = bruteUrl.substring(posDeuxSlashs,posFinDomaine)
+ let domaine = bruteUrl.substring(posDeuxSlashs, posFinDomaine)
let onclique = ''
if (donnees.valeurs.front_type === "FPI") {
onclique = `onclick="clavierVirtuel.obtPosition('serveur');clavierVirtuel.afficher('serveur', 'alpahMin')"`
@@ -136,14 +135,14 @@ function afficherInfoServeur(donnees){
let options = ''
for (let i = 0; i < fronts.length; i++) {
let sel = ''
- console.log(`${ i} -> ${ fronts[i] } -- ${ donnees.valeurs.front_type }`)
+ console.log(`${i} -> ${fronts[i]} -- ${donnees.valeurs.front_type}`)
if (fronts[i] === donnees.valeurs.front_type) {
sel = 'selected'
}
- options += ``
+ options += ``
}
return `
- Serveur: ${ domaine }
+ Serveur: ${domaine}
@@ -161,11 +160,11 @@ function afficherInfoServeur(donnees){