Étape 4: Tinker
Nous analyserons ici que chaque partie du script le fait, vous pouvez le comprendre et modifiez-le pour vos projets.
Tout d’abord, il faut ouvrir le port série. Le script utilise le module PySerial pour cela.
import serial ser = serial.Serial('/dev/ttyAMA0', 9600, timeout=1)
Maintenant, nous allons interroger le capteur pour la valeur build. C’est une valeur statique qui identifie la version de la EzTemp.
Tout d’abord, il faut envoyer la commande « v » à la EzTemp :
ser.write("v")
La valeur build est une valeur de 2 octets, donc nous devrions nous attendre une réponse de 4 octets (1 octet echo + build 2 octets + 1 octet checksum) de la EzTemp. Maintenant lire la réponse :
s = ser.read(4)
Données sont reçues en octets distincts, même si l’identificateur de version est une valeur de 2 octets. Pour « reconstruire », nous devons déplacer l’octet le plus significatif de 8 bits vers la gauche et puis ajoutez l’octet le moins significatif. De cette façon nous restaurer correctement le champ de 2 octets :
version = (ord(s[1]) << 8) + ord(s[2])
Vous pouvez utiliser la phrase ci-dessus chaque fois que vous recevez une valeur de 2 octets de EzTemp.
La dernière ligne de ce bloc affiche simplement le résultat à l’écran :
print 'EzTemp&RH build ' + str(version)
Le reste du script ne les mêmes valeurs de capteur interrogation de la EzTemp. Nous allons voir la valeur de la température à titre d’exemple :
SER.Write("d") ser.write("d") s = ser.read(4) temperature = (ord(s[1]) << 8) + ord(s[2])
imprimer "température:" + str(1.0*temperature/10) + « C »
Dans ce cas, nous utilisons la commande avait « d’interroger la température en degrés celsius avec 0.1ºC précision. Comme vous pouvez le voir, la capture de la réponse est assez similaire. La différence est sur comment gérer la valeur retournée.
Lorsque la température ou tout autre paramètre avec une précision de 0.1, nous nous interrogeons, les données sont reçues comme un entier de 2 octets en dixièmes de la valeur. Il s’agit, si la température est 21.5ºC, la EzTemp reçoit la valeur 215 et le script utilisateur doit diviser par 10 pour obtenir la température réelle.
Toutes les valeurs ont une commande de précision entier si vous ne désirez pas décimales. En utilisant ces commandes easens lecture et le traitement des données retournées. Vérifier la feuille de données pour la liste complète des commandes.