Conectar Nokia 5530 por bluetooth y RFComm para desarrollo en Python en Ubuntu 10.04
Primero que nada la mejor documentacion está en ingles en el wiki de desarrollo de Nokia http://wiki.opensource.nokia.com/projects/PyS60_Bluetooth_console
Este entorno ha funcionado en Ubuntu 10.04 con un Nokia 5530 y el python 2.0.0 de symbian.
Instalar librerias
Las librerias necesarias son
- 'hcitool' para encontrar el dispositivo
- 'sdptool' y 'sdpd' para registrar los puertos seriales que se van a utilizar
- 'rfcomm' para emular el puerto serial sobre bluetooth
- ''screen" para empezar a mandar datos por terminal
Instrucciones
Conectar el adaptador bluetooth y luego en la consola escribir:
$ hciconfig reset
Luego comprobar que el dispositivo se instaló o lo detectó bien
$ hcitool dev
Registrar el puerto serial (usar el canal 2. Por alguna razon, el canal 1 y 3 puede no funcionar la conexion)
$ sdptool add --channel=2 SP
Ahora poner el canal en escucha
$ rfcomm listen rfcomm2 2
Ahora asegurarte que el bluetooth en tu celular esté encendido, e ir a la aplicacion de Python y luego en las opciones seleccionar Bluetooth Console. Seleccionar los dispositivos disponibles ( en mi caso default host), si la operación es exitosa deberias ver lo siguiente en tu consola.
Waiting for conection on channel 2
Connection from 00:00:00:00:00:00 to /dev/rfcomm2
Press CTRL-C for hangup
Ahora abre otra terminal y escribe:
$ screen /dev/rfcomm2
Eso sería todo, la consola se debería poner limpia y ya deberias poder empezar a escribir tu codigo en python.
Happy Coding
Enlaces
Bluetooth Console
Como Actualizar un Div con Ajax y CakePHP 1.2
Empezaré suponiendo que tienes nociones básicas sobre CakePHP1.2 y sabes hacer de perdida un CRUD.
Agregar las librerías javascript
Cakephp tiene una buena integración con las librerías javascript de prototype y scriptaculous, las cuales debemos descargarlas primero desde la pagina de descarga de scriptaculous y la de descargas de prototype, la de prototype es un archivo js. Renombrar a prototype.js y ponlo en "app/webroot/js".
La librería de scriptaculous es un archivo .zip que contiene una carpeta src que a su vez contiene muchos archivos js los cuales debemos copiar y ponerlos también en la app/webroot/js.
Añadir los helpers javascript y ajax al controlador
Ahora necesitamos agregar los helpers de javascript y de ajax. Una opcion es agregarlos a cada controlador a como la vayamos necesitando o agregarlos al app_controller para que estén disponibles en todos los controladores.
class AppController extends Controller {
var $helpers = array('Html','Form','Javascript','Ajax');
}
<h3>Vistas</h3>
Cada vista que sue javascript debemos añadirle las siguientes etiquetas
<?php
echo $javascript->link('prototype');
echo $javascript->link('scriptaculous');
?>
<h2>Ajax 3 - testing ajax link and button</h2>
<?php
$link_array1 = array('controller'=>'tweets' ,'action'=>'simple_ajax1_fcn');
//the function to execute: function ajaxfcn1 in controller tests
$link_array2 = array( 'update' => 'divout');
echo ($ajax->link('this an ajax link', $link_array1,$link_array2));
echo "<br/><br/>";
?>
<br/>
<div id="divout">
the div to update
</div>Controlador
<?php class TweetsController extends AppController { var $name = 'Tweets'; var $uses = array(); // prevent cake from looking for a database model var $helpers = array('Html','Ajax','Javascript'); function index() { } function simple_ajax1_fcn() { $this->autoRender = false; echo "text from ajax call"; } }?>
Configurar Eclipse Para Colorear Sintaxis De Los Archivos .CTP de CakePHP
CakePHP 1.2 maneja las vistas con una extensión .CTP lo cual hace que no puedas ver coloreado los archivos, que son en esencia HTML y PHP combinado.
Para solucionar esto debemos hacer lo siguiente en el Eclipse:
Window -> Preferences -> General -> Content Type -> Text
Y en el recuadro seleccionamos donde dice HTML, al hacer esto, un poco mas abajo está el botón Add y después de presionarlo escribimos *.ctp y damos aceptar.
Ahora así como seleccionamos HTML seleccionaremos PHP Source File, y añadimos de la misma forma.
Damos aceptar dos veces, y automáticamente los nuevos archivos que abras aparecerán coloreados.
Enviar archivo a travez de bluetooth y python en linux ubuntu
Primero que nada para empezar a trabajar ocupamos las herramientas, para eso necesitamos tener instalado la librería lightblue para python esto lo podemos lograr con
sudo apt-get install lightblue
también hay otras librerias que se necesitan pero seguramente ya las tienes instaladas.
Ahora ya solo corre la consola de python, abre una terminal escribe python y listo.
import lightblue lightblue.finddevices() # devolverá la mac y nombre de los dispositivos detectados lightblue.findservices() #devolverá la mac, canal y protocolo de comunicacion disponibles de los dispositivos, yo usé el canal 9 que dice OBEX Object Push cliente = lightblue.obex.OBEXClient('00:1A:DC:8C:51:2D',9) #creamos la variable con la direccion mac y el canal del dispositivo cliente.connect() #nos conectamos al dispositivo nos aparecerá una respuesta como esta #<OBEXResponse reason='OK' code=0x20 (0xa0) headers={}> putresponse = cliente.put({"name": "b.txt"}, file("b.txt", 'rb')) #especificamos que le enviamos al cliente cliente.disconnect()
Y listo con eso abremos enviado un archivo de nota al teléfono en mi caso ya estaba como amistoso, desconozco si se puede con dispositivos desconocidos o como será la respuesta.
Select o SelectTag en CakePhp 1.2
Me confundí un poco a la hora de ocupar un selectTag en cakephp 1.2, y al buscar no lo encontré rapido, viendo la API me funcionó de la siguiente manera.
select(Nombre,$options(array))
echo $form->select('tipocuenta',array(0=>'Cuenta Corriente',1=>'Cuenta de Ahorros'));