Instructions par QR Code [Résolu]

Salut les gens,

J’ai joué avec mon Raspberry pour un truc « à la con ».
Installation de zbar-tools pour que la caméra puisse lire des QR codes.
Sur un de mes PC linux, installation de QRencode pour générer ce que je veux.

Ce que je ne sais pas faire (et ne trouve car je cherche mal sans doute), c’est faire exécuter l’action.

Allez, j’explique l’idée.
Imaginons que j’ai un Raspberry allumé.
Au moment du départ, je veux lancer motion pour la vidéosurveillance.
Et au retour, je veux couper motion.

Au lieu d’avoir un clavier pour taper « motion » puis « pkill motion »
Au lieu d’avoir un souris pour cliquer sur mon raccourci qui lance motion/coupe motion
Je veux juste un Rpi et rien de branché dessus.
Je voudrais juste pouvoir présenter un QR Code pour exécuter le script qui lance ou stoppe Motion (et toutes autres actions).

J’ai testé.
Je peux créer des QR codes et le Rpi sait les lires avec zbarcam
mais, il affiche le résultat sous forme de texte.
Par exemple, mon QR code que j’ai encodé pour Code QR — Wikipédia ne m’envoie pas vers le site mais affiche bêtement « Code QR — Wikipédia » dans le Terminal.

J’ai essayé d’encoder un script pour voir s’il est exécutable, mais … Non.
ça me renvoie « bash /home/pi/test.sh ».
Alors que si je lance ce script manuellement, ça ouvre bien une image avec gpicview.

Bref, je viens chercher des idées/conseils.

++

Hello,

Si il sait afficher, sait-il envoyer le résultat dans un fichier ?
Si oui, un script peut lire le contenu de ce fichier en boucle toute les x secondes et quand il reconnaît l’instruction, il exécute une commande ?

A+

Salut,

La commande zbarcam voit, lit, décode le QR Code puis affiche/envoie le résultat dans le terminal, mais n’exécute pas la commande.

pourtant, ça doit fonctionner puisque ce mec utilise cette fonction :

Bonjour,

Effectivement de ce que je vois ici, zbarcam ne lance rien comme commande (zbarcam(1) - Linux man page)
Il faut passer par une étape intermédiaire pour récupérer le QRcode et lancer un programme. Je pense que la soluce est dans qrplay.py. Voir la fonction start_scan qui lance une boucle infinie de lecture du qrcode.

A+

Yep,

C’est ce que je craignais …
J’ai commencé à afficher qrplay hier soir (début de nuit) et laissé tomber.
Faut dormir parfois :-s

Bon, ben … je vais devoir apprendre le Python une de ces nuits !

Merci pour ton intervention.

Je ne passe pas en résolu car pas résolu pour le moment !!!

Edit : de quoi passer mes prochaines nuits … :wink:

https://openclassrooms.com/courses/apprenez-a-programmer-en-python

Bonjour,

Même si je recommande fortement l’apprentissage de Python, il doit bien être possible de faire un truc qui ressemble en Bash ou autre langage.
Si la sortie de la lecture peut aller dans un fichier, il suffit d’exécuter la commande.

#!/bin/bash 
touch /tmp/zbar.txt
while true
do CMD=`cat /tmp/zbar.txt`
     if [[ $CMD != $LAST_CMD ]]
     then $CMD
     fi 
     LAST_CMD="$CMD"
   sleep 1
done 

Après c’est pour test… C’est pas dit que ça marche du premier coup.

A+

Hello,

J’ai réinstallé Raspbian propre (j’avais testé d’autres trucs) et zbar.

J’ai bien créé ton script (appelé jelopo.sh évidemment).

Je lance le script bash jelopo.sh
Je lance zbarcam --prescale=300x200

Et … Rien …

En fait, qd je présente un QR Code à la caméra, le texte apparait dans le terminal où est lancé la boucle zbarcam --prescale=300x200 mais pas dans tmp/zbar.txt (le fichier existe mais est vide et reste vide).

Je cherche comment y remédier.

@+

Bonjour,

Merci pour la partenité du nom du script.

Déjà vérifier le fonctionnement du script en injectant à la main quelques commandes « sympa » (des commandes qui ne risquent rien) dans le fichier /tmp/zbar/txt.

echo "uname -a" > /tmp/zbar.txt
echo "ls /tmp" > /tmp/zbar.txt

Il faut que zbarcam écrive dans le fichier /tmp/zbar.txt donc rediriger la sortie standard. Essayer ceci:

zbarcam --prescale=300x200 | cat > /tmp/zbar.txt

Creuser un peu aussi pour les options de zbarcam, pour ajuster le format de la sortie si nécessaire.

Bon courage
A+

Yo,

Juste retour des choses :slight_smile:

Oui, oui, il fonctionne ;j’avais noté sudo apt-get update dedans :wink:
Mais il joue la ligne 1 à chaque sollicitation sans prendre en compte les ligne suivante.
Si tu montres QR Code 1, /tmp/zbar.txt est enrichi d’une ligne.
Ensuite, tu montres le QR code 2 et la seconde ligne est écrite.
Mais il essaye de jouer depuis le début en repassant pas la ligne 1.
Et il s’arrête à l’espace entre ‹ apt-get › et ‹ update › ; je dois modifier mes QR-Codes.

Le basculement fonctionne mais l’action ne peux être jouée car ça note tout ; il faut que je vire ‹ QR-Code: ›
QR-Code:apt-get update
QR-Code:sudo bash /home/pi/test.sh

Je poursuis sur cette piste pour le moment car j’ai très peu de temps entre le travail, les enfants et diverses interventions à préparer.
Mais le script python me parait être le but réel (faut que je commence par l’apprendre)

@+

Bon ben c’est déjà mieux, reste plus que quelques coups de tournevis…
Essayer de modifier CMD, on lit que la dernière ligne du fichier, et on supprime tout ce qu’il y a avant les « : »
ATTENTION dans ce cas, toute commande contenant des « : » ne sera pas interprétée entièrement. Ceci dit il y en a pas des masses !!!

do CMD=`tail -1 /tmp/zbar.txt | cut -f 2 -d ":"`

Happy hack.

1 « J'aime »

Yo,

Et bien, Jelopo; t’es mon poto !
ça roule impecc.

Je suis un peu honteux puisque par manque de temps et par inaccessibilité de l’ordi familial, je n’y ai pas bossé du week-end.

Et là, que vois-je ?
LA réponse ; LA très bonne réponse !

Bon, faudrait apprendre le python mais ça fonctionne !
j’ouvre un lien, je lance une install, je fais la mise à jour, …
Bref, nickel, ce code fonctionne.

Un ENORME merci !

Au plaisir. Prochaine étape, migrer ce bout de code en Python, ce sera plus classe.
Pour se former en Python, je conseille les ouvrages de Gérard Swinnen et de Vincent Le goff.

A+

Hello,

Jamais rien appris avec des bouquins :blush: (en informatique)

J’ai relevé ces liens :

https://openclassrooms.com/courses/apprenez-a-programmer-en-python/qu-est-ce-que-python

Et surtout 1. Mise en bouche — Documentation Python 3.5.10

Mais je note tes références !
Merci,