Construya su propia cámara de videogilancia usando Raspberry Pi


Gracias a un sencillo kit de carcasa +lente de ojo de pez  junto el software deMotionPie en efecto  es bastante sencillo transformar una Raspberry Pi con cámara en un sistema de seguridad altamente personaliza ble  como vamos a ver en este post

 

Hardware

Los elementos que necesitamos  para este montaje son  los siguientes:

  • Raspberry Pi3  o en su defecto una Rasberry Pi 2
  • Camara para Raspberry Pi  de 5MP Webcam Video 1080p 720p, (la del enlace es una de las mas económicas )
  • Fuente de  5v  de almenos 700mA
  • Lente ojo de pez magnética ( puede servir un mirilla de las típicas que se usan en las puertas )
  • Carcasa para albergar el conjunto .Existe este paquete  que incluye un mate negro especialmente diseñado para esta función incluyendo ademas  la lente y la caja de montaje en pared.Compatible con ambos los V1 y V2 frambuesa Pi cámara módulos originales y recién actualizado para ser compatible con la frambuesa Pi 3!

 

Pasos a seguir

La cámara Haiword  es una de las mas económicas para la Raspberry Pi(unos 15€ en Amazon) .El sensor de resolución nativo es de 5 megapíxeles capaz de 2592 x 1944 píxeles de imágenes estáticas.Soporta vídeo 1080p30, 720p60 y 640x480p60 / 90. La cámara es compatible con la última versión de Raspbian, el sistema operativo preferido de Raspberry Pi
El bus CSI es capaz de velocidades de datos extremadamente altas, y lleva exclusivamente datos de píxeles razón por la que esta cámara  utiliza la interfaz dedicada de CSI, que fue diseñada especialmente para la interfaz a las cámaras .

Para empezar a usar la cámara simplemente conectaremos el cable de cinta de la cámara al interfaz CSI de nuestra Rasberry Pi. Debemos tener mucho cuidado de enrasar muy bien el cable antes de fijarlo al conector  y después bajarle el tope para que no se suelte

 

La cámara de la Raspberry Pi ofrece caja de la cuenta, que puede mejorarse mediante la adición de lentes intercambiables. La lente ojo de pez le dará la cámara de la  Pi una vista panorámica de sus alrededores, ideal para vigilancia, seguridad y escenarios de monitoreo general.

Una vez conectada la cámara ,toca meter el conjunto en una caja que debe tener el agujero para la cámara. Obviamente con un poco de maña podemos utilizar cualquiera de las cajas que haya en el mercado fijar  la cámara por fuera y luego acoplarle la lente .

Un  opción interesante es optar por un kit de caja a medida  pues la flexibilidad de esos diseño suelen ser ideales para usar un Raspberry Pi sobre todo por la integración del módulo de cámara ademas  de complementarse con una lente de gran angular ojo de pez.

El cuadro de ModMyPi Pi cámara está diseñado para albergar un ordenador Raspberry Pi (modelo A o B) y un módulo de cámara de Pi en un gabinete compacto y versátil. Esta integrado todo el diseño para que no dañe el cable de cinta frágil de la cámara expuestos durante la operación. Este caso puede acomodar una lente de cámara magnética opcional, que abre nuevas posibilidades más allá de la excepcional calidad óptica del módulo cámara de Pi. El estuche negro mate es opaco, asegurándose que el led rojo montado en el módulo Pi cámara no afectará la luz ambiental captada por la cámara. La parte posterior de la ‘caja de cámara Pi’ puede aceptar un soporte de montaje en pared opcional para instalaciones permanentes.

Para aprovechar al máximo de él, la caja de la cámara de Pi debe montarse firmemente a una pared o un techo y debe orientarse correctamente. Este soporte permite inclinar y girar el dispositivo. Sólo apriete los tornillos cuando hayas encontrado la posición correcta y listo.

 

La caja de la cámara de Pi está diseñada ademas  para recibir el pequeño aro metálico necesario para atar la lente de ojo de pez magnetizada a la caja.

 

Software de la cámara

Esta es la parte que puede parece mas difícil si no fuera por el paquete  MotionPie. Esta aplicación inteligente viene como una imagen que simplemente escribir en una tarjeta SD y poner directamente en su Pi – sin código, ni enfangarse en infinidad de comandos linux.Puede que  parezca que hacemos  “trampa”, pero funciona muy bien y nos evitara muchos problemas pues es muy  fácil de usar.

Descargar la imagen

Para instalar MotionPie necesita una tarjeta SD en blanco y la MotionPie imagen disponible aquí (golpee el botón de descarga verde grande). Puede utilizar una tarjeta SD de 4 Gb pero puede que desee algo más grande si desea utilizar las funciones de grabación de MotionPie.

Piense en una imagen como sistema operativo, como Windows. Esta imagen es una imagen dedicada para MotionPie, que hace muy fácil de instalar.

Una vez que haya descargado el archivo, descomprima los archivos en una carpeta y mover al siguiente paso.

Escribir la imagen en una tarjeta SD

Pop tu tarjeta SD en tu PC (utilizando un adaptador de tarjeta SD si es necesario) y abrir su imagen favorita de software de escritura – usar Win32DiskImager para Windows.

Abrir Win32DiskImager, debería ver la letra de unidad para la tarjeta SD en la sección superior derecha ‘dispositivo’. Asegúrese de que esto es justo antes de continuar.

Win32DiskImager

A continuación necesitamos decirle a la aplicación que archivo de imagen que queremos  ‘quemar’ a la tarjeta SD. Haga clic en el icono de carpeta pequeño y vaya a la carpeta que extrajo los archivos de MotionPie. Haga clic en el archivo MotionPie.img y haga clic en ‘Abrir’:

MotionPie Image File

El archivo de imagen debe ser un tipo de archivo .img

La ruta del archivo debe verse ahora en la sección de ‘Archivo de imagen’.

Win32DiskImager load image

Ahora haga clic en ‘Escribir’ para  quemar la imagen en la tarjeta SD. Se mostrará una advertencia indicándole que puede dañar el dispositivo. No se preocupe, es un mensaje estándar. Haga clic en ‘Sí’ para continuar:

Nota: La opción ‘leer’ es para hacerlo al revés – lectura de la tarjeta SD y hacer un archivo – ideal para realizar copias de seguridad

Win32DiskImager Warning

Esta advertencia siempre se muestra  !no se  suste !.Una barra de progreso le dará una indicación del progreso pero  eta imagen no es muy grande por lo que sólo debe tomar unos pocos minutos:

Win32DiskImager progress bar

Una vez completado, aparecerá un mensaje. Haga clic en ‘Aceptar’:

Win32DiskImager complete

¡No retire la tarjeta SD todavía!  Ahora estamos listos para quitar la SD no te olvides de ‘expulsar’ el dispositivo de forma segura mediante el icono en la barra de tareas, hay una posibilidad que podría corromper la tarjeta SD ,aso que expulse la tarjeta de forma controlada !la Tarjeta SD está lista ahora, así que conectela ahora a su Pi

Programa de instalación

Tenemos que conectar el MotionPie a una conexión a internet por cable para el arranque inicial (ethernet), pues tenemos que ser capaces de recuperar una dirección IP. No podemos hacer nada de esto a través de una pantalla HDMI pues MotionPie no tiene una salida de vídeo (sólo verá una pantalla colorida).

Una vez que haya conectado todo, conecte su fuente de alimentación micro-USB para el Pi y encienda la Pi. Tenemos que dar al menos unos minutos para dejar la configuración inicial de instalación , así que espere pacientemente.

Dirección IP

Ahora necesita encontrar la dirección IP de su MotionPie para poder iniciar sesión en él. Usted podría iniciar sesión en su ruter  para encontrar las direcciones IP de los dispositivos conectados, pero hoy en dia es muy interesante  la app de Android ‘Fing‘ en Android, ya que es rápida y fácil y nos dara todo lo que haya conectado a nuestra red (incluyendo la raspberry Pi).

Abra Fing, haga una exploración en su red y busque su MotionPie junto con el número de serie (el número de serie es la parte después de’ MP’):

Fing IP address

!Fing es grande para tomar direcciones IP!

Inicio de sesión

Esta parte es la fácil pues usando un portátil/tablet/teléfono conectado a la misma red que su MotionPie, simplemente escriba la dirección IP y pulsar intro (igual debería escribir en una dirección web). En el ejemplo anterior, estoy usando 192.168.1.9.

Debe cargar la interfaz de MotionPie En algún momento se le pedirá  un registro, que es simplemente ‘admin’ y sin contraseña. Para acceso remoto como SSH, el nombre de usuario es ‘root‘ y la contraseña es el número de serie de Pi (que se puede ver por encima cuando la dirección IP).

Utilizar SSH para configurar el adaptador de WiFi para que esta cámara no tenga que depender de una conexión ethernet por cable.

Aquí es lo que MotionPie parece en un teléfono Android .

MotionPie Interface

La parte superior del icono izquierda  lleva al menú de configuración, donde puede ajustar todo tipo de cosas como el framerate, resolución, brillo, contraste, rotación, ubicaciones de almacenamiento y cargas más.  Luego tienes los iconos de la derecha que lleva a la cámara y captura de vídeo, modo de pantalla completa y más opciones. Para utilizar la misma interfaz en un PC o un tablet, es el mismo proceso. Simplemente introduzca la dirección IP y debería poder  ver la imagen captada por la camara de la Pi.

Actualmente no un comando de apagado en la interfaz pero parece una mejora que pronto vendrá . Puede ejecutar más de una cámara de Pi en MotionPie, de modo que se puede  crear una interfaz de seguridad completo:

MotionPie Multiple Feeds

¿Se anima  a usar su raspberry pi como sistema de seguridad?

Anuncios

Sistema de aviso de accesos y cortes de suministro eléctrico sin coste


En efecto hoy en día ya no es necesario abonarse a un costosísimo sistema de alarma ni tampoco adquirir un nuevo sistema de alarma  pues hoy en día si tiene  un viejo smartphone  que ya no use, gracias a la nueva aplicación Seguricasa free    disponible  gratuitamente para su descarga en Google Play , se  pueden enviar  notificaciones automáticamente por correo electrónico  ( o por SMS en la version premium  )   en el momento que se detecte la apertura o cierre de la puerta gracias al sensor de proximidad que incluye cualquier Smartphone.  Asimismo, también puede enviar notificaciones si se detecta corte de red ya que dejaría de estar alimentado externamente el Smartphone (por el cargador del terminal), circunstancia que puede ser monitorizada y procesada dentro de la aplicación y que fácilmente podemos entender como falta de red de corriente alterna.

Seguricasa es una solución ideal por tanto  para aquellos que no están dispuestos a pagar una cuota por un sistema de alarma, pero les gustaría saber lo que ocurre en sus propiedades.

La solución es única, pues no es necesario adquirir ningún hardware adicional, ya que se basa en un Smartphone con SO Android 4.1 (Yelly Bean) o superior, para gestionar tanto los accesos, como los cortes de red del suministro eléctrico de una vivienda o local.

Basta con insertar una SIM en su viejo Smartphone, instalar la aplicación Seguricasa y   mantener el Smartphone conectado al cargador, para que desde ese momento, en cuanto defina el número del teléfono y las cuentas de correo de origen y de destino, pueda recibir   a voluntad   notificaciones por SMS o por mail, de cualquier anomalía que suceda en el suministro de corriente alterna de su vivienda.

En el caso de que se desee también monitorizar los accesos, tampoco se necesita ningún hardware especial: simplemente tendrá que fijar su viejo Smartphone   cerca de la puerta de acceso mediante un velcro o similar , y colocar un soporte solidario a la puerta que pueda cubrir aproximadamente al menos 1cm la parte superior del Smartphone, para  que en cuanto  abramos la puerta  automáticamente oculte el sensor  y de esta forma ser envíen según se defina,   notificaciones por SMS o por mail de cualquier acceso  ( obviamente si ha definido  el número del teléfono  y las cuentas de correo de origen y de destino dentro de la propia aplicación).

Montaje

Pare este montaje vamos a necesitar  instalar la aplicación “Seguricasa ” en un Smartphone con SO Android 4.1 (Yelly Bean) o superior. También es importante destacar que   si se desea almacenar las notificaciones de SMS o e-mail, el terminal debería contar al menos con 128MB de espacio en la SD externa para almacenamiento de logs.

 

El montaje es muy sencillo, pues solo habrá que descargar versión gratuita de la aplicación  Seguricasa  desde Google Play  aqui  (o bien  la versión premium   que por poco mas de  1€ permite enviar SMS’s en las condiciones que deseemos)

.

seguricasa.png

 

El terminal Android debe tener SO Android 4.1 (Yelly Bean) o superior y no  es fundamental  que tenga  la pantalla  perfecta ( o la batería)  ya que la interacción con el terminal solo sera necesaria para configurar cuales van a ser las notificaciones  y los destinatarios de estas ( es decir este terminal puede ser perfectamente reciclado  o incluso en mal estado ) .

El siguiente paso si vamos a enviar SMS ( versión premium)  o  si vamos a usar la conexión GPRS en caso de corte de la wifi por falta de suministro eléctrico ,  es insertar la SIM  en el terminal si es que vamos  a enviar SMS o emails estando sin suministro eléctrico  , ya que normalmente cuando no haya red eléctrica tampoco solo tenemos tener wifi. Dependiendo de lo que deseemos (sms o emails ) necesitaremos  un plan mas o menos ajustado ,pero ene general con una tarjeta prepago debería ser suficiente .

Ahora  lo siguiente debería ser fijar el terminal  a un extremo de la puerta si es que vamos a usarlo  también para notificar los accesos a la vivienda o local. Un buen sistema por ejemplo puede ser un belcro auto-adhesivo pegado en la parte de atrás del terminal  , aunque en el mercado  obviamente también existen soportes  para  fijar el terminal de forma vertical de una manera muy simple.

IMG_20170316_191402.jpg

Fijado el terminal   ya solo nos quedaría  si lo que deseamos es  controlar el acceso  fijando un cartón   al extremo de la puerta  con cinta  adhesiva de modo que  al abrir la puerta este  tape el sensor de proximidad del terminal tal y como se ve en la fotografía siguiente

Una vez fijados el terminal  y el cartón es hora de conectar  la alimentación  por medio del cargador original  o en su defecto cualquier cargador con salida micro-usb .En este sentido tenga en cuenta que el cargador debe permanecer siempre enchufado de modo que pueda ser motorizado  el estado de la red eléctrica por lo que este  debería ser preferentemente el original  o por lo menos de buena calidad.

Ya tenemos todo preparado , así que arrancaremos  la aplicación   y  podemos  configurar  todos los  parámetros como vamos a ver  a continuación.

Manejo de la aplicación

Para iniciar la aplicación basta con pulsar sobre el icono “Seguricasa”.

Inmediatamente al iniciar la aplicación, aparecerá la pantalla principal de la aplicación donde se muestra la información básica del estado de los sensores, la cual incluso cerrándola queda en segundo plano con objeto de seguir monitorizando la vivienda o inmueble.

v4new.png

La información mostrada por la aplicación en la pantalla principal es la siguiente:

  • Nivel de carga de la batería expresada en tanto por ciento.
  • Temperatura del terminal en grados centígrados.
  • Estado de suministro eléctrico expresado en voltios.
  • Estado del sensor de proximidad.

Bajo el icono del botoncito de la esquina superior derecha se muestra el nivel de batería expresado en tanto por uno

Asimismo, la aplicación cuenta con  tres botones gráficos:

  • Ayuda( ?): pulsando aquí se accede  al menú básico de ayuda en línea
  • Histórico(brujula): se accede al log de envíos de correos o SMS ’s enviados desde la propia aplicación.
  • configuración( caja de herramientas): se accede al menú de configuración de la aplicación

AYUDA EN PANTALLA

Desde la pantalla principal pulsando el menú ayuda, se accede a una pantalla auxiliar donde se explica sucintamente el sentido de esta aplicación.

Para volver a la pantalla principal,   pulsar el botón volver del terminal, o simplemente se puede pulsar el botón cerrar de esta pantalla.

LOG DE EVENTOS

Desde la pantalla principal, pulsando el menú histórico se pueden acceder al log de envíos de correos o SMS ’s enviados desde la propia aplicación.

Siempre que se haya definido un nombre valido de fichero en la pantalla de configuración,   y el terminal cuente con al menos con 128MB de espacio en la SD externa para almacenamiento de logs, se mostrara en cada línea del log la fecha y hora junto el tipo de notificación (SMS o e-mail) y los motivos (corte o vuelta de red y puerta abierta o cerrada).

Para volver a la pantalla principal   pulse el botón volver del terminal o simplemente pulsa el botón cerrar de esta pantalla.

Es interesante destacar que, en esta pantalla que , en cuanto se supera el tamaño visualizable en la pantalla del terminal, sobre esta se podrá hacer scroll vertical para poder acceder al resto de información.

En caso de no que no interese mantener este fichero de log, el usuario siempre puede acceder al administrador de ficheros y acceder a la raíz de la SD para proceder a mover o eliminar dicho fichero de log.

Obviamente si desea personalizar el nombre del fichero de log, simplemente deberá cambiar el nombre del fichero personalizado de fichero de log en la opción Fichero de Log→Carpeta

También si desea no registrar los eventos, simplemente deberá borrar el nombre del fichero personalizado de fichero de log en la opción Fichero de Log→Carpeta

CONFIGURACÓN DE LA APLICACIÓN

Hay una opción muy importante referida a la configuración de la aplicación, la cual se accede pulsando el botón contextual del terminal   de Android o directamente sobre el botón de la caja de herramientas.

Una vez ahí, pulsando sobre el ítem, se mostrara el submenú de configuración de la aplicación:

La pantalla está divida por seis secciones claramente identificadas:

  • Avisos por SMS.
  • Avisos por email.
  • Números de teléfono para SMS.
  • Correo electrónico destino.
  • Usuario Gmail para envíos.
  • Fichero de log.

Avisos por SMS.

Esta opción esta reservada  para la version premium  disponible en Google Play ( coste aprox 1€).

La conectividad a internet de los terminales de última generación junto con el crecimiento exponencial tanto de las redes sociales como los de servicios de mensajería no han frenado la expansión de los mensajes SMS a nivel comercial.

Está claro que  los nuevos métodos de comunicación han tomado la delantera en lo que se refiere a las comunicaciones personales y grupales  ,pero a cambio han dejado a los mensajes SMS cómo líderes absolutos  de las comunicaciones de empresas como bancos,  empresas de transporte público, empresas de telecomunicaciones , compañías de seguros, hospitales ,otras instituciones públicas y un largo etcétera las cuales han adoptado los mensajes SMS como método para enviar notificaciones, confirmar transacciones, recordar citas, etc.

Precisamente pensando en la gran seguridad, accesibilidad y confianza que ofrecen los SMS’s frente a otros servicios de mensajería, en esta aplicación se ha optado por permitir él envió de mensajes de forma selectiva según las necesidades de los usuarios.

Clicando en cualquiera de las tres opciones de este submenú automáticamente se enviaran   un SMS al número que se defina ante las siguientes circunstancias:

  • Corte de suministro de corriente alterna mediante la el suministro de tensión externa al terminal ( opción “Cortes de electricidad”)
  • Aperturas o  cierres de la puerta   ocultando el sensor de presencia(opción “Aperturas puerta”)
  • Al iniciar por primera vez la aplicación Seguricasa (opción “Al iniciar esta app”).

Avisos por e-mail.

Estar dado de alta en una cuenta de correo electrónico, hoy en día es una realidad pues todos los usuarios de la red disponen de una dirección de correo electrónico y lo utilizan diariamente.

En la actualidad, el uso del correo electrónico, se puede dividir en diferentes ámbitos como académico, laboral y personal, por lo que es muy interesante  también poder avisar  por e-mail ante cualquier evento de acceso  o anomalía en el suministro de corriente alterna desde el Core de esta aplicación.

Los avisos por e-mail en esta aplicación son personalizables mediante esta sección:

Clicando en cualquiera de las tres opciones del submenú de avisos por  e-mail, automáticamente se enviaran   un email a la cuenta de correo electrónico que se defina ante las siguientes circunstancias:

  • Corte de suministro de corriente alterna mediante la el suministro de tensión externa al terminal (opción “Cortes de electricidad”).
  • Aperturas o cierres de la puerta ocultando el sensor de presencia (opción “Aperturas puerta”).
  • Al iniciar por primera vez la aplicación Seguricasa (opción “Al iniciar esta app”).

 

Número de teléfono para envíos SMS

Complementando el submenú de avisos por SMS ’s disponible en la version Premium  se incluye esta sección, donde   se definirá el número de teléfono al que se deseen dirigir los mensajes de texto.

Tenemos que definir sobre todo el número del Teléfono hacia el que quieren dirigirán los SMS ‘s ante los eventos que se deseen auditar chequeados en   el submenú de avisos por sms’s.Opcionalmente,   también se puede asignar una cadena de texto en la opción Usuario que nos permita por ejemplo identificar el número de teléfono que hayamos asignado.

Es interesante destacar que si no informamos del número de teléfono destinatario de los SMS ‘s y clicamos alguna opción de SMS, nos saltara un error de número no definido.Si introducimos el numero o el nombre de usuario en esta sección, para volver a la pantalla principal, pulsar el botón volver del terminal o simplemente pulsa el botón cerrar de esta pantalla.

Correo electrónico destino

Complementando el submenú de avisos por mail, se incluye esta sección donde   se definirá la cuenta de correo electrónico al que se deseen dirigir los mails.

Tenemos que definir el correo electrónico destino hacia el que quieren dirigirán las e-mail ante los eventos que se deseen auditar chequeados en   el submenú de avisos por e-mail

Clicaremos en la copión E-mail y sobre la caja de texto cumplimentaremos el destinatario donde se dirigirán el e-mail ante los eventos que se deseen auditar chequeados en   el submenú de avisos por e-mail.

Es interesante destacar que si no informamos de la cuenta de correo y clicamos alguna opción de envíos de correos, nos saltara un error de mail no definido.

Para volver a la pantalla, el botón volver del terminal o simplemente pulsa el botón cerrar de esta pantalla.

Usuario Gmail para envíos

Complementando el submenú de avisos por mail, en esta sección   se definirá la cuenta de correo electrónico de Gmail desde donde se enviaran los mails.

Obviamente se podría haber definido otro tipo de servidor  de correo saliente, pero  por simplicidad dado que los usuarios de Android están obligados a tener una cuenta vinculada a una dirección de correo de Gmail para instalar nuevas aplicaciones en su terminal , este es el  candidato ideal como  servicio de envió de e-mails.

Dada la facilidad de envíos de correos electrónicos ante las circunstancias definidas, tenemos que definir el correo electrónico origen desde donde se dirigirán las e-mail ante los eventos que se deseen auditar chequeados en   el submenú de avisos por e-mail

La cuenta de Gmail pues se cumplimentara en la opción “cuenta” mediante el formato establecido completo (es decir con el formato [email protected]).

Para volver a la pantalla principal, basta pulsar el botón volver del terminal, o simplemente pulsar el botón cerrar de esta pantalla.

Dado que usaremos la cuenta de Gmail, para poder enviar correos desde esta cuenta, necesitamos cumplimentar en el apartado “Clave” la password de la cuenta de Gmail.

Como vemps en la pantalla anterior al cumplimentar la password de la cuenta de Gmail se ocultara su contenido tanto cuando estamos cumplimentándolo como cuando los revisamos pudiéndolo actualizar o eliminar en cualquier momento desde esta opción.

Es interesante destacar que si no informamos de la cuenta de correo y clicamos alguna opción de envíos de correos, nos saltara un error de mail no definido.

Para volver a la pantalla principal   pulsar el botón volver del terminal o simplemente pulsa el botón cerrar de esta pantalla.

Fichero de log

Es importante destacar que   si se desea almacenar las notificaciones de SMS o e-mail, el terminal debería contar al menos con 128MB de espacio en la SD externa para almacenamiento de logs.

Si deseamos registrar los logs de aviso por email o por SMS, simplemente necesitamos apuntar en el apartado “Carpeta” el nombre del fichero que deseamos usar para registrar todos estos eventos en el root de la microsd.

Para volver a la pantalla principal   pulsar el botón volver del terminal o simplemente pulsa el botón cerrar de esta pantalla.

En el siguiente vídeo  podemos ver  mas claramente el funcionamiento de todas estas opciones comentadas;

Requisitos

  • Smartphone Android con SO Android 4.1 (Yelly Bean) o superior.
  • Tarjeta SIM (puede ser de Prepago).
  • Cargador original.
  • Es importante destacar que si se desea almacenar las notificaciones de SMS o e-mail, el terminal debería contar al menos con 128MB de espacio en la SD externa para almacenamiento de logs.
  • Opcional: sistema para fijar el smartphone a la pared y soporte solidario a la puerta de acceso que tape parcialmente el sensor de presencia del Smartphone al abrirse.
  • Alguna  de estas aplicaciones : Seguricasa Free  Seguricasa Free  ( envio de emails) o  Seguricasa V4 Seguricasa V4(envio de emails o SMS’S)

Curso gratuito sobre Raspberyy Pi


En este blog nos intentamos hacer eco de todos los proyectos interesantes que surgen  respecto a las diferentes placas de IoT  donde a día de hoy sin duda podríamos destacar la placa Raspberry Pi.

Precisamente orientado  a todas aquellas personas que quieran profundizar en esta plataforma ,gracias a la plataforma de Miriadax   tenemos disponibles  en la red   un interesante  curso gratuito  online  sobre la   Rasberry Pi  apoyado  por la UPM  (Universidad Politécnica de Madrid)

El curso esta organizado en formato MOOC, (el acrónimo en inglés de Massive Online Open Courses ) , es decir como  un curso online masivo y abierto donde toda la comunidad   colabora de forma interactiva a través de la plataforma  y el uso de redes sociales.

Los  formadores son  Jorge Artieda, Miguel Hernando y Alberto Brunete   todos profesores de la UPM.

Este curso se  centra en enseñar a usar una Raspberry Pi para monitorear y controlar dispositivos en su ambiente gracias al  uso de  sensores y actuadores para monitorear salas y áreas así como  controlar dispositivos (encender y apagar luces, motores de control, etc.);

Otro de los pilares del curso es la parte de programación , enseñando a desarrollar programas que recojan los datos capturados por la Raspebrry Pi   para que los suba a  una infraestructura Cloud permitiendo que  aplicaciones móviles que usan esos datos interactúen con el usuario.

Por ultimo también , se  intenta proporcionar el  conocimiento necesario para utilizar los sistemas operativos incorporados de Raspberry Pi: Linux, programación en Python, protocolos de comunicaciones y periféricos de entrada y salida.

 

Como referencia  del formato de este curso en este video nos explican a  nivel hardware las diferentes partes que componen  un aRaspberry Pi

 

 

Los módulos previstos son los siguientes:

Es importante tener en cuenta que el curso tiene una faceta evidentemente practica permitiendo  trabajar con dispositivos reales .de modo que al final del curso tendrá un prototipo funcional para integrarse en el mundo de IoT.

Todas la practicas usan La Raspberry Pi 3 pero por su similitud también es posible Usar una raspberry Pi 2 en la mayoría de las practicas

Solo una nota: los vídeos del  curso son en ingles pero  gracias a los subtitulos automáticos  y la traducción simultánea de youtube es posible  mitigar esta controversia  y tal  vez nos ayude a mejorar  nuestro nivel de ingles

 

Por cierto, el curso esta diseñado para hacerlo en  6 semanas (48 horas de duración estimadas) y    empezó  justamente  ayer 3 abril de  2017 por lo que si le interesa no dude en apuntarse cuanto antes..

 

 

Mas información en  https://miriadax.net/web/practical-internet-of-things-lot-with-raspberrypi

Estacion grafica multimedia con Raspberry Pi


En el post de hoy vamos a demostrar gracias a MagdiBlog como hoy en día se pueden hacer interfaces gráficas muy potentes  mostrando información util simplemente usando una Raspberry conectada a un monitor de forma permanente gracias al bajisimo consumo de esta estupenda placa.

En efecto a todos nos gustan las estaciones meteorológicas que muestran una gran cantidad de información,  si es posible ,incluso sensible a la ciudad donde se viva. Ademas si , añade relojes de alta tecnología que hagan de calendario ,muestren  sonido cuando reciba un correo, sirva de marco digital, etcétera..mucho mejor ¿verdad?. Sin embargo, no es fácil encontrar cualquiera de estos dispositivos  (o casi). De hecho,soluciones comerciales  que existen hoy en día son  mucho mas limitadas ,y de todos modos, ,también son  emasiado costosas …

Pues en el proyecto de hoy veremos como gracias a una Raspberry esto es posible añadiendo ademas múltiples funciones tan solo limitadas por la imaginación pues ,por ejemplo el autor ademas de todo lo anterior ,quería tener tener una visión global sobre lo que está pasando en su red de hogar, su ancho de banda, el estado de  servidores y del  NAS, saber quién está conectado a su servidor TeamSpeak o  VPN, etcetera..todo ello ademas mostrando  la fase de la luna y el sol a la tierra durante el día, la hora del amanecer y el atardecer.

Así que este  proyecto relativamente simple (pero muy divertido) aporta una espectacular consola gráfica  que agrupa todos estos datos  de una forma realmente espectacular .

IMG_5393

El equipo necesario

A diferencia de otros proyectos, con una Raspberry Pi y una pantalla son suficientes.. Además, puede utilizar algo que no sea una Pi, incluyendo un viejo eeePC ,un  PC portátil en desuso ,una torre estándar  ,etc.

Simplemente necesita agregar  un soporte de pared para colgar la pantalla en la pared, así como un canal extra plana para ocultar los cables de alimentación (si decide disponer su pantalla por encima de la nevera por ejemplo, ahorrará comprando estos dos accesorios).

Para la pantalla,una opción es  elegir la más barata de tipo LED, pues son pantallas más delgadas,y consumen menos energia  ofreciendo un ángulo más amplio (conveniente cuando caminas en la habitación), así como un mayor brillo.Si quiere colgar  la pantalla  en la pared, debe tener claro el tipo que VESA monta que depende del  del TV monitor qeu vaya a colgar. Tenga en cuenta, sin embargo, que una pantalla de más de 20 – 22″ pantalla se convierte en rápidamente voluminosa… Por ultimo seria recomendable una pantalla de entre 16 y 20, en formato 16: 9 (más estética de 4/3), con un borde fino (siempre por el bien de estética ).

Aquí se  muestra  el detalle del hardware necesario :

  • Un modelo de Raspberyy Pi B 512 MB ( o superior)
  • Una tarjeta de memoria SDHC 8 GB
  • Un adaptador WiFi USB NetGear WNA1000M ( no es necesario con la Raspberry Pi 3)
  • Una pantalla LCD  (por ejemplo una de 8, 5 pulgadas , pero cualquier pantalla puede ser conveniente)
  • Soporte de pared VESA para pantalla
  • Una canaleta de pvc  para esconder los cables

 

 

En detalle

Esta es la lista de información que el autor decidió mostrar en la pantalla conectada  a una Raspberry  :

  • Fase de la tierra con el trazado de las nubes en tiempo real
  • Fase de la luna
  • Hora
  • Fecha
  • El tiempo en hoy
  • Previsión del tiempo para 3 días
  • Estado de servidores y NAS
  • TeamSpeak clientes conectados
  • Clientes VPN conectados
  • Ancho de banda de Internet
  • etc

Incluso es posible añadir  alguna  característica pues todavía hay espacio para mostrar la información: lo importante es que sea visible y legible desde cualquier lugar en la sala.

 

A continuación  el árbol de archivos necesarios para mostrar los diferentes módulos.

  • index.php: página principal que es llamada por el navegador
  • ajax.php: contiene el código que se ejecuta cuando se hacen  peticiones AJAX
  • .inc.php contiene las funciones de PHP
  • javascript.js contiene las funciones de JavaScript
  • hoja de estilo style.css

La estructura es muy fácil como  vemos siendo la página “index.php” la llamada por el navegador.Esta es la encargada de cargar mediante una función JavaScript para ver el contenido de cada módulo en el lugar correcto en la página ,la cual  pide  actualizaciones  automáticamente de la pantalla a intervalos regulares  de 3600s gracias a la sentencia meta incluida en la cabecera :

<Meta http-equiv = "refresh" content = "3600; url = index.php">

 

Nota: Puede descargar todos los archivos en un archivo en el último artículo del proyecto.

index.php

La página de índice se contenta con la posición de laz etiquetas<div>  que se mostrarán en  cada módulo.

En la etiqueta <head>, hay una etiqueta <meta> que tiene como objetivo actualizar la página cada 3600 segundos (cada hora). De este modo, se volverá a cargar la página entera, los contadores de JavaScript de reposición, código actualizadas son tomadas en cuenta, etc …

  <! DOCTYPE HTML PUBLIC "- // W3C // DTD HTML 4.01 Transitional // EN" "http://www.w3.org/TR/html4/loose.dtd">
 <Html>
   <Head>
     <Título> Jarvis </ title>
     <Meta http-equiv = "Content-Type" content = "text / html; charset = UTF-8" />
     <Meta http-equiv = contenido "Content-Language" = "es" />
     <Meta name = "autor" lang = "es" content = "subir" />
     <Meta name = contenido de "derechos de autor" = "subir ©" />
     <Meta http-equiv = "Cache-Control" content = "no-cache">
     <Meta http-equiv = "Pragma" content = "no-cache">
     <Meta http-equiv = "Expires" content = "0">
     <Meta http-equiv = "refresh" content = "3600; url = index.php">
     <Script type = "text / javascript" src = "// ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"> </ script>
     <Script type = "text / javascript" src = "javascript.js"> </ script>
     <Link rel = "stylesheet" type = "text / css" href = "style.css" />
   </ Head>
   <Body>

     <Div id = "principal">
       ? Jarvis <? Php // fecha de eco ( "Ymd H: i: s') - <div id =" semental ">!?  ?> </ DIV ->
       <Div id = "reloj"> </ div>
       <Div id = "Tiempo"> </ div>
       <Div id = "meteo_black"> </ div>
       <Div id = "TS3"> </ div>
       <Div id = "ping"> </ div>
       <Div id = "análisis"> </ div>
       <Div id = "VPN"> </ div>
       <Div id = "latencia"> </ div>
       <Div id = "tierra"> <img id = "img_earth" src = "PICT / blank.png"> </ div>
       <Div id = "luna"> <img id = "img_moon" src = "PICT / blank.png"> </ div>
       <Div id = "ifstat_oberon_up"> <img id = "img_oberon_up" src = "PICT / blank.png"> </ div>
       <Div id = "ifstat_oberon_down"> <img id = "img_oberon_down" src = "PICT / blank.png"> </ div>
     </ Div>

     <? Php include ( '.inc.php');  analytics de eco ();  ?>

   </ Body>
 </ Html>

Para los módulos que se muestran las imágenes (fases de la tierra y de la luna ancho de banda, gráficos), es apropiado  insertar una imagen en blanco “blank.png” para evitar mostrar un error en la página hasta que el petición AJAX responsable de la visualización de la imagen se ha completado.

ajax.php

Este es el archivo que se llama por peticiones AJAX y es responsable de llamar a la función derecho a ejecutar.

  <? Php

   header ( 'Content-type: text / html; charset = utf-8');
   require_once ( '.inc.php');

   if (isset ($ _ REQUEST [ 'bloque'])) {$ bloque = $ _REQUEST [ 'bloque'];} else {$ bloque = 'none';}

   /////////////////////////////////////////////////
   // LATENCIA
   /////////////////////////////////////////////////

   if ($ == bloque 'latencia') {
     latencia echo ();
   }

   /////////////////////////////////////////////////
   // TS3
   /////////////////////////////////////////////////

   else if ($ == bloque 'TS3') {
     eco TS3 ();
   }

   /////////////////////////////////////////////////
   // TIEMPO
   /////////////////////////////////////////////////

   else if ($ bloque == 'Tiempo') {
     eco de tiempo ();
   }

   /////////////////////////////////////////////////
   // PING
   /////////////////////////////////////////////////

   else if ($ == bloque de 'ping') {
     eco ping ();
   }

   /////////////////////////////////////////////////
   // VPN PGWP
   /////////////////////////////////////////////////

   else if ($ == bloque 'VPN') {
     vpn echo ();
   }

   /////////////////////////////////////////////////
   // ifstat
   /////////////////////////////////////////////////

   else if ($ == bloque 'ifstat') {
     imagickHisto ($ _REQUEST [ 'max'], $ _REQUEST [ 'eth'], $ _REQUEST [ 'UP_DOWN']);
   }

 ?>

Un bloque de código para cada módulo. Dependiendo del bloque de $ variable pasada como parámetro a la consulta AJAX, llamada la función objetivo.

inc.php

Este archivo contiene las funciones llamadas por el archivo ajax.php. Sigue el mismo principio que los anteriores: un bloque de código para cada módulo.

Básicamente, incluye una función por módulo  cuyos  detalles seria complejo explicar .

javascript.js

Este archivo contiene las funciones de JavaScript que pondrá en marcha peticiones AJAX   a un  intervalo regular .

  / * Inicializar las funciones de todos los módulos a cargar la página * /
 $ (Document) ready (function () {
    fonction_nom_du_module_1 ();
    fonction_nom_du_module_2 ();
    ...
 });

 / * Inicializar las variables de tiempo de espera para cada módulo * /
 timeout_nom_du_module_1 var; 
 timeout_nom_du_module_2 var;
 ...

 / * Definición de la función para la nom_du_module_1 módulo * /

 función nom_du_module_1 ()
 {
   $ .ajax ({
     asíncrono: falso,
     del tipo: "GET"
     url: "./ajax.php"
     datos "bloque = nom_du_module_1"
     el éxito: function (html) {
       . $ ( "# Nom_du_module_1") HTML (HTML);
     }
   });

   g = setTimeout ( "nom_du_module_1 ()", 10000);
 }

No se pone  la estructura de archivos aquí gobal para explicar el principio. El expediente completo estará disponible para su descarga en el final del artículo.

style.css

Este archivo contiene la hoja de estilo de página, que es la que contiene todas las opciones  gráficas de formato de elementos de la página (posición, tamaño, colores, etc …).

  / * * Init /

 cuerpo
 {
   background-color: RGBA (0, 0, 50, 1);
   font-family: Verdana "Courier New", "Lucida Console";
   font-size: 14px;
   font-weight: normal;
   padding: 0px;
   margen: 0px;
   overflow: hidden;
 }

 div, tabla, tr, td, TH, h1, h2, h3, a, lapso, p, pre, fieldset, de entrada, área de texto, la forma, img, seleccionar
 {
   font-family: Verdana "Courier New", "Lucida Console";
   font-size: 14px;
   font-weight: normal;
   padding: 0px;
   margen: 0px;
   Color: #FFF;
 }

 / * Inicio * /

 div mano #
 {
   anchura: 1366px;
   altura: 768px;
   position: relative;
   overflow: hidden;
   background-color: RGBA (0, 0, 0, 1);
   Color: #FFF;
 }

El div id cuya mano es el div contiene todos los demás div de cada módulo. Aquí se fija tamaño en píxeles de resolución nativa de la pantalla 1366 x 768 px.

El color de fondo (background-color) está unido al negro, pero se puede elegir lo que le guste

 

4 – Módulo 1 – Fecha y Hora

Volvamos en el meollo de las cosas con este primer módulo que muestra la fecha y la hora.

reloj1

Este módulo es muy simple, completamente en JavaScript. El módulo se llama: Reloj

index.php

En la página de índice, por lo que este es el <div> con el reloj Identificación del que nos interesa.

  <Div id = "reloj"> </ div>

La etiqueta se queda vacía, y se “llena” por medio de la función de JavaScript.

style.css

Al igual que con todos los módulos, se debe crear un div cuyo id es el nombre del módulo (aquí reloj) que contendrá la información a mostrar y, a continuación, establezer su tamaño y posición en la pantalla.

  / * Reloj * /

 div # reloj
 {
   derecha: 0px;
   top: 0px;
   position: absolute;
   overflow: hidden;
   background-color: RGBA (0, 0, 0, 1);
   Color: #FFF;
   font-weight: bold;
   text-align: center;
 }

 div.horloge_heure
 {
   font-size: 180px;
   background-color: RGBA (0, 0, 0, 1);
 }

 div.horloge_date
 {
   font-size: 50px;
   background-color: RGBA (0, 0, 0, 1);
 }

 span.horloge_grey
 {
   color: # 888;
   font-size: heredar;
 }

javascript.js

Esta función simple se basa en la hora del sistema, y muestra las horas y 24 minutos más o menos, a continuación, justo por debajo del día a día que en el mes, el nombre de mes y año .

  horloge_timeout var;

 función de reloj ()
 {
   dows = [ "Domingo", "Lunes", "Martes", "Miércoles", "Jueves", "Viernes", "Sábado"];
   meses = [ "f é v" "Jan", "Marzo", "Abril", "puede", "Junio", "Julio", "Agosto y ucirc; t", "Seven", "Octubre", "Noviembre" "dE c"];

   ahora = new Date;
   hora = now.getHours ();
   now.getMinutes min = ();
   now.getSeconds sec = ();
   jour_semaine = dows [now.getDay ()];
   día = now.getDate ();
   mes = mes [now.getMonth ()];
   año = now.getFullYear ();

   si (seco <10) {sec0 = "0";} else {sec0 = "";}
   si (min <10) {min0 = "0";} else {min0 = "";}
   si (hora <10) {heure0 = "0";} else {heure0 = "";}

   horloge_heure = hora + ":" + + min0 min;
   horloge_date = "<span class = 'horloge_grey'>" + jour_semaine + "</ span>" + fecha + "" + mes + "<span class = 'horloge_grey'>" + año + "</ span>";
   horloge_content = "<div class = 'horloge_heure'>" + horloge_heure + "</ div> <div class = 'horloge_date'>" + horloge_date + "</ div>";

   $ ( "# Reloj") html (horloge_content).

   horloge_timeout = setTimeout ( "reloj ()", 1000);
 }

Cada 1000 ms, o cada segundo, el contenido del div reloj se actualiza con el contenido de la horloge_content variable. También puede mostrar segundos en la pantalla si lo desea 

Esto en cuanto a este primer módulo muy simple, pero entre los más útiles para visualizar en la pantalla

5 – Módulo 2 – Xplanet

Esta es la utilidad  más vistosas  que mereceria una pantalla por sí misma:la pantalla de la tierra con el mapa fase nubes sol en tiempo real, así como la fase de la luna Este módulo se basa en el software Xplanet para generar imágenes de todos los planetas  y satélites del sistema solar. Puede representar en tiempo real cada vez, todo el sistema solar con la posición de las estrellas y planetas, hacer zoom sobre una o más planetas, etc …

En cuanto a la tierra, se puede ver la posición de las ciudades y una gran cantidad de información, incluyendo el clima. También es posible representar nuestros satélites artificiales con su posición real, órbita, etc …

xplanet

instalación

Xplanet es una aplicación que ha sido … muy larga! Está disponible en los repositorios de Debian, por lo que instalarlo, es simple:

  apt-get install xplanet

los mapas

La base de Xplanet contiene un “mapa” para cada planeta (una imagen que representa la superficie). Se puede, y es recomedable descargar mapas mejor en alta definición. También es interesante  descargar un mapa dedicado a la parte de la superficie de la tierra que no se expone al sol (noche), de lo contrario será simplemente Xplanet el mapa de la jornada.

Aquí se pueden encontrar muchos mapas de la tierra y todos los otros planetas del sistema solar:

Xplanet trabajará para crear una combinación de las dos imágenes para representar la parte soleada de la tierra y la parte en  oscuridad.

La generación de imágenes

Xplanet es en última instancia un generador de imágenes que representa las estrellas en su estado en un momento T y desde cierto punto de vista. Todo sucede en la línea de comandos, y como se puede ver navegando por la página web Xplanet, hay cientos de opciones! Aquí veremos  la configuración que se utiliza para la pantalla.

De hecho,  genera dos imágenes diferentes, una para la tierra y otra para la luna. Aquí está el  archivo de configuración xplanet.conf:

  [Por defecto] # Los valores de esta sección se aplican a todos los cuerpos menos que se modifique a continuación.

 arc_color = blanco
 arc_thickness = 1
 bump_scale = 3
 cloud_gamma = 1
 cloud_ssec = false
 cloud_threshold = 90
 color = {} # 255255255 caja de color de reserva en un mapa de imagen no se encuentra
 draw_orbit = false
 rejilla = false
 grid1 = 6
 Grid2 = 15
 magnificar = 1
 marker_color = rojo
 max_radius_for_label = 3
 min_radius_for_label = 0,01
 min_radius_for_markers = 40
 Órbita = {-. 5, .5,2}
 orbit_color = {} # 255255255 color para la órbita
 random_origin = true
 random_target = true
 sombreado = 30 # 0 = negro, 100 = Sami tiene dayside
 text_color = {} # 255,0,0 color del texto (marcadores de etiquetas y Cuerpo)
 crepúsculo = 6 # mezclan las imágenes para el día y la noche
                                 # Dentro de este píxel Muchos grados de
                                 # El terminador

 [Sol]
 "Sun"
 color = {255 255 166}
 map = / home / Jarvis / xplanet / img / sunmap.jpg
 max_radius_for_label = 0
 sombra = 100

 [Tierra]
 "Tierra"
 color = {28, 82, 110}
 map = / home / Jarvis / xplanet / img / land_ocean_ice_2048.jpg
 night_map = / home / Jarvis / xplanet / img / noche dark.jpg
 cloud_map = / home / Jarvis / xplanet / img / clouds_2048.jpg
 min_radius_for_label = 0

 [Luna]
 "Luna"
 color = {100, 100, 100}
 map = / home / Jarvis / xplanet / img / moonmap2k.jpg

En el [la tierra] por la tierra y [Luna] a la luna, que vea las rutas de acceso a los mapas para el día de “mapa” y “night_map” modo noche.

Las nubes

También vimos el mapa “cloud_map” por la tierra. De hecho, Xplanet permite emular una imagen o mapa de las nubes en la tierra para obtener un resultado muy realiza con la cobertura de nubes visto casi en tiempo real.


Se puede conseguir esta tarjeta nubes o “cloud_map” en diversos sitios. Según las fuentes, que se actualizan entre 1 y 10 veces al día: http://xplanet.sourceforge.net/clouds.php

Debe ser un pequeño script que descarga el último mapa publicado nubes. Una tarea cron se encargará de ejecutar el script a intervalos regulares. Xplanet_cloud.sh es mi guión:

  #! / Bin / sh

 Pat = / home / Jarvis / xplanet / img / # destino de la imagen descargada
 tmp = $ pat nombre de archivo temporal # "tmp_clouds_2048.jpg"
 img = $ pat "clouds_2048.jpg" # nombre del archivo final

 rm $ tmp # borrar el archivo temporal de edad

 $ Wget -O imagen tmp # http://xplanet.sourceforge.net/clouds/clouds_2048.jpg descargado

 if [-f $ tmp];  a continuación, # si el archivo se ha descargado ...
   mogrify -resize 2000x1000 $ tmp # redimenssionne la imagen descargada de manera que sea la misma resolución que el mapa "día"
   $ Mv tmp $ img # sustituye a la antigua imagen con el nuevo
   $ Pat Jarvis chown -R www-data && chmod -R 775 $ pat # cambia los permisos en el archivo
 fi

Recuerde hacer el script ejecutable con chmod 755 xplanet_cloud.sh 

Y eso es tarea CRON asociado que se pueden configurar con el comando crontab -e:

  0 * / 4 * * * /home/jarvis/xplanet/xplanet_cloud.sh

Cada 4 horas, la secuencia de comandos se ejecuta y un nuevo mapa se descargan las nubes 

generar imágenes

El último paso, se inicia xplanet iniciar el sistema para generar imágenes de la tierra y la luna cada N minutos,lo cual se consigue conun pequeño script llamado  Xplanet.sh  que contiene dos controles (uno para la imagen de la tierra y para la imagen de la luna).

Este es el contenido del script:

  #! / Bin / sh

 TIERRA #
 xplanet -conf /home/jarvis/xplanet/xplanet.conf -output /home/jarvis/xplanet/img/xplanet_earth.png -wait 120 tierra -cuerpo -latitud -Longitude 40 10 500x500 y -geometry

 LUNA #
 xplanet -conf /home/jarvis/xplanet/xplanet.conf -output /home/jarvis/xplanet/img/xplanet_moon.png -wait 600 -cuerpo luna -geometry 250x250 y

Veamos al comando xplanet ,el cual soporta los siguientes parámetros:

  • -conf: xplanet.conf el archivo de configuración
  • -output: el archivo de salida
  • -wait: el intervalo de tiempo, en segundos, de espera entre cada uno de generación de imágenes (120 segundos o 2 minutos a la tierra, para poder observar el sol durante todo el día 600 segundos o 10 minutos son. suficiente para la luna, cuya fase varía muy lentamente).
  • -cuerpo: nombre del cuerpo celeste para ver, establecido en el archivo de configuración
  • -geometry: tamaño en píxeles, de la imagen generada
  • -latitud y -Longitude: fija el punto central de la imagen de la tierra. Al elegir la latitud y longitud 40 10, la imagen será más o menos centrado en Italia. No vemos ninguna afinidad particular con este país, es simplemente un ángulo que revela Francia y en Europa, el conjunto de África, gran parte de Rusia, las Américas y el polo norte es bastante! También puede elegir la vista del sol, por ejemplo, para ver siempre el lado soleado de la tierra, que recorrerá un poco y no siempre ver la misma parte del globo 

Entonces sólo tiene que colocar la secuencia de comandos en el directorio /etc/init.d y ejecutar el siguiente comando a ejecutar en cada inicio del sistema:

  update-rc.d xplanet.sh defaults

Hemos hecho la mitad del trabajo  Cada 2 minutos, se genera a partir de la tierra con un mapa nubes actualizados cada 4 horas una nueva imagen (500 x 500 píxeles). Cada 10 minutos, la imagen de la fase de la luna (250 x 250 píxeles) se actualiza.

index.php

En la página de índice, se añaden dos etiquetas <div>, cada uno con una etiqueta <img>, uno para la tierra y otro para la luna.

  <Div id = "tierra"> <img id = "img_earth" src = "PICT / blank.png"> </ div>
 <Div id = "luna"> <img id = "img_moon" src = "PICT / blank.png"> </ div>

Para evitar mostrar un error al cargar la página se debe inicializar las fuentes de <img> etiquetas con un blank.png imagen en blanco.

style.css

La hoja de estilo para este módulo es muy simple, ya que sólo tiene que definir la posición y el tamaño de la div que contiene las imágenes que se muestran.

  / * Tierra * /

 div # Tierra
 {
 anchura: 500px;
 altura: 500px;
 left: 0px;
 top: 0px;
 position: absolute;
 overflow: hidden;
 background-color: RGBA (0, 0, 0, 1);
 }

 / * * Luna /

 div # luna
 {
 anchura: 250 píxeles;
 altura: 250 píxeles;
 izquierda: 500px;
 top: 0px;
 position: absolute;
 overflow: hidden;
 background-color: RGBA (0, 0, 0, 1);
 }

javascript.js

Es simplemente para reemplazar la imagen mostrada por la nueva imagen generada. El problema es que el nombre del archivo no cambia, el navegador tenderá a mostrar la imagen que ya está almacenada en su caché. Para superar este problema vamos a añadir una marca de tiempo (fecha y hora expresada en número de segundos transcurridos desde el primer Janver 1970) en la ruta de la imagen. De esta manera, el navegador va a pensar que se trata de una nueva imagen cada vez.

En aras de la fluidez, también es necesario para precargar las imágenes antes de sustituto en la pantalla. y la imagen se evita cargar cuanto a su pantalla.

  / * * Xplanet /

 xplanet_timeout var;

 función xplanet () {

 var ahora = new Date () getTime ().

   / * * Carga previa de imágenes /
 img_earth var = $ ( "<img />").attr("src", "xplanet / img / xplanet_earth.png?" + ahora);
 img_moon var = $ ( "<img />").attr("src", "xplanet / img / xplanet_moon.png?" + ahora);

   / * Mostrar nuevas imágenes a la pantalla * /
 . $ ( "# Img_earth") attr ( "src", "xplanet / img / xplanet_earth.png?" Ahora +);
 $ ( "# Img_moon") attr ( "src", "xplanet / img / xplanet_moon.png?" Ahora +).

 xplanet_timeout = setTimeout ( "xplanet ()", 120000);
 }

La función se ejecuta cada 120000ms (es decir, cada 2 minutos) que en última instancia se desplaza sol de la tierra y de la luna durante todo el día 🙂

 

6 – Módulo 3 – El Tiempo

Ahora veremos  el módulo de tiempo que muestra el tiempo actual y la previsión de 3 a 5 días.

jarvis_screenshot_meteoEste módulo es particularmente difícil porque es muy difícil de personalizar. De hecho, es el uso de “widgets” puestos a disposición por los sitios especializados que ofrecen opciones de configuración limitadas.

 

Reproductores

Al menos  tres sitios que ofrecen widgets de tiempo más o menos completa y más o menos bonita: my-meteo.fr , tameteo.com y meteocity.com

Todas las ofertas para personalizar la información que se muestra, el número de días pronosticar, colores de los elementos y estilos de iconos Una vez que las opciones seleccionadas, el sitio genera el código HTML para copiar / pegar en su página.

Aquí se  muestran algunos sites que ofrecen este tipo de servicios:

  • my-meteo.fr
  • tameteo.com
  • meteocity.com

Las opciones propuestas por el widget de meteocity son un poco más amigables  . Aparte de la información sobre la humedad y el viento, el resto  de información es fácil de leer a distancia,pero vamos a tener que utilizar trucos para ocultar la información innecesaria 

index.php

Añadimos a nuestro archivo index.php una simple etiqueta <div> se deja vacío por ahora.

 <Div id = "Tiempo"> </ div>

Como todos los módulos de este dashscreen es una función de JavaScript que cargará insertar el contenido que se mostrará en el div del módulo.

style.css

Caso particular de este módulo,  no tiene la posibilidad de actuar directamente sobre el código CSS proporcionada por el sitio de tiempo. Así que sólo tenemos que colocar el div que contendrá información sobre el clima.

 / * El tiempo * /

 div # meteo
 {
   derecha: 0px;
   top: 300px;
   position: absolute;
   overflow: hidden;
   background-color: RGBA (0, 0, 0, 1);
   Color: #FFF;
   font-weight: bold;
   text-align: center;
 }

javascript.js

La función JavaScript de este módulo es feliz de enviar una petición AJAX e introduzca el resultado de la consulta en el div adecuado.

 / * El tiempo * /

 meteo_timeout var;

 función meteo ()
 {
   $ .ajax ({
     asíncrono: falso,
     del tipo: "GET"
     url: "./ajax.php"
     datos "bloque = meteo"
     el éxito: function (html) {
       $ ( "# Tiempo") HTML (HTML).
     }
   });

   meteo_timeout = setTimeout ( "Tiempo ()", 3.600.000);
 }

la información del tiempo cada hora (cada ms 3600000) es más que suficiente.

inc.php

En este módulo necesitamos una función PHP que devuelve el código generado por el widget. Esto nos da una función muy sencilla en la que simplemente copiar / pegar el código HTML que ha generado el sitio Tiempo

 /////////////////////////////////////////////////
 // tiempo
 /////////////////////////////////////////////////

 función meteo () {
   $ Tiempo = 'pegar aquí el código HTML generado por el sitio de tiempo';
   devolver $ meteo;
 }

Ocultar información innecesaria

Si desea ocultar cierta información proporcionada por el widget, simplemente añadir un <div> en negro por encima de los elementos que desea ver desaparecer.

Añadir un <div> en el archivo index.php justo por debajo del tiempo div:

 <Div id = "Tiempo"> </ div>
 <Div id = "meteo_black"> </ div>

A continuación, edite el archivo style.css añadiendo el siguiente código en la sección del tiempo:

 div # meteo_black
 {
   derecha: 0px;
   top: 420px;
   anchura: 600px;
   altura: 100px;
   position: absolute;
   z-index: 9999;
   background-color: RGBA (0, 0, 0, 1);
 }

Por supuesto, tendrá que ajustar la posición y el tamaño del div para satisfacer sus necesidades pero el resultado, es muy fácil de leer y  el diseño es muy elegante 

Con estos primeros tres módulos de reloj , xplanet y el tiempo, ya es posible hacer una hermosa pantalla  con todos estos elementos. Esta información puede ser valiosa y útil para todo el mundo todos los días 

Como extra aparte de todos los módulos de hora ,el tiempo y las fases lunares  el diseñador decidió añadir algunas funciones  de “monitoreo”, cuya función es supervisar los servidores y redes..

 

 

 

8 – Módulo 5 – TeamSpeak

Si usted no sabe TeamSpeak , se trata de un software de conferencia de audio que permite a varias personas chatear a través de Internet (para más información http://fr.wikipedia.org/wiki/TeamSpeak ). Este módulo se utiliza para mostrar el estado del servidor de TeamSpeak (on / off) y la lista de las personas que están conectados a él.


Para obtener esta información se utiliza TeamSpeak 3 framework PHP que es una descarga gratuita. Esta gran  libreria PHP  proporciona acceso a todas las funciones del servidor de TeamSpeak3.

Sólo tiene que descargar y descomprimir TeamSpeak 3 framework PHP a su directorio web raíz.

index.php

Al igual que con otros módulos, sólo un <div> suficientes. Se empieza a acostumbrarse 

 <Div id = "TS3"> </ div>

La etiqueta se queda vacía, y se “llena” de la función de JavaScript …

style.css

Es la hoja de estilo minimalista para este módulo:

 / * * Ts3 /

 div # TS3
 {
 izquierda: 340px;
 parte inferior: 10px;
 position: absolute;
 overflow: hidden;
 background-color: RGBA (0, 0, 0, 1);
 Color: #FFF;
 font-weight: bold;
 text-align: center;
 }

 td.ts3_user
 {
 text-align: left;
 font-size: 30px;
 padding-left: 10px;
 }

javascript.js

Una vez más, una aplicación AJAX fácil de recuperar información a mostrar.

 / * * TS3 /

 ts3_timeout var;

 función TS3 ()
 {
 $ .ajax ({
 asíncrono: falso,
 del tipo: "GET"
 url: "./ajax.php"
 de datos "de bloque = TS3"
 el éxito: function (html) {
 $ ( "# Ts3") HTML (HTML).
 }
 });

 ts3_timeout = setTimeout ( "TS3 ()", 10000);
 }

El período de actualización se establece en 10 segundos para ver rápidamente los cuales conecta / desconecta el servidor.

ajax.php

Eso habla por sí mismo …

 /////////////////////////////////////////////////
 // TS3
 /////////////////////////////////////////////////

 if ($ == bloque 'TS3') {
 eco TS3 ();
 }

.inc.php

Aquí se utiliza TeamSpeak 3 framework PHP .

Primero se abre un socket en el puerto 30033 (como para el módulo 4 – Servidor de ping ) para verificar que el servidor de TeamSpeak esta funcionando bien. Si es así, entonces se puede mostrar la bandera del servidor (la imagen triton_ts3.png), entonces se usa TeamSpeak 3 Marco de PHP para recuperar la lista y el estado de los usuarios conectados .

 /////////////////////////////////////////////////
 // TS3
 /////////////////////////////////////////////////

 función TS3 () {

 $ Host_ip = '10 .0.0.1 ';
 $ Host_port = '30033';
 $ Zócalo = 0;
 $ Socket = @fsockopen ($ host_ip, $ host_port, $ errno, $ errstr, 3);
 $ Html = '';

 if ($ socket &&! $ errno) {
 require_once ( "./ TS3_PHP_Framework-1.1.12 / bibliotecas / TeamSpeak3 / TeamSpeak3.php");
 $ Ts3_ServerInstance = TeamSpeak3 :: factory ( "ServerQuery: // nombre de usuario: [email protected]: 10011 /");
 $ = $ Ts3_VirtualServer ts3_ServerInstance-> serverGetById (1);

 $ Html = '<img width = "200 px" src = "/ triton_ts3.png PICT" estilo = "margin-bottom: 10px;">' ;.
 . $ Html = '<table cellspacing = "0px" cellpadding = "0px">';
 foreach ($ ts3_VirtualServer-> clientList () como cliente $) {
 if ($ cliente [ "client_unique_identifier"] == 'serveradmin') {continúe;}
 $ Html = '<tr>'.
 $ Html = '<td valign = "middle">'.
 $ Html = '<estilo img =. "Width: 20px;"  src = "./ TS3_PHP_Framework-1.1.12 / images / espectador /'.$ cliente-> getIcon () 'png" alt = "">';
 $ Html = '</ td>.';
 $ Html = '<td valign = "middle">'.
 $ Html = '' .htmlspecialchars ($ cliente).
 $ Html = '</ td>.';
 $ Html = '</ tr>'.
 }
 $ Html = '</ table>'.
 }

 devolver $ html;
 }

Este módulo es muy fácil de conseguir con la lib TeamSpeak 3 framework PHP 

 

 

7 – Módulo 4 – servidor Ping

Si tiene servidores, NAS, o cualquier otro tipo de máquina que desee conocer el estado (encendido / apagado, o disponible / no disponible), este tipo de módulo, de nuevo es muy simple pero de gran uso 


La idea es mostrar los servidores verdes que responden correctamente al módulo solicitaciones, y en rojo los que no responden. Para enfatizar la naturaleza alarmante de una máquina que no responde, vamos a añadir una animación para resaltar este resultado:

de ping

index.php

Al igual que con otros módulos, sólo un <div> suficientes.

  <Div id = "ping"> </ div>

La etiqueta se queda vacía, y se “llena” de la función de JavaScript.

style.css

Para este módulo, la hoja de estilo es un poco más larga:

  / * * Ping /

 div # ping
 {
 left: 0px;
 parte inferior: 0px;
 position: absolute;
 overflow: hidden;
 background-color: RGBA (0, 0, 0, 1);
 }

 td.ping
 {
 font-size: 30px;
 text-align: left;
 border-radius: 10px;
 padding: 5px 10px;
 font-weight: bold;
 }

 td.ping_up
 {
 color: # 00DD00;
 }

 td.ping_down
 {
 Imagen de fondo: url ( 'PICT / warning.gif');
 color: # DD0000 ;;
 }

Los nombres de la máquina se muestran en una tabla <table> que cada célula <td> puede o bien utilizar el estilo “ping_up” si la máquina cumple o “ping_down” si la máquina no responde. En este último caso, vamos a utilizar una imagen de un gif animado, a modo de  “flash” en un cuadro rojo con el mes,para dar un mayor resalte

javascript.js

Javascript función de este módulo hace sólo una petición AJAX, y muestra el resultado en el index.php div:

  / * * PING /

 var PING_TIMEOUT;

 función ping ()
 {
 $ .ajax ({
 asíncrono: falso,
 del tipo: "GET"
 url: "./ajax.php"
 datos "bloque = ping"
 el éxito: function (html) {
 $ ( "# Tabla") HTML (HTML).
 }
 });

 PING_TIMEOUT = setTimeout ( "ping ()", 30000);
 }

Es importante tener una visión en tiempo real del estado de las máquinas, por lo que estamos estableciendo el tiempo de refresco a 30 segundos. Se puede reducir este tiempo para que se adapte a sus necesidades, pero asegúrese de que sigue siendo mayor que el tiempo que tarda la función de PHP para poner a prueba todas sus máquinas. En promedio, se puede tardar de 4 a 5 segundos para poner a prueba todas las máquinas. Sin embargo, no es raro que se tarde  hasta 20 segundos! Así que si se ajusta a 30 segundos ,esta puede ser una buena opción para el tiempo de espera entre cada actualización del módulo.

ajax.php

Sólo tiene que añadir unas pocas líneas a ajax.php archivo para la función correcta se llama:

  /////////////////////////////////////////////////
   // PING
   /////////////////////////////////////////////////

   if ($ == bloque de 'ping') {
     eco ping ();
   }

inc.php

En este archivo vamos a declarar la función de ping () que es responsable del lanzamiento de las aplicaciones en diferentes servidores, y luego construir la tabla HTML que se mostrará.

En general, para supervisar el estado de un servidor, se utiliza el comando ping que simplemente indica si la máquina objetivo satisface las peticiones ICMP. Esto plantea varios problemas. De hecho, es probable que el tráfico ICMP está bloqueado por un servidor cortafuegos por  arriba que distorsione el resultado. Además, si desea supervisar un servidor web, por ejemplo, es muy posible que la máquina responda bien a los pings, pero que el servicio web no está disponible. Haciendo ping por lo tanto tienen poco interés …

La idea es bastante sencilla si los servicios que se ejecutan en nuestras máquinas están disponibles. Para ello, sólo tendremos que abrir un socket con la función de PHP fsockopen () . Si la abertura del pipe no  es posible  eso significara  que el servicio no está disponible 

  /////////////////////////////////////////////////
   // PING
   /////////////////////////////////////////////////

   función ping () {
     $ Hosts = array ();
     // Definición de máquinas de prueba
     $ Hosts_ip = array (
                     Oberon => array ('10 .0.0.1 '' 22 '), // SSH
                     'Triton' => array ('10 .0.0.2 '' 15915 '), // TeamSpeak
                     'Ananke' => array ('10 .0.0.3 '' 2049 '), // NFS
                     'DS110j' => array ('10 .0.0.4 '' 2049 '), // NFS
                     'DS210j' => array ('10 .0.0.5 '' 2049 '), // NFS
                     'DS212j' => array ('10 .0.0.6 '' 2048 ') // NFS
                 );

     // para cada máquina de abrir un socket se prueba en el puerto especificado
     // almacenamos el resultado 'arriba' o 'abajo' en las variables $ anfitriones
     foreach ($ hosts_ip como $ host => $ host_data) {
       $ = $ Host_ip host_data [0];
       $ = $ Host_port host_data [1];
       $ Zócalo = 0;
       $ Socket = @fsockopen ($ host_ip, $ host_port, $ errno, $ errstr, 3);
       if ($ && $ errno toma!) {$ anfitriones [$ nombre de host] = 'arriba';}
       else {$ anfitriones [$ nombre de host] = 'abajo';}
     }

     // Construir la tabla HTML
     // para cada máquina probado, que muestra su nombre y el estilo se fija 'ping_up' o 'ping_down' la etiqueta td
     $ Html = '';
     . $ Html = '<table cellspacing = "10px">';
     $ C = 0;
     foreach ($ anfitriones como $ host => $ host_status) {
       if ($ c == 0) {$ html = '<tr>'} ;.
       $ Html = '<td class = "ping ping _' $ host_status .. '">' $ nombre de host </ td> '...;
       $ C ++;
       if ($ c == 2) {$ c = 0;  $ Html = '</ tr>'} ;.
     }
     if ($ c! = 0) {$ html = '</ tr>'} ;.
     $ Html = '</ table>'.

     devolver $ html;
   }

El $ hosts_ip variable contiene la lista de equipos para poner a prueba y la pantalla. El nombre que se muestra, la dirección IP y el puerto TCP servicio a ensayar se almacena allí. Debe adaptar los nombres, direcciones IP y número de puerto para sus necesidades.

Como se puede ver en los comentarios de código, dependiendo de la máquina de prueba, abro un zócalo en servicios tales como SSH, NFS y TeamSpeak. Esto también funciona muy bien en FTP, HTTP, POP3, etc … hasta que el servicio a prueba de escucha en un puerto TCP, que funcionará 

Nota: Es posible optimizar esta función PHP paralelización de sockets abiertos en cada máquina. De hecho, esta función prueba las máquinas de uno en uno, que puede ser largo … En “bifurcan” la tarea con la función pcntl_fork PHP (), es posible ejecutar todas las peticiones a la vez, reduciendo así el tiempo total que se pone la función para devolver la tabla HTML que se vea. Siéntase libre de dejar un comentario si quieres más detalles sobre este procedimiento 

Optimización mediante el fork

El principio es simple: Para cada máquina a ensayar, vamos a crear un proceso a través del hijo función de PHP fork_pcntl () que pondrá en marcha fsockopen (). A medida que el proceso hijo y el proceso padre no puede compartir las variables (por lo menos el uso de técnicas de memoria compartida …), debe almacenar los resultados en una pequeña base de datos SQLite  El proceso padre espera a todos proceso hijo se completa ir a leer el contenido de la base de datos SQLite (que contiene el estado de cada máquina). El resto permanece sin cambios, construimos la tabla HTML para mostrar como en la función inicial de ping () A saber, el fork sólo es posible desde la línea de comandos, será necesario adaptar el archivo ajax.php de esta manera:

  /////////////////////////////////////////////////
   // PING
   /////////////////////////////////////////////////

   if ($ == bloque de 'ping') {
     eco shell_exec ( 'php5 fork.php');  // fork.php es el archivo en el que se encuentra la función ping_fork ();
   }

Aquí la versión “fork” de la función de ping (), se puede utilizar directamente copiando un archivo fork.php:

  función ping_fork () {

   $ Hosts_ip = array (
                     Oberon => array ('10 .0.0.1 '' 22 '), // SSH
                     'Triton' => array ('10 .0.0.2 '' 15915 '), // TeamSpeak
                     'Ananke' => array ('10 .0.0.3 '' 2049 '), // NFS
                     'DS110j' => array ('10 .0.0.4 '' 2049 '), // NFS
                     'DS210j' => array ('10 .0.0.5 '' 2049 '), // NFS
                     'DS212j' => array ('10 .0.0.6 '' 2048 ') // NFS
                 );

   $ PIDS = array ();

   // Conectar con el SQLite base de datos y la creación de la tabla hosts_status si no existe todavía
   $ Db = new SQLite3 ( 'ifstat / hosts.sqlite');
   $ Db-> exec (CREATE TABLE SI NO EXISTE hosts_status (nomb_sist_pral VARCHAR (10), host_status VARCHAR (5)); ');

   // Para cada máquina, hemos creado un proceso hijo
   foreach ($ hosts_ip como $ nomb_sist_pral => $ host) {
     $ PIDS [$ nombre_host] = pcntl_fork ();
     if (! $ PID [$ nomb_sist_pral]) {
       $ Socket = @fsockopen ($ host [0], $ host [1] $ errno, $ errstr, 3);
       if ($ && $ errno toma!) {$ status = 'arriba';} else {$ status = 'abajo';}
       // esperamos hosts_status la tabla ya no está bloqueado por un acceso potencial competidor
       if ($ db-> busyTimeout (5000)) {
         $ Db-> exec ( "INSERT INTO VALORES hosts_status ( '$ nomb_sist_pral' '$ status');");
       }
       exit ();
     }
   }

   // el proceso padre debe esperar hasta que todos los procesos se han completado hijo
   foreach ($ PID como $ nomb_sist_pral => $ pid) {
     pcntl_waitpid ($ pid, estado $, WUNTRACED);
   }

   Resultados $ = $ db-> query ( 'select * from hosts_status;');

   $ Html = '';
   . $ Html = '<table cellspacing = "10px">';
   $ C = 0;
   while ($ host = $ Resultados> fetchArray (SQLITE3_ASSOC)) {
     if ($ c == 0) {$ html = '<tr>'} ;.
     . $ Html = '<td class = "ping ping _' $ Anfitrión [ 'host_status']. '">' $ Anfitrión [ 'nomb_sist_pral'] '</ td>' ..;
     $ C ++;
     if ($ c == 2) {$ c = 0;  $ Html = '</ tr>'} ;.
   }
   if ($ c! = 0) {$ html = '</ tr>'} ;.
   $ Html = '</ table>'.

   $ Db-> exec ( "BORRADO DE hosts_status;");

   devolver $ html;
 }

 eco ping_fork ();

El tiempo de espera fsockopen () aquí se establece en 3 segundos, lo que significa que uno debe esperar por lo menos tres segundos antes de declarar el equipo de destino como “abajo” (no disponible). En la versión no fork del ping () si un equipo no contesta, tuvo que esperar 3 segundos antes de probar la máquina siguiente, y así sucesivamente. Con mis 6 máquinas, si nadie contesta, él tendría que esperar 6 x 3 = 18 segundos antes de que el resultado final. Con la versión 6 fork solicitudes se envían simultáneamente. Cualquiera que sea el número de máquinas a ensayar, vamos a tener una respuesta dentro de 3 segundos como máximo

 

 

 

9 – Módulo 6 – Gráfico de ancho de banda

Por diversas razones, puede ser interesante tener si nuestro ancho de banda de Internet está saturado o no. Este módulo muestra una historia de unos 5 minutos utilizando el ancho de banda aguas abajo (descarga) y aguas arriba (carga). De esta manera, se puede ver de un vistazo si algo anormal está sucediendo en su red.

 

introducción

Este módulo es el más complicado de todo por la borda. Por un lado, tenemos que recuperar el caudal instantáneo utilizado por la interfaz de red de la pasarela que está conectado al router. A continuación, tendrá que pasar estos datos en Pi para ejecutarlos en  el dashscreen. Por último, se creará un gráfico para representar esta información …

De hecho,se   ha optado por no utilizar suave tipo mrtg que se especializan en este tipo de cosas instalando el software mínimo y utilizando algunos comandos básicos. Para hacer algo simple (como el ancho de banda de visualización en el gráfico), sin necesidad de sacar la gran artillería  Y entonces … si no nos complicamos la vida, que sería mucho menos divertido, ¿verdad? 

Ancho de Banda

ifstat es una pequeña herramienta desde la línea de comandos que muestra las estadísticas de uso de una interfaz de red. En un terminal, escriba el siguiente comando:

  ifstat -n -i eth0

Y se obtiene continua, algo en el género:

  eth0       
  KB / s en KB / s hacia fuera
     0,45 0,06
     0,71 0,39
     2,85 0,76
     0,57 0,06
     1,86 0,19
     0,45 0,06
     0,45 0,06
     0,45 0,06
     0,57 0,06
     0,59 0,13
     0,45 0,06
     0,45 0,06
     0,59 0,26
     0,57 0,06
     1,74 0,13
     ...

Como vemos se obtiene cada segundo el flujo instantáneo (casi) en Kbytes / s, es decir, en KB / s Esto es exactamente lo que necesitamos ahora  debe enviar esta información continuamente a nuestra pantalla.

Transmitir los datos a través de la red Pi

La forma más fácil de transmitir información desde un ordenador a otro es enviarlos en paquetes UDP … El comando netcat es totalmente apropiado para este tipo de operación. En una máquina que hace el papel de servidor de hecho:

  nc -u -l 12345
  • -u: Para utilizar UDP
  • -l: para cambiar al modo de escucha (servidor)
  • 12345: un número de puerto découte

A continuación, en una máquina B que actúa como un cliente, hacer:

  n -p 8888 -u 10.0.0.1 12345
  • -p 8888: un puerto de origen
  • -u: Para utilizar UDP
  • 10.0.0.1 dirección IP de la máquina A (servidor)
  • 12345: Oyente Una máquina (servidor)

 

Para transmitir los datos devueltos por el comando ifstat través netcat, vamos a utilizar una tubería . Aquí hay dos scripts completos (cliente / servidor) para realizar esta operación:

  • servidor de secuencia de comandos para ejecutar en el nc_ifstat_srv.sh Pi:
  ### COMENZAR INIT INFO 
 # Proporciona: nc_ifstat_srv 
 # Required-Start: 
 # Requerido-Stop: 
 # Default-Start: 2 3 4 5 
 # Default-Stop: 0 1 6 
 # Corto Descripción: ifstat para Jarvis 
 # Descripción: Habilitar el servicio proporcionado por el demonio. 
 ### END INIT INFO

 dst_port = 12,345
 dst_dir = / home / Jarvis / ifstat
 dst_file = eth0.log

 nc -l -u $ dst_port >> dst_dir $ / $ & dst_file
  • script de cliente para funcionar en su nc_ifstat_clt.sh gateway / router de:
  ### COMENZAR INIT INFO
 # Proporciona: nc_ifstat_clt
 # Required-Start:
 # Requerido-Stop:
 # Default-Start: 2 3 4 5
 # Default-Stop: 0 1 6
 # Corto Descripción: ifstat para Jarvis
 # Descripción: Habilitar el servicio proporcionado por el demonio.
 ### END INIT INFO

 src_port = 8888
 dst_port = 12,345
 dst_host = 10.0.0.2
 eth = eth0

 nc_ifstat ()
 {
     mientras [ "true"]
     hacer
         -i -n ifstat $ eth |  n -p -u src_port $ $ $ dst_host dst_port
         sueño 5
     por lo tanto
 }

 case "$ 1" en
         parada)
         echo "parando ifstat para Jarvis ..."
                 killall ifstat
         killall nc
         ;;
         empezar)
         echo "A partir de ifstat Jarvis ..."
         nc_ifstat y
         exit 0    
                 ;;
         *)
                 la salida 1
                 ;;
 esac

 exit 0

Para ejecutar el script en el arranque de la máquina, colocarlo en /etc/init.d continuación, ejecute el comando:

  incumplimientos update-rc.d nom_du_script.sh

En este punto, usted debe tener un archivo en el Pi en la que, cada segundo, el ancho de banda instantáneo se anexa al archivo  Sigue siendo para nosotros leer este archivo con un script PHP, y dibujar el gráfico para representar los datos que contiene 

creación gráfico con PHP

Una vez más, se podría haber utilizado una librería gráfica en PHP, JavaScript o cualquier otra cosa. Pero en lugar de  operar asi el autor decidio crear su propia función de gráficos en PHP. Verá que es mucho más simple que se puede imaginar 

Aquí está mi función imagickHisto ():

  imagickHisto función (máx $ $ ETH = '', $ UP_DOWN = 'abajo') {

   Datas $ = parseData ( "eth0.log" $ UP_DOWN);

   $ Width = 304;  // anchura de la gráfica
   $ Altura = 100;  // altura del gráfico
   Relleno $ = 1;
   Las garrapatas $ = 5;
   $ Background_color = '# 000';  // color de fondo
   $ Axes_color = '# 555';  // ejes de color

   si ( 'abajo' $ UP_DOWN ==) {
     $ Data_color = '# 1D1';  // carta de colores para descargar
   }
   else {
     $ Data_color = '# D11';  // gráficos en color para la carga
   }

   $ = $ Nb_values ancho - 2 * $ acolchado - 2;
   $ MAX_VALUE $ height = - 2 * $ acolchado - 4;

   $ Nb_datas = sizeof ($ datas más);
   $ = Trim $ nb_values - $ nb_datas;

   if ($ recortar <0) {$ recortar = 0;}

   $ Imagen = nueva Imagick ();
   $ Imagen -> newImage (ancho $, $ altura, nuevo ImagickPixel ($ background_color));
   Dibuje $ = new ImagickDraw ();
   N ° de dibujo $> setStrokeColor (nueva ImagickPixel ($ axes_color));

   $ = $ Xx1 de relleno;
   $ Xy1 $ height = - $ acolchado - 1;
   $ XX2 width = $ - $ acolchado - 1;
   $ = $ Xy2 xy1;
   $ = $ Yx1 XX1;
   $ = $ Xy1 YY1;
   $ = $ Yx2 yx1;
   $ = $ Acolchado YY2;
   $ Half_y = $ altura / 2;
   $ Half_x = $ ancho / 2;

   N ° de dibujo $> línea ($ XX1, xy1 $, $ xx2, $ xy2);
   N ° de dibujo $> línea ($ yx1, yy1 $, $ yx2, $ YY2);

   N ° de dibujo $> línea ($ yx1, YY2 $, $ + $ yx1 garrapatas, $ YY2);
   N ° de dibujo $> línea ($ yx1, half_y $, $ + $ yx1 garrapatas, $ half_y);

   N ° de dibujo $> setStrokeColor (nueva ImagickPixel ($ data_color));

   $ First_x XX1 = $ 1 + $ + asiento;
   $ = $ Last_x xx2 - 1;
   $ = $ First_y xy1 - 1;
   $ = $ Last_y YY2 + 1;

   for ($ i = 0; i $ <$ nb_values; $ i ++) {
     if (isset ($ datas más [$ i])) {
       $ Valor = $ $ datas más [i] * $ MAX_VALUE / $ max;
       $ Value_y first_y = $ - $ valor;
       $ = $ $ Value_x first_x + i;
       N ° de dibujo $> línea ($ value_x, first_y $, $ value_x, $ value_y);
     }
   }

   $ Imagen-> drawImage ($ dibujar);

   $ Text_draw ImagickDraw = new ();
   $ Text_draw-> setFillColor ($ axes_color);
   $ Text_draw-> setFontSize (12);
   $ Imagen-> annotateImage (, $ half_x-20, $ $ acolchado text_draw + 10, 0, "eth $ - $ UP_DOWN");

   $ Imagen-> setImageFormat ( "PNG");
   header ( 'Content-Type: image / png ");
   echo $ imagen;
   salida;
 }

En resumen, la función toma tres parámetros:

  • $ Max: máximo (en KB) para limitar el gráfico. Por ejemplo, un rendimiento máximo real alcanza 1.800 KB / s. Así que se ha seleccionado max = $ de 2000.
  • $ ETH: Nombre de la interfaz (por ejemplo, eth0)
  • $ UP_DOWN “arriba” o “abajo” para especificar el color del gráfico y los datos que se mostrará después de ifstat

La función lee una matriz de datos devuelto por la función parseData (), a continuación, se representa el gráfico una barra ancha de 1 píxel por datos. Con un ancho de 300 px, para que puedas ver 5 minutos de datos históricos 

Aquí parseData (), cuya función es la función para leer el archivo que contiene los datos de la orden ifstat:

  parseData función ($ stat_file, $ UP_DOWN) {
     $ Datas = array ();
     si (filemtime ($ stat_file) <time () - 10) {return $ datas más;}
     Estadísticas = $ fopen ($ stat_file, 'r');
     while ((línea $ = fgets ($ estadísticas))! == false) {
       $ Explode_line = str_word_count (línea $, 1, "0123456789.");
       si ( 'abajo' $ UP_DOWN ==) {
         $ Datas [] = $ explode_line [0];
       }
       else {
         $ Datas [] = $ explode_line [1];
       }
     }
     fclose ($ estadísticas);
     Datas $ = $ array_slice (datas más, -300);
     devolver $ datas más;
   }

Esta función tiene dos parámetros:

  • $ Stat_file: analizador de archivos
  • $ UP_DOWN “arriba” o “abajo” para distinguir la carga de datos y descarga,

En lo que sigue, reprensenta el mismo enfoque que para los otros módulos 

index.php

Se necesita un div por gráfico; Así que agregamos dos para el archivo index.php, uno para subir y otro para su descarga.

  <Div id = "ifstat_eth0_up"> <img id = "img_eth0_up" src = "PICT / blank.png"> </ div>
 <Div id = "ifstat_eth0_down"> <img id = "img_eth0_down" src = "PICT / blank.png"> </ div>

En cuanto al módulo de Xplanet , es conveniente iniciar la fuente de las etiquetas de imagen <img> con un blank.png imagen en blanco.

style.css

Basta con colocar nuestros dos <div>:

  / * * Ifstat /

 div # ifstat_oberon_up
 {
 derecha: 20px;
 parte inferior: 20 píxeles;
 position: absolute;
 overflow: hidden;
 background-color: RGBA (0, 0, 0, 1);
 }

 div # ifstat_oberon_down
 {
 derecha: 340px;
 parte inferior: 20 píxeles;
 position: absolute;
 overflow: hidden;
 background-color: RGBA (0, 0, 0, 1);
 }

javascript.js

Una simple petición AJAX para recuperar la pantalla gráfica.

  / * * Ifstat /

 ifstat_timeout var;

 ifstat function () {

 var ahora = new Date () getTime ().

 url_down var = "bloque = ajax.php ifstat y eth = & UP_DOWN wan = down & max = 2.000 y hora =" + ahora;
 img_eth0_down var = $ (url_eth0_down "<img />").attr("src");
 $ ( "# Img_eth0_down") attr ( "src", url_eth0_down).

   url_up var = "bloque = ajax.php ifstat y eth = & UP_DOWN wan = up & max = 150 y hora =" + ahora;
 img_eth0_up var = $ (url_eth0_up "<img />").attr("src");
 . $ ( "# Img_eth0_up") attr ( "src", url_eth0_up);

 ifstat_timeout = setTimeout ( "ifstat ()", 5000);
 }

Igual que para el módulo Xplanet , debe pre-cargar las imágenes y las muestra.En este caso el tiempo de actualización es de 5 segundos, lo cual es suficiente.

ajax.php

El código para agregar este archivo permanece tan elemental para los otros módulos. Sin embargo, no se olvide de tener en cuenta los parámetros de la imagickHisto () Función:

  /////////////////////////////////////////////////
 // ifstat
 /////////////////////////////////////////////////

 if ($ == bloque 'ifstat') {
 imagickHisto ($ _REQUEST [ 'max'], $ _REQUEST [ 'eth'], $ _REQUEST [ 'UP_DOWN']);
 }


inc.php

En este archivo, simplemente copia y pega el imagickHisto () y parseData () que se describieron anteriormente 

Esta es la representación final de primer plano, cuando el ancho de banda es de alta demanda

10 – Módulo 7 – VPN

Si  usa un pequeño servidor VPN PPTP para sus  amigos para poder   intercambiar fácilmente archivos o jugar juegos en red , es muy fácil de configurar tanto en el lado del servidor mediante la instalación del paquete de pptpd que el lado del cliente, ya que ‘ se forma nativa compatible con Windows.

Este módulo permite mostrar una lista de personas que están conectadas con el servidor PPTP VPN.


No se detalla en este artículo cómo instalar y configurar PGWP. Aquí hay un tutorial para ayudarle a implementar este tipo de VPN https://help.ubuntu.com/community/PPTPServer

El servidor pptpd está instalado en el router , proceda de la misma manera que el módulo de ancho de banda de gráficos para transferir datos utilizando netcat Pi. Lo único nuevo aquí es el comando last  permitiendo recuperar información de conexión de cliente VPN.

Transferir los datos a la Pi

lado Pi (servidor netcat):

 #! / Bin / bash

 ### COMENZAR INIT INFO
 # Proporciona: nc_vpn_srv
 # Required-Start:
 # Requerido-Stop:
 # Default-Start: 2 3 4 5
 # Default-Stop: 0 1 6
 # Corto Descripción: VPN para Jarvis
 # Descripción: Habilitar el servicio proporcionado por el demonio.
 ### END INIT INFO

 dst_port = 12,346
 dst_dir = / home / Jarvis / VPN
 dst_file = vpn_oberon.log

 nc_vpn ()
 {
   mientras [ "true"]
   hacer
     n q 1 -u -l 12346> $ dst_dir / $ dst_file </ dev / null
     sueño 5
   por lo tanto
 }

 case "$ 1" en
         parada)
                 echo "vpn parando para Jarvis ..."
                 killall VPN
                 killall nc
                 ;;
         empezar)
                 echo "A partir de VPN para Jarvis ..."
                 nc_vpn y
                 exit 0
                 ;;
         *)
                 la salida 1
                 ;;
 esac

 exit 0

lado de puerta de enlace (cliente netcat):

 #!  / Bin / bash

 ### COMENZAR INIT INFO
 # Proporciona: nc_vpn_clt
 # Required-Start:
 # Requerido-Stop:
 # Default-Start: 2 3 4 5
 # Default-Stop: 0 1 6
 # Corto Descripción: VPN para Jarvis
 # Descripción: Habilitar el servicio proporcionado por el demonio.
 ### END INIT INFO

 src_port = 8889
 dst_port = 12,346
 dst_host = 10.0.0.1

 nc_vpn ()
 {
         mientras [ "true"]
         hacer
                 última |  ppp grep |  grep "conectado" |  n q 1 -p -u src_port $ $ $ dst_host dst_port
                 sueño 5
         por lo tanto
 }

 case "$ 1" en
         parada)
                 echo "vpn parando para Jarvis ..."
                 killall VPN
                 killall nc
                 ;;
         empezar)
                 echo "A partir de VPN para Jarvis ..."
                 nc_vpn y
                 exit 0
                 ;;
         *)
                 la salida 1
                 ;;
 esac

 exit 0

Ejecute  estas secuencias de comandos en el inicio del sistema en la compactación en el directorio /etc/init.d a continuación, ejecutar el siguiente comando:

  update-rc.d nom_du_script.sh defaults

index.php

Un simple <div> Simplemente porque sólo queremos mostrar una lista de usuarios:

 <Div id = "VPN"> </ div>

style.css

Un poco de formato de mirar bastante 

 / * * VPN /

 div # VPN
 {
   izquierda: 550px;
   parte inferior: 10px;
   position: absolute;
   overflow: hidden;
   background-color: RGBA (0, 0, 0, 1);
   Color: #FFF;
 }

 td.vpn
 {
   text-align: left;
   font-size: 30px;
   padding: 5px;
 }

 img.vpn
 {
   anchura: 20 píxeles;
   altura: 20 píxeles;
 }

javascript.js

Una simple petición AJAX para recuperar los datos a mostrar.

 / * * VPN /

 vpn_timeout var;

 función vpn ()
 {
   $ .ajax ({
     asíncrono: falso,
     del tipo: "GET"
     url: "./ajax.php"
     datos "bloque = vpn"
     el éxito: function (html) {
       $ ( "# VPN") HTML (HTML).
     }
   });

   vpn_timeout = setTimeout ( "VPN ()", 5000);
 }

ajax.php

Nada específico para este módulo:

 /////////////////////////////////////////////////
   // VPN PGWP
   /////////////////////////////////////////////////

   if ($ == bloque 'VPN') {
     vpn echo ();
   }

.inc.php

Se requieren dos funciones de este módulo:

  • vpn_parseData (): analizar el archivo enviado a través netcat
  • VPN (): crear una tabla HTML con los nombres de usuarios conectados
 /////////////////////////////////////////////////
   // VPN PGWP
   /////////////////////////////////////////////////

   función vpn () {

     Datas $ = vpn_parseData ( "/home/jarvis/vpn/vpn_oberon.log");

     $ Html = '';

     if (sizeof (Datas $)> 0) {
       . $ Html = '<table cellspacing = "0px">';
       foreach ($ Datas como $ data) {
         $ Html = '<tr>'.
         $ Html. = '<Td valign = "middle"> <img class = "VPN" src = "PICT / vpn.png"> </ td> <td class = "VPN">'. $ Data [0]. </ td> ';
         $ Html = '</ tr>'.
       }
       $ Html = '</ table>'.
     }

     devolver $ html;
   }

   vpn_parseData función ($ stat_file) {
     $ Datas = array ();
     si (filemtime ($ stat_file) <time () - 10) {return $ datas más;}
     Estadísticas = $ fopen ($ stat_file, 'r');
     while ((línea $ = fgets ($ estadísticas))! == false) {
       $ Explode_line = str_word_count (línea $, 1, "0123456789.");
       $ Datas [] = $ explode_line;
     }
     fclose ($ estadísticas);
     devolver $ datas más;
   }

Esto en cuanto a este último módulo es muy simple

 

 

Como vemos el trabajo de MagdiBlog es   impresionante mostrando en una pantalla de forma espectacular  la hora y la  fecha  de una forma fácil de leer  La visualización del tiempo es también información útil todos los días. En cuanto a la tierra y la luna , resulta muy agradable (si eso no es lo suyo, puede reemplazar fácilmente estas imágenes con fotografías, añadir una función de “marco de fotos digital” integrado a los dashscreen ,etc)

Otros módulos como  ping , TeamSpeak , ancho de banda y VPN   pueden ser útiles para controlar lo que está sucediendo en cualquier red y recibir avisos de averías y otros problemas que puedan surgir.

Justo por encima del módulo de gráficos de ancho de banda,el autor  incluso añadió  un gráfico del número de visitas diarias usando GAPI para recuperar las estadísticas de Google Analytics y JSAPI (Gráficos de Google) para crear el gráfico.

Como vemos las posibilidades son inmensas sujetas tan solo a la creatividad de cada persona.  Para los módulos, el principio es siempre el mismo:

  1. un <div> con un ID en el archivo index.php
  2. una hoja de estilo style.css para colocar el div en cuestión y gestionar el formato de los datos que
  3. una función de JavaScript en el archivo javascript.js que se ejecuta una petición AJAX a intervalos regulares
  4. una línea en el archivo para llamar ajax.php buena función de PHP
  5. función de PHP en el archivo .inc.php para generar el código HTML para que se muestren las imágenes

Fuentes de descarga

Puede descargar todas las fuentes aquí: PiHomeDashScreen

Nota: tendrá que adaptar el código a sus necesidades.

 

 

Fuente http://www.magdiblog.fr/boa-pi-homedashscreen/3-principe-de-base/

Cómo iniciar un app automáticamente en Android


AutoStart es una interesante aplicación Android gratuita que podríamos usar, para ordenar a cualquiera de nuestras aplicaciones instaladas en el dispositivo móvil para que se ejecuten automáticamente cada vez que encendamos el terminal.

Objetivamente se puede intuir , que en Google Play existen otras alternativas que podría elegir quizás mejores ,pero  desde luego no sin un interfaz  tan minimalista como el  de este app y desde luego sobre todo que no precisen ser root  o consuman  tantos recursos en el sistema operativo Android como esta app.  Una característica muy interesante destacable respecto  otras apps es que el inicio automático funciona muy bien en todos los teléfonos o tabletas y no requiere permisos de root. Veamos el modo de usarla junto con un ejemplo:

 

 

En este post vamos a comentar la app AutoStart disponible en Google Play .  Una vez que la tengamos instalada  en nuestro dispositivo móvil Android (que puede ser un “ChromeCast” o un mini PC), sólo tiene que ejecutarla para configurarla    directamente desde la pantalla inicial  tanto que se autoinicie la app ( sin esta app corriendo no se iniciara el resto)  como se ejecuten las apps que se deseen.

Como podrá observar  pues la pantalla principal de AutoStart tiene una interfaz minimalista en la configuración.

Allí solamente tiene que tocar al botón para activar el servicio (es decir, para que esté siempre activa) y también, seleccionar al botón “Add” para agregar una o varias aplicaciones Android que desee que se ejecuten automáticamente cada vez que se encienda su dispositivo Android ,  es  decir como vemos tan solo  tiene que seleccionar las aplicaciones que desea iniciará automáticamente después de encendido del teléfono (arranque).

Otros parámetros que podrá  ajustar se ven  un poco más abajo ,los cuales pueden  ayudara hacer que haya un tiempo de espera antes de que la ejecución de estas aplicaciones en  el inicio. El primer valor corresponderá a la propia app,  mientras que el segundo, es el tiempo que debe esperar el sistema para que se vayan ejecutando el resto de aplicaciones Android.

i

Un detalle de esta app es que funciona  tanto en terminales Android con pantallas pequeñas(smartphones)  como terminales con pantallas  mas grandes como pueden ser  tabletas ,android TV, etc, dispositivos todos ellos donde en ocasiones nos puede venir muy bien poder tener disponibles al arrancar estos nuestra app favorita
 

Un ejemplo claro de uso de la app AutoStart   es usarla para iniciar Seguricasa .  La  app Seguricasa disponible en Google Play por 1€ pretende  que reciclemos o reutilicemos  un viejo terminal Android  que tengamos en desuso  fijándolo a la pared  , para que nos sirva tanto para el control de accesos ,como la monitorización del estado de suministro eléctrico  (la utilidad aquí de Autostart sera para que se inicie automáticamente la app Seguricasa en caso de agotamiento de la batería o de un apagado involuntario)

Dado que los inmuebles son el mayor activo de las personas tanto a nivel personal como a nivel de empresas o negocios,  es importante asegurarnos que no son accedidos por terceros o que siempre están alimentados eléctricamente, dada la gran dependencia del suministro de corriente alterna, por lo que es necesario tener constancia de cualquier caída en el suministro eléctrico.

Enviar notificaciones si se detecta un corte de red ,es posible sin ningún hardware adicional ,puesto que dejaría de estar alimentado externamente el Smartphone (por el cargador del terminal), circunstancia que puede ser monitorizada y procesada dentro de la aplicación  SEGURICASA  que es interpretada  como falta de red de corriente alterna.

Quizás lo interesante  de la aplicación es pues que no se necesita ningún cableado ni hardware adicional pues lo único que  requiere es el cargador que alimente el terminal ,una tarjeta SIM ( para que pueda enviar SMS’s o correo en caso de falta de suministro eléctrico)   y por ultimo un simple cartón que se fije solidario a la puerta de modo que al abrir la puerta de acceso tape el sensor de proximidad presente en el frontal de cualquier Smartphone.

 

 

La app Seguricasa puede enviar notificaciones automáticamente vía SMS o por correo electrónico según se desee en el momento que se detecte una falta de red en el suministro eléctrico o también la apertura o cierre de la puerta gracias al sensor de proximidad que incluye cualquier Smartphone y así como también  detectar actos de vandalismo sobre el terminal para notificarlo al usuario.

Como ejemplos de utilidad de esta aplicación seria la vigilancia de los alimentos perecederos (es decir de mantener la refrigeración ) o sistemas de calefacción ,aunque es obvio que todos sabemos cómo las consecuencias de una falta de red eléctrica puede abarcar otros muchísimos usos: servidores para servicios de TI, comunicaciones, seguridad , riegos automatizados, cultivos ,acuarios, etc.

Esta app, pues, está pensada dirigida a familias, pequeños comerciantes, o incluso negocios etc., ya que por su simplicidad está prevista para ser auto instalada por cualquier usuario. Seguricasa es una solución ideal pues para aquellas personas que no están dispuestos a pagar una cuota por un sistema de alarma pero les gustaría saber lo que ocurre en sus propiedades sobre todo con el suministro de corriente alterna en el acceso. La solución es única, pues no es necesario adquirir ningún hw adicional ya que se basa en un Smartphone para gestionar tanto los accesos como los cortes de red de corriente alterna de una vivienda o local

 

Como habrá podido observar , “AutoStart” ofrece una simplicidad bastante grande a la hora de manejar sel arranque automático  fiable sin ser root de cualquier aplicación como por ejemplo la aplicación Seguricasa

Ambilight para nuestro PC


Ambilight es una tecnología diseñada para mejorar la experiencia visual  analizando las señales entrantes y produciendo una  luz lateral ambiental adecuada al contenido que se está visualizando en la pantalla un resultado bastante atractivo , el cual  además de la sensación de estar viendo una pantalla aun mayor.

Hasta hace muy poco este efecto solo se podía conseguir si comprábamos un TV que contara con ese sistema y no había otra opción, pero recientemente  con la aparición de placas con suficiente capacidad computacional, se puede emular gracias al uso por ejemplo de una Raspberry Pi .  Aun mas sencillo  y facil es hacerlo a través una placa Arduino UNO (o incluso Arduino nano), un ordenador,y una tira de 50 leds para iluminar una televisión de 47 pulgadas..!Y todo sin tener que soldar nada!.

 

 

Antes de empezar  con el montaje ,  la tira de  leds   RGB   direccionable es muy importante que este basada en el chip  ws2801 (LEDs WS2801) pues el menos no nos  dará  ningún tipo de problemas usando una Placa Arduino,  siendo ademas la mas utilizada para este tipo de montajes.

Existen tiras basadas en el chips WS2801   en formato “luces de navidad”,pero lo mas habitual es adquirirla en forma de cinta autoadhesiva.

Un ejemplo de tira es  esta  que puede comprarse en Amazon por menos de 27€

tira de leds.png

Una peculiaridad  de esta tiras ,es que se pueden cortar según la longitud que se requieran , así como además que también es posible ampliarlas gracias a  los conectores que llevan en cada extremo, pudiendo  unirse  entre ellas hasta donde se necesite.

conector.png

Asimismo, para alimentar dicha tira  también  necesitaremos aparte  una fuente de alimentación  dimensionada para el números de leds que vayamos a adquirir , como puede ser una fuente de  5v y 2A  (para 50 leds)

La tira de leds por simplicidad la conectaremos a una placa  Arduino UNO , el cual puede adquirirse en Amazon por menos de 10€

Arduino UNO comparado a la versión anterior, usa el  Chip alternativo Atmega 16U2 8U2, lo que quiere decir una tasa más alta de transferencia y memoria.Ademas esta versión cuenta con la interfaz SDA y SCL .

Los datos de LED y las líneas de reloj los conectaremos  a la salida SPI de Arduino,es decir  los datos SPI salen del pin digital 11 y  el reloj es el pin digital 13.

Los LED deben ser alimentados externamente fuera de la linea de +5V de  Arduino 5V, pues podrían estropear el regulador de este . La masa o  tierra, por el contrario, si debe ser conectada a  la masa de Arduino.

Normalmente las tiras de leds WS01  ,suelen tiene 6 cables : tres de ellos lo  conectaremos los pines (11,13 Y GND) del Arduino, y los otros dos  conectaremos  a la fuente de 5V.

La forma de conectarlos todo esto es según el siguiente esquema :

  • El cable VERDE proveniente del pin SD de la tira de leds al pin 11 del Arduino Uno.
  • El cable ROJO proveniente del pin CK  de al tira de leds al  pin 13 del Arduino Uno.
  • El cable NEGRO proveniente del pin  GND de la tira de leds al pin GND del Arduino Uno.
  • El cable AZUL proveniente del pin +5V de al tira de leds lo dejaremos sin conectar
  • El cable Rojo grueso en paralelo con el azul  proveniente de la tira de leds a la conexión +5v de la fuente auxiliar
  • El cable NEGRO en paralelo con el  negro  proveniente del pin  GND de la tira de leds al GND de la fuente auxiliar

arduino.png

Conectamos pues  la tira de leds  por un lado a una fuente de 5V /2amp .  y por el otro a Arduino , por uno de los extremos y las otras 2 o 3 tiras con los adaptadores macho hembra adecuados   a continuación siguiendo la flecha  de las tiras  haciendo un rectángulo que rodeara nuestro monitor o TV .  Evidentemente en uno de los extremos de inicio es donde haremos las conexiones  y todas la demás se harán por medio de los  conectares .

Hemos de tener cuidado ya que uno de los extremos de la tira de luces es pues para conectar la primea tira al arduino y a la fuente :de esta forma, en cada extremo quedan sueltos los cables opuestos (normalmente el cable rojo es el positivo y el azul el negativo.) que conectaremos también entre si para dar alimentación a  los leds ( aunque los conectores también den energía  ya que llevan las 4 conexiones incluida los 5v y GND)

 

 

 SOFTWARE EN EL ARDUINO

Para gobernar , la tira de leds la conectaremos a  un   Arduino   que  ademas  hará de “puente” entre el ordenador host y la tira basado en WS2801 . Los datos de LED se transmiten, y  no se almacenan en búfer, lo que significa que si  hay mas código en Arduino  podrían generar demoras debido a la RAM limitada del Arduino,pero no obstante el algoritmo ejerce cierto esfuerzo para evitar las pérdidas de buffer

 El protocolo de cierre WS2801, basado en retardo, podría desencadenarse inadvertidamente si el bus USB o la CPU  está desbordada con otras tareas. Este código almacena datos entrantes en serie e introduce pausas intencionadas si hay una amenaza del buffer  lleno prematuro.

El costo de esta complejidad es algo que  reduce el rendimiento, pero la ganancia es muy buena  evitando  la mayoría de los fallos visuales  incluso aunque finalmente una función de carga en el bus USB y  host CPU, quede  fuera de  control.

 

Si no lo tenemos, descargaremos el software de arduino (Página oficial de arduino) y lo instalamos.

Conectamos el arduino uno a nuestro pc con el cable usb. Si pide los drivers, se pueden encontrarlo en la carpeta arduino-1.0.4\drivers.

Descargaremos  esta biblioteca:fastled biblioteca descarga, la cual  importaremos  al Arduino IDE.

Ahora toca cargar el sketch para lo cual  descaremos el código Adalight para las luces  aqui 

Descomprimireos el archivo y  añadimos los archivos que acabamos de descargar en la carptea Mis documentos/ Arduino  y ng

Arrancaremos el software de arduino y  configuramos en el ide la placa Arduino en Herramientas –>Placa Arduino Uno ( o la placa que tengamos)   sin  olvidar el puerto de comunicaciones

Iremos a  File> Sketchbook> Arduino> Adalight  y uan vez cargado el sketch debemos ajustar el numero de leds  (88 en nuestro casoo) que  tengamos en la instalación  así como la velocidad máxima (500000 )

 #define NUM_LEDS 88 // Max LED count
#define LED_PIN 11 // arduino output pin – probably not required for WS2801
#define GROUND_PIN 10 // probably not required for WS2801
#define BRIGHTNESS 255 // maximum brightness
#define SPEED 500000 // virtual serial port speed, must be the same in boblight_config

Ahora ya podemos   compilar el software( botón primero que  pone un v de verificar).

 

adalight.PNG

 

Si no ha habido errores ahora podemos subir  el sw pulsando el botón de Upload( flechita a la derecha  en el software de Arduino.

Al contrario de lo que sucede  con el sketch LedlIght donde se iluminan las luces  de 3 colores rojo, verde y azul si todo ha ido bien, si tenemos conectadas los leds al arduino y a la fuente externa, cuando carguemos este  código dentro del Arduino solo lucirá el primer led de la cadena lo cual significará que estamos en buen camino.

IMG_20170221_170329.jpg

 

El código dentro de Arduino es no volátil, así que no se borrará aunque desconecte la tarjeta.

 

Sw en el PC

Una vez tenemos el sw de Adalight en un Arduino, toca instalar  el programa de captura que  envíe las señales correspondiente a nuestro Arduino

Entre los programas de captura  ambibox es el mejor especialmente con  windows 10, ya que no solo  tiene la capacidad para capturar su escritorio  sino de poner un fondo personalizable, convertir la tira en luces psicodelicas en función del audio,fondo variable automático ,plugins, etc

Se  puede encontrar aqui, tanto el software como el add-on para XBMC.

 

Una vez   descargado , durante la instalación se puede seleccionar  la opción de instalación completa ,marcando ademas la opción de descarga e instalación de playclaw.

Empezamos la configuración, pulsamos sobre el botón de mas ajustes :

more

En la parte inferior ,como vemos seleccionaremos como Device  Adalight , elegiremos  el puerto de comunicaciones ( el mismo al que este conectado el Arduino) y en el numero de zonas, coloremos  el numero de leds total que tengamos instalados ( en el ejemplo 88).

Asimismo no olvidar orden de colores,lo cual podemos obtener   fijando un color mediante el selector de Mode:Static Background   ,pinchando en el color ( aparecerá la paleta),pinchando en el check de Use baclight   y seleccionando en el combo order of colors la opción adecuada   hasta que el color de los leds sea similar al de paleta ( en mi caso es BGR)

 

fondo.PNG

IMG_20170221_204134.jpg

En este programa no olvidar  en salvar cada cambio en “Save Setting”  pues si no lo hacemos perderemos cualquier cambio que hagamos

Con las nuevas opciones ya podemos avanzar en la  configuración de nuestra instalación para lo cual seleccionaremos en Mode  :Screen capture

 

capturawindiow.PNG
Acto seguido configuramos la ubicación de los leds, pulsando  sobre SHOW AREAS OF CAPTURE y sobre el asistente de configuración,elegimos si queremos una instalación de 3 lados o 4. También  es importante la cantidad de leds que tenemos en cada lado de la TV especialmente horizontal o verticalmente.
Marcamos asimismo el orden de los leds, de izq->der o de der->izq.
Con esto ultimo ya tenemos nuestro software listo para funcionar

2017-02-21_20h59_23.png.
Este programa además tiene unas opciones muy interesantes, en esta pantalla:

adicional.png

Podemos configurar muchos parámetros de cada led, aplicar correcciones de color y gamma ,brillo ,etc

También podemos activar un servidor web para controlar el software desde el teléfono

servidor

 

El siguiente paso es instalar el add-on para el XBMC.Para ello Lo descompriremo y lo ponemos  en la ruta:”Users/Username/AppData/Roaming/XBMC/addons”

Ahora en el  apartado de add-on ( en el  menú de la izquierda ) se puede configurar un poco el comportamiento, aquí cada cual que lo puede personalizar a su gusto.

Una solución para que funcione a pantalla completa es usando el software playclaw.
Para ello, se pueden  es crear 2 perfiles dentro de ambibox, uno para el escritorio y otro para XBMC.
En este ultimo el sistema de captura que elijo es playclaw de modo que cuando se inicie un video en XBMC  dará la opción de elegir que perfil cargar, de modo que se  puede  elegir el perfil XBMC y asi  cuando se  salga de XBMC se  puede vplber   al perfil de escritorio.
Por supuesto se debe tener corriendo el software playclaw para que esto funcione.

 

Por ultimo  hay  un  modo  que haya las delicias de los que les guste la música  : el modo Color music , el cual permite modular las luces en función  de lo que se este escuchando por el canal de sonido principal.

 

musica.PNG

 

Obviamente si queremos que las luces acompañen a la imagen de video de la pantalla principal el modo de captura de pantalla elegido sera  [Software] Screen capture  y el Método  Windows 8  ( aunque tengamos Windows 10 instalado en nuestro equipo)

windows8.png

Para terminar dejamos dos test de vídeo , que a pantalla completa,  nos pueden servir para testear si nuestro sistema responde correctamente.

 

 

Usos para una vieja tableta


Quizás haya  decidido actualizar su vieja tableta por un nuevo modelo, mejor? ¡Felicidades ! Con seguridad contara con procesador más rápido, mejor pantalla y software más reciente  que va a adaptarse a usted perfectamente.

Pero, ¿qué significa eso para la vieja y fiel tableta  que le introdujo en el nuevo mundo de la computación en tabletas? Sólo porque ha sido suplantada por el último y mejor modelo, esa vieja, fiel tableta no debe ser consignada a una jubilación anticipada acumulando polvo en su  armario…

En este post  intentaremos   ver algunas formas de evitar de  darle    una segunda oportunidad a su vieja tableta .

1. Su nuevo libro de cocina digital

Tableta utilizada como libro de cocina

La cocina puede ser un lugar sucio  y  peligroso  a veces ,   por lo que debería ser cauteloso de usar su costosa tableta nueva para navegar por  recetas con  sus dedos llenos de harina , aceite , salsas ,etc  y el agua caliente volando alrededor.

Por  eso,  quizás  esa vieja tableta que quizás no vaya tan rápido o no se vea también  como su nueva adquisición,  sea   la solución ideal para usarla en la cocina ,aunque  se ensucie  o incluso puede romperse   ( por lo menos habrá preservado  y alargado la vida de su nueva tableta)

2. Marco de fotos digital

Tablet utilizado como marco de fotos digital

Al ver que no usa su vieja tableta para actividades cotidianas, ¿por qué no convertirla en un marco de fotos? LiveFrame para iPad y Dayframe para tabletas Android ) son excelentes opciones gratuitas para crear sus  presentaciones en bucle.

Incluso puede crear bucles personalizados usando fotos almacenadas en el dispositivo, cargadas en medios sociales o almacenadas en la nube.

3.  Las tabletas son geniales para los niños.

Niño con la tableta

Es probable que uno de sus miembros más jóvenes de la familia haya pedido una tableta por ahora. Los niños no necesitan los modelos más nuevos con las pantallas más nítidas y los procesadores más rápidos, asi  que puede  reciclar  su antigua tableta  para un fin muy loable cargándola  con aplicaciones de aprendizaje, herramientas de pintura divertidas y libros electrónicos.

4. Monitor de bebé

Tableta utilizada como monitor para bebés

Con aplicaciones como Dormi para Android , puede utilizar el micrófono de su antigua tableta como monitor para bebés. Coloque la tableta en el dormitorio de su pequeño y el audio en vivo se transmitirá de nuevo a su teléfono o tableta Android a través de una red de datos wi-fi o móvil. Esto le permitirá escuchar e incluso cantar canciones de cuna dulces a sus pequeños mientras se relaja en la sala de estar.

5. Sistema de juego de Arcade

Esta utilidad la verdad  es que muy usada  y desde luego hará las delicias de lo pequeños   y de los no  qeu no lo son tanto ..

¿Quiere convertir tu antigua tableta en tu propia máquina de juegos retro, con joysticks de la vieja escuela y botones martillables?

Soluciones como el Zeon Tech Arcadie para iPad Mini  permiten   convertir  un  arcade de escritorio pues se ha diseñado para verse como una unidad de tamaño completo de arcade.Esta  preparado para albergar en su interior  el iPhone y el iPod Touch. Aunque el iPhone, iPhone 3, iPod Touch, iPod Touch 2 encaja en la unidad de Arcadia, los juegos no son compatibles. Estos dispositivos pueden ser compatibles con juegos html 5 solamente.

 

Este dsieño permite reproducir una selección de juegos de la App Store que volver a crear ese clásico arcade sentir con el joystick de 8 botones de doble acción  presentando una verdadera galería tamaño de la pantalla y  no requiere baterías, bluetooth o wifi de configuración – que es, literalmente, plug and play!

 

Incluso hay una version para  Kindle Fire HD (Zeon Tech Arcadie for Kindle Fire HD)   que le permitiran ranurar en la tableta, entonces usted puede jugar todos sus viejos favoritos como Alien Invaders, Blateroids y Ping que se pueden descargar desde las tiendas de aplicaciones .

6. Reproductor de música dedicado y radio por Internet

Aplicación Spotify en una tableta

Si la vieja tablet se está preparando para una nueva experiencia estacionaria, no hay ninguna razón por la que no se puedan conectarse permanentemente a su equip de audio a través de su conector de audio de 3,5 mm.

Puede utilizar todas sus aplicaciones de radio y música favoritas como la radio TuneIn, iPlayer Radio o Spotify y reproducir la música almacenada localmente en el dispositivo. Usted se beneficiará de la interfaz de pantalla táctil limpia, que se ve muy bien en cualquier sala de estar.

En el caso de Spotify, podrá utilizar su smartphone o una nueva tableta como control remoto para controlar las pistas que se reproducen en la aplicación anterior con Spotify Connect .

7. Reproductor de películas en el coche

soporte

Los coches con los monitores construidos en la parte trasera de los apoya cabezas del asiento delantero son un lujo, ¿eh? ..pero es  cierto que se pueden replicar facilmente la experiencia sin el costo de encajar un montaje asequible para su vieja tableta.

Este soporte universal de GHB es uno de los muchos disponibles y sólo cuesta 14 €. Sólo tiene que cargar algunos de las películas o incluso  juegos  favoritos de los niños en la tableta y disfrutar de un tranquilo viaje en coche!

Asimismo otra utilidad  muy interesante   gracias sobre todo  a  su pantalla de gran formato  , si instalamos las aplicaciones correspondientes(google Car, Sygic, tomtom,etc )   usarlo como navegador  GPS  de gran formato . Un  soporte universal apenas   cuesta menos de 13€ ,pero no olvide de conseguir  también un cargador para el coche ( existen para todos los modelos  y a un bajo coste)

 

soporte

 

8. Lector de libros electrónicos

Tablet utilizado como lector de libros electrónicos

Si le gusta leer antes de ir a la cama, puede mantener una tableta más antigua en su mesa de noche y utilizarlo como un lector dedicado de libros electrónicos.

Todos los libros de Amazon Kindle se pueden cargar en el dispositivo con las aplicaciones Kindle gratuitas, mientras que los comprados en los iBooks de Apple y en Google Play Store también están disponibles en la nube, dependiendo del sistema operativo que utilice.

9. Convertir en en un segundo monitor

En caso de un Ipad  ,se necesita utilizar la aplicación Air Display (iOS), que le permitirá trabajar a través de una red Wi -Fi como un segundo monitor.

Tambien  tenemos aplicaciones como iDisplay (Android e iOS),  Splashtop Remote Desktop HD (Android, iOS) o MaxiVista (iOS), y todas ellas permiten que convirtamos nuestro tablet en una pantalla tonta en la que poder extender el escritorio disponible por ejemplo en portátiles con Windows u OS X.

10 Estaccion metererologica

Existe infinidad de aplicaciones que podemos instalar en  nuestra tableta  para usarla como reloj avanzado  o incluso mejor !como estación meteorológica!. Una app muy interesante es “Estación meteorológica” (Google Play)

Esta app  recrea una  Estación Meteorológica funcional  soportando  gran pantallas de alta definición y pantallas de los teléfonos. Muestra  Presión,pronóstico del tiempo,  precipitaciones, precipitaciones, humedad,velocidad del viento y la dirección, Salida y Puesta del Sol,etc.

La actualización de la ubicación es  automática por wifi o GPS  y también se puede usar  un Widget .Muestra las unidades estándar de métricas y americanas .Ademas se puede usar tambien como   Reloj Digital

Los prestadores de servicios soportados son Google Weather, Yahoo Weather, Weather Underground (PWS), la BBC Backstage y la NOAA.

estacion

11. Envíe el vídeo a petición a su TV casera

Chromecast de Google

El dispositivo de streaming de Google Chromecast facilita el envío de contenido directamente a su televisor.

El HDMI cuesta sólo £ 30 y es una gran manera de enviar de forma remota videos a la pantalla grande con un solo toque. Mantenga su vieja tableta en su mesa de centro y utilícela como control remoto para sus portales video preferidos .

Las aplicaciones de Netflix, BBC iPlayer, BT Sport y YouTube son compatibles con Chromecast.

 

10-