Calcetines azules

Arduino, Rasperry y algo más

Mes: abril 2017

Seguimos con la temperatura y la humedad

Uno de los problemas es la necesidad de usar «tempered» con sudo. Para evitarlo vamos a mover las librerías y el programa a una de las carpetas que usa el sistema para buscar programas y librerias y a añadir una regla para permitir el uso del USB.

Nos movemos a la carpeta donde hemos compilado tempered y hacemos como root lo siguiente:

cp ./libtempered-util/libtempered-util.so.0 /usr/local/lib
cp ./libtempered/libtempered.so.0 /usr/local/lib/
ldconfig
cp ./tempered /usr/local/bin
nano /etc/udev/rules.d/88-tempered.rules

y ponemos

SUBSYSTEMS==»usb», ATTRS{idVendor}==»0c45″, ATTRS{idProduct}==»7402″, GROUP=»users», MODE=»0666″

cerramos el archivo, salimos de root y como el usuario que queremos que ejecute tempered ponemos:

 

sudo usermod -a -G users $USER
sudo service udev restart

Y ya está. Ya podemos usar tempered como otro usuario diferente a roo y dese cualquier sitio.

Uso del sensor de temperatura y humedad

El sensor que voy a usar es este:

Al hacer un lsusb se identifica como:  0c45:7402 Microdia TEMPerHUM Temperature & Humidity Sensor
 
Despues de mucho buscar encontré la forma de hacerlo funcionar. Toda la información está sacada de aquí. El problema viene que es una nueva versión (TEMPerHumM12V1.3) basada en otro chip.

Lo primero es instalar las dependencias:

sudo aptitude install libhidapi-hidraw0 libhidapi-libusb0 libudev-dev libusb-1.0.0-dev libfox-1.6-dev autoconf cmake libtool dh-autoreconf

Es posible que sobre alguna. Y si se usa otra distro que no sea Raspbian puede que falte algo.
Preparamos un directorio para clonar el git y compilar. Cambiamos a ese directorio y clonamos el repositorio:

sudo git clone git://github.com/edorfaus/TEMPered

Esto no nos vale directamente por que está preparado para otras versiones y modelos de sensores. Para poder usar el sensor tenemos que aplicar las correcciones que se detallan en este commit.
Hay que sustituir un archivo que modifican y añadir otros dos. Por comodidad dejo los aquí.

Ya solo nos queda compilar. Para ello seguimos las instrucciones proporcionadas en el propio proecto:

cd TEMPered

 ccmake .

make

Con esto ya lo tenemos todo listo, cambiamos al directorio utils y ejecutamos:

sudo ./tempered

Nos aparecerá la informacion del sensor:

/dev/hidraw1 0: temperature 35.99 °C, relative humidity 30.1%, dew point 15.7 °C

Hasta aquí todo bien. Pero como todo en esta vida, el programa tiene un par de fallos:

  1. A veces devuelve la información de la lectura anterior, por lo que solo nos podremos fiar de la segunda lectura.
  2. Otras veces no puede leerse la información del sensor, devolviendo «Could not open device: Read of data from the sensor failed: (null)». La solución es volver a repetir la lectura.

Obviamente la solución mas elegante no es repetir la lectura, sino que sería modificar el programa para evitar esos fallos, pero no se C, así que esa solución se la dejo a quién se anime.

Creado con WordPress & Tema de Anders Norén