INSTALAR MOSQITTO

Es un mediador de mensajes que incluye el protocolo MQTT. De código abierto.

Para que el protocolo MQTT esté en constante disponibilidad, es recomendable instalar el broker en un servidor que esté siempre encendido. Tenemos diferentes opciones pero la más interesante es Raspberry Pi por su bajo coste y consumo

Instalar Broker MQTT

Primero es descargar la signing key o clave de firma utilizando el comando wget

Añadimos la clave a una lista para autenticar el paquete que  descargaremos.

Vamos al directorio “sources.list.d”

En esta carpeta descargamos la lista de repositorios de Mosquitto.

Actualizamos la lista de paquetes disponibles y sus versiones.

Esto puede tardar un rato así que ten paciencia.

Ejecuta el siguiente comando para instalar el Broker Mosquitto.

Así tendríamos el Broker Mosquitto instalado en la Raspberry Pi.

Ahora hay que instalar el cliente para hacer las pruebas.

Instalar cliente MQTT en Raspberry Pi

Para instalar el cliente:

Así lo tenemos instalado.

CAMBIAR FIRMWARE DISPOSITIVOS SonOff

Los SonOff son unos pequeños modulos Wifi basados en ESP8266 con relé.

Cambiamos el firmware e instalamos Tasmota con una Raspberry Pi.

Podemos controlarlo desde una Rasperry Pi para controlar mi casa, desde el móvil, desde donde sea, para poder encender/apagar.

Pasos en la PI 

Actualizar la PI:

Instalar pip:

Instalar Esptool:

Es una herramienta de python necesaria para cargarle la ROM al ESP8266:

Parar y deshabilitar Getty:

Eliminar el comando que hace cargar el TTL, borramos el texto “console=serial0,115200′ del fichero “/boot/cmdline.txt”

Habilitar el terminal Serie editando el fichero ”boot/config.txt’, añadimos al final: “enable_uart=1” y apagamos la Raspberry:

Paramos la Raspberry

Conexiones en SonOff

Colocar 4 cables a los GPIO de la Raspberry Pi de la siguiente manera:

El cable de la alimentación que va a los 3,3v de la Raspberry Pi tendremos que poder conectarlo y desconectarlo cómodamente, ya que será necesario cuando queramos encender o apagar el SonOff. Bien arrancamos de nuevo la Pi cuando esté todo conectado (excepto el de 3,3v).

Procedimiento:

Descargamos el firmware de Tasmota con:

Lo primero que haremos, será borrar la memoria del ESP8266 del Sonoff, tendremos que mantener pulsado el botón del switch del SonOff unos 7 segundos mientras conectamos el cable de alimentación (3V3) a la Pi. Y ejecutaremos:

Instalar Firmware

Una vez instalado el nuevo firmware, desconectamos el cable de 3,3v y lo volvemos a conectar, una vez haya arrancado nos conectaremos a él y le configuraremos el acceso Wifi.

El led parpadea en verde.

Activamos el terminal serie:

Crea un punto de acceso, (en este caso sonoff-6093).

Al conectarnos a la Wifi creada, abrirá el navegador directamente con la dirección IP del dispositivo. La dirección IP la podemos ver en el terminal serie (HTP: Web server active on sonoff-6093.local with IP address 192.168.1.44)

AP1 SSid ( ): Rellenaremos la ID de nuestra Wifi.

AP1 Password: Password de nuestra wifi.

En otra pagina desarrollaremos la utilidad del firmware instalado en el dispositivo.

Servidor horario mediante GPS

En un articulo anterior, vimos como se podia trabajar con un GPS. Ahora vamos a utilizar este montaje para sincronizar la hora y fecha con ese dispositivo.

Con el GPS funcionando, podemos utilizarlo para configurar la hora. Para hacer esto, debemos configurar ntp para usar el GPS como fuente de tiempo. 

Si no tienes instalado el ntp instalado, lo instalamos de la siguiente forma:

Debemos editar el fichero /etc/ntp.conf, agregando las siguientes líneas:

# gps ntp

server 127.127.28.0 minpoll 4

fudge  127.127.28.0 time1 0.183 refid NMEA

server 127.127.28.1 minpoll 4 prefer

fudge  127.127.28.1 refid PPS

Reseteamos el servicio ntp

Ahora, si consulta el servidor, debería verlo sincronizar después de un tiempo:

las lineas en rojo, muestran los servidores que hemos creado. Cuando no tengamos conexión a internet, se pondrán como principales.

GPS USB para Raspberry

Hace tiempo un amigo me regalo un GPS con conexión mediante USB. Como muchas cosas ha dormido en el cajon de los proyectos. Al abrirlo encontré este dispositivo y pensé en darle alguna utilidad.

En algunas ocasiones utilizo la raspberry en aplicaciones que no están constantemente conectadas a internet. Y como necesitaba una fuente de reloj fiable, decidí hacerlo mediante un GPS.

En esta primera parte, conectaremos el GPS veremos los datos que se recogen, en la segunda parte, crearemos el servidor NTP.

Conectamos el Receptor USB  a un puerto y comprobamos si lo ha detectado, con la orden lusb

Deberíamos tener una respuesta del tipo:

Lo ha detectado como un dispositivo Prolific Technology y lo ha configurado como un puerto serie.

Si buscamos  en /var/log/syslog, vemos que ha  creado el puerto como /dev/ttyUSB0, ya que es el primer puerto serie.

El siguiente paso es conseguir que el pi reciba los datos de los satélites. Hay un conjunto de herramientas denominado gpsd, los cuales instalaremos.

A continuación, iniciamos el demonio:

Ignoramos cualquier mensaje en el terminal o en los archivos de registro.

editamos /etc/default/gpsd 

Añadimos a ese fichero las siguientes lineas:

# Default settings for the gpsd init script and the hotplug wrapper.

# Start the gpsd daemon automatically at boot time

START_DAEMON=»true»

# Use USB hotplugging to add new USB devices automatically to the daemon

USBAUTO=»false»

# Devices gpsd should collect to at boot time.

# They need to be read/writeable, either by user gpsd or the group dialout.

DEVICES=»/dev/ttyUSB0″

# Other options you want to pass to gpsd

GPSD_OPTIONS=»» 

#tried -F, -n in here too – no difference

GPSD_SOCKET=“/var/run/gpsd.sock»

Reiniciamos el sevicio

Comprobación que recibe datos

Ejecutamos la orden: cgps

De esta forma escribe los datos procesados, mostrándo la siguiente pantalla.

Aquí puede ver que está recibiendo de 7 satélites y que tiene la hora y su ubicación. La sección 3D FIX dice que tiene suficientes datos para una corrección 3D en su ubicación (es decir: Altitud, Longitud, Latitud, Velocidad). Las líneas Err le indican el error en su posición. Los valores de Err cambian cada segundo más o menos.