ESP8266-Pro (O a veces, en Aliexpress, lo barato sale caro)

htb1l6k2nxxxxxx-xpxxq6xxfxxx1Hace unas semanas en uno de mis habituales «paseos» por Aliexpress me encontré con una placa ESP8266 que, en principio, parecía muy interesante; un verdadero chollo.

Se trataba de la placa ESP8266-Pro con 8 MB (si, mega bytes) de RAM.

Parecía una placa prácticamente igual que la NodeMCU sin USB, con el doble de memoria y bastante más barata.
La realidad es que, aunque la placa tiene muy buena pinta no existe absolutamente ninguna información y el vendedor, cuando le preguntas simplemente te dice que no tiene nada de información (con todo su morro). Muchos clientes se han quejado en las opiniones de Aliexpress pero siguen dejando 5 o 4 estrellas (incomprensible).

Tratando de utilizarla como las placas habituales no hay manera… pruebas y pruebas y no se puede… vamos, una placa que no vale para nada. No es que sea mucho dinero (pedí dos placar y el envío por Aliexpress Stantard Shipping, unos 8€ en total) pero, ¡joder! me siento engañado…

El caso es que me puse a investigar con el multímetro en una mano y el datasheet del ESP8266EX en la otra y he encontrado por qué no funciona y como solucionarlo…

Lo que sucede con esta placa es que engaña… uno se espera que sea algo como el NodeMCU y es, más bien, algo como un módulo ESP12E más un regulador de voltaje de 3.3V, nada más (bueno, si 8 MB de memoria en vez de 4).

Total, ¿por qué no funciona y que hay que hacer para que funcione?

1312726806898Bueno pues lo primero es que el ESP8266EX tiene un pin CH_EN (o chip_enable) que hace que el ESP8266EX funcione. Este pin hay que ponerlo a 3.3V (preferiblemente a través de una resistencia de unos 10K) para que el chip empiece a funcionar; hasta ese momento el chip está muerto.

1312726794469 En mi caso, y puesto que la resistencia tiene que estar siempre puesta y no hay que quitarla para nada, opté por soldarla directamente entre el pin CH_EN (marcado como EN en esta placa) y el punto de 3.3V del regulador. Añado las fotos detalladas por si pueden ayudar.

1312726800979E1312726804014l siguiente problema, y el que más me ha costado localizar, es que el bootloader que incorpora la placa espera en el momento del arranque que el pin 15 tenga un nivel bajo, y hasta que no esté a novel bajo no arranca. De manera que tenemos que poner dicho pin a negativo (preferiblemente a través de una pequeña resistencia, yo he usado una de 74ohm).

En este caso, como no necesito el pin 15 he soldado, igual en en el caso anterior, la resistencia directamente como se puede ver en las fotos detalladas.1312726778772

Por ultimo nos falta el último paso, y es que para ponerlo en modo programaci1312726789726ón (para poder flashearlo) hay que poner el pin IO0 a nivel bajo (es decir, a negativo).

A diferencia del NodeMCU, y placas similares, que entran de forma automática en el modo programación simplemente dando a la opción correspondiente desde el Arduino IDE, esta placa hay que meterla manualmente en el modo de programación, lo que es bastante incomodo.

Para Entrar en el modo de programación, como se hace de forma puntual, simplemente conecto con un cablecillo el IO0 con GND para entrar en el modo de programación. Es un poco incomodo porque hay que ponerlo y quitarlo manualmente cada vez que queremos flashearlo pero bueno…

1312726809399Por cierto… ya que estaba metido en harina, he aprovechado para comprobar ese pulsador misterioso (antes de empezar la investigación, no sabía si era un pulsador de reset o para entrar en el modo de programación) y, efectivamente, he comprobado que está conectado entre el terminal RST y GND para poder hacer reset al ESP8266.

Resumiendo: Tras unas horas de investigación, he conseguido programar el ESP-8266 Pro pero mi conclusión es que no merece la pena comprarlo para ahorrar un euro. Es mucho mejor comprar el NodeMCU, que es mucho más fácil de programar, está perfectamente documentado y no hay que andar haciendo «ñapas» para que funcione correctamente. Otra cosa será ver si se le puede sacar provecho a esos 8 MB de memoria, aunque mucho me temo que, para la mayoría de aplicaciones, tendremos más que de sobar con los 4 MB del NodeMCU.

Edito: Tras unos días, lo he vuelto a coger para un proyecto real y tengo una mala noticia: Puedo programarlo pero, por algún motivo, no se activa el wifi. Seguiré investigando otro día…

¡Mi casa me manda mensajes por Telegram!

Hay ciertas cosas de las que quiero que mi sistema domótico me avise de inmediato (salta la alarma, se detecta humo, la abuela pulsa el botón de la pulsera que lleva en el brazo, etc). Hasta ahora, para enviar mensajes a mi móvil, lo hacía mediante Pushover, y funcionaba bien…

El problema de Pushover es que necesita tener instalado un cliente en el móvil (y ahora si quiero que mi mujer o los niños reciban mensajes se tienen que instalar cada uno un cliente) y este cliente es de pago.

Por suerte, he encontrado un

nodo para Node-red que permite enviar mensajes por Telegram, y la verdad es que funciona muy bien.

Telegram permite la creación de «bots» («robots») que no son más que chats a los que los usuarios se suscriben y que permite enviar y recibir mensajes de forma automatizada.

Con este nodo y unas pocas lineas y funciones en Node-red, en una tarde tenía un sistema de notificaciones interactivo.

¿Interactivo? Si, porque este sistema permite, además de enviar notificaciones, que los usuarios pueden enviar mensajes al bot y este les responda con la información solicitada (o con nuevas preguntas e incluso con menús para seleccionar opciones) de una forma muy sencilla.

Por ejemplo, un usuario envía un mensaje conteniendo /alarma y el bot les contesta con el estado de la alarma (si está activa, inactiva, si ha saltado, etc).

He creado además en Nodered un conector desde MQTT a Telegram, que permite que cualquier aplicación que envíe MQTT pueda enviar mensajes por Telegram de una manera muy sencilla.

Añadiendo control de Milight a Rflink

La verdad es que mi casa parece una feria de la automatización, con tantas cosas y tan distintas. Es la esencia de los que nos gusta el cacharreo, hacer pruebas y utilizar cualquier cosa «cacharreable» que vemos.
Entre otros sistemas de control de iluminación que tengo en mi casa, hace unos años puse uno nuevo que encontré en internet, el sistema «Milight» (también conocido por otros nombres como LimitlessLED y cosas por el estilo).

Lo interesante de este sistema es su extraordinario bajo precio; cuando controlar una bombilla con cosas como Z-Wave (que también utilizo) cuesta unos 40€ del módulo que controla la bombilla, más el controlador que usemos (entre 50€ y muchos euros), más el mando a distancia, más la bombilla en si (y aún así necesitaremos más cosas si queremos controlarla desde el móvil o desde internet), resulta que el sistema Milight solo necesita una bombilla especial, que incluye el receptor de 2.4ghz, y un mando a distancia que puede controlar varias bombillas, y todo por unos 10€ que cuesta cada cosa (prácticamente lo que cuesta una bombilla led). Que queremos controlarlo desde el móvil o desde internet… no hay problema, añadimos un pequeño cacharrito (llamado wifi bridge) y nos descargamos la App gratuita que nos permite controlarlo tanto desde dentro como desde fuera de casa.

Como quiera que utilizó varias tecnologías distintas, utilizó varios receptores y bridges que me permiten integrarlas en el sistema domotico (Rfxcom, RFLink, Rfxcomtrv, etc). Resulta que en uno de los últimos firmwares que ha aparecido de RFLink, han introducido la posibilidad de recibir y controlar el protocolo del sistema Milight, simplemente añadiendo al RFLink un pequeño módulo que cuesta dos euros.

Dicho y hecho, me he puesto manos a la obra y desde esta tarde ya puedo controlar desde el ordenador las luces Milight que tengo por la casa (cuatro bombillas RGBW, una tira de leds RGBW en el salón y varias tiras RGB en una zona acristalada que tenemos en el patio, donde pasamos bastante tiempo.

Un efecto lateral de haber incluido este módulo es que ahora el RFLink también recibe los módulos de MySensors (que también tengo alguno), lo que lo hace aún más interesante.

 

¡Hablándole a mi casa!

Hoy he dedicado el día del cacharro a poner en marcha una solución que me permita «hablar con mi casa»; dar órdenes encender y apagar luces y aparatos, ajustar temperaturas preguntar de viva voz por la temperatura o la humedad de distintas habitaciones, etc.

El sistema domótico de mi casa está formado por varios elementos, que he ido integrando a lo largo de los años…

  • HomeSeer PRO: el cerebro principal que dota de inteligencia a la casa. En él están dados de alta todos mis dispositivos  y sistemas (luces, enchufes, la alarma, la estación meteorológica, el programador de riego, la caldera, cámaras de vigilancia, receptores de diversos tipos y protocolos, etc) y se comunica con ellos a través de varios sistemas: http, mqtt, puertos serie, directamente… HomeSeer funciona de forma permanente en un pequeño PC de bajo consumo y sin ventiladores con Windows 7.
  • Node-red: el un sistema visual para la conexión y programación del «internet de las cosas» que permite poner en marcha e integrar rápidamente un sin fin de dispositivos dentro de mi sistema domotico. Este programa se ejecuta en una Rasperry PI 2 y funciona de forma permanente.
  • Mosquitto: un servidor de MQTT (sistema de comunicaciones que utiliza gran parte de mis dispositivos) y que corre en la misma Raspberry PI de Node-red.

Bueno, al grano… que me voy por las ramas…

A día de hoy yo creo que todo el mundo conoce Siri (el asistente de Apple, que poco a poco ha ido introduciendo en todos sus dispositivos). Bien, pues hará unos dos años, Apple dotó a Siri de capacidades para el control de la casa aprovechando su capacidad de comunicación hablada en lenguaje natural y se saco de la manga un estándar llamado «Home Kit». En principio Home kit solamente funciona con dispositivos certificados por Apple (pocos y caros) pero, poco a poco, la comunidad hacker a ido consiguiendo que este sistema funcione con otros dispositivos de otros fabricantes y sobre plataformas que no son Apple.

Alguien muy listo, ha desarrollado un softwar, llamado Homebridge, que permite que casi cualquier dispositivo sea reconocido como un dispositivo Home kit y interactuar con él desde Siri.

Mi trabajo de hoy ha consistido en la instalación del software Homebridge en una Raspberry PI modelo B (la más básica y antigua) y de otro software en HomeSeer que permite que ambos se integren. El resultado: puedo decirle a Siri de viva voz desde un iPad o iPhone «oye Siri, enciende La Luz del flexo» y, como por arte de magia, La Luz se enciende.

En este momento tengo incluidas en Homebridge algunas luces de la casa y todas las sondas de temperatura y humedad de la casa (puedo decir de viva voz «oye, Siri, que temperatura hay en el salón» y Siri me responde de inmediato con la temperatura).

La instalación no es difícil pero si un poco liosa y farragosa. Primero instalar una versión actual de Raspian Jessie, a continuación actualizarla. Después instalar Node.js y, por fin, Homebridge. La configuración tampoco es que sea muy complicada pero tampoco está muy clara porque la información existente en internet es un poco contradictoria y hay que avanzar mediante el método de prueba y error.

Me queda mucho trabajo por delante para integrar el resto de la casa. Lo primero será la alarma, podré decirle a Siri cuando me vaya a la cama «buenas noches» y Siri apagará las luces, pondrá la calefacción en modo noche y activará la alarma en modo noche (solo los sensores exteriores activos) , «me voy de casa» y activará la alarma en modo parcial o «buenos días» y quitará la alarma, pondrá la calefacción más alta y todo lo que tenga que hacer para poner la casa en marcha para el día.

La verdad es que no es sencillo, pero creo que el esfuerzo merece la pena.

Edito (17/12/2016):  ¡Me rindo! Tras unos días trasteando no he sido capaz de que este invento funcione correctamente. Cada pocas horas en el iPad aparece un mensaje diciendo que no hay respuesta de los dispositivos y la única manera que he encontrado de hacer que vuelva a funcionar es borrar la casa en el iPad y volverla a crear, lo que supone volver a poner cada dispositivo en su habitación correspondiente, crear las escenas, etc… mucho trabajo. El sistema me gusta, por lo que volveré a probar un poco más adelante.

Mi estación meteorológica, puesta en marcha

Tengo una estación meteorológica Davis Vantage Pro2 desde hace bastantes años (por lo menos 10) y la verdad es que la tengo bastante abandonada; es una verdadera pena porque es una buena estación pero le he sacado muy poco partido. Desde hace varios años dejaba de funcionar por la noche, por un problema con su alimentador solar, que acabo de arreglar hace pocos días, y estaba aislada del mundo (sin conexión con mi sistema de domotica y sin publicar datos en internet).

Recientemente he decidido volverle a dar uso, aportando los datos que genera a la comunidad (publicarlos en sitios como weather underground y meteoclimatic) y publicarlos en mi web. He solucionado el problema por el que no funcionaba por la noche (reemplazando un supercondensador) y dándole un limpiadito.

Hace años utilizaba un software para Windows que corría permanentemente en un PC, conectado a la consola por un puerto serie, y que guardaba los datos y generaba una serie de páginas web que subía, cada pocos minutos, a un servidor externo para que se vieran en internet.

En esta nueva reencarnación de la estación meteorológica, aunque sigo teniendo varios PCs en casa funcionando 24×7, he decidido utilizar uno de los modernos programas existentes que corren en una Rasperry PI. Esto me permite independizar el sistema completamente y asegura que los datos se almacenen y suban a internet de forma permanente y sin ninguna interrupción.

La primera tarea ha sido buscar el software, y tras mucho leer sobre los distintos programas y ver otras estaciones que los usaban, me he decidido por WeeWx. Este programa, escrito en Phyton ,tiene una serie de ventajas que lo hacen ideal:

  • Es muy ligero y necesita muy pocos recursos del servidor
  • Dispone de un sistema de «skins» que permiten cambiar su aspecto gráfico fácilmente
  • Soporta mi estación meteorológica directamente
  • Sube los datos a los sitios que me interesan (weather underground, meoteoclimatic y, por supuesto, mi servidor web)
  • Tiene implementado un sistema de plugins que permiten su ampliación con nuevas funcionalidades

Dicho y hecho, me he cogido las raspberry más antigua que tenía por casa, ya que necesita muy poca potencia (una Raspberry 1 Modelo de solo 512Mb de memoria), y he preparado una nueva tarjeta SD con la última versión de raspbian. Tras un ratito configurando, ya estaba funcionando y subiendo datos a mi web: www.emariete.com/weewx

Como guinda del pastel he instalado una fantástica plantilla, llamada meteotemplate, y este es el resultado: www.emariete.com/meteo

He quedado muy satisfecho con el resultado. Espero que el funcionamiento sea estable y esté funcionando el máximo de tiempo sin interrupción. Unos añitos sin necesidad de hacerle caso estarían muy bien.

La primera entrada

Esta es la primera entrada de mi nuevo y reluciente blog.

Tengo delante mi propio e inmenso ciberespacio particular, en blanco para poder hacer con él lo que quiera…

¿Y qué quiero hacer con mi blog?

Este blog es para mi, solamente tiene un lector objetivo: Yo (aunque te invito encantado a que lo leas y participes).

Soy una persona polifacética con muchísimos hobbies e inquietudes y me encanta investigar y cacharrear a diario.

En muchas ocasiones no recuerdo mi propio trabajo o pierdo las notas de como he hecho tal o cual cosa.

Este blog tiene como objetivo documentar y conservar en un solo lugar lo que voy haciendo, sus notas, sus trucos, sus fotos, su espíritu… incluso documentar para qué lo hago porque muchas veces, son tan grandes las ganas de hacer cosas nuevas, que cuando termino de hacer algo ya no me acuerdo, o me cuesta recordar, por qué lo hice o qué utilidad le iba a dar.