Acelerar el arranque desde la BIOS


BIOS es un acrónimo de Basic Input / Output Systems siendo  un pequeño chip de memoria ubicado en la placa madre, el cual contiene datos que definen los parámetros del sistema  constituyendo un componente clave del proceso de arranque, pues es responsable de abordar y mapear los diversos componentes de hardware del sistema en  memoria para que el sistema operativo pueda comunicarse con él. Asimismo  la BIOS también realiza la autoprueba de encendido del hardware conocido como POST.

Cada BIOS y combinación de modelo de placa principal está diseñada para trabajar con componentes de hardware específicos y versiones de hardware, que es dictada en gran medida por el procesador y chipsets que se incorporan en la placa principal, lo cual  podria hacernos pensar  que una BIOS funcionaría en las tarjetas principales que utilizan el mismo procesador y el mismo chipset, pero sin embargo eso no es cierta debido hacen que existan ligeras diferencias de diseño de una placa principal a otra hacen lo  cual no hace que esto sea posible to.

Sin la  BIOS pues vemos que un ordenador no sería capaz de arrancar en su sistema operativo.

 

 

Históricamente, la  BIOS y sus configuraciones se almacenaban en CMOS  y de hecho el conjunto se conocía  comúnmente como la configuración CMOS . Ambos el CMOS y el reloj en tiempo real (RTC) requerían una carga eléctrica para mantener su configuración lo cual era típicamente suministrada por una batería  en la placa  madre. Lo malo de esta medida es que a medida que la batería  se agota tanto los ajustes de  la CMOS  como  el RTC se perdían ,  volviéndose a   sus ajustes del defecto, dando por resultado, ” pulsa F1 para incorporar la disposición de CMOS .”

En los últimos años 90, los fabricantes principales de placas madres  comenzaron a almacenar la BIOS en memoria flash , porque  existen dos claros beneficios :

  • La memoria Flash no requiere alimentación para mantener su configuración.(aunque  se requiera una batería para mantener la configuración RTC de la placa madre).
  • Se puede aumentar el tamaño de la BIOS.

No existe un solo tipo de BIOS, tanto es asi  que  hay muchos fabricantes de BIOS (se estima que existen más de 1800 versiones de BIOS diferentes)   , pero, en la actualidad, los principales son:

  • BIOS AMI (de American Megatrends)
  • BIOS Award
  • BIOS Phoenix

Todos los parámetros predeterminados  de una BIOS  (es decir, la configuración de los parámetros en el momento en que el fabricante lanzó el BIOS al mercado) fueron configurados para que cualquier ordenador que utilice esa BIOS funcione correctamente sin modificar los parámetros asi que se deja asi por efectos prácticos, pero  optimizar una  BIOS puede obtener hasta  un 50% más de rendimiento.  Lamentablemente optimizar una  bios   puede llevar mucho  tiempo, ya que no se deben modificar todos los parámetros al mismo tiempo, de hecho, es preferible modificar uno o dos parámetros y luego iniciar el sistema para estar seguro de que funciona correctamente teniendo  tener cuidado con que su ordenador se vuelva increíblemente rápido pues  puede estar generando un gran número de errores  y por lo tanto puede que el equipo se vuelva inestable..

Menús de una  BIOS

Los diferentes BIOS ofrecen prácticamente las mismas características, pero sus menús  varían  de un fabricante de BIOS , aunque  normalmente, cada fabricante mantiene siempre los mismos menús

 Generalmente, se pueden encontrar las siguientes opciones  en las BIOS mas antiguas:

  • STANDARD CMOS SETUP
  • ADVANCED CMOS SETUP
  • ADVANCED CHIPSET SETUP
  • POWER MANAGEMENT BIOS SETUP
  • PERIPHERAL SETUP
  • AUTO CONFIGURATION WITH BIOS DEFAULTS
  • AUTO CONFIGURATION WITH POWER ON DEFAULTS
  • CHANGE PASSWORD
  • HARD DISK UTILITY
  • WRITE TO CMOS AND EXIT
  • DO NOT WRITE TO CMOS AND EXIT

En el caso de una BIOS AMI , el menus es accesible  pulsando la tecla “Supr”  en el arranque y están  son  las opciones mas habituales

  • Main  : se pude definir la fecha/hora , el idioma ( no esta disponible el español ), presentación de las unidades  SATA  e información del sistema
    • System Time
    • System  Dare
    • Language
    • SATA X
    • Storage Configuration
    • System Information
  • Ai Tweaker : este menú sirve todo para temas  de overclocking,lo cual en efecto puede mejorar el rendimiento pero si no tenemos cuidado  podemos estropear gravemente la placa. Su unica  submenue es :
    • Configure System Perfomance Setting
  • Advanced: este menu  sirve para configurar aspectos de la CPU, de los periféricos incluidos en la placa    y de los periféricos  conectados por   usb
    • CPU Configuration
    • Uncore Configuration
    • Onboard Devices Configuration
    • USB Configuration
    • PCIPnP
    • Intel VT-d
  • Power :  en este menús se trata todo el tema de gestión de energía
    • Suspend Mode
    • ACPI 2.0 Support
    • ACPI APIC support
    • APM Configuration
    • Hardware Monitor
  • Boot :  básicamente sirve  para  gestionar la prioridad  del dispositivo de arranque
    • Boot Device Priority
    • Boot Settings Configuration
    • Security
  • Tools :herramientas varias de cada  fabricante, por ejemplo para placas ASUS suelen ser los siguintes menus :
    • Asus O.C. Profile ( en caso de placas ASUS)
    • AT NET 2
    • ASUS EZ Flash 2
    • Express Gate ( en caso de placas ASUS)
  • Exit : para salvar (o no ) los cmabios efectuados   y salir del menú de la BIOS
    • Exit &Save
    • Exit &Discard
    • Discard Changes
    • Load Setup Defaults

 Resultado de imagen de ami screen

Acelerar el arranque desde la BIOS

A continuación veremos algunas  opciones que podemos ajustar para mejorar el rendimiento de nuestro equipo sin que peligre la integridad de este

 

Actualizar la BIOS

Hemos visto que  la BIOS es la encargada del correcto funcionamiento de todos los componentes hardware de nuestro equipo, una versión obsoleta del mismo puede provocar un mal funcionamiento del ordenador.

Para comprobar si necesitamos actualizar la BIOS del equipo, lo primero que tenemos que hacer es saber la versión de BIOS o del firmware UEFI que tenemos instalado. Para ello, podemos ejecutar el comando msinfo32   y en la ventana que se nos abre, dentro de Resumen del sistema podremos ver la versión y fecha de la BIOS, modo de BIOS, para saber si es UEFI o no, la versión de la misma e incluso el fabricante de la placa base., infromacion qeu por cierto deberia coincidir con la mostrada en el arranque

Con esta información, debemos comprobar si existe una versión posterior a la de nuestra BIOS o UEFI dirigiéndonos a la página web oficial del fabricante. Generalmente, en el apartado soporte serán donde podamos encontrar un listado con el software disponible para su descarga y donde tendremos que buscar si en el apartado BIOS o UEFI existe una versión posterior disponible para su descarga.

Eliminar el logo

Muchos de los equipos que adquirimos  nada más pulsar el botón de inicio y por motivos meramente publicitarios, nos aparece  un pequeño logotipo de la marca del mismo o del ensamblador.
Todas las ordenadores  se envían con un firmware de BIOS o UEFI. Por  ejemplo American Megatrends (AMI) es un desarrollador de firmware de BIOS y UEFI,pero el logotipo AMI se oculta de la vista si el firmware del BIOS / UEFI está configurado en QUIET BOOT o SILENT BOOT. Si cambia esta configuración, aparecerá el logotipo de AMI durante la secuencia de arranque.

Si queremos, podemos suprimir el logo  y ahorrar el tiempo adicional invertido en su carga lo podemos hacer  durante los primeros segundos del inicio  pulsando  F2 o Supr y segun la BIOS acceder a Advanced BIOS Features–> Full Screen LOGO Show.–>Disabled y por supuesto  seleccione Save & Exit Setup si desea salvar los cambuios e  iniciar el PC.

Resultado de imagen de logo ami  asus

 Prioridad  en el arranque

Hoy en día existen multitud de dispositivos desde los cuales puede arrancar un PC, pero los más comunes son los discos duros ( tradicionales HDD   o sólidos  del tipo SSD) , las unidades ópticas y por supuesto las unidades flash USB  . Respecto al arranque una vez que hayamos  instalado el s.o. no vamos a utilizar luna  unidad óptica o usb  para arrancar el  equipo  por lo que puede considerarse una buena práctica establecer como prioritario el disco duro de nuestro ordenador para que no se pierda tiempo en el chequeo del resto de dispositivos  incluso eliminando el resto de unidades .

Para ello, de nuevo diríjase  a Advanced BIOS Features,->First Boot Device ->Hard Disk. Continúe realizando estos cambios en Second Boot Device y Third Boot Device, eligiendo por ejemplo CD-ROM y USB-HDD respectivamente o incluso ninguno si su bios  lo permite .

Obviamente si  vuelve a necesitar usar como primer dispositivo de arranque la unidad óptica o un USB , deberá volver a  este mismo menú y cambiar el orden de prioridad, aunque muchas placas base actuales incorporan una opción nada más arrancar que permite seleccionar manualmente, y solo para ese preciso instante, la fuente que queremos emplear. La mayoría de las ocasiones conseguiremos mostrar este menú pulsando la tecla F11, aunque, como decíamos anteriormente, esto varía de unos sistemas a otros.

 

 

Desactivar  opciones que no se usan

Algunos otros parámetros se pueden desactivar sin temor y  contribuirán a evitar que se chequeen determinadas características del sistema acelerando con ello el sistema

Un  ejemplo , si no dispone de una vieja disquetera, utilice la opción None de Drive A situada en Standard CMOS Features. Asimismo, configure cada uno de los canales IDE que no use como None en esta misma pestaña.

Mas tipico para el  apagado de dispositivos integrados en la placa que no usemos pueden ser chip de sonido, audio, red, video integrado ,etc  lo que acelerará el procedimiento de arranque y puede ser complementado en el administrador de dispositivos para cancelar el resto de dispositivos en uso.

Por último, si no va a iniciar su equipo remotamente desde la red de área local,  mejor  escoja para las opciones Onboard LAN1 Boot ROM ->Disabled    dentro del submenú Integrated Peripherals (en otras BIOS puede que este parámetro se denomine Wake On LAN).

Si dispone de alguna posibilidad de configurar el POST, selecciona QuickBoot.

Parámetros BIOS relacionados con la memoria

En el área de rendimiento, el tiempo que lleva acceder a la memoria es de gran importancia en la BIOS. Al configurar estos parámetros, es posible obtener aumentos de hasta el 20% con respecto a la configuración automática predeterminada.

Generalmente, los parámetros relacionados con la memoria se ubican en la sección “Instalación de las Opciones del Chipset“. Estos parámetros son:

  • Estados de espera: Las opciones FP Mode DRAM Read WS y Estado de Espera para la Lectura EDO caracterizan la sincronización de lectura RAM para los módulos de la memoria EDO y DRAM (también llamados DRAM Read WS, Estados de Espera para la Lectura DRAM,…). Esta opción permite definir la cantidad de estados de espera con respecto al bus del sistema, ya que, en ocasiones, el bus del sistema es demasiado rápido para la memoria, lo cual puede causar bloqueos.

    Por lo tanto, si desea acelerar el sistema, puede tratar de reducir la cantidad de estados de espera. No obstante, si tiene problemas por haber incrementado la velocidad del sistema (sobreaceleración) puede tratar de disminuirla…

    Dentro de los módulos de la memoria, también hay estados de espera. Debido a que los datos se almacenan en tablas, existen dos señales:

    • CAS (Column Address Strobe (Impulso de Dirección de Columna))
    • RAS (Row Address Strobe (Impulso de Dirección de Fila))

    Con el tiempo, estas señales se pueden espaciar. Este retraso entre los dos tipos de señales se denomina Retraso de RAS a CAS

  • Acceso en ráfaga:La opción DRAM R/W posee dos valores: el primer valor corresponde a la cantidad de ciclos por los que pasa el procesador para la lectura (R) y el segundo corresponde a los ciclos necesarios para la escritura (W). Generalmente, cuanto menor sea el valor, más rápido será el acceso a la memoria, aunque se correrán más riesgos de que su configuración se vuelva inestable. Por esta razón, es necesario reducir estos valores gradualmente y luego probarlos

Para modificar estos valores, primero debe deshabilitar la configuración automática. Para esto, debe deshabilitar la opción Autoconfiguración (el valor habilitado asigna la configuración más segura para todos los tipos de memoria, y, por lo tanto, es la más lenta. Sin embargo, debería prestarse atención a esto ya que es un punto de partida). A continuación, necesita modificar, una por una, las opciones y, luego de cada prueba, verificar el valor previo para poder restaurarlo si detecta un problema después de una modificación.

 

 

 

¿Qué significan los código de error por pitidos ?

Los códigos de error pueden diferir entre los modelos de placa principal. Póngase en contacto con el fabricante de la placa principal para obtener las definiciones de código de error adecuadas.

No es un buen presagio  pues normalmente los errores tienden a visulizarse por pantalla y  si no es posible se hace por el pequeño zumbador

Un ejemplo típico de pitidos de una BIOS AMI  representa la siguiente tabla:

PEI Beep Codes

of Beeps Description

1 Memory not Installed
1 Memory was installed twice (InstallPeiMemory routine in PEI Core called twice)
2 Recovery started
3 DXEIPL was not found
3 DXE Core Firmware Volume was not found
4 Recovery failed
4 S3 Resume failed
7 Reset PPI is not available

 

 

Anuncios

Cómo enviar ficheros grandes y no morir en el intento


Hay serias limitaciones en cuanto al tamaño máximo de ficheros que se pueden enviar por  correo electrónico, pudiéndose usarse como regla general, inlcuso   si usa servicios de correo de grandes empresas como Google (gmail)  o Microsft ( Hotmail),   nos conviene evitar adjuntar archivos de más de 10 MB de peso ya que excepto raras excepciones, suelen dar problemas.

Ademas por si fuera poco para terminar de empeorar el problema ,la forma en que los servicios de correo procesan los archivos hace que aumenten su peso cerca de un 30%,razón  por la cual algunos proveedores puedan recibir mensajes de hasta 25 MB, el peso total de los adjuntos que usted envía no debería exceder los 20 MB.

En cuanto gmail se  puede enviar varios archivos adjuntos en un mismo mensaje, pero en total no pueden superar los 25 MB.Si el archivo tiene más de 25 MB, Gmail añadirá automáticamente un enlace a Google Drive en vez de adjuntarlo. Así, el destinatario podrá descargárselo y acceder a él incluso si retiras el archivo de Google Drive.

Y en cuanto a hotmail ,el panorama tampoco es muy diferente,  pues es    tamaño total máximo de un mensaje de correo electrónico  tampoco  debería pasar  los  25Mb (el tamaño total incluye el encabezado del mensaje, el cuerpo del mensaje y cualquier archivo adjunto)

La misión pues de enviar un archivo grande (1 o 2GB)  parece imposible sin pasar por un servicio de almacenamiento en nube o por lo menos eso parecía   hasta que entrara la herramienta Send de Firefox.

Veamos los pasos para utilizar a esta potente herramienta gratuita:

  1. Acceder a la url  de Send,una manera de enviar archivos de hasta 2GB de tamaño mediante un enlace “encriptado, privado, seguro y que caducará automáticamente para que tus datos no sean accesibles en línea de por vida”.
  2. Al ir integrada esta herramienta en Firefox,obliga a actualizar  a la ultima versiónfirefox.PNG
  3.  Nos obligara si tenemos instalada una versión antigua  actualizarnos  vía la url habitual de descarga (https://www.mozilla.org/es-ES/firefox/  )fire2
  4. Pulsaremos como puede verse en el botón de descarga y ejecutaremos el instalador que procederá a la sustitución de la versión que tubiee  previa de Firefox por la ultima versión (  en la fecha de publicación de estye post   la  v 54.0,1 en la versión de 32bits)
  5.  Ahora desde una ventana de un navegador ( no necesariamente  FireFox)   nos iremos a https://send.firefox.com/ .
  6. Su interfaz no puede ser más sencilla, y nos encontramos un pequeño recuadro sobre el que lanzar o seleccionar los archivos que queremos enviar donde ,como podemoes ver, nos recomiendan (por motivos de seguridad) que el archivo sea inferior a 1GB  (aunque podremos enviar hasta 2GB):send1.PNG
  7. Una vez que lo hagamos, comenzará a subirlo y después nos devolverá un enlace para que lo enviemos a otra personaenlace2.PNG
  8. Es interesante destacar que como vemos ,nos ofreces la opción de eliminarlo  por si cambiamos de opinión  pulsando en el botón  “Eliminar archivo
  9. Muy importable : debemos saber que se autodestruirá  el  contenido del enlace al pasar 24 horas o cuando la otra persona se lo descargue por primer vez .

 

 

Por si ha quedado duda ,en el vídeo se puede ver el proceso de envió de ficheros grandes en acción:

Ionic 2 con Visual Studio 2017


En los últimos dos años, millones de desarrolladores de casi todas las industrias del mundo han construido más de 1,2 millones de aplicaciones móviles con Ionic.

Cuando se inicio Ionic en 2013, sus creadores sólo querían hacer una mejor manera para que los desarrolladores web utilizasen sus habilidades existentes para crear aplicaciones para las tiendas de aplicaciones.

Hoy en día, Ionic es la tecnología de desarrollo móvil multiplataforma más popular del mundo, impulsando el rápido crecimiento de muchas  startups .

Pero sus creadores no están satisfechos con Ionic buscando  habilitar no sólo a la actual generación de desarrolladores móviles, sino también a los millones que se están dando cuenta de que también pueden construir para estos increíbles dispositivos.

Con Ionic 2, han mejorado considerablemente el rendimiento,  reduciendo la complejidad del código que se necesita escribir haciendo hecho posible la creación de aplicaciones completamente personalizadas que compiten con las mejores aplicaciones del mundo.

Ionic 2 va a cambiar lo que piensa acerca de las aplicaciones móviles y el futuro de la web para siempre.

Por extraño  que pueda parecer es posible usar Ionic 2 con Visual  Studio con el plugin de Córdova.

Los pasos para instalar  Ionic  2  con Visual Studio  son los siguientes:

  • Si aún no lo ha hecho, instale Visual Studio 2017.   Bajo las portadas, las aplicaciones de Ionic son aplicaciones de Apache Cordova, necesitará un entorno de desarrollo de Cordova funcional antes de poder usarlo con Ionic por lo que en primer lugar compruebe que puede crear y ejecutar la aplicación predeterminada Cordova Blank.
  • En Visual Studio, abra el menú Archivo, seleccione Nuevo y, a continuación, Proyecto. En el cuadro de diálogo del nuevo proyecto, expanda la sección de plantillas de JavaScript, seleccione Aplicaciones de Apache Cordova y, a continuación, elija la plantilla de aplicación en blanco (Apache Cordova).
  • Entregue al nuevo proyecto un nombre y una ubicación y luego haga clic en el botón Aceptar.
  • Presione F5 para generar y ejecutar el nuevo proyecto en el emulador de ondulación. El navegador Chrome debe abrir y mostrar el contenido de la aplicación. blankcordova.PNG
  • Instale la plantilla de Ionic en Visual Studio seleccionando el menú Herramientas, luego Extensiones y actualizaciones
  •  En el cuadro de diálogo Extensiones y actualizaciones, seleccione Online.
  • En el cuadro de búsqueda situado en la esquina superior derecha del cuadro de diálogo, escriba Ionic 2.
  • Seleccione la opción Ionic 2 RC Templates en la lista. Haga clic en el botón Descargar para iniciar la instalación.

ionic2.PNG

  • Ahora llega el momento de actualizar para que cargue la plantilla de Ionic 2, para lo que nos iremos a Actualizaciones de Productos

actualizacion.PNG

  • Pulsaremos “Modificar” para proceder a instalar las plantillas de Ionic 2

visx.PNG

  • Una vez finalizado el proceso podemos comprobar  en Nuevo proyecto–>Instalado–>TypeScript  que tenemos acceso   a las plantilla de Ionic 2

iomic2.PNG

Recicle su viejo portatil con Linux


Lubuntu está dirigido a los usuarios de PC y portátiles que se ejecutan en hardware de bajas especificaciones   en los momentos  actuales , es decir un ordenador vamos a decir “anticuado”  de  hace ya algunos años que conserva quizás  otros sistema operativo no  actualizable por lo que no esta  a la altura a efectos de seguridad  o  para ejecutar aplicaciones actuales orientadas a la web. Es triste  pero  esos equipos  funcionales  simplemente no tienen suficientes recursos para todas las ventanas,avisos y notificaciones de las distribuciones corrientes “con todas las funciones”.

Precisamente para dar una segunda oportunidad  a equipos anticuados, los miembros del equipo se encargan de LXDE y otros paquetes que forman parte de Lubuntu.

Ademas es importante que  Lubuntu recibió el reconocimiento oficial como miembro formal de la familia Ubuntu, comenzando con Lubuntu 11.10.

 

 

Lubuntu vs Ubuntu

Ambos Lubuntu y Ubuntu comparten dos grandes cosas importantes:

  • Core System Same
  • Mismas Repositorios

Lubuntu y Ubuntu pertenecen a la misma familia y hablar de ellos como totalmente diferentes sistemas no es correcto, ya que tienen algunas cosas en común. Por lo tanto, utilizan el mismo Foro Zona y comparten muchas páginas Wiki.Las diferencias entre Lubuntu y Ubuntu son:

  • Diferente entorno de escritorio – Lubuntu utiliza LXDE mientras Ubuntu utiliza la Unidad como la DE defecto.
  • Diferentes aplicaciones predeterminadas.Aparte de eso, son la misma. La DE es lo que hace que Lubuntu un sistema operativo ligero, y por supuesto las aplicaciones por defecto también, porque nos aseguramos de usar las aplicaciones más ligeras que no están ávidas de recursos.

 

 

Lubuntu 17.04

Lubuntu Artful Aardvark Alpha 1 (pronto a ser 17.10) ha sido liberada  sustituyendo a la versión 16.04.

También esta versión (además de la habitual LXDE ISO) es una imagen experimental con LXQt en lugar de LXDE.

 

Lubuntu incluye por defecto los siguientes paquetes como aaplicaciones de usuario:

  • Abiword – procesador de textos
  • Audacious – reproductor de música
  • Evince – lector de PDF
  • File-roller – gestor de archivadores
  • Firefox – navegador web
  • Galculator – calculadora
  • GDebi – administrador de paquetes
  • Gnumeric – hoja de cálculo
  • Guvcview – webcam
  • LightDM – gestor de sesiones
  • Light-Locker – bloqueador de pantalla
  • Lubuntu Software Center – gestor de paquete
  • MPlayer – reproductor de vídeo
  • MTPaint – editor de fotografías
  • Pidgin – mensajería instantánea
  • Scrot – capturas de pantalla
  • Simple Scan – escaneo
  • Sylpheed – cliente de correo electrónico
  • Synaptic – gestor de paquetes
  • Transmission – cliente bittorrent
  • Update Manager – gestor de actualizaciones
  • Startup Disk Creator – creador de usbs booteables
  • Wget – gestor de descargas CLI
  • XChat – cliente IRC
  • Xfburn – grabador de CD
  • Xpad – gestor de notas

Ademas, incluye sus propios paquetes  de LXDE

  • GPicView – visor de imágenes
  • Leafpad – editor de texto plano
  • LXAppearance – gestor de temas
  • LXDE Common
  • LXDM –
  • LXLauncher – modo fácil de lanzar aplicaciones
  • LXPanel – Barra de tareas
  • LXRandr – gestor de pantalla
  • LXSession – gestor de sesiones
  • LXSession Edit – editor de LXSession
  • LXShortCut – editor de lanzadores
  • LXTask – gestor de tareas
  • LXTerminal – emulador de terminal
  • Menu-Cache
  • Openbox – window manager
  • PCManFM – gestor de archivos

Lubuntu también puede usar el gestor de paquetes de Ubuntu.

Notas para la instalación

  • El instalador por defecto “Escritorio” requiere 384-800 MB de RAM (dependiendo de las opciones seleccionadas.) Si tiene algún problema, o si se siente cómodo usando una interfaz de teclado, pruebe el instalador alternativo para instalar en equipos con menos memoria RAM o un disco duro más pequeño que 4,3 GB.
  • Compruebe MD5SUM para el ISO descargado – Usted tendrá que comparar su MD5SUM con Ubuntu hashes .
  • Debe Grabar el CD O crear una unidad flash USB de arranque –
  • Comprueb  lso errores del  USB o el  Disco rebotable. Al arrancar el programa de instalación por defecto, verá la opción de “Comprobar disco para los errores”, de lo contrario, comprobar si hay errores de forma manual .

 

Descarga

La ultima version disponible para ordenador PC es la 17.04  aunque mantienen la versión anterior 16.04  para la plataforma Raspberry Pi 2  y 3

Para instalar lubuntu pc , lo primero es descargar la imagen iso para instalarlo en el arranque del equipo teniendo en cuenta eso si la arquitectura de la maquina.

Respecto a  la arquitectura la  versión de 32 bits servirá ara casi todas las PC .Es posible que necesite una ISO de 32 bits, para PCs anteriores a 2007.( elija esta  opción  si no está seguro) .La  versión de 64 bits es para equipos Intel o AMD.

Ademas  existe una versión PowerPC para Apple Macintosh G3 / G4 / G5 e IBM OpenPower (LTS solamente).

 

El link de descarga es el siguiente :   http://lubuntu.me/downloads/

 

 

 

 

Grabación  de imagen Libuntu en DVD

 

Durante mucho tiempo la manera en la que se podía montar imágenes iso en sistemas windows ha sido mediante programas de terceros que lo permitieran( como por ejemplo : Daemon Tools o Virtual CloneDrive,etc )  , pero a partir de Windows 8 en adelante se añadió una nueva  funcionalidad  que permite grabar imagenes ISO directamente con las herramientas que proporcionan el s.o.

Para grabar imágenes ISO en un CD o DVD, podemos hacerlo también de manera nativa  en Windows 10, para lo cual  introducimos en la grabadora CD/DVD un disco virgen.

Muy importante, antes de grabar, hay que fijarse en el tamaño de la ISO, ya que el límite que se puede grabar en un CD es de 700 MB.  Com  en el caso de la version 17.04  ocupa de hecho unos  916MB tendremos que usar un DVD  .

Hacemos clic derecho sobre la imagen ISO y seleccionamos la opción “Grabar imagen de disco”.

Al seleccionar la opción “Grabar imagen de disco”, aparecerá una ventana donde tendremos que seleccionar la unidad en la que vamos a grabar y si queremos o no verificar los datos del  DVD una vez termine la grabación.

Cómo se ver  es muy fácil montar y grabar imágenes ISO en Windows 10 de forma nativa gracias a la inclusión que se ha hecho a partir de Windows 8 de esta funcionalidad, que permite olvidarnos de programas de terceros

NOTA: Es posible que al hacer clic derecho sobre una imagen ISO no le aparezcan las opciones que explicamos más abajo. Eso es debido a que esta usando un programa de terceros por defecto. Si quiere montar o grabar imágenes ISO de manera nativa en Windows 10, debe hacer clic derecho sobre la imagen ISO, seleccionar “Propiedades” y después en la pestaña General hacer clic sobre “Cambiar…” para seleccionar el “Explorador de Windows”.

Creando un USB arrancable de Lubuntu con Etcher

  1. Descargamos Etcher desde este enlace. Podemos instalar la aplicación, pero esto no es necesario en Linux.
  2. Descargamos la versión más reciente de Lubuntu.
  3. A continuación, introducimos un pendrive de como mínimo 2GB en un puerto USB. Hay que tener en cuenta que Etcher eliminará todos los datos del pendrive, por lo que merece la pena copiar sus datos en otra unidad antes de iniciar el proceso.
  4. Ejecutamos Etcher
  5. A continuación, hacemos clic sobre SELECT IMAGE.

Etcher

  1. En el siguiente paso buscamos la imagen que habremos descargado en el paso 2.
  2. Ahora hacemos clic en SELECT DRIVE y elegimos la unidad de nuestro pendrive. Si sólo tenemos uno puesto, la selección será automática, pero no está de más asegurarse.

Etcher

  1. A continuación, hacemos clic en FLASH IMAGE.

Etcher

  1. Por último, esperamos a que finalice el proceso. Veremos una imagen como la siguiente:

Etcher

Nota:   No todos los equipos “antiguos”pueden arrancar un sistema operativo desde una unidad extraible USB  por lo que asegúrese que su equipo soporta el arranque por USB antes de hacer la imagen con Etcher

Conozca la potente herramienta gratuita de edición de estilos con Edge


Gracias  a que Microsoft se asoció con BrowserStack para obtener pruebas en vivo y automatizadas en Microsoft Edge  ,este  navegador  introduce nuevas mejoras en las herramientas de desarrollo de F12, incluyendo algunas de las funciones más solicitadas de UserVoice. Además las nuevas herramientas se construyen en TypeScript y siempre se ejecutan en cualquier instalación de Edge, por lo que no se requiere  instalar nada .OP Otro punto interesante es que  la documentación de las herramientas para desarrolladores de F12 está totalmente disponible en GitHub por lo que los documentos no sólo serán influenciados por sus comentarios, sino que están invitados a contribuir y ayudar a dar forma a la documentación.

Las  hojas de estilo en cascada (o CSS, siglas en inglés de Cascading Stylesheets) son un lenguaje de diseño gráfico para definir y crear la presentación de un documento estructurado escrito en un lenguaje de marcado como puede ser html  por lo que es muy usado para establecer el diseño visual de las páginas web, e interfaces de usuario escritas en HTML o XHTML;o incluso a cualquier documento XML, incluyendo XHTML, SVG, XUL, RSS, etc
Junto con HTML y JavaScript, CSS es una tecnología usada por muchos sitios web para crear páginas visualmente atractivas, interfaces de usuario para aplicaciones web, y GUIs para muchas aplicaciones móviles (como Firefox OS) por lo qeu es muy interesante disponer de alguna herramienta que nos ayude a gestionar,mejorar o modificar las hojas de estilo.

En este contexto Microsoft Edge dispone de siete herramientas distintas que  permiten ver,editar inspeccionar  y alterar tanto código css,html como javascript   cada una con su propia pestaña en la interfaz de las herramientas F12  de modo que vamos  a ver  una imagen de cada herramienta y un resumen rápido de lo que hace, seguido por las listas de sus principales características y tareas típicas.

La herramienta DOM Explorer (CTRL + 1)

La herramienta DOM Explorer muestra la estructura de una página web tal como está siendo representada en el navegador , haciendo posible editar su HTML y estilos en una página en vivo ( obviamente no se cambiara nada en el servidor sólo en la pagina visualizada para ver como quedaría.

Puede hacerlo por tanto  sin tener que editar y volver a cargar sus fuentes, para que pueda solucionar rápidamente problemas de visualización o experimentar con nuevas ideas o mejoras .

Explorador DOM de bordes

Las funciones de la herramienta DOM Explorer incluyen:

  • Sugerencias de autocompletado de IntelliSense al editar atributos HTML y propiedades CSS.
  • Arrastre los nodos DOM para reorganizarlos y editar nodos como HTML.
  • Apoyo para CSS compilado sourcemaps.

Desarrollo y tareas de depuración que hace más fácil:

  • Determinar por qué un elemento no se muestra en el lugar correcto o tamaño correcto.
  • Determinar qué estilos CSS y consultas de medios se están aplicando a un elemento.
  • Prueba de una serie de colores diferentes para un elemento para ver que se ve mejor.

La herramienta Consola (CTRL + 2)

Herramienta de consola de borde

La herramienta Consola proporciona una forma de interactuar con el código en ejecución:

  • Cambie los valores de las variables o inyecte código en un sitio en vivo con la línea de comandos de la consola.
  • Utilice la API de depuración de consola para enviar información de depuración.
  • Consulte los mensajes de error del navegador y los códigos de estado.

Las características de la herramienta Consola incluyen:

  • Abra la consola en la parte inferior de cualquier otra herramienta con el botón de consola o CTRL + ` .
  • Consola Depuración de métodos API para sincronización, recuento, agrupación y más.
  • Las sugerencias de autocompletado de IntelliSense en la línea de comandos aceleran la entrada, reducen errores tipográficos y le ayudan a descubrir aspectos de las API de JavaScript.

Desarrollo y tareas de depuración que hace más fácil:

  • Segmentación de iFrames específicos.
  • Ejecución de código de tiempo hasta la instrucción con nuevos métodos de temporización.
  • Cambiar el valor de una variable en el código en ejecución sin recargar.

 

La herramienta Depurador (CTRL + 3)

Herramienta de depurador de bordes

Puede utilizar la herramienta Depurador para examinar lo que está haciendo su código, cuando lo está haciendo y cómo lo está haciendo. Detenga el código en la mitad de la ejecución, pase a través de él línea por línea y observe el estado de las variables y los objetos en cada paso.

Las características de la herramienta Depurador incluyen:

  • No se actualiza la depuración. Establezca sus puntos de interrupción y vaya sin recargar y perder estado.
  • Interfaz de documentos con pestañas para facilitar la gestión de múltiples secuencias de comandos.
  • Puntos de interrupción en código estándar, respuestas de XHR y eventos.

Desarrollo y tareas de depuración que hace más fácil:

  • Ver lo que llevó a una llamada de función utilizando la pila de llamadas.
  • Hacer que el código comprimido o minificado sea más legible usando mapas de origen.
  • Supervisión de la creación y ejecución de los servidores web.

 

La herramienta de red (CTRL + 4)

Herramienta de red de bordes

La herramienta de red le ofrece los detalles finos de las solicitudes de red relacionadas con la carga y operación de sus páginas web.

Desarrollo y tareas de depuración que hace más fácil:

  • Visualización de la cantidad de ancho de banda que consume su página en los recursos.
  • Depuración de solicitudes AJAX mediante la visualización de los encabezados y los órganos de solicitud y respuesta.
  • Identificar las solicitudes de red que ralentizan la carga de sus páginas web.

 

La herramienta de rendimiento (CTRL + 5)

Herramienta de rendimiento de borde

La herramienta Rendimiento le ayuda a buscar lo que está sucediendo cuando su página se ralentiza. Usarlo para perfilar puntos específicos de lentitud muestra las operaciones que los están causando. En Microsoft Edge, la herramienta Rendimiento combina las herramientas anteriores de Capacidad de respuesta y Profiler deUI para crear una vista de extremo a extremo de su rendimiento de secuencias de comandos y pintura.

Algunas características interesantes son:

  • Identificar las diferentes fuentes de actividad de la CPU que causan lentitud de la UI.
  • Conozca la velocidad de fotogramas de su página web y la cantidad de repintados y reflujos que cuestan.
  • Establecimiento de etiquetas en la línea de tiempo para aislar escenarios de usuario.
  • Desarrollo y tareas de depuración que hace más fácil:  Optimizaciones de código de prueba y Acelerar sus páginas web.

La herramienta de memoria (CTRL + 6)

Herramienta Edge Memory

Cuando una página web comienza rápido y se ralentiza después de usarlo durante un tiempo, el culpable es generalmente una pérdida de memoria. La herramienta de memoria rastrea el uso de la memoria de su página web, ayudándole a identificar dónde crece el uso de la memoria, por qué está creciendo y cómo solucionarlo.

Algunas características interesantes son:

  • Una línea de tiempo para ver los cambios progresivos en el uso de la memoria.
  • Instantáneas para examinar los detalles del uso de memoria en puntos específicos.
  • Comparaciones de instantáneas para identificar puntos específicos de crecimiento.

Desarrollo y tareas de depuración que hace más fácil:

  • Identificar nodos DOM desprendidos.
  • Identificar los puntos de crecimiento de la memoria.
  • Medir el uso de memoria de objetos.

Herramienta de emulación de bordes

La herramienta de emulación le ayuda a probar cómo se ejecutan las páginas web en diferentes tamaños de pantalla y características de hardware y cómo responden a las diferentes cadenas de agente de usuario.

Algunas características interesantes son:

  • Emulando diferentes tamaños de pantalla y resoluciones.
  • Simulación GPS.

Desarrollo y tareas de depuración que hace más fácil:

  • Prueba de diseños sensibles en múltiples tipos de pantallas.
  • Prueba de las funciones de detección de ubicación para un sitio móvil.

 

 

 

Fuente https://docs.microsoft.com/

Alarma con estación meteorológica


También decidió utilizar un servidor MQTT para subir esta información en la web por lo que se puede desde cualquier lugar, tener un vistazo a la información meteorológica captada por este prototipo.

Elementos del montaje:

  1. nodeMCU (regulador Micro,  versión 0.9)
  2. Pantalla LCD – 16 x 2
  3. Botones – 3
  4. Sensor de temperatura DHT11
  5. Timbre o zumbador
  6. Placa de prototipos tamaño  mini
  7. Cables de puente
  8. Resistencia de 1000 Ω – 3
  9. Caja de madera para montar todas las cosas dentro.

Asignación de pines y planificación

Bien, así que vamos a hablar acerca de cómo tenía que distribuir los pasadores entre todos los componentes.

La pantalla LCD

La pantalla LCD,  necesita al menos 6 pines de I/O interfaz con el microcontrolador. Puede darse como sigue: Habilitar, register select, D04, D05, D06 D07.

  • Enable – pin I/O digital 0
  • Seleccione Registro – pin I/O digital 1
  • D04 – pin I/O digital 2
  • D05 – pin I/O digital 3
  • D06 – pin I/O digital 4
  • D07 – pin I/O digital 5

Los botones

Hay tres botones que vamos a usar, por lo queo bviamente  necesitaríamos tres pins de I/O digitales,

  • LeftButton – pin I/O digital 6
  • CenterButton – pin I/O digital 7
  • RightButton – pin I/O digital 8

El zumbador

El puede ser conectado al pin I/O digital 9.

El sensor de temperatura DHT11

Este sensor tiene un pin de salida y sigue para el pin de I/O digital 10

 

Ensamblaje

En una caja de madera ser practican agujeros para el lcd  y lo botones y entonces es hora de montar todo dentro de esa caja.

  1. Creo que tenemos que empezar con los botones. Usé un palito de helado estrecho para hacer una base para los botones.
  2. Luego tomar el nodeMCU y las placa de prototipos y pegarloo a la base de la caja con cinta de doble cara.
  3. Entonces conectar los botones a los pines de I/O digitales apropiados.
  4. En tercer lugar, colocar  la pantalla LCD y luego agarrarla bien a la caja con algunas cintas desde el interior. .
  5. Hacer las conexiones de la pantalla LCD.
  6. Luego conectar el timbre o buzzer en el interior de la caja con cinta de doble cara y conectar su terminal positivo al pin digital 9
  7. El sensor DHT11 tiene tres piness: 5v, gnd y la salida. Por lo tanto el pin de salida irá al pin digital 10 de la nodeMCU . 5v y tierra son obvias dónde deben ir.
  8. También para agregar, DHT11 es lo único que se quedará fuera de la caja para detectar la temperatura exterior. .

 

El código

El código qeu ha escrito Techovator0819      es cerca de 450 líneas de longitud. y cuenta  con  algunas bibliotecas importantes que se necesitan para descargar  asi que lo primero es asegúrarse de tener el IDE de Arduino instalado asi como tener los drivers del  esp8266 instaladas también. Si no lo ha hecho, haga clic aquí.

El primer paso antes de ver  el código, es entender la funcionalidad de nuestro dispositivo y el código en consecuencia:

  • Nestro WB(weather box)  accede a internet y recupera la información de tiempo apropiado a través de una llamada a la API.
  • También  tomara  la temperatura del medio ambiente  con un sensor propio y enviara esa información a un corredor de MQTT.
  • También podría mantener alarmas y temporizadores para usted.
  • También es capaz de mostrar hora y fecha.

Todo , esto significa que necesitamos integrar todas estas funciones bajo un título o código.

¿Cuáles son las bibliotecas que necesitamos?

  1. Librería LiquidCrystal . Como estamos usando una pantalla LCD como la principal interfaz entre usted y el NodeMCU, esta biblioteca es indispensable. Paranuestra comodidad, esta biblioteca, por defecto, es una biblioteca integrada en el IDE de Arduino.
  2. Biblioteca de ESP8266WiFi . Esta biblioteca permite el ESP8266 conectar con el Wifi y tener acceso a internet. Esta librería viene en un paquete que debe descargar durante la instalación del ESP8266 en el administrador de la placa.
  3. Biblioteca de ArduinoJson . Cuando se llama a la API, los datos que usted recibirá estaran en formato JSON (JavaScript Object Notation). Así que si quiere convertirlo a un formato utilizable, necesita analizarlo. Y la biblioteca de ArduinoJson lo hace por nosotros.
  4. Biblioteca para el sensor DHT11.
  5. Biblioteca en tiempo de. Para mantener a nuestro tiempo. Las funciones de biblioteca se enumeran aquí.
  6. Biblioteca de TimeAlarms . Se utiliza para que nos establezcan alarmas y temporizadores. Las funciones de biblioteca se enumeran aquí.

Las dos últimas bibliotecas deben utilizarse juntos. Puede usar la biblioteca en tiempo de forma independiente pero no de la biblioteca de TimeAlarms.


La llamada de API

 

The API Call

 

 

 

 

Lo más importante es una llamada a la API es la API key. Estoy conectando a la página web openweathermap.org para obtener toda la información de tiempo. Así que hay que seguir el procedimiento para abrir una cuenta allí y obtener un API key y es absolutamente gratis. Para llamar a la API key,
El primer paso es conectarse al servidor.

En segundo lugar, usted necesita utilizar su API key en la URL.Usted deberá utilizar el método GET para recuperar los datos de la URL.

Para hacer los datos disponibles en un formato utilizable,necesita para luego almacenar los datos en una cadena.

Los datos que reciba serán en formato JSON. Así que hay que analizarlo.

Y luego, se almacenan la información deseada en algunas variables globales que se pueden utilizar en cualquier lugar en el código.

     El siguiente es un ejemplo de código  para demostrar cómo funciona. Esta parte básicamente declara las bibliotecas utilizadas, crea las variables y objetos de la biblioteca a consultar.

include <ArduinoJson.h>
#include <ESP8266WiFi.h>
String result; 
// la cadena en la que se almacenarán los datos después de la llamada a la API
char servername[]="api.openweathermap.org"; //mombre servidor
String APIKEY = "YOUR_API_KEY"; //el API key
String CityID = "1264527"; //el  ID de la ciudad

//Asignación de sus variables globales para almacenar la información meteorológica recibida
String Description;
String Place;
float Temperature;
float Humidity;
float w;
WiFiClient client; >

Código de configuración básica.

void setup()

{

// Ponga su código de configuración aquí, para ejecutar una vez:
Serial.begin(9600);
WiFi.begin(“your ssid”, “your password”);

//empieza  conexion WIFI
while(WiFi.status() != WL_CONNECTED)

{

// espera hasta que se establezca la conexión
Serial.print(“.”);
delay(500);
}
Serial.println(“Connectado!”);
Serial.println(WiFi.localIP());   //imprime direccion  IP
}<

Código para crear una función que obtiene los datos.

void weatherData(){

if (client.connect(servername, 80)) {

// inicia la conexión del cliente, comprueba la conexión
client.println(“GET /data/2.5/weather?id=”+CityID+”&units=metric&APPID=”+APIKEY);

//// llama a la api usando el método get antes de la URL. Nota: La URL utiliza la clave api.
Serial.println(“Server esta accesible”);
client.println();
}
else { //  si el servidor no esta disponible
Serial.println(“fallo de conexion  “); //mensaje de errorsi no esta conectado el cliente
Serial.println();
}
result = “”;

//Hace que la cadena nula de cualquier dato almacenado previamente para almacenar nuevos datos
while (client.available()) { //connected or data available
char c = client.read(); //gets byte from ethernet buffer
result = result+c;
}
Serial.println(result);
result.replace(“[“, ” “);

//Estoy enfrentando un error. Sólo para evitarlo, tengo que escribir esto
result.replace(“]”, ” “);

//y esto tambien.
client.stop(); //para  cliente
Serial.println(“Recieved”);

//Analiza la cadena llamada resultado

StaticJsonBuffer<1024> jbuff;

JsonObject &root = jbuff.parseObject(result);
if (!root.success())
{
Serial.println(“parseObject() failed”);
}

// almacena toda la información deseada en variables temporales.
String location = root[“name”];
float temperature = root[“main”][“temp”];
float humidity = root[“main”][“humidity”];
String description = root[“weather”][“description”];
float wind = root[“wind”][“speed”];

//Transfiere toda la información de las variables temporales a variables globales a las //que puede acceder en cualquier parte del código.
Place = location;
Temperature = temperature;
Humidity = humidity;
w = wind * 3.6;
Description = description;
}

La función de bucle para mostrar todo lo que te quieren en el monitor serie.

void loop() {

weatherData(); //Llama a la función que hemos discutido anteriormente
Serial.println(Temperature);
Serial.println(Place);
Serial.print(“H: “);
Serial.println(Humidity);
Serial.print(w);
Serial.println(” kmph”);
Serial.println(Description);
delay(8000); //retardo de  8 segundos
}

Como vemos  es un ejemplo básico de una llamada a la API y el análisis de datos JSON.

 

MQTT cliente y agente

 

MQTT Client and Broker

 

 

Como hemos visto en este blog el autor h aoptado  por el frameworl Cayyene de MyDevices para salvar la informacion procedente del sensor DHT11

one.jpg

 

 

two.jpg

 

 

 

 

four.jpg

 

 

five.jpg

 

 

Como vemos va  subiendo nuestros datos de los sensores a un corredor de MQTT en internet por lo que podemos ver desde cualquier lugar.
Pesonalmente pienso que el tablero de instrumentos del Cayenne es el más conveniente así queno me sorprende que el autor lo hay usado
Resumidamente esto son los pasos  para usar el servicio
  • En primer lugar, debe crear una cuenta.
  • Después de haber conectado la placa a Cayena se le dirigirá automáticamente a la consola donde se pueden utilizar los widgets personalizados disponibles.
  • Asegúrese de especificar correctamente el canal y corresponden a ese canal para enviar datos en el código.
  • Después de que hayas hecho eso, cree un nuevo proyecto y arrastrar y soltar widgets como de sus dispositivos.
  • El siguiente es un código de ejemplo para que comprendas cómo Protocolo MQTT. También utilizaremos la biblioteca Cayena-MQTT-ESP8266 para hacer las cosas mucho más fácil para nosotros.
    <#include 
    
    char ssid[] = "ssid";
    char wifiPassword[] = "wifiPassword";
    
    char username[] = "MQTT_USERNAME";
    
    char password[] = "MQTT_PASSWORD";
    char clientID[] = "CLIENT_ID";
    
    void setup() {
    
      Serial.begin(9600);
      Cayenne.begin(username, password, clientID, ssid, wifiPassword);
    }
    
    void loop() {
    
     Cayenne.loop(); //this function must be called regularly to keep the connection stable
      float sensorInfo = analogRead(A0);
      Cayenne.virtualWrite(0, sensorInfo); //virtualWrite(channel, data) is function with two parameters. Channel - you want to send the data to and second parameter is the data itself.
    }
  • Después de eso, usted será capaz de enviar y recibir datos sin problemas. Para este , se ha usado sólo dos widgets icono es decir ‘temperatura’ y ‘humedad’.
  • Después de crear una cuenta, haga clic en ‘Add New’.
  • A continuación, haga clic en ‘Dispositivo/Widget’Haga clic en “Traiga su propia cosa”, que es en la parte inferior.Una nueva página aparecerá indicando su nombre de usuario MQTT, contraseña y el ID de cliente que son únicas para usted. Estos se aplicarán en el código para identificar el dispositivo.

Estructura del código final

La longitud total del código es alrededor de 550 líneas.

El código está dividido en dos secciones. Una PageDisplay y otra DecMaker (abreviatura de decisiones). Cada vez que usted pulsa cualquier botón, basado en que (derecha o izquierda), la pantalla mostrará esa página. Cuando en página y el centerButton, el código se moverá a la DecMaker. Dentro de la función DecMaker y basado en qué página estaba finalmente abierta, ejecutará las acciones correspondientes. Puede recibir datos meteorológicos, sensores, alarmas y temporizadores.

Las páginas se muestran según los modos. Los modos son cuatro. Pueden ser,

  1. Inicio modo: para obtener los datos meteorológicos y visualizarlos. Así como percibir el entorno.
  2. Modo set timer – establecer temporizadores para usted
  3. Modo de programar la alarma – establecer alarmas para que usted
  4. Panel de control – cuando tu no en cualquiera de los modos, prefiere podría quedarse en el tablero de instrumentos.

A continuación, vamos a hablar sobre el sketch principal 

Paso 9: El código principal

El siguiente es el código principal.

Para descargar el código, haga clic aquí.

LiquidCrystal lcd(16, 5, 4, 0, 2, 14);
#define rightButton 13
#define centerButton 15
#define leftButton 12
#define buzz 3
int page = 1;
byte leftArrow[8]
{ B00000,
 B00010,
 B00110,
 B01110,
 B11110,
 B01110,
 B00110,
 B00010
};
byte rightArrow[8]{
 B00000,
 B01000,
 B01100,
 B01110,
 B01111,
 B01110,
 B01100,
 B01000
};
byte line[8]
 { B00110,
 B00110,
 B00110,
 B00110,
 B00110,
 B00110,
 B00110,
 B00110
};
String result;
char servername[]="api.openweathermap.org";
String APIKEY = "Your Api key";
String CityID = "Your city ID";</p><p>String Description;<br>String Place;
float Temperature;
float Humidity;
float w;
WiFiClient client;
dht DHT;#define pin 1
int set=1; // for configuring the alarm
int a, b, c; // used to denote the hour, minute and second while setting an alarm</p>
char username[] = "MQTT_username";<br>char password[] = "MQTT_password";
char clientID[] = "Client ID";

void setup() {
 // put your setup code here, to run once:
 Serial.begin(9600);
 WiFi.begin("ssid", "password");
 lcd.print("Weather box");
 delay(2000);
 lcd.clear();
 if (WiFi.status() == WL_CONNECTED){
 Cayenne.begin(username, password, clientID);
 lcd.print("Connected!");
 delay(3000);
 lcd.clear();
 Serial.println(WiFi.localIP());
 } else {
 lcd.print("Not conn");
 delay(3500);
 }
 lcd.clear();
 lcd.begin(16, 2);
 lcd.createChar(0, leftArrow);
 lcd.createChar(1, rightArrow);
 lcd.createChar(3, line);
 
 pinMode(rightButton, INPUT);
 pinMode(centerButton, INPUT);
 pinMode(leftButton, INPUT);
 pinMode(buzz, OUTPUT);
 digitalWrite(buzz, LOW);
 
 setTime(15, 12, 50, 25, 5, 17);
 delay(1000);
}
int val = 1;
int x,y; //for setting timer minutes and seconds
int trig; //for coniguring the timer
int counter = 0;
void loop() {
 // put your main code here, to run repeatedly:
 while(val == 1){
 if (digitalRead(leftButton)==HIGH)
 { val = 0;}
 lcd.clear();
 lcd.print(hour());
 lcd.print(":");
 lcd.print(minute());
 lcd.write(byte(3));
 lcd.print("WiFi:");
 if (WiFi.status() == WL_CONNECTED){
 lcd.print("conn"); } 
 else {
 lcd.print("Nconn");} 
 lcd.setCursor(0, 1);
 lcd.write(byte(0));
 lcd.print("Menu");
 lcd.write(byte(3));
 
 if (digitalRead(centerButton)){
 DHT.read11(pin);
 lcd.print("T:");
 int a = DHT.temperature; //converting float to int
 lcd.print(a);
 int b = DHT.humidity; // converting float to int
 lcd.print(" H:");
 lcd.print(b);
 delay(3000);
 }else {
 date();
 }
 counter++;
 if (counter == 60){
 if (WiFi.status()==WL_CONNECTED){
 Cayenne.loop(); 
 DHT.read11(pin); 
 Cayenne.virtualWrite(1, DHT.temperature);
 Cayenne.virtualWrite(2, DHT.humidity); 
 } 
 counter = 0;
 }
 delay(50);
 }
 while (val != 1){
 delay(200);
 pageDisplay();
 if (digitalRead(rightButton)){
 if (page == 4){
 page = page;
 } else {
 page++;
 }
 pageDisplay();
 
 } else if (digitalRead(leftButton)){
 if (page == 1){
 page = page;
 } else {
 page--;
 }
 pageDisplay();
 
 } else if (digitalRead(centerButton)== HIGH){
 decMaker();
 }
 }
}
void pageDisplay()
{ switch(page){
 case 1:
 lcd.clear();
 lcd.setCursor(6, 0);
 lcd.print("Home");
 lcd.setCursor(15, 0);
 lcd.write(byte(1));
 break;
 case 2:
 lcd.clear();
 lcd.write(byte(0));
 lcd.setCursor(3, 0);
 lcd.print("Set Timer");
 lcd.setCursor(15, 0);
 lcd.write(byte(1));
 break;
 case 3: 
 lcd.clear();
 lcd.write(byte(0));
 lcd.setCursor(3, 0);
 lcd.print("Set Alarm");
 lcd.setCursor(15, 0);
 lcd.write(byte(1));
 break;
 case 4:
 lcd.clear();
 lcd.write(byte(0));
 lcd.setCursor(3, 0);
 lcd.print("Dash Board");
 break;
 default:
 lcd.clear();
 lcd.print("Error 002");
 break;
 }
}
void date(){
 lcd.print(day());
 lcd.print(" ");
 int a = month();
 switch(a){
 case 1:
 lcd.print("Jan");
 break;
 case 2:
 lcd.print("Feb");
 break;
 case 3:
 lcd.print("Mar");
 break;
 case 4:
 lcd.print("Apr");
 break;
 case 5:
 lcd.print("May");
 break;
 case 6:
 lcd.print("Jun");
 break;
 case 7:
 lcd.print("Jul");
 break;
 case 8:
 lcd.print("Aug");
 break;
 case 9: 
 lcd.print("Sep");
 break;
 case 10:
 lcd.print("Oct");
 break;
 case 11:
 lcd.print("Nov");
 break;
 case 12:
 lcd.print("Dec");
 break;
 default:
 lcd.print("005");
 }
 if (day()<10){
 lcd.print(" ");
 }
 lcd.print(year());
 }
void decMaker(){
 switch(page){
 case 1:
 lcd.clear();
 lcd.print(". . .");
 weatherData(); 
 lcd.clear();
 while (digitalRead(leftButton) == LOW){
 weatherData();
 digitalRead(leftButton);
 lcd.setCursor(6, 0);
 lcd.print("IST:");
 lcd.setCursor(5, 1);
 lcd.print(hour());
 lcd.print(":");
 lcd.print(minute());
 delay(3000);
 lcd.clear();
 lcd.print("Wthr in ");
 lcd.print(Place);
 lcd.setCursor(0, 1);
 lcd.print("T:");
 lcd.print(Temperature);
 lcd.setCursor(9, 1);
 lcd.print("H:");
 lcd.print(Humidity);
 delay(3000);
 lcd.clear();
 digitalRead(leftButton);
 lcd.print("Wind: ");
 lcd.print(w);
 lcd.print("kmph");
 lcd.setCursor(0, 1);
 lcd.print(Description);
 delay(2000);
 lcd.clear();
 DHT.read11(pin);
 lcd.print("Room: ");
 lcd.setCursor(0, 1);
 lcd.print("T:");
 lcd.print(DHT.temperature);
 lcd.setCursor(9, 1);
 lcd.print("H:");
 lcd.print(DHT.humidity);
 delay(2000);
 lcd.clear();
 }
 lcd.begin(16, 2); // In my case the lcd doesn't work without this. But don't know why.
 break;
 case 2:
 setTimer();
 break;
 case 3:
 setAlarm();
 Serial.print("THREE");
 lcd.begin(16, 2);
 break;
 case 4:
 Serial.print("FOUR");
 val = 1;
 break;
 default:
 Serial.print("not a valid entry");
 lcd.clear();
 lcd.print("error 001");
 break;
 }
}
void weatherData()
{ if (client.connect(servername, 80)) 
{ //starts client connection, checks for connection
 client.println("GET /data/2.5/weather?id="+CityID+"&units=metric&APPID="+APIKEY);
 Serial.println("Server is accessable");
 client.println();
 } 
 else {
 Serial.println("connection failed"); //error message if no client connect
 Serial.println();
 }
 result = "";
 while (client.available()) { //connected or data available
 char c = client.read(); //gets byte from ethernet buffer
 result = result+c;
 }
 result.replace("[", " ");
 result.replace("]", " ");
 client.stop(); //stop client
 Serial.println("Recieved");
 
 StaticJsonBuffer<1024> jbuff;
 JsonObject &root = jbuff.parseObject(result);
 if (!root.success())
 {
 Serial.println("parseObject() failed");
 }
String location = root["name"];
 float temperature = root["main"]["temp"];
 float humidity = root["main"]["humidity"];
 String description = root["weather"]["description"];
 float wind = root["wind"]["speed"];
Place = location;
 Temperature = temperature;
 Humidity = humidity;
 w = wind * 3.6;
 Description = description;
}
void alarm()
{ Serial.println("Alarm activated");
 lcd.clear();
 lcd.print("Wake up, Lazy");
 for (int i = 0; i <= 10; i++){
 digitalWrite(buzz, HIGH);
 delay(80);
 digitalWrite(buzz, LOW);
 delay(80);
 digitalWrite(buzz, HIGH);
 delay(80);
 digitalWrite(buzz, LOW);
 delay(800);
 }
 digitalWrite(buzz, LOW);
 set = 0;
}
void setAlarm(){
 set = 1;
 int pos = 1;
 a, b, c = 0;
 repeat:
 //timeDisplay();
 lcd.clear(); 
 lcd.setCursor(0, 0); 
 lcd.print(a); 
 lcd.print(":");
 lcd.print(b); 
 lcd.print(":");
 lcd.print(c); 
 lcd.setCursor(0, 1);
 if (pos == 1){ lcd.print("hours");}
 else if (pos == 2){ lcd.print("minutes");}
 else if (pos == 3){lcd.print("seconds");}
 delay(200);
 if (digitalRead(leftButton)){//leftButton
 if (pos == 3)
 {pos = 1;}
 else 
 {pos++;}
 } else if (digitalRead(rightButton)){
 switch (pos){
 case 1:
 if (a == 23){ a = 0;}
 else {a++;}
 break;
 case 2:
 if (b == 59){ b = 0;}
 else {b++;}
 break;
 case 3:
 if (c == 59){ c = 0;}
 else {c++;}
 break;
 }
 } else if (digitalRead(centerButton)){
 confirmAlarm();
 } 
 if (set == 0){
 goto endIt;
 }
 goto repeat;
 endIt:
 Serial.println("Alarm executed successfully");
}

void confirmAlarm()
{ lcd.clear();
 Alarm.alarmOnce(a, b, c, alarm);
 up:
 lcd.setCursor(1, 0);
 lcd.print("Alarm Running");
 lcd.setCursor(3, 1);
 lcd.print(hour());
 lcd.print(":");
 lcd.print(minute());
 lcd.print(":");
 lcd.print(second());
 Alarm.delay(200);
 delay(1);
 lcd.clear();
 //timeDisplay();
 Serial.println("...");
 if (set == 0||digitalRead(centerButton)){goto down;}
 goto up;
 down:
 set = 0;
}
void setTimer(){
 int cur = 1;
 x, y = 0;
 trig = 1;
 roof:
 lcd.clear();
 lcd.setCursor(2, 0);
 lcd.print("minutes: ");
 lcd.print(x);
 lcd.setCursor(2, 1);
 lcd.print("seconds: ");
 lcd.print(y);
 if (cur == true){lcd.setCursor(0, 0); lcd.write(byte(1));}
 else {lcd.setCursor(0, 1); lcd.write(byte(1));}
 delay(200);
 if (digitalRead(rightButton)){
 switch(cur){
 case 1:
 if (x == 20){x=0;}
 else {x++;}
 break;
 case 2:
 if (y == 59){y = 0;}
 else {y++;}
 break;
 default: 
 lcd.clear();
 lcd.print("ERROR 003");
 }
 } else if (digitalRead(leftButton)){
 if (cur == 2){cur = 1;}
 else {cur++;}
 }
 if (digitalRead(centerButton)){
 confirmTimer();
 } else {
 goto roof;
 }
 trig = 0;
 lcd.setCursor(0, 0);
 lcd.print("Timer successful");
 delay(2000);
 lcd.clear();
}</p><p>void confirmTimer(){<br> int z;
 z = x*60 + y;
 Alarm.timerOnce(z, timer);
 lcd.clear();
 
 sky:
 Serial.println(".");
 lcd.clear();
 lcd.setCursor(0, 0);
 lcd.print("CountDown Timer");
 lcd.setCursor(7, 1);
 lcd.print(z);
 z--;
 Alarm.delay(999);
 delay(1);
 if (trig == 0||digitalRead(centerButton)==HIGH){goto ground;}
 goto sky;
 ground:
 trig = 0;
 lcd.clear();
}
void timer(){
 Serial.println("Boom, timer is on!! :)");
 lcd.clear();
 lcd.setCursor(3, 0);
 lcd.print("Time's Up!");
 for (int i = 0; i<=10; i++){
 for (int j = 0; j<=3; j++){
 digitalWrite(buzz, HIGH);
 delay(70);
 digitalWrite(buzz, LOW);
 delay(70);
 }
 delay(700);
 }
 trig = 0;
}

Mas información en http://www.instructables.com/id/IoT-Weather-Box-with-Custom-Alarms-Timers/

Router home-station como servidor de impresion


Es habitual que al migrar el servicio ADSL  a FTTH  el operador  nos deje como medida de cortesía  , el viejo router de ADSL  en casa del cliente , así que probablemente el  viejo router haya quedado  en el olvido en un cajón sin saber muy bien que hacer con el.

Por otra parte, también hay personas que optan por comprar un router de mayor calidad, por lo que es probable que se mantenga también el de su proveedor de Internet en casa.

En cualquier caso ,sea por el motivo que sea, es relativamente   habitual tener  en casa o la oficina un viejo router inalámbrico que no se está utilizando, sin saber muy bien que hacer con este así que es es el momento de sacarle partido  como por ejemplo  para ampliar la cobertura wifi  o por necesitar mayor numero de puertos ethernet  como vimos en este post ,  o en el caso de que sea un home-station usarlo como nas-server  o un servidor de impresión

Un Servidor de Impresión es un equipo o concentrador, o modernamente  un servidor, que conecta una impresora a la red lan interior , para que cualquier equipo pueda acceder a ella e imprimir trabajos, sin depender de otro ordenador para poder utilizarla, como es el caso de las impresoras compartidas.

Veamos  como convertir un  Home-Station modelo Observa  como servidor de impresión :

En primer lugar entendemos habra  los siguintes pasos comentados en un post anterior
es decir  cambiar  la ip de acceso por defecto ( para que no haya colisiones con la ip del router principal)   y desactivar el DHCP
En el caso de querer implementar una impresora de red , aparte de conectar la toma usb de la impresora a la toma usb del Home-Station , tan solo necesitaremos  ir al menú Advanced ->Network Tools –>Printer   y activar ( check enable )
printer
Observe  que la url( http://192.168.1.100:631/printers/Printer) sera la que necesitaremos para añadir la impresora de red desde nuestro ordenador.
Asimismo es interesante   ,si se desea,  asociar un  nombre  que sugiera el tipo de impresora  a la que  nos conectaremos y finalmente pulsar Apply
cabon

Lo primero obviamente, es conectar la impresora al puerto USB del router y encenderla. En el equipo con Windows nos dirigiremos a Panel de Control – Impresoras y haremos clic en Agregar una impresora.

printer1

 

Seleccionaremos Agregar una impresora de Red y no esperaremos a que intente encontrarla, seleccionaremos directamente la opción La impresora no está en la lista .

En la siguiente pantalla pulsaremos la opción Seleccionar una impresora compartida por nombre  y  justo ahí   introduciremos los datos que configuremos  en el  paso anterior  (en el ejemplo  http://192.168.1.100:631/printers/Canon MG2550)

Después de intentar comunicarse con la impresora mediante la dirección http  que le hemos especificado, si la comunicación es correcta    , pedirá información adicional  de  marca  y  modelo .

Si en el equipo no tiene los drivers de la impresora puede  hacer clic en Usar disco e introducir el CD de la impresora en el equipo o en su defecto descargar los drivers desde la página web del fabricante seleccionando Marca y modelo directamente via windows update.

printercanon

 

Tras la instalación, podremos lanzar una página de prueba y comprobar que imprime correctamente.

 

printerprueba.PNG

 

En el caso de ser una multifunción, no es posible  escanear, sólo es posible imprimir.,pero para eso esta siempre la opción de desenchufar la impresora del Home-Sation  y volverlo conectar al pc para esa eventualidad

 

NOTA: Existen diferentes modelos de router Homestation, por lo que si no funciona de esta manera, recomiendo visitar el foro de Movistar,