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.

PYWWS – RASPBIAN 4: Instalación

Segunda entrega de PYWWS, en la anterior instalamos los programas que serán necesarios mas tarde.

Antes de nada, veremos si ls raspberry tiene comunicación con la estación. Para ello ejecutamos:

Tomamos nota del ID y de la estación meteorológica, en mi caso es: 1941:8021

Creamos el directorio donde estará el programa y los datos. weather

entramos en ese directorio

La forma más fácil de instalar pywws es con el comando pip:

Actualizar pywws también es un comando de una línea:

Descargar y extraer 

Clonar el repositorio 

Paraactualizar, use git para extraercualquier cambio:

Instalar pywws 

Si ha descargado o clonado los archivos fuente de pywws, debe usar setup.py para instalarlo:

Probar la conexión de la estación meteorológica 

Ahora estás listo para probar tu instalación de pywws. Conecte la estación meteorológica (si no está conectada) y luego ejecute testweatherstation.

Si todo funciona correctamente, aparece lo siguiente:

lo mas problabe es que falle. Es un problema de permisos, apareciendo esto:

Hay varias razones por las cuales esto podría no funcionar. Lo más probable es un problema de «permisos». Esto se puede probar ejecutando el comando como root:

Si esto funciona, entonces puede permitir que su cuenta de usuario normal acceda a la estación meteorológica configurando una regla ‘udev’

Se hace creando un archivo que/etc/udev/rules.d/39-weather-station.rulescontenga lo siguiente:

Añadimos lo siguiente_

Hay que comprobar que ATTRS{idVendor}==»1941″ y ATTRS{idProduct}==»8021″ coincide con lo que leímos al principio.

Después ejecutamos el comando:

en mi caso nomreraspberry es «pi»

Desenchufo y vuelvo a conectar la conexión USB de la estación para forzar laudevaplicación de la nueva regla. Esto permite a cualquier usuario del grupoweatherstationacceder a la estación meteorológica.

volvemos a comprobar pywws-testweatherstatio

Comprobamos que responde correctamente.

Establecer el intervalo de registro de la estación meteorológica 

La estación meteorológica tiene configurado por defecto un intervalo de registro de 30 minutos. El intervalo recomendado es de 5 minutos. Para modificarlo usamos el comando setweatherstatio, para establecer el nuevo intervalo.

tarda un poco en ejecutarse.

Registrar los datos de la estación meteorológica 

Para almacenar los datos creamos el directorio data

Hay que asegurarse que tengamos la fecha y hora correctas y la zona horaria, ya que se utilizan para etiquetar los datos de la estación meteorológica. Hay que configurar NTP para sincronizar la raspberry con un ‘servidor horario’.

La primera vez que lo ejecute crea un archivo de configuración en el directorio de datos llamado ‘weather.ini’ y luego se detendrá.

Lo volemos a ejecutar . Esto puede llevar varios minutos, ya que copiará todos los datos almacenados en la memoria de la estación.

Ahora debería tener algunos archivos de datos que puede ver. Por ejemplo:

(Reemplace el año, mes y día por los que tiene datos).

Con esto, ya tenemos instalado Pywws, en el proximo capitulo vemos las opciones de configuración.

Dependencias

PYWWS – RASPBIAN 4: Dependencias

Hace unos días, un amigo mío me pidió ayuda para montar la captación de los datos, le indique que siguiera las indicaciones que tenia y me comento que no funcionaba.

Revise lo que tenia escrito y me di cuenta, que no funcionaba con Raspbian 4.

Aquí pongo como lo he instalado, primero instalaremos las dependencias para poder ejecutar PYWWS.

Actualizar el sistema

PIP

tzlocal

Proporciona información sobre su zona horaria local. Es mejor instalarlo con pip:

libusb

Instalar la última versión disponible.

Tareas flexibles de tiempo

croniter

Para realizar tareas en horas y / o fechas específicas.

python-daemon

Ejecuta el registro de pywws como un proceso de daemon UNIX adecuado.

requests

La carga a «servicios» basados en HTTP, como Weather Underground, requiere la biblioteca de solicitudes de Python:

paramiko y pycrypto

Puede usar «ftp over ssh» (sftp) para cargar archivos a su sitio web de forma segura. La carga normal solo usa los módulos estándar de Python, pero si quieres usar sftp necesitas instalar estos dos módulos

la instalación de paramiko da error, no es necesario si la subida de los archivos no es por sftp.

MQTT

Se puede usar para enviar datos meteorológicos a un agente MQTT.

Instalación