[Tutoriel] Gérer ses colonies avec un Raspberry Pi

Avatar de l’utilisateur
Sareladen
Larve 3
Larve 3
Messages : 44
Inscription : mar. 28 mars 2017 21:25
Localisation : Ille-et-Vilaine (France)
Genre :
Contact :

Re: [Tutoriel] Gérer ses colonies avec un Raspberry Pi

Message non lu par Sareladen »

Tu fais "python2 simpletest.py" pour le lancer avec Python 2, et tu fais "python3 simpletest.py" pour le lancer avec Python 3.

Tu pourrais me dire quelle est la version de Python qui apparaît sur la première ligne quand tu tapes juste "python" tout seul dans la console aussi ?
Avatar de l’utilisateur
Calvin
Gyne Fécondée
Gyne Fécondée
Messages : 1213
Inscription : lun. 5 août 2013 10:41
Localisation : Yvelines (France)
Genre :

Re: [Tutoriel] Gérer ses colonies avec un Raspberry Pi

Message non lu par Calvin »

Je viens d'effectuer les tests que tu m'as demandé :

J'ai ouvert simpletest.py avec Python 2 et 3.

Son code est :

Code : Tout sélectionner

#!/usr/bin/python

# Copyright (c) 2014 Adafruit Industries

# Author: Tony DiCola

#

# Permission is hereby granted, free of charge, to any person obtaining a copy

# of this software and associated documentation files (the "Software"), to deal

# in the Software without restriction, including without limitation the rights

# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell

# copies of the Software, and to permit persons to whom the Software is

# furnished to do so, subject to the following conditions:

#

# The above copyright notice and this permission notice shall be included in

# all copies or substantial portions of the Software.

#

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,

# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE

# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER

# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,

# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN

# THE SOFTWARE.

 

# Can enable debug output by uncommenting:

#import logging

#logging.basicConfig(level=logging.DEBUG)

 

import Adafruit_BMP.BMP085 as BMP085

 

# Default constructor will pick a default I2C bus.

#

# For the Raspberry Pi this means you should hook up to the only exposed I2C bus

# from the main GPIO header and the library will figure out the bus number based

# on the Pi's revision.

#

# For the Beaglebone Black the library will assume bus 1 by default, which is

# exposed with SCL = P9_19 and SDA = P9_20.

sensor = BMP085.BMP085()

 

# Optionally you can override the bus number:

#sensor = BMP085.BMP085(busnum=2)

 

# You can also optionally change the BMP085 mode to one of BMP085_ULTRALOWPOWER,

# BMP085_STANDARD, BMP085_HIGHRES, or BMP085_ULTRAHIGHRES.  See the BMP085

# datasheet for more details on the meanings of each mode (accuracy and power

# consumption are primarily the differences).  The default mode is STANDARD.

#sensor = BMP085.BMP085(mode=BMP085.BMP085_ULTRAHIGHRES)

 

print('Temp = {0:0.2f} *C'.format(sensor.read_temperature()))

print('Pressure = {0:0.2f} Pa'.format(sensor.read_pressure()))

print('Altitude = {0:0.2f} m'.format(sensor.read_altitude()))

print('Sealevel Pressure = {0:0.2f} Pa'.format(sensor.read_sealevel_pressure())) 

Comme on peut le voir, il est codé pour du Python 3, une fois ouvert avec cette édition voici le message d'erreur :

Code : Tout sélectionner

Traceback (most recent call last):

  File "/home/pi/Adafruit_Python_BMP/examples/simpletest.py", line 27, in <module>

    import Adafruit_BMP.BMP085 as BMP085

ImportError: No module named 'Adafruit_BMP'

Et par acquis de conscience, j'ai essayé avec l'IDLE de Python 2, mais, c'est encore pire (étant donné que le code n'est pas compatible) :

Code : Tout sélectionner

Traceback (most recent call last):

  File "/home/pi/Adafruit_Python_BMP/examples/simpletest.py", line 37, in <module>

    sensor = BMP085.BMP085()

  File "build/bdist.linux-armv7l/egg/Adafruit_BMP/BMP085.py", line 67, in __init__

    self._device = i2c.get_i2c_device(address, **kwargs)

  File "build/bdist.linux-armv7l/egg/Adafruit_GPIO/I2C.py", line 64, in get_i2c_device

    return Device(address, busnum, i2c_interface, **kwargs)

  File "build/bdist.linux-armv7l/egg/Adafruit_GPIO/I2C.py", line 97, in __init__

    self._bus = Adafruit_PureIO.smbus.SMBus(busnum)

  File "build/bdist.linux-armv7l/egg/Adafruit_PureIO/smbus.py", line 97, in __init__

    self.open(bus)

  File "build/bdist.linux-armv7l/egg/Adafruit_PureIO/smbus.py", line 122, in open

    self._device = open('/dev/i2c-{0}'.format(bus), 'r+b', buffering=0)

IOError: [Errno 2] No such file or directory: '/dev/i2c-1'
TUER LE TEMPS EN ÉCRIVANT N'EST PAS UN CRIME
Avatar de l’utilisateur
Sareladen
Larve 3
Larve 3
Messages : 44
Inscription : mar. 28 mars 2017 21:25
Localisation : Ille-et-Vilaine (France)
Genre :
Contact :

Re: [Tutoriel] Gérer ses colonies avec un Raspberry Pi

Message non lu par Sareladen »

Je ne sais pas d'où tu sors que ce n'est pas compatible avec Python 2, il y a 6 lignes de vrai code à tout casser et aucune ne fait appel à des fonctionnalités spécifiques de Python 3. Le "print" avec des parenthèses est obligatoire avec Python 3, mais marche très bien avec Python 2 bien qu'on puisse aussi omettre les parenthèses. :)

Tu interprètes mal les messages d'erreur aussi, en Python 3 il te dit qu'il ne trouve pas le module que tu cherches : c'est normal, tu ne l'as pas installé pour Python 3 mais pour Python 2. En effet, en ouvrant le script avec Python 2, il le trouve ce fameux module ! Tu le vois parce que dans le traceback qu'il te met quand il plante il fait appel à du code qui vient avec ce module. Le problème qu'il a est d'ordre plus fondamental, il n'arrive pas à détecter ton baromètre. Pire, il n'arrive même pas à avoir accès à l'I2C, que ton ordinateur est censé utiliser pour communiquer avec ! Si le script n'avait pas été compatible avec Python 2, tu aurais eu un Syntax error ou un truc du genre qui aurait fait référence à une ligne du script même, pas une ligne d'une bibliothèque extérieure.

Normalement ça se corrige en lançant la commande suivante avant d'éditer quelques fichiers :

Code : Tout sélectionner

sudo apt-get install i2c-tools

Après, dans /etc/modules, il faut ajouter aux deux dernières lignes :

Code : Tout sélectionner

i2c-bcm2708 
i2c-dev
Si le fichier /etc/modprobe.d/raspi-blacklist.conf existe, il faut lui retirer les deux lignes suivantes (ou ajouter un # devant) :

Code : Tout sélectionner

blacklist spi-bcm2708
blacklist i2c-bcm2708
Dans /boot/config.txt, ajoute enfin :

Code : Tout sélectionner

dtparam=i2c1=on
dtparam=i2c_arm=on

Après ça il s'agit de redémarrer. Normalement, ton script devrait fonctionner si tu le lances avec Python 2 du coup, si ce n'est toujours pas le cas lance les deux commandes suivantes et dis-moi ce que ça te donne :

Code : Tout sélectionner

sudo i2cdetect -y 0
sudo i2cdetect -y 1

Si une des deux te donne un petit 77 tout en bas à droite c'est que ton Raspberry arrive au moins à communiquer avec le baromètre. :)
Avatar de l’utilisateur
Calvin
Gyne Fécondée
Gyne Fécondée
Messages : 1213
Inscription : lun. 5 août 2013 10:41
Localisation : Yvelines (France)
Genre :

Re: [Tutoriel] Gérer ses colonies avec un Raspberry Pi

Message non lu par Calvin »

Les fichiers ne peuvent pas être modifiés. Pour ta deuxième et quatrième étape, les ".conf" s'ouvrent avec l'éditeur de texte mais, lors de l'enregistrement, on m'indique un message d'erreur pour dire que ce n'est pas éditable. J'ai essayé avec LibreOffice Writter mais, c'est en Read-only.

Et enfin, pour la troisième étape, le fichier existe mais, est vide...

La dernière étape a renvoyé un message d'erreur dans les deux cas.

En tout cas, merci de ton aide...
Dernière modification par Libertango le ven. 14 avr. 2017 12:01, modifié 1 fois.
Raison : "Ne" + "pas". Merci.
TUER LE TEMPS EN ÉCRIVANT N'EST PAS UN CRIME
Avatar de l’utilisateur
Sareladen
Larve 3
Larve 3
Messages : 44
Inscription : mar. 28 mars 2017 21:25
Localisation : Ille-et-Vilaine (France)
Genre :
Contact :

Re: [Tutoriel] Gérer ses colonies avec un Raspberry Pi

Message non lu par Sareladen »

Pour éditer les fichiers comme ça il faut utiliser la commande "sudo" (à chaque fois que tu n'as pas le droit d'éditer un truc en fait), je ne sais pas si tu sais utiliser les éditeurs de texte en ligne de commande comme nano ou vim, ils sont assez durs à prendre en main au début mais au moins tu es sûr que ça marche en faisant "sudo nano /etc/modules" en ligne de commande. Nano est le plus simple à utiliser je trouve, et il est largement suffisant juste pour ajouter deux petites lignes comme tu dois faire à chaque fois ici.

Si tu ne te sens pas de faire ça, tu peux aussi taper "sudo raspi-config" en ligne de commande et naviguer dans "paramètres avancés" -> "I2C" -> "oui" -> "oui". En faisant ça le Raspberry devrait automatiquement éditer les fichiers que j'ai mentionnés au-dessus. Une fois que c'est fait tu peux redémarrer et retenter les deux dernières commandes du message précédent, c'est normal qu'elles donnent des messages d'erreur si tu as pas pu faire les étapes précédentes. :mrgreen:
Dernière modification par Libertango le ven. 14 avr. 2017 12:01, modifié 1 fois.
Raison : "Tu as" et non cet horrible "T'as". Merci.
Répondre Nouveau sujet

Revenir à « Autres »