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:

Anuncios

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,

Problema de actividad al 100% en Windows 10


Puede    que de repente su ordenador con Windows 10   haya dejado de responder  en un  tiempo razonable a cualquier petición  que se  haga  llegando incluso  a demorarse alrededor de  varios minutos el simple hecho abrir cualquier menú contextual .

Lo extraño es que tras ese comportamiento anómalo  tras un rato  comience a  responder de  forma rápida ( normal)  para  luego volverse a repetir el ciclo de demoras y así sucesivamente

Puede que ante un comportamiento tan anormal   haya tenido la  tentación de reinstalar W10  tal y como tratamos en este post , pero   para ese problema probablemente no   mejorara el comportamiento. Hay personas  que  incluso  optan  por cambiar  el disco o  formatear la unidad  de sistema con el consiguiente  trabajo posterior  de instalación  de todo  el sw original   y configuración,  pero si no quiere hacer todo ese trabajo,  todavía  hay algunas  posibilidades  que podemos explorar ;

 

PASOS PREVIOS

Antes de acudir a acciones  mas contundente   lo primero es actualizar  todos los controladores   y sobre todo hacer una análisis de todo el equipo con Windows Defender.

Asimismo vaciar la papelera de reciclaje o eliminar archivos temporales,puede ayudar ( incluso  hay personas que optan por probar a desactivar el archivo de paginación) .
Si el resultado no ha dado ningún cambio entonces siga los siguientes  pasos:

 

PASO 1: Monitorización de la actividad del disco

Un primer análisis  consistirá en   ir al administrador de  tareas ( control+alt +del )   y habilitar si no lo tiene el apartado de actividad de disco

Si padece de este problema, probablemente en el administrador es fácil   que incluso sin uso ,   el porcentaje de  uso del disco sea permanentemente del 100% , señal inequívoca que  nos explica que el porque de la demora sin duda se debe a una excesiva actividad en el disco principal

Cuando ejecute el administrador de tareas, puede que vea que algunos de estos ejecutables: System.exe, Antimalware Service Executable , Host  del servicio , o Telemetria  y experiencias de usuario conectado)   los cuales  aparentemente hacen este gran gasto de uso de  disco.
IMG_20170528_181300[1].jpg

Una vía  para solucionar sin duda sobre todo es  probar desactivar algunas de esas tareas que están generando esa actividad de disco anormal ( en el ejemplo podria ser  Telemetria  y experiencias de usuario conectado),   quitar  algunas tareas programadas etc,

 

Para deshabilitar  un servicio no critico como por ejemplo  el servicio “Telemetria  y experiencias de usuario conectado”, haga lo siguiente:

  1. Oprime las teclas “Windows” + “R” y en Ejecutar, escribe services.msc y haz clic en Aceptar.
  2. En la lista de servicios, haz clic con el botón secundario del ratón en Telemetria  y experiencias de usuario conectado y a continuación, haz clic en Propiedades.
  3. En la lista Tipo de inicio, selecciona Deshabilitado y después haz clic en Aplicar
  4. Seguido, en la pestaña de Recuperación y en las opciones de Primer, Segundo y siguientes errores, Selecciona No realizar ninguna acción.
  5. Luego, haz clic en Aplicar y por último en Reiniciar.

 

PASO 2:Desactivamos la Optimización programada

Si no hemos resuelto el problema en el paso anterior, seguiremos la siguiente secuencia:

  •   Panel de Control–>
  •          Sistema  y seguridad –>
  •                        Herramientas Administrativas –>
  •                                       Desfragmentar y optimizar unidades

Desactivamos la Optimización programada  de todas las unidades  pinchando en  la parte inferior   de Optimizacion Programada  y deschequeando  el check   “Ejecución programada(recomendado)”

Asimismo nos iremos a las unidades  y pincharemos en cada una en el apartado  “Optimizar”  no cerrando    la ventana de  Optimizar unidades hasta que no haya concluido el proceso para todas la unidades

disocs

En ese momento pude que crea haber solucionado el problema desactivando la optimización automática de su  mi disco por unas horas, hasta que nuevamente retome  el mismo problema, quizás  oscilando entre 98 – 100% e  impidiendo trabajar con  algo de fluidez, si es así puede pasar el siguiente paso .

PASO 3: Deshabilitar  Servicio de transferencia inteligente de segundo plano)

El  Servicio de transferencia inteligente en segundo plano (BITS) transfiere de forma asincrónica archivos que están en primer plano o en segundo plano, controlando el flujo de las transferencias para preservar la capacidad de respuesta de otras aplicaciones de red y reanuda automáticamente las transferencias de archivos si se interrumpe una sesión de transferencia, por ejemplo debido a la desconexión de la red o al reinicio del equipo.

BITS proporciona un nivel de prioridad de primer plano y tres niveles de prioridad de segundo plano que se utilizan para clasificar por orden de prioridad los trabajos de transferencia. Los trabajos con prioridad superior prevalecen sobre los trabajos con prioridad inferior. Los trabajos con el mismo nivel de prioridad comparten el período de transferencia, lo que evita que un trabajo grande bloquee los trabajos pequeños en la cola de transferencias. Los trabajos con prioridad inferior no reciben tiempo de transferencia hasta que todos los trabajos con prioridad superior se han completado o están en estado de error.

BITS utiliza BranchCache de Windows para el almacenamiento en caché del mismo nivel.

Como vemos es un servicio que ayuda al SO a mantenerlo actualizado, pero dado que esta trabajando en segundo plano haciendo un uso alto del disco del sistema podemos probar  de desactivarlo    y comprobar si mejora el rendimiento

Antes de empezar, tenga en cuenta que este servicio ayuda los procesos en segundo plano, por lo que el iniciar, apagar, reiniciar o alguna acción en su equipo, puede tardar un poco.

 

Para deshabilitar el servicio, haga lo siguiente:

  1. Oprima las teclas “Windows” + “R” y en Ejecutar, escribe services.msc y haz clic en Aceptar.
  2. En la lista de servicios, haz clic con el botón secundario del ratón en Servicio de transferencias inteligente en segundo plano (BITTS) y a continuación, haz clic en Propiedades.
  3. En la lista Tipo de inicio, selecciona Deshabilitado y después haz clic en Aplicar.Imagen
  4. Seguido, en la pestaña de Recuperación y en las opciones de Primer, Segundo y siguientes errores, Selecciona No realizar ninguna acción.
    Imagen
  5. Luego, haz clic en Aplicar y por último en Reiniciar.

Quite la selección del servicio (Servicio de transferencia inteligente de segundo plano) y le dan aceptar y luego a reiniciar mas tarde.

 

 

PASO 4: Optimizar unidades

Por ultimo seguiremos la siguiente secuencia:

  •   Panel de Control–>
  •          Sistema  y seguridad –>
  •                        Herramientas Administrativas –>
  •                                       Desfragmentar y optimizar unidades

En esta opción seleccionamos la partición donde esta instalado el sistema operativo en ( lo mas normal es que sea al Disco Local C) y   luego clic en optimizar

Este proceso desfragmentara y optimizara el sistema   durando aproximadamente 1 hora  o menos en función de su sistema  y del tamaño del disco

Una vez terminado el proceso reiniciar y debería  mejorar  el rendimiento del Disco considerablemente.

 

Si lo anterior no funciona es posible que una descarga e instalación de actualizaciones esté consumiendo el 100% del disco duro, lo cual podríamos resolverlo buscando desde Servicios ,es decir  :

  1. Oprima las teclas “Windows” + “R” y en Ejecutar, escribe services.msc y haz clic en Aceptar.
  2. En la lista de servicios, haz clic con el botón secundario del ratón en Windows Update y a continuación, haz clic en Propiedades.
  3. En la lista Tipo de inicio, selecciona Manual y después haz clic en Aplicar.
  4. Seguido, en la pestaña de Recuperación y en las opciones de Primer, Segundo y siguientes errores, Selecciona No realizar ninguna acción.

 

Este proceso  podemos hacerlo también con otros servicios como Windows Search  o Superftech para evitar que ocurran este tipo de problemas.

Por ultimo  buscando Windows Update en Cortana podemos ver si hay una descarga de actualización en proceso, además de seleccionar horas del ordenador en desuso para que las actualizaciones y reinicios no se produzcan mientras estemos trabajando con el ordenador.