Raspberry Pi – Usos de Bluetooth
Molt bones, en aquest article volia documentar alguna utilitat que li treia a una de les Raspberry que anà per casa, tinc un dispositiu mini USB bluetooth que el connecto a la Pi, us passo un parell de scripts per si us puguin interessar: Un primer ens detectarà si estem per executar una acció; i el segon connectarà un altaveu sense fil!
Como os comenté hace tiempo, iré posteando scripts curiosos que he ido recopilando para todo el sistema de domotica que monté en casa, espero que algo os pueda servir. Com us deia, el primer script usará el dispositivo USB bluetooth connectat en la Raspberry para buscarme, como la Pi está en casa, when me encuentre ejecutará un comando (en el meu cas desactivarà l'alarma de casa). I el segon script connectará el mateix dongle de bluetooth de la Pi a un altavoz bluetooth inalámbrico, para mandarle audios, tipo música, radio o algún comandament que quiero que me hable.
El primer de tot serà instal·lar els requisits, i verificar la MAC del dispositiu, si no saldrà a la nostra llista, verificaremos que tenemos los drivers carregados, para saber el ide de vuestro dispositivo lo buscáis con ‘lsusb’ .
[sourcecode]sudo apt-get install bluez python-bluez
hcitool dev
Devices:
hci0 00:24:94:AA:XX:XX[/sourcecode]
Mi primera necesidad era intentar automatizar el sistema de alarma de casa, y esto es muy fácil, si mi móvil está en casa entonces la alarma se debe desactivar, cuando mi móvil no esté, la alarma de casa se debe armar. Como? Facilísimo si tenemos un Android, ya que estos responden a PING siempre, así que en nuestro DHCP de casa hacemos una asignación de MAC y con cualquier script le pingeamos, que no responde… monta la alarma! que responde… desmonta la alarma! Pero yo tengo un iPhone y esto no es tan sencillo, como sabréis, los iPhones en modo chillout no responden a PINGs, o sigui, casi nunca, a menos que lo tengas desbloqueado. Solución… usar el bluetooth! Per cert, per als curiosos, posar l'alarma no és més que sensors de moviment que tinc per tota la casa, que quan l'alarma està posada envien senyal a una càmera per gravar vídeos (de 10s) i me'ls envia per correu electrònic, a més de sonar pels altaveus una sirena d’aquestes de submarí =). Aquests mateixos sensors, quan l'alarma està desconnectada em serveixen per encendre les diferents llums de la casa segons vaig caminant.
Script en Python per comprovar si alguna cosa respon per bluetooth, jo li dic ‘busca_hector.py’, i busca el meu iPhone constantment, un cop el troba executa un script i s’adorm 5 minuts:
[sourcecode]#!/usr/bin/python
import bluetooth
import time
HectorIN = 0
HectorOUT = 0
print "In/Out Board"
while True:
print "Buscando " + time.strftime("%a, %d %b %Y %H:%M:%S", time.gmtime())
result = bluetooth.lookup_name(‘A0:18:28:59:XX:XX’, timeout=5)
if (result != Cap):
print "Hector: in"
if HectorIN == 0:
HectorIN = HectorIN + 1
import subprocess
subprocess.call([‘bash’,’/home/pi/alarma_apaga.sh’])
subprocess.call([‘bash’,’/home/pi/textoAvoz.sh’,’Benvingut a casa Hector’])
HectorOUT = 0
time.sleep(300)
else:
print "Hector: out"
HectorIN = 0
HectorOUT = HectorOUT + 1
print "Hector IN:"
print HectorIN
print "HectorOUT"
print HectorOUT
print "——"[/sourcecode]
Podrem provar-ho executant:
[sourcecode]python /home/pi/busca_hector.py[/sourcecode]
Bé, como sabréis, hi ha diverses maneres de fer que aquest script de Python s’iniciï amb la Pi, el més fàcil és posar-lo al cron fàcilment, ejecutamos 'crontab -e’ i hi afegim ‘@reboot python /home/pi/busca_hector.py‘
Connexió d’un altaveu sense fils,
Fins aquí per detectar qualsevol dispositiu bluetooth, amb això podrem detectar qualsevol dispositiu com un mòbil i executar qualsevol acció. Ara li donarem més ús al dongle Bluetooth, ja que tenia un altaveu bluetooth per aquí, os muestro que sería necesario ejecutar para conectar a la Raspberry dicho altavoz inalámbrico:
Al emparejar dará error si no editamos primeramente el fichero ‘sudo vim /usr/bin/bluez-simple-agent’, remplazando la palabra ‘KeyboardDisplay’ por ‘DisplayYesNo’
Bé, comenzamos un escaneo a ver si ve nuestro altavos, ejecutamos ‘hcitool scan’:
[sourcecode]Scanning …
00:58:50:52:98:48 H88[/sourcecode]
Ahora emparejaremos los dispositivos, per a això, si tiene algún botón el altavoz lo pulsaremos y ejecutamos:
[sourcecode]sudo bluez-simple-agent hci0 00:58:50:52:XX:XX
Release
New device (/org/bluez/2405/hci0/dev_00_58_50_52_XX_XX)[/sourcecode]
Nos conectamos al altavoz con:
[sourcecode]sudo bluez-test-audio connect 00:58:50:52:XX:XX[/sourcecode]
Hacemos que confie en nuestro altavoz:
[sourcecode]sudo bluez-test-device trusted 00:58:50:52:XX:XX yes[/sourcecode]
Y verificamos que ha cambiado a 1:
[sourcecode]sudo bluez-test-device trusted 00:58:50:52:XX:XX[/sourcecode]
Modificamos el fichero '.asocundrc’ amb: 'vim ~/.asoundrc’
[sourcecode]pcm.bluetooth {
tipus bluetooth
dispositiu00:58:50:52:XX:XX
}[/sourcecode]
També editem ‘audio-conf’ amb: ‘vim /etc/bluetooth/audio.conf’ i hi afegim:
[sourcecode]Disable=Media
Enable=Socket[/sourcecode]
También, instal·laré una aplicació per poder reproduir fàcilment qualsevol mp3 o m3u, ja siguin fitxers locals o URLs, com pot ser una emissora de ràdio en línia =)
[sourcecode]sudo apt-get install bluez-alsa mpg321
sudo /etc/init.d/bluetooth restart[/sourcecode]
Per reproduir un fitxer mp3 provarem amb:
[sourcecode]mpg321 -a bluetooth -g 15 canco.mp3[/sourcecode]
Per reproduir .m3u o llistes, n'hi haurà prou amb posar l'adreça:
[sourcecode]mpg123 -@ http://radio7.oye.fm:7501/listen.pls -a bluetooth[/sourcecode]
Podem buscar l'emissora de ràdio que més ens agrad i a Internet, que hi ha un munt de llistes! Us poso un parell d'exemples, Ràdio 3 –> http://radiolive.rtve.es/radio3.m3u & Radio Euskadi –> http://www.listenlive.eu/radioeuskadi.m3u












































