Bonjour à tous,
Avez-vous déjà mis en oeuvre ce type de projet ?
J’ai suivi ce tuto pour mettre en oeuvre une sécurité à code.
https://raspberrypi-tutorials.fr/connecter-un-clavier-raspberry-pi-code-lock/
J’ai donc acheté une :
-raspberry pi W V1.1
-matrice 4x4
-nape de fils
Lien d’achat pour la matrice 4x4.
https://www.amazon.fr/AZDelivery-Matrix-Clavier-Arduino-compris/dp/B08B3JR8W9/ref=sr_1_16?__mk_fr_FR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&keywords=matrice+de+clavier+4x4&qid=1692689215&sr=8-16
Après avoir installé l’OS, j’ai choisi 8 pins disponible du connecteur J8 du raspberry pi W V1.1.
Voici le schématique.
https://datasheets.raspberrypi.com/rpizero/raspberry-pi-zero-w-reduced-schematics.pdf
Dans le code pour l’identification des chiffres/lettres, j’ai donc modifié.
ROW = [31, 33, 35, 37] // ce sont les N° de PIN pas N° de GPIO
COLUMN = [32, 38, 36, 40] // ce sont les N° de PIN pas N° de GPIO
Ensuite, j’ai executé le code principale mais je n’obtiens pas le résultat attendu en python3.
Le code ci-dessous est en python2.7 ou python3 ?
Auriez-vous des pistes ou déjà essayé ce tuto ?
Merci d’avance.
import time
import RPi.GPIO as GPIO
from keypad import keypad
GPIO.setwarnings(False)
if __name__ == '__main__':
# Initialize
kp = keypad(columnCount = 4)
# waiting for a keypress
digit = None
while digit == None:
digit = kp.getKey()
# Print result
print digit
time.sleep(0.5)
###### 4 Digit wait ######
seq = []
for i in range(4):
digit = None
while digit == None:
digit = kp.getKey()
seq.append(digit)
time.sleep(0.4)
# Check digit code
print(seq)
if seq == [1, 2, 3, '#']:
print "Code accepted"
bof
Août 22, 2023, 5:26
2
hello,
normal, c est en python 2.7 ! a priori en rajoutant des parenthèses autour de la valeur que tu veux printer, tu auras une version python3
exemple :
print(seq)
print ("Code accepted")
la présence de GPIO.setmode(GPIO.BOARD) dans https://raw.githubusercontent.com/rainierez/MatrixKeypad_Python/master/matrix_keypad/RPi_GPIO.py doit indiquer une reference au GPIO …
ce que je capte pas c est le nom RPi_GPIO.py est a la fois le nom du module de pipy et le nom du programme contenant la class keypad !
mais mon niveau en python est pas top …
Finalement je suis partie sur ce projet.
Il prend en compte une matrice 4x4.
https://peppe8o.com/connect-raspberry-pi-with-matrix-keypad-to-get-user-codes-input/
https://peppe8o.com/download/python/4x4MatrixKeypad.py
Maintenant je voulais récupérer le token renvoyé d’une commande linux.
os.system('rm cookies.txt')
arch = subprocess.check_output("curl -XPOST -c cookies.txt -d ...........")
print (arch)
Voici la sortie du print.
{"access_token":"eyJ0eXAI1NiJ9.eyJpc3Mic3MifQ.DDY71FpHgQ","access_token_expires":7200,"refresh_token":"eyJ0eXiJ9.eyVkz__N9kliGO4Q","refresh_token_expires":86400,"credentials":"auth=d}
Je voulais récupérer le résultat d’un split via le caractère ".
token_tmp = arch.split('"')
L’erreur retournée est la suivante, mais comment déclarer un objet type bytes ?
TypeError: a bytes-like object is required, not 'str'
Ensuite, l’idée est juste de récupérer l’access token.
token_auth = token_tmp[2]
print (token_tmp[2])
Merci pour vos retours.
bof
Août 23, 2023, 5:54
4
la sortie du print semble etre un type dict ( a part q"il manque une double quote a la fin de auth=d ! ) donc tu devrais pouvoir récupérer l’access_token en faisant:
a={"access_token":"eyJ0eXAI1NiJ9.eyJpc3Mic3MifQ.DDY71FpHgQ","access_token_expires":7200,"refresh_token":"eyJ0eXiJ9.eyVkz__N9kliGO4Q","refresh_token_expires":86400,"credentials":"auth=d"}
print(type(a))
access_token = a["access_token"]
print(access_token)
SOURCE:
W3Schools offers free online tutorials, references and exercises in all the major languages of the web. Covering popular subjects like HTML, CSS, JavaScript, Python, SQL, Java, and many, many more.