Por fin me decidí a poner en uso las porquerías que compré para encarar el asunto de automatización y domótica en casa. Y finalmente arranqué ‘el proyecto’.

Lo que voy a dejar a continuación no es una guia paso a paso, sino un registro de los pasos que yo seguí, los inconvenientes que surgieron, y las soluciones que fui encontrando.

¿En que consiste ‘el proyecto’?

El objetivo es armar toda la infraestructura necesaria para iniciar con la domótica, automatización y monitoreo de mi casa. Esto incluye:

  • Un Servidor desde donde se coordinen y controlen los distintos dispositivos
  • Distintos Clientes, dispositivos, que se puedan conectar a ese servidor para enviar y/o recibir información.
  • Un Panel de Control, una interfaz, donde visualizar los datos, y controlar los distintos dispositivos/clientes conectados.

Y con todas estas partes funcionando, el proyecto culminaría en el momento que pueda controlar una luz a través del wifi de la casa.

Como dispositivo/cliente wifi, tengo un ESP8266, específicamente el ESP-01.

Como software para el servidor, me decidí por usar thinger.io, que promete un montón de cosas copadas, además es open source, y lo podés instalar en un server local sin tener que usar internet.

Como hardware del servidor, planeo usar una raspberry pi, específicamente una Raspberry Pi 3 Model B.

{{/* foto de los aparatos sobre la mesa */}}

Manos a la Obra

Primeros Pasos: IDE de Arduino

ESP8266

Según pude averiguar, el ESP-01 se puede programar usando la IDE de Arduino, pero para eso hay que hacer algunas configuraciones.

Instalé todos los paquetes necesarios en la IDE Arduino para poder grabar cosas directo al ESP8266, siguiendo las instrucciones que detallan en el repo del proyecto: https://github.com/esp8266/Arduino

Después intenté grabar un programa de pruebas, pero no pude, porque el adaptador USB que estoy usando no me lo reconoció mi Mac.

El adaptador USB - ESP8266 en cuestión

Así que instalé los drivers en la mac del adaptador, desde el repositorio https://github.com/adrianmihalko/ch340g-ch34g-ch34x-mac-os-x-driver

Para activar el modo boot loader del ESP8266 necesitaba que unos contactos estén conectados de una forma que mi adaptador no los trae, así que tuve que puentear el adaptador (con un pedacito de estaño, pensé que quemaba todo). Con esto ya estaba en condiciones de sobrescribir el firmware del aparatito y grabarle en su lugar el de Arduino. Probé… y anduvo la grabación de programas!

{{/* Foto del puente de estaño */}}

Hice un programita que prende y apaga la luz on board.

{{/* Código del Programa */}}

Feliz. Primera misión cumplida.

{{/* GIF de la luz prendiendo y apagando? */}}

Servidor con Thinger.io, Intento 1

Ahora para el server de thinger.io, vi que habia un paquete snap para Ubuntu que hacia todo. Para poder usar este paquete de snap thinger-maker-sever, en la Raspberry PI necesitaba una versión especial de Ubuntu, llamada Ubuntu Core, que es compatible (UNICAMENTE) con los programas en formato snap.

Instalé Ubuntu Core en la Raspberry Pi. me crea un user con una clave SSH para entrar remotamente.

Instalé el thinger-maker-server, voy a loguear y me da error. trato de editar la config para habilitar log, no tengo ningun editor. instalo pinano, que es lo único que encontré como editor de texto en formato snap. Pero intento editar el archivo de config, y no tengo permisos. Trato de editar cualquier archivo y no tengo permisos.

Googleo un poco más el problema, encuentro que el error en el inicio de sesión puede venir por problemas con MongoDB.

Resulta que el paquete snap de thinger viene sin base de datos. También resulta que MongoDB no es compatible con el formato snap en la Raspberry PI. Y también resulta que no puedo instalar otra cosa que no sea paquetes snap en Ubuntu Core. DEADEND.

Servidor con Thinger.io, Intento 2

Instalo Raspbian en la Raspberry Pi. Instalo apt install mongo. Instalo algo bastante turbio para hacer andar el servicio snapd en raspbian. Instalo thinger-io. Ingreso a la URL de thinger.io. Funciona. Creo la cuenta inicial, inicio sesión, anda todo lo mas bien. Feliz.

Nunca configure nada de la DB, creo que fue magia negra.

Conectando el Cliente al Servidor

Vuelvo al ESP8266, ahora hago un programita que se conecte a mi propia instancia de thinger. Funciona.

hago otro programa que expone el led on board, para prender y apagar. funciona.

hago un dashboard para poder controlar ese led desde cualquier navegador… y no me guarda ese dashboard, está bugueado, no da errores en el log, no se que onda. el dashboard lo puedo crear, lo puedo modificar, puedo darle acceso publico, puedo hacer todo, funciona, pero no queda guardado.

Acá decido que son demasiados problemas. Otro dia tengo que seguir con esto.

¿Continuación?

Estuve muy cerca de dejar andando el servidor, pero no quedó resulto del todo.

Como proximos pasos tengo:

  • Resolver el problema de la creación y persistencia de distintos dashboards en el servidor de thinger.io
    • Para esto tengo que ver si el problema es con mi instalación en particular, o un problema general de thinger
  • Armar el hardware necesario para controlar un relay de 5v-220v mediante el ESP8266
  • Al relay anterior sumarle el control de un dispositivo (una luz) en 220v.
  • Al conjunto anterior sumarle la autonomia de todo, conectado directamente a 220v.
  • Completar este post con las fotos faltantes.

No tengo una fecha estimada para lo que sigue, pero espero pueda ser pronto.