Pywebdriver

Pywebdriver - installation Ubuntu

1. Sur ordinateur Ubuntu 20.04 et 22.04 neuf

Ekimia s'occupe parfois l’installation : voir s’ils n’ont pas mis Pywebdriver en favori dans le navigateur internet.
Si oui, voir s’ils l’ont bien installé.

Si KO, utiliser successivement les 3 commandes suivantes (le mot de passe du PC sera nécessaire) :

Pour trouver facilement ces commandes, rendez-vous sur ce pad : https://pad.cloud117.fr/p/pywebdriver

sudo apt install python-is-python3
wget https://raw.githubusercontent.com/akretion/pywebdriver/master/debian/install.sh
sudo chmod +x install.sh
sudo ./install.sh
# S'il propose 2 versions, ne pas prendre celle par défaut, mais l'autre
# À "Handle HTTPS(Y/n)" répondre Y (pour oui)

Si le Firefox a un mot de passe principal, il y aura une étape en plus. Le terminal demandera Enter Password or Pin for "NSS Certificate DB" et il faut écrire le mot de passe principal

Un redémarrage peut être nécessaire avant l'étape 2 ↓


1bis. Sur ordinateur Ubuntu venant d'une version antérieure

python
# Voir si il y a marqué Python 2.*.* (* étant la version utilisé)
# Si oui, il faut passer en python3 qui doit être sur l'ordi
# Commencer à taper puis →tabulation
pyth →tab
# Il doit y avoir python3

# Sinon mettre à jour : https://www.pythoncentral.io/how-to-update-python/

# Désinstaller python2
sudo apt remove python2.*
# Et installer ce qu'il faut
sudo apt install python-is-python3

#Tester et lancant python
python
# Doit apparaitre une version de python en 3.quelquechose
CTRL+D #pour en sortir
# Désinstaller l'ancienne version de pywebdriver
sudo apt remove pywebdriver
sudo apt purge pywebdriver

# Installer la nouvelle version
wget https://raw.githubusercontent.com/akretion/pywebdriver/master/debian/install.sh
sudo chmod +x install.sh
sudo ./install.sh
# À "Handle HTTPS(Y/n)" répondre Y (pour oui)

# Il va poser une question sur le fichier de configuration ↓
image.png répondre Y


1ter. Erreurs à l'installation

Les tests sur l'écran de tests ne fonctionnent pas


Vous avez l'erreur "you may have broken packages"

image.png

sudo apt-get check
Si c'est une erreur de certif et que vous voulez passer en http et pas en https

Pour cela :


Vous voulez recommencer l'installation ?
sudo apt remove pywebdriver # ça supprime le paquet
sudo apt purge pywebdriver # ça supprime le fichier de configuration
# et là recommencer l'installation
sudo ./install.sh


2. Finalisation et vérification de l'installation

Interface de test

Se connecter à l'adresse https://localhost:8069/

Pour passer l'alerte de sécurité de Firefox, clic sur « Avancé » puis « Accepter le risque et poursuivre »
​Cliquer sur "Statut de la Posbox" : on voit ici les appareils bien connectés au point de vente et ceux sans signal.

On peut tester la liaison pour l'imprimante, l'afficheur client et la liaison TPE.

Sur Odoo

Vérifier que l'adresse https://localhost:8069/ est bien renseignée dans Odoo >> Point de vente >>  Configuration >> Point de vente >> Matériel Proxy.

Une fois Pywebdriver installé, et lors de la connexion à Odoo, on voit en haut à droite du point de vente les appareils non reliés :

Certaines actis ont des paramétrages spécifiques, par exemple plusieurs points de vente rattachés à une seule imprimante ticket de caisse (cf. CHE) => dans ce cas la caisse principale est rattachée à Pywebdriver via https://localhost:8069/ , mais les caisses secondaires ont une autre adresse IP de renseignée dans Configuration >> Point de vente

3. Cas d'un ordi qui communique avec une IP locale

Exemple chez BAJ, voici le fonctionnement au 1er octobre 2024

image.png

Pour que cela fonctionne, il faut changer le config.ini

# Accéder au fichier de config
cd /etc/pywebdriver/
# Le modifier avec les droits admin
sudo nano config.ini
# Commenter le host
# Avant : host=127.0.0.1
# Après : ;host=127.0.0.1
# Enregistrer en faisant CTRL + X (puis O pour enregistrer et Entrée)

 

 

Différents soucis

Nouvel appareil (imprimante, TPE, afficheur client·e)

Voir tuto dédié : https://librairie.grap.coop/books/r%C3%A9serv%C3%A9-au-service-info/page/rajouter-un-nouveau-appareil-imprimante-tpe-afficheur-client

Erreur de droits d'accès ?

Redémarre après une belle installation clean !

Vérifier qu'il y a bien la règle de droits d'accès :

cd /lib/udev/rules.d
cat 99-pywebdriver.rules
SUBSYSTEM=="usb", GROUP="usbusers", MODE="0660"

Vérifier que le compte utilisateur est bien dans les bons groupes

groups <lecompteutilisateur>
<lecompteutilisateur> adm cdrom sudo dip plugdev lpadmin sambashare

Pywebdriver - gestion afficheur client

Branchement par USB

Si ça ne marche pas, inverser ACM1 et ACM0 sur l'un et l'autre des items.

Configuration Point de vente

Nouveau appareil (imprimante, TPE, afficheur client·e) ou erreur matos

Repérer le matériel connecté à la caisse

Repérer le matériel connecté à la caisse : sudo dmesg | grep tty

Ajouter une imprimante

Ou sinon

# Lister les trucs en usb
lsusb

# Brancher et débrancher pour chopper les infos différentes
# On cherche le product ID et le vendor ID

Exemple sur 
Bus 003 Device 008: ID 0cf3:0036 Atheros Communications, Inc.

product ID : 0cf3
et vendor ID : 0036

# et on le rajoute dans le fichier qui va bien
sudo gedit /opt/venvs/pywebdriver/lib/python3.8/site-packages/pywebdriver/plugins/escpos_driver.py

image.png

Puis ajouter une ligne et redémarrer le service

sudo service pywebdriver restart
# pas besoin normalement mais sait-on jamais : sudo service pywebdriver reload

Et enfin recharger la page Pywebdriver

Puis rajouter ça sur notre ordi et proposer une petite PR, on demande à Pierrick de merger


Rajouter un afficheur ou un TPE

Si on veut rajouter des devices pour un TPE ou un afficheur client·e, on rajoute des noms sur ces lignes là :

Pour l'afficheur : https://github.com/akretion/pyposdisplay/blob/master/pyposdisplay/pyposdisplay.py#L175
Pour le TPE : https://github.com/akretion/pypostelium/blob/master/pypostelium/pypostelium.py#L52

Pour trouver le nom de l'appareil, lancer un terminal puis

/opt/venvs/pywebdriver/python -m serial.tools.list_ports -v

ou
python3.8 -m serial.tools.list_ports -v

ou
python3.8
>>> import serial.tools.list_ports
>>> serial.tools.list_ports.comports()

Si besoin, débrancher, rebrancher pour voir la diff et trouver le truc qui apparaît.

Puis rajouter ça sur notre ordi et proposer une petite PR, on demande à Pierrick de merger

Puis faudra faire un rebuild de pywebdriver pour rebuilder un .deb


Pywebdriver - installation sur Raspberry Pi

Trouver l'adresse IP sans y avoir accès directement

Contexte : on a envoyé le raspberry Pi à une acti qui l'a connecté à son réseau (par câble ethernet) et qui l'a branché éléctriquement (led vertes).
Le but du jeu : trouver l'adresse IP du raspberry qui fait tourner Pywebdriver

Plusieurs possibilités :

A. [Windows/Linux] Se connecter à l'interface administration de la box pour trouver les appareils connectés au réseau

    1. Orange : Livebox : https://livebox
    2. Bouygues : Bbox : https://mabbox.bytel.fr ou 192.168.1.254.
    3. Free : Freebox : mafreebox.freebox.fr ou 192.168.0.254

B. [Linux] Depuis un poste Linux, on peut "scanner" le réseau pour trouver l'adresse IP

# Installer le logiciel nécessaire pour scanner le réseau
sudo apt install nmap
# Scanner le réseau
sudo nmap -sP 192.168.1.0/24

Le résultat sera comme ceci :

Nmap scan report for pi (192.168.1.90)
Host is up (0.0029s latency).
MAC Address: B8:27:EB:05:72:2C (Raspberry Pi Foundation)

Bien prendre l'adresse IP qui est au dessus de la ligne Raspberry

source : https://raspberrytips.fr/comment-trouver-ip-raspberry-pi/

Paramétrage Odoo

 

Installation raspberry Pi chez ECU

Cas spécial du RaspberryPi chez ECU

Il s'agit de lancer pywebdriver en tâche de fond.
Normalement le programme se lance au démarrage du système.
Pour vérifier cela, lancer le navigateur internet et http://localhost:8069 puis Statut de la PosBox

Par défaut, le lancement à distance avec vision de l'écran nécessite l'accord de la personne. Or sur un Raspberry, pas d'écran, pas de souris par défaut donc il ne peut pas dire oui !
Donc soit changer les droits de prise à distance (en allant dans le compte admin), soit demander à la personne de connecter un écran (avec miniprise HDMI) et une souris

Paramétrage initial pour lancer au démarrage

sudo nano /etc/rc.local

# Rajouter ces lignes avant exit 0

cd /home/pi/Documents/pywebdriver
. /home/pi/Documents/pywebdriver/env/bin/activate
/home/pi/Documents/pywebdriver/pywebdriverd &

Si lancement au démarrage marche pas

Prendre la main à distance par terminal

cd /home/pi/Documents/pywebdriver
. /home/pi/Documents/pywebdriver/env/bin/activate
nohup /home/pi/Documents/pywebdriver/pywebdriverd &

 

Accéder à pywebdriver