Fue Alexander Graham Bell el verdadero inventor del teléfono?

En la actualidad todos asumimos como una verdad indiscutible que Alexander Graham Bell sea el inventor del teléfono, pero a mediados del siglo XIX, cuando aún no existía este artefacto, hubo un inusitado movimiento en torno a este posible invento que muchos ya avisoraban como el “telégrafo parlante”. Esto ocasionó que varios entusiastas trabajen en simultáneo sobre la misma idea, lo que finalmente se convirtió en una carrera maratónica para ver quién llegaba primero a la oficina de patentes. 

Lo que leerán a continuación está basado en el primer capítulo de un libro que publiqué hace algunos años y que he creído propicio compartir. En él notarán el trepidante desarrollo de acontecimientos que terminó en lo que hoy llamamos teléfono y también una de las más grandes polémicas en cuanto a patentes de todos los tiempos, tan importante que el Congreso de los Estados Unidos de América se pronunció al respecto más de un siglo después.

Transcurría el año de 1849 en la Habana, en ese entonces todavía colonia española. Antonio Meucci, químico y médico italiano, se había mudado allí con su esposa en busca de trabajo en uno de los teatros más importantes del continente, el Teatro Tacón. Le habían encomendado la misión de construir un sistema de purificación de agua para el teatro.

Trabajaba en sus diseños en una oficina que había adecuado en la planta baja de su propia casa y de cuando en cuando subía a su dormitorio a constatar el estado de salud de su esposa, quien sufría de dolores a causa del reumatismo. Supongo que como todo inventor, vio en esa incomodidad una oportunidad de solucionar un problema y tuvo la idea de construir un dispositivo para poderse comunicar con su esposa sin tener que subir al dormitorio. Instaló un cablerío desde su oficina hasta su cuarto y después de algunos intentos fallidos logró escuchar la voz de su esposa saliendo de un rudimentario diafragma. El invento fue motivo de sorpresa para sus vecinos y la población en general, pero en la Cuba de ese entonces no había una comunidad científica importante que se hiciera eco de su invento y luego de unos años, decidió mudarse a USA. Así fue como en 1854, el mismo Meucci ya con su dispositivo perfeccionado y con varios diagramas dibujados por él mismo, hace una nueva demostración de su invención en la ciudad de Nueva York.

{focus_keyword} Fue Alexander Graham Bell el verdadero inventor del teléfono? Meucci 1

Pero mientras Meucci se las ingeniaba para perfeccionar su teléfono, del otro lado del mundo, en Francia, se tejía una historia no menos interesante. Un modesto trabajador de la compañía telegráfica se encontraba realizando mejoras a la red de telégrafos y se le ocurrió un método para convertir la voz en electricidad. En realidad se puede decir que se trataba de un precursor de lo que hoy conocemos como micrófono. El nombre de este hábil ingeniero francés era Charles Bourseul.

La curiosidad de Bourseul no quedó allí, también se imaginó un sistema telefónico con todos sus componentes e inclusive se preocupó de redactar su idea y enviarla a una conocida revista parisina de la época, llamada L’Illustration. Los directivos de la revista no dudaron en publicar sus escritos. Lo curioso de todo esto es que la publicación se realizó casi en simultáneo con la demostración de Meucci en Nueva York, en 1854.

El único problema de Bourseul es que se preocupó de construir un prototipo funcional de su aparato transmisor de voz, pero nunca llevó a cabo el experimento completo y hasta donde sabemos, nunca terminó de construir la parte faltante: el receptor o parlante. Aparentemente comenzó su construcción, pero luego de unos cuantos intentos fallidos, perdió el interés por terminarlo. Lo único que a ciencia cierta queda como constancia de su aventura es el ejemplar de aquella revista parisina.

Tiene que haber sucedido alguna suerte de alineación de los planetas ese año, pues parece que un ejemplar de aquella revista cayó en las mejores manos posibles. Las del brillante y meticuloso ingeniero alemán Johann Philipp Reis.

Reis trabajaba como profesor de física en ese entonces y la idea lo capturó de inmediato. Decidió continuar con la idea de Brouseul y construir toda una serie de prototipos de la manera más prolija y obsesiva imaginable. Al principio lo hizo de forma rudimentaria, trabajando en un improvisado laboratorio en el patio de su casa y aprovechando materiales comunes de forma astuta y creativa. Usó corcho, una aguja de tejer y hasta la “piel” de una salchicha como membrana de su aparato transmisor. Talló un conjunto de orejas humanas en madera, para entender cómo ésta captaba las ondas sonoras y poder así emular su comportamiento. Realizó varias versiones de todos los componentes para encontrar la mejor alternativa de cada uno. Documentó todo el proceso de manera muy paciente y gracias a ello hoy poseemos toda una serie de hermosas ilustraciones de su trabajo.

{focus_keyword} Fue Alexander Graham Bell el verdadero inventor del teléfono? reis

Para construir el componente inconcluso de Brouseul tuvo una ingeniosa idea, visitó a su amigo el Profesor Peter, maestro de música y le pidió prestado su violín. Peter no sólo se lo prestó sino que le regaló un violín que no usaba. Hizo que una suerte de electroimán rozara sus cuerdas y después de algunos intentos, logró arrancarle sonidos al instrumento. El violín de por sí tiene una cámara acústica resonante y consiguió amplificar los sonidos de tal forma que se escuchó algo muy parecido a la voz.

Pero esto fue sólo el principio, al poco tiempo reemplazaría el violín por una caja resonante construida por él mismo y luego mejoraría aún más el dispositivo de recepción haciéndolo más compacto. Todo este proceso demoró varios años y es así como en 1860 Reis termina de perfeccionar su aparato telefónico y documenta su logro muy bien. Cabe destacar que fue el mismo Reis quien decide darle el nombre de “teléfono” a su recién nacida criatura, acuñando así el término. Para poner las cosas en perspectiva, en la época que Reis terminó su invento Graham Bell era un niño de 13 años.

Los meses siguientes fueron frustrantes. Reis notificó de su invento a varias revistas y gacetas científicas, obteniendo solo rechazo o respuestas incrédulas que subestimaban la importancia de su invención. En 1862 envió un artículo a la revista alemana Annalen, y su editor, el profesor Poggendorff se negó a publicar el artículo aduciendo que era científicamente imposible crear tal cosa. Fue tan sólo en 1864 cuando Reis decide jugárselas y hacer una demostración en vivo a los más reputados científicos alemanes. La respuesta positiva fue inmediata, incluso el mismo Poggendorff, le ofreció publicar su artículo, para de esta forma reparar la equivocación anterior, pero Reis, ahora hinchado de orgullo se opuso.

{focus_keyword} Fue Alexander Graham Bell el verdadero inventor del teléfono? reis 1

Johann Philipp Reis  pasó los siguientes dos años tratando de impresionar al público alemán, pues había calado en la esfera científica pero aun su invento no era conocido por las masas. Lamentablemente el tiempo no le alcanzó y pronto cayó enfermo y tuvo que bajar su ritmo de vida. Sólo pudo continuar con su trabajo de profesor, alternando su tiempo con esporádicas apariciones ante la comunidad científica. Se cuenta que instaló una línea telefónica hasta el salón donde impartía clases y los alumnos trataban de no decir cosas inapropiadas en su ausencia por temor a que los estuvieran escuchando a través del teléfono del profesor Reis. Murió en 1874, poco menos de 10 años después de su demostración a la élite científica germana y tan sólo un año antes de la patente de Graham Bell, luego de lo cual sus logros fueron prácticamente relegados al olvido.

Ahora hagamos un breve paréntesis aquí para hacernos una pregunta. Ustedes piensan que a estas alturas hay suficientes actores involucrados? Pues, qué les diré, hay todavía mucha más “tela por cortar” aunque parezca increíble.

Sucede que en Italia también había interés por el esperado “telégrafo parlante”. Incluso antes de Meucci, un inventor llamado Innocenzo Manzetti se imagina el artefacto ya en 1843 pero no se decide a construirlo sino hasta 1864.

Manzetti se encontraba trabajando en varios inventos al mismo tiempo, así que el teléfono era uno más y probablemente no le dio toda la importancia que debía. De hecho, se encontraba obsesionado con la construcción de una especie de robot autómata que tocaba la flauta. Por muy descabellado que parezca para mediados del siglo XIX, resulta que Manzetti tenía un prototipo más o menos funcional de su humanoide. Tan impresionante era su autómata, que para darnos una idea podía interpretar más de 10 arias de ópera. Seguramente el teléfono le pareció un invento de segundo orden al principio y sólo le dio el interés que merecía cuando se le ocurrió que su autómata no solo podía tocar la flauta sino también hablar! Así es, el teléfono resultó para Manzetti tan sólo un accesorio de su autómata.

Para dicha de los más curiosos el autómata cibernético tocador de flauta se conserva prácticamente intacto hasta nuestros días y es la principal atracción del Museo Manzetti, ubicado en Aosta, el pequeño poblado donde nació Manzetti, al norte de Italia. Les dejo un vínculo por si algún día deciden darse una vuelta http://www.manzetti.eu/il-museo/.

También es importante que nos percatemos de que Manzetti construye su teléfono en 1864, el mismo año en que Reis se encontraba mostrando su invento a la comunidad científica alemana. Más coincidencias.

Como el teléfono era sólo un accesorio de su autómata, Manzetti no lo publicita de inmediato sino hasta un año después, cuando se da cuenta de su aplicación transmitiendo voz sobre los cables de telégrafo. Fue sólo a finales de 1865 cuando una revista francesa llamada Le Petit Journal decide publicar una reseña en su sección CURIOSIDADES DE LA CIENCIA. Para suerte de los lectores más curiosos tengo una copia de este histórico ejemplar y lo pueden descargar de el siguiente vínculo.

{focus_keyword} Fue Alexander Graham Bell el verdadero inventor del teléfono? lepetitjounal

Muchos rumoran que varios técnicos de la compañía telegráfica inglesa se interesaron en el invento de Manzetti, fueron a visitarlo a Italia y regresaron a Londres con información privilegiada que posteriormente llegó a los oídos de Bell y así fue que éste último se enteró de los detalles de la “mina de oro” que posteriormente patentó; pero todo queda en el campo de la especulación. Lo que sí parece cierto es que realmente técnicos ingleses fueron a visitarlo, pues existe registro de este episodio en el diario La Feuille d’Aoste en Agosto de 1865.

Los problemas con las patentes

Hasta aquí al menos ya algo es obvio, la invención del teléfono se trabajaba en simultáneo y sin respiro en varios países, de manera independiente. El conocimiento y la tecnología de la época habían apuntado todas sus lanzas en una misma dirección y muchos lo visionaron casi al mismo tiempo, como por arte de magia. La humanidad estaba lista para el invento, clamaba por él, lo necesitaba. La revolución en las comunicaciones humanas estaba por venir de cualquier forma, sólo era cuestión de poco tiempo, tal como sucede con otras invenciones humanas.

Lo cierto es que en este mundo todos podemos tener ideas, todos podemos construir prototipos, pero lamentablemente el rédito económico se lo lleva; no quien tiene la idea primero, tampoco quien la fabrica primero, sino quien la patenta primero. Injusto? No lo se, pero es tema de otro artículo seguramente. El lector, luego de leer esta historia podrá juzgar si algo del mérito tienen estos incansables predecesores que se quemaron las pestañas y prepararon el camino para lo que hoy conocemos como teléfono. En todo caso, el lector también debe saber que aún falta otro actor muy importante en esta historia y no se trata precisamente de Bell, como veremos más adelante.

En realidad, para ser objetivos, el primero en tratar de patentar el invento fue Meucci, de quien hablamos al principio de esta historia, quien en 1871 suscribió un documento de “aviso de patente” pero por su condición económica nunca pudo pagar el dinero para terminar este trámite y su documento expiró pocos años después. 

En 1875, un año después de expirar el trámite de patente de Meucci, Alexander Graham Bell, un escocés radicado en los Estados Unidos, logra patentar el esperado teléfono y es el primero en terminar el trámite de patente.

Lo cierto es que Bell había estado experimentando previamente con algunas ideas para concebir su dispositivo telefónico hasta que un día logró arrancarle a la electricidad algunos sonidos. Cuenta la historia que la primera llamada que hizo fue para decirle a su asistente las célebres frases “Mr. Watson, come here. I want to see you.” (“Sr. Watson, venga. Necesito verlo.”).

Pero aquí no termina la historia. Quizá el personaje que más desató polémica con la invención del teléfono no fue ninguno de quienes hemos hablado hasta aquí, sino Elisha Gray.

Lo que hace que el caso de Elisha Gray sea particularmente importante no es que también haya construido un teléfono como varios más, sino que increíblemente llegó a la oficina de patentes tan sólo unas horas después de Bell. Imagínense, la humanidad pasó miles de años acumulando conocimientos, estudiando la naturaleza del sonido, descubriendo la electricidad, inventando el telégrafo, fraguando todo lo necesario para darle forma y tiempo a un artefacto… y resulta que dos personas coinciden en la MISMA oficina de patentes a patentar la MISMA cosa sólo a horas de diferencia. Realmente asombroso y para algunos: imposible.

Los dos inventores entraron en una conocida disputa legal que finalmente ganó Bell luego de larga batalla. Esta disputa fue tan compleja y larga que constituye de por sí un interesante caso de estudio y a la vez un entretenido relato. Las coincidencias entre ambas solicitudes de patentes son tan asombrosas que han dado pie a las historias conspiratorias más fantásticas. Si alguien está interesado en conocer más detalles, les comparto el vínculo de Wikipedia y les recomiendo preparar un buen café https://en.wikipedia.org/wiki/Elisha_Gray_and_Alexander_Bell_telephone_controversy

Al final del día, gracias a la patente Bell pudo hacer de la idea del teléfono un negocio rentable y tiene el mérito de haber desarrollado la idea y convertirla en algo práctico para la sociedad. Bell se convirtió en uno de los hombres más ricos del mundo. Se cuenta que en determinado momento Bell trató de vender su patente a Western Union por $100 mil dólares pero el presidente de Western Union se negó pues consideró que el teléfono era nada más que un juguete. Tan solo dos años más tarde el mismo directivo de Western Union le comentó a sus colegas que si pudiera conseguir la patente de Bell por $25 millones de dólares lo consideraría una ganga!

Hasta aquí mi anhelo de dar a conocer la otra parte de los acontecimientos suscitados prácticamente en paralelo a la famosa patente de Bell, el resto de la historia ya la conocemos todos.


Probando WebRTC en Elastix 4 (paso a paso)

El término WebRTC se ha vuelto tendencia recientemente en el ámbito VoIP. Muchos no entienden realmente de qué se trata y otros piensan que sólo es un softphone en el navegador.

El presente artículo tampoco busca resolver los misterios de WebRTC, sino dar con una solución efectiva para aquellos que deseen experimentar con esta tecnología; y sí, la idea de el presente artículo es hacer funcionar un softphone en el navegador, pero las posibilidades a partir de allí son mucho más interesantes.

Para ir directamente a la masa y sin más preámbulos, empecemos con los pasos.

1) INSTALAR Elastix

1.1) Descargar e instalar Elastix 4 RC3 de este link

1.2) Actualizamos Asterisk porque la versión que viene en Elastix 4 RC3 no tiene soporte ICE

# rpm -Uvh http://repo.elastix.org/elastix/4/updates/x86_64/RPMS/asterisk-11.20.0-1.el7.centos.x86_64.rpm

2) INSTALAR EL WEBPHONE

2.1) Descargar sipml5-master.zip de https://github.com/DoubangoTelecom/sipml5 y colocar el archivo en el servidor Elastix bajo la ruta /var/www/html

2.2) En el servidor ejecutamos los siguientes comandos.

# cd /var/www/html
# unzip sipml5-master.zip
# mv sipml5-master phone

3) CREAR EXTENSIONES

Ingresar a Elastix y crear 2 extensiones en el menú “PBX -> PBX Configuration -> Extensions”.

Yo he creado la 2001 y 2002, teniendo cuidado de establecer las siguientes 4 opciones.

opciones {focus_keyword} Probando WebRTC en Elastix 4 (paso a paso) opciones

La cuenta 2001 la usaré para el teléfono WebRTC y la 2002 la configuraré en un softphone de escritorio. En este caso el BRIA.

Aplicamos los cambios.

Aquí viene algo truculento y es que aparte de estos parámetros es necesario configurar otros que FreePBX no trae por omisión, por lo que nos veremos obligados a ponerlos a mano en el archivo de configuración /etc/asterisk/sip_additional.conf

En la sección correspondiente a la extensión WebRTC (es decir, la 2001 en nuestro caso) añadimos las siguientes líneas:

dtlsenable=yes ; Tell Asterisk to enable DTLS for this peer
dtlsverify=no ; Tell Asterisk to not verify your DTLS certs
dtlscertfile=/etc/asterisk/keys/asterisk.pem ; Tell Asterisk where your DTLS cert file is
dtlsprivatekey=/etc/asterisk/keys/asterisk.pem ; Tell Asterisk where your DTLS private key is
dtlssetup=actpass ; Tell Asterisk to use actpass SDP parameter when setting up DTLS

También modificamos la línea que configura el transporte, incluyendo WSS entre los transportes disponibles. La línea debería quedar así:

transport=wss,ws,udp,tcp,tls
Hay que notar aquí que estos cambios SE SOBREESCRIBIRÁN cada vez que apliquemos la configuración de FreePBX. En Elastix 4 estable planeamos solucionar este inconveniente, así como también incluir el RPM de Asterisk con soporte ICE.

4) CREO CERTIFICADOS PARA SRTP

4.1) Creo la carpeta donde irán los keys

# mkdir /etc/asterisk/keys

4.2) Creo los certificados

# /usr/share/doc/asterisk-11.20.0/contrib/scripts/ast_tls_cert -C pbx.mycompany.com -O "My Super Company" -d /etc/asterisk/keys
# /usr/share/doc/asterisk-11.20.0/contrib/scripts/ast_tls_cert -m client -c /etc/asterisk/keys/ca.crt -k /etc/asterisk/keys/ca.key -C phone1.mycompany.com -O "My Super Company" -d /etc/asterisk/keys -o malcolm

4.3) Permisos

# chown -R asterisk.asterisk /etc/asterisk/keys

5) CAMBIOS EN ASTERISK

5.1) Creo los certificados para el servidor Web embebido q trae Asterisk

# openssl req -new -x509 -days 365 -nodes -out /tmp/foo.pem -keyout /tmp/foo.pem

5.2) Editar el archivo vim /etc/asterisk/http_additionals.conf

[general]
enabled=yes
enablestatic=no
bindaddr=0.0.0.0
bindport=8088
prefix=asterisk
tlsenable=yes
tlsbindaddr=0.0.0.0:8089
tlscertfile=/tmp/foo.pem
tlsprivateket=/tmp/foo.pem

5.3) Edito el archivo /etc/asterisk/sip_general_custom.conf y agrego las sgtes líneas

tlsenable=yes
tlsbindaddr=0.0.0.0
tlscertfile=/etc/asterisk/keys/asterisk.pem
tlscafile=/etc/asterisk/keys/ca.crt
tlscipher=ALL
tlsclientmethod=tlsv1

5.4) reiniciar asterisk

# service asterisk restart

6) CONFIGURO TELEFONOS

6.1) WEBPHONE

Apuntar el browser al cliente WebRTC http://192.168.88.106/phone/call.htm y configurar

Nota: En mi caso este (192.168.88.106) es el IP de mi servidor Elastix.

Captura de pantalla 2015-12-15 a las 23.42.34 {focus_keyword} Probando WebRTC en Elastix 4 (paso a paso) Captura de pantalla 2015 12 15 a las 23

Presionamos el botón que dice “Expert mode?” y configuramos los siguientes parámetros.

Captura de pantalla 2015-12-15 a las 23.42.52 {focus_keyword} Probando WebRTC en Elastix 4 (paso a paso) Captura de pantalla 2015 12 15 a las 23

En la pantalla anterior hay que notar que estamos usando WSS como transporte, en lugar de WS.

6.2) BRIA

Configuro otro cliente SIP para la extensión 2002. En mi caso el BRIA

Captura de pantalla 2015-12-15 a las 23.49.15 {focus_keyword} Probando WebRTC en Elastix 4 (paso a paso) Captura de pantalla 2015 12 15 a las 23


Tip importante: En caso de usar certificados no válidos (auto firmados) como en nuestro ejemplo, es necesario que el navegador acepte previamente dicho certificado. Para lograr esto, antes de usar el teléfono Web, debemos apuntar nuestro navegador al URL del websocket, aquí es https://192.168.88.106:8089/asterisk/ws. Luego de aceptar el certificado, obtendremos un mensaje de “Upgrade Required” que es lo esperado. A continuación, ya podremos usar el teléfono WebRTC.

Por qué elegir un appliance Elastix?

appliances_elastix_son_mejores {focus_keyword} Por qué elegir un appliance Elastix? appliances elastix son mejores

Un amigo cercano y colaborador de Elastix me hizo notar que publicitamos poco ciertos hechos interesantes acerca de los appliances Elastix. La verdad ponemos mucho esfuerzo en tener un producto de la más alta calidad desde el punto de vista de ingeniería, pero hacemos poco marketing de esto. Así que quise compartirles algunas cosas que sabemos los que trabajamos en el equipo Elastix pero se hablan muy poco fuera. En el presente artículo enlisto y explico 10 buenas razones –aparte del espectacular color naranja por cierto 😉 — por las que es mejor comprar un appliance Elastix en lugar de un servidor cualquiera.

1) Se puede estar seguro de que Elastix funciona sobre este equipo y viene pre-cargado

Cuando alguien compra un computador cualquiera e instala Elastix, hay muchas variables que pueden salir de control. Es muy difícil que podamos probar Elastix para todos las marcas de computadores que existen en el mundo, así que no es imposible que el mainboard o algún dispositivo no sea reconocido correctamente por el sistema operativo o que existan problemas de estabilidad; que en telefonía es inaceptable. Por eso existen los appliances Elastix, y es allí donde nos aseguramos que Elastix funcione de manera óptima. En muchos casos inclusive hemos optimizado la distro para que funcione bien sobre nuestros equipos.

2) Construido sobre la filosofía de chasís totalmente metálico

Así es. ESTAMOS EN CONTRA de usar una carcaza plástica para una IPPBX y existen razones de sobra. Muchos dirán que el plástico está de moda y ayuda a reducir costos, pero en este sentido somos inflexibles y explicaré las razones.

Menos interferencia

Esto es crítico en un equipo de telecomunicaciones donde la interferencia puede afectar la calidad de voz. El chassis metálico desempeña el rol de un escudo contra las interferencias; este principio se conoce científicamente como Jaula de Faraday y existe mucha documentación en Internet (http://es.wikipedia.org/wiki/Jaula_de_Faraday)

Mejor disipación de calor

Es indiscutible que el metal disipa MUCHO mejor el calor que el plástico y un equipo bien refrigerado siempre desempeñará mejor que uno recalentado. Esto sin contar con el alargamiento de la vida útil del equipo.

Mejor resistencia a golpes 

Desde la escuela nos enseñan que los metales son maleables. Esto les permite doblarse en lugar de romperse, lo cual es útil durante el transporte. Basta con ver el siguiente video donde pasamos un auto sobre un appliance Elastix para darse cuenta que es improbable que un appliance plástico soporte este peso encima https://vimeo.com/104447883

 3) Apoyas al proyecto Elastix, un proyecto libre

El equipo Elastix hace un esfuerzo gigantesco para el proyecto siga siendo libre. Invierte miles de horas de desarrollo al año, investigación y desarrollo, alojamiento Web, etc. Son miles de dólares que necesitan financiarse de algún modo. Una manera de contribuir con tal iniciativa es adquiriendo un appliance oficial.

4) Tu appliance es monitoreado 24/7/365 y eres alertado de posibles fallos.

Al momento de adquirir un appliance Elastix uno puede obtener monitoreo desde la nube. De esta manera uno puede ser alertado cuando los recursos del servidor comienzan a utilizarse de manera inusual como por ejemplo si las grabaciones comienzan a llenar el disco duro. Es una manera de estar un paso adelante de los problemas. Con un appliance oficial esto viene incluido, sólo es necesario activarlo.

5) Tienes un 15% de descuento en training y suscripciones de soporte

Así es, creemos que la mejor manera de maximizar la inversión al adquirir un appliance oficial es entrenándote. Aparte, puedes obtener soporte de ingenieros certificados y con mucha experiencia a un precio descontado. Con esta combinación tiene sin duda la mejor opción del mercado.

6) Si requieres soporte, todos nuestros agentes conocen el hardware y te pueden brindar un soporte óptimo

Nuestros agentes de soporte in-house se encuentran familiarizados con todos los modelos de appliances Elastix. Lo que sin duda es una ventaja.

7) Diseñados en latinoamérica

Los appliances Elastix son fabricados en distintas partes del mundo, pero la concepción y el diseño se hacen en latinoamérica. Poco a poco el proyecto Elastix se ha convertido en un símbolo de que sí se puede hacer tecnología de alta calidad en nuestra región y nos sentimos orgullosos de ello.

8) Las características de llamadas concurrentes se hace sobre el 30% de la capacidad de CPU

Esto es una diferencia importantísima si comparamos contra la competencia. Existen otras marcas que publicitan un número de llamadas concurrentes de más de tres veces a las de appliances Elastix usando hardware similar. La diferencia radica en que en Elastix somos MUY conservadores a la hora de publicar el número de llamadas concurrentes de un appliance Elastix. Esto también quiere decir que si un cliente adquiere un appliance Elastix con capacidad para 30 llamadas concurrentes, lo más probable es que soporte muchísimo más llamadas. Lo que queremos es clientes contentos.

9) La solución de bugs reportados sobre instalaciones en appliances Elastix tienen máxima prioridad

Cuando un cliente reporta un problema en la distribución Elastix a través de los canales oficiales, este tiene la prioridad más alta si se trata de un usuario de un appliance oficial. Es lo más justo y es lo más conveniente para un comprador de un appliance Elastix.

10) Todas las pruebas de certificación de hardware se realizan sobre appliances Elastix

 El programa de certificación de hardware Elastix es una iniciativa exitosa de Elastix a la que se han adherido la mayoría de  marcas del mercado de la VoIP (http://www.elastix.org/index.php/en/product-information/certified-hardware.html). Pues entérense: las pruebas de hardware de terceros se realizan sobre appliances Elastix! Esto quiere decir que si adquirimos una tarjeta de telefonía de otra marca, es mucho más probable que funcione bien sobre un appliance Elastix que sobre otro equipo.


Elastix se bifurca en 2 productos

Con el lanzamiento de Elastix 3 el pasado mes de Octubre, comenzó a resultar obvio que existen dos tipos de usuarios. A los que les sirve muchísimo una solución Multi-Tenant como Elastix 3 y los que sólo necesitan una solución para una sola compañía. Este último grupo resulta ser la gran mayoría.

Elastix 3 comenzó su desarrollo como una idea revolucionaria (aquí presentación), pensada con características vanguardistas, que lo hacen interesante para proveedores de centralitas VoIP en la nube. Sin embargo, no todos necesitan todas estas características.

En todo caso, nos dimos cuenta que, si bien estos dos grupos de usuarios tienen necesidades en su mayoría similares, hay algunas que no lo son.

Luego de algunos días de debate se decidimos separar el proyecto en 2 productos:

  • Elastix Single-Tenant
  • Elastix Multi-Tenant

El primer producto se llamará simplemente Elastix y será la continuación de la rama 2, mientras que el segundo producto se llamará Elastix MT.

Elastix MT será básicamente el actual Elastix 3.

Confundido?

Para ilustrar mejor, una imagen.

ramas Elastix se bifurca en 2 productos Elastix se bifurca en 2 productos ramas

Como resulta obvio, para evitar confusión, la evolución de Elastix 2 será Elastix 4. De este modo la versión 3 quedará en la historia como una versión que cambió de nombre a Elastix MT.

Estos cambios se comenzarán a ejecutar la primera semana de Diciembre (2014).


Cambiando las “voces” del motor TTS que viene por omisión en Elastix

Text to Speech Elastix Cambiando las "voces" del motor TTS que viene por omisión en Elastix Cambiando las "voces" del motor TTS que viene por omisión en Elastix tts elastix text to speech

Quienes han usado el motor TTS (text-to-speech) que viene por omisión en Elastix (llamado Festival) habrán notado que las “voces” en español suenan un tanto robotizadas.

Un conjunto de “voces” de mejor calidad se encuentra disponible de manera gratuita gracias al proyecto Guadalinex. Sin embargo, muchos usuarios tienen problemas para instalarlas, así que decidí publicar esta guía muy breve y sencilla.

Lo primero que debemos hacer es instalar los archivos que conforman las voces. Para facilitar este paso, construi unos instaladores RPMs que nos facilitan enormemente el trabajo. Estos instaladores pueden ser descargados de aquí:

http://www.neomano.com/downloads/voces/

El archivo festvox-palpc16k-1.0-2.noarch.rpm instala la voz masculina, llamada Pedro, y el archivo festvox-sflpc16k-1.0-2.noarch.rpm instala la voz femenina, llamada Silvia.

La instalación de estos archivos en nuestro servidor Elastix la podemos realizar con el siguiente comando.

rpm -ivh festvox-palpc16k-1.0-2.noarch.rpm festvox-sflpc16k-1.0-2.noarch.rpm

Luego de esto editamos el archivo /usr/share/festival/languages.scm y modificamos las líneas 93 y 94 de la siguiente forma.

ANTES:

(voice_el_diphone)
(set! male1 voice_el_diphone)

DESPUES:

(voice_JuntaDeAndalucia_es_pa_diphone)
(set! male1 voice_JuntaDeAndalucia_es_pa_diphone)

TEXT2WAVE

Si adicionalmente queremos que el comando text2wave por omisión utilice nuestras voces, tendremos que también modificar el archivo /usr/bin/text2wave y en la línea 46 añadir una que diga:

(voice_JuntaDeAndalucia_es_pa_diphone)

Esto es útil debido a que algunos scripts AGI utilizan el comando text2wave para sintetizar voz.


Sistema de riego controlado por teléfono

Elastix Sprinkler Sistema de riego controlado por teléfono Sistema de riego controlado por teléfono elastix sprinkler

Quién no ha soñado alguna vez con llamar al sistema de riego de su jardín para encenderlo?… Bueno, probablemente casi nadie 🙂

La cosa es que me entró esa idea en la cabeza. No se si sea algo práctico realmente, pero aquí va un artículo que relata con cierto detalle el experimento que hice.

Es importante explicar, antes de continuar, que existen algunas cosas que voy a asumir a partir de ahora, y es que el lector está familiarizado con Elastix, Asterisk, AGI, PHP y Arduino. Además asumiré que también tiene conocimientos básicos de electrónica.

Para aclarar mejor cómo funcionará el sistema dibujé la siguiente figura donde se ilustran los componentes que lo conforman.

Sistema de riego controlado por teléfono Sistema de riego controlado por teléfono elastix automat

Como ilustra la figura anterior hay dos componentes principales que necesitaremos, y son:

  • el servidor Elastix, y
  • la interfaz con la válvula de riego (o interfaz de riego)

El servidor Elastix

Para el servidor Elastix instalé la versión 2.2 RC1. Este servidor es el que me servirá de PBX pues lo conectaré con el mundo exterior mediante una línea telefónica. De este modo puedo llamar por teléfono al servidor Elastix y activar el riego.

Como se puede observar en la figura aterior, en este servidor residirán dos programitas que desarrollé: Un script AGI y un driver de alto nivel (para que se comunique con la interfaz de riego vía USB). Ambos los escribiré en PHP debido a que es un lenguaje muy popular y existe bastante documentación que se puede consultar vía Web; de este modo la explicación es más entendible.

Alguno se puede preguntar por qué no controlo al Arduino directamente desde el script AGI. La respuesta es que preferí tener el driver por separado porque también me servirá para controlar el Arduino desde la interfaz Web que desarrollaré en un futuro próximo. Eso es lo que significa el rectángulo que dice “Interfaz Web” en la figura anterior.

Interfaz de riego

La interfaz de riego es un circuito que por un lado se conecta al servidor Elastix a través de un puerto USB y por el otro se conecta a la válvula de riego. Hay muchas maneras maneras de realizar esta circuitería. En mi caso me decidí por usar una placa Arduino conectada a un relé. Básicamente porque tenía una placa Arduino ociosa y decidí darle algún uso interesante. Esta placa se encuentra conectada a un relé a través de una circuitería sencilla.

En la siguiente figura se muestra la interfaz de riego cuando la planifiqué por primera vez en protoboard (breadboard).


Sistema de riego controlado por teléfono Sistema de riego controlado por teléfono interfaz de riego bb

En la práctica terminé reemplazando el circuito de relé con uno pre-construido que compré para Arduino (con entrada opto-aislada y doble relé) y que en Internet hay un montón a precios razonables.

Lo único que no me gustó mucho del circuito que compré es que tiene lógica negada. Es decir, que cuando la entrada es un HIGH el relé se encuentra apagado, mientras que cuando es un LOW se encuentra encendido. Por eso verán más adelante que el código para el Arduino toma en consideración esta lógica.

La válvula de riego

En mi caso se trata de una válvula marca Rainbird controlada con 24 voltios AC. Nada del otro mundo; tiene dos cables y si los energizamos con 24 VAC la válvula se enciende y el agua pasa a los aspersores.

El protocolo de comunicaciones entre Elastix y la interfaz de riego

El protocolo que utilizaré será lo más sencillo posible. De esta manera le será más fácil al lector entender el código. El protocolo consiste de un solo comando compuesto por un byte. Este byte será interpretado como un número entero por el Arduino y representará el número de minutos que se desea activar el riego. Si deseo interrumpir el riego envío el número 128.

Modificación del plan de marcado de Asterisk

En mi caso particular he configurado el siguiente contexto en el archivo /etc/asterisk/extensions_custom.conf

[sprinkler]
exten => *2222,1,Answer
exten => *2222,n,AGI(sprinkler.agi)
exten => *2222,n,Hangup()

Esto quiere decir que cuando alguien marque el número *2222 le contestará mi script AGI, que por cierto se llama sprinkler.agi.

El script AGI

Aquí también los dejo con el código de mi script AGI. No se olviden de darle los permisos correctos.

#!/usr/bin/php -q
<?php
require_once "phpagi.php";
$agi = new AGI();
$arr_minutos_riego = $agi->get_data('custom/minutosactivos', 20000, 3);
$minutos_riego = $arr_minutos_riego['result'];
$comm = "sudo /opt/sprinkler/driver " . $minutos_riego;
exec($comm, $sal);
$agi->stream_file('custom/riegoconfigurado');
?>

El script anterior lo podemos dividir en dos partes:

  1. Primero le pregunta al llamante por el número de minutos que desea que el sistema de riego permanezca encendido. Esto lo hace mediante la función get_data
  2. Luego invoca al driver y le pasa como parámetro el número de minutos antes obtenido. Esto lo logra /opt/sprinkler/driver

Cabe resaltar que el script anterior utiliza dos archivos de audio que el lector puede grabar a su gusto. Estos archivos los he llamado minutosactivos.wav y riegoconfigurado.wav. En el primer archivo grabé un mensaje parecido al siguiente:

“Por favor, ingrese el número de minutos que desea regar”

Y en el segundo grabé un sencillo mensaje de agradecimiento:

“Gracias por usar el sistema de riego Elastix”

Cabe mencionar que he preferido mantener el script AGI lo más sencillo posible para propósitos didácticos, pero el lector lo puede añadir complejidad y por ejemplo, validar la entrada del usuario, o pedirle que confirme el número de minutos, entre otras cosas.

Driver para comunicación con la interfaz de riego

Bueno, ahora sí veamos de qué está hecho el driver de alto nivel que controla el Arduino vía USB.


#!/usr/bin/php -q
<?php
$arg_segundos = trim($_SERVER['argv'][1]);
$data = chr((int)$arg_segundos);
$fp=fopen("/dev/ttyUSB0", "r+");
$r = fwrite($fp, $data);
fclose($fp);
?>

Nuevamente, he preferido mantener el código anterior al mínimo. Dejo al lector la tarea de añadir validaciones. Por ejemplo, estoy asumiento que el dispositivo ha sido asociado con /dev/ttyUSB0, pero eso puede variar de sistema en sistema.

Código para el Arduino

Ahora sí, el código para el Arduino. Este código se debe cargar en el Arduino para que haga lo que necesitamos.


#include <Time.h>  

int relPin = 2;
int usbnumber = 0;
int active = 0;
time_t timeend = 0;

void setup() {
    pinMode(relPin, OUTPUT);
    digitalWrite(relPin, HIGH);
    Serial.begin(9600);
}

void loop() {
    // Aquí se lee del puerto USB
    if (Serial.available() > 0) {
        usbnumber = Serial.read();
    }

    // 128 es el comando para apagar (interrumpir) la salida del relé
    if(usbnumber==128) {
        active=0;
        digitalWrite(relPin, HIGH);
    }

    if(active==0) {
        // Si el riego estaba inactivo y se recibió un número mayor a cero
        if (usbnumber > 0) {
            active = 1;
            digitalWrite(relPin, LOW);
            timeend = now() + usbnumber*60;
        }
        usbnumber = -128;
    } else {
        // Si se alcanzo el tiempo previsto apago el relé
        if(now()>=timeend) {
            active = 0;
            digitalWrite(relPin, HIGH);
        }
    }
}

Conclusión

Muy aparte de la utilidad para regar un jardín, espero que este proyecto encuentre muchas otras aplicaciones. A final de cuentas se trata de un relé que se activa por un tiempo determinado. Si alguien lo construye o le encuentra alguna otra aplicación práctica, será gratificante ver su comentario por aquí.