Objetivo: El objetivo de este tutorial es que el sistema Wview nos advierta mediante un SMS de variables meteorológicas predefinidas por el usuario.
Ha sido pensado para ser aplicado ha modo de alerta cuando la situación meteorológica sea de interés para el usuario. Específicamente mi aplicación es que me advierta cuando quepa la posibilidad de hielo en la carretera. De cualquier manera, las alarmas pueden ser definidas para cualquiera de las variables en las que Wview permite.
Características: Se trata de un simple Script de Python, que siendo invocado por la alarma de Wview, interactúa con un servicio de envio masivos de SMS. Estos servicios de envio de SMS ofrecen APIs como las que se utilizan en esta aplicación, por lo que, puedes elegir cualquiera de estos servicios.
Coste: 6 céntimos de euro por SMS. El servicio es de prepago, de tal manera que deberemos de cargar dinero en nuestra cuenta.
Limites, fiabilidad y necesidad de redundancia: Sin duda se trata de un sistema débil, sin puntos de redundancia y, desde mi punto de vista, conlleva cierto riesgo si es ofrecido a terceros como "sistema de notificación". Además confía en servicio externos como el servicio de en envio de SMS.
Por lo tanto, NUNCA uses este servicio como única fuente de información. Ten en cuenta que la ausencia de información podría no significar la ausencia de condiciones meteorológicas adversas (Un fallo de comunicación, algún tipo de error de lectura, falta de suministro electrico, etc.). Extrema en todo momento las precauciones. Haz saber esto a todos los que ofrezcas el servicio, y ten en cuenta que ofrecer este servicio puede resultar legalmente vinculante.
Advertencia Legal: No me hago cargo de ninguno de los usos que hagas de esta información, ni de las consecuencias que esto pueda tener ni para ti ni para terceros. El código aquí mostrado es propiedad de los respectivos autores.
Pasos:
1.- Instaurar un alarma en Wview:
En la pestaña de "Alarms" rellenamos una alarma:
---Type: Pondremos la varible que queremos analizar:
Código:
InsideTemp
InsideHumidity
OutsideTemp
WindSpeed
TenMinuteAvgWindSpeed
WindDirection
OutsideHumidity
RainRate
StormRain
DayRain
MonthRain
YearRain
TxBatteryStatus
ConsoleBatteryVoltage
DewPoint
WindChill
HeatIndex
Radiation
UV
ET
ExtraTemp1
ExtraTemp2
ExtraTemp3
SoilTemp1
SoilTemp2
SoilTemp3
SoilTemp4
LeafTemp1
LeafTemp2
ExtraHumid1
ExtraHumid2
---Is This an Upper Bound Alarm? Deberemos de marcar esta casilla si nuestra alarma debe de saltar con "valores por encima" de nuestro limite. Por ejemplo, cuando queremos que nos advierta de que la humedad es "mayor que" el 80%
Deberemos dejarla desmarcada si queremos que nos avise con valores por debajo de nuestro límite. Por ejemplo, temperatura menor de 0 grados
---Threshold: Valor límite o valor "gatillo".
---Abatement (seconds): Tiempo, expresado en segundos, en los que, tras "saltar" por primera vez la alarma no volverá a saltar. Es decir el tiempo refractario o abatimiento. Evita que la alarma salte consecutivamente en un tiempo.
---Alarm Execution Target: Ruta del código que se ejecutará cuando "salte" la alarma. Este código ha de ser un shell script, que en nuestro caso ejecutará el código Python que la API nos ha suministrado.
2.- Nos registramos en
www.clockworksms.com y obtenemos nuestra clave o key. Esta clave nos permite identificarnos en la API.
3.- Modificamos el shell script que se ejecuta cada vez que una alarma se dispara para que ejecute el código en python de la API. No se puede realizar en un solo paso, puesto que la API esta en Python y Wview solo ejecuta shell scripts. De tal manera que el esquema es: Wview—(ejecuta)—>Alarma.sh—(ejecuta)—>Alarma.py
Para ello crearemos un archivo .sh que contenga el siguiente código:
Código:
#!/bin/bash
/ruta/a/mi/lugar/Alarma.py
Para crear un archivo .sh teclearemos lo siguente en el terminal:
Código:
sudo nano
Entraremos en el editor nano, copiamos el código arriba expuesto y salimos guardando con Ctr+x y aunque podéis ponerle el nombre que queráis, deberá de terminar en .sh. Importante recordar donde lo hemos guardado puesto que habrá que escribirlo en la caja "Alarm execution target" de wview. En mi caso por ejemplo, lo guarde en la carpeta "wview" que abrí en el escritorio, de tal manera que en mi "Alarm execution target" pone: /home/pi/wview/alarma.sh
4.- Instalamos las librerías python necesarias:
Código:
sudo apt-get install python-lxml
Código:
sudo apt-get install python-pip
Código:
sudo pip install clockwork
5.- Modificamos el código python de la API a nuestras necesidades. Poco más que sustituir la información de este codigo por la nuestra:
Código:
#!/usr/bin/env python
from clockwork import clockwork
api = clockwork.API('API_KEY_GOES_HERE')
message = clockwork.SMS(to = '441234123456', message = 'This is a test message.')
response = api.send(message)
if response.success:
print (response.id)
else:
print (response.error_code)
print (response.error_description)
Varios SMSs:
Código:
#!/usr/bin/env python
from clockwork import clockwork
api = clockwork.API('API_KEY_GOES_HERE')
message1 = clockwork.SMS(to = '441234123456', message = 'This is a test message 1.')
message2 = clockwork.SMS(to = '441234123457', message = 'This is a test message 2.')
message3 = clockwork.SMS(to = '441234123458', message = 'This is a test message 3.')
response = api.send([message1,message2,message3])
for sms_response in response:
if sms_response.success:
print (sms_response.id)
else:
print (sms_response.error_code)
print (sms_response.error_description)
Abrimos un editor nano (sudo nano) y copiamos el código, guardandolo en un lugar conocido como loquesea.py (Importante una vez más el que termine en .py)
7- Damos derechos de ejecución a ambos scripts, en terminal:
Código:
sudo chmod ugo+rwx /ruta/a/mi/lugar/Alarma.sh
sudo chmod ugo+rwx /ruta/a/mi/lugar/Alarma.py
8.- Finalmente activamos la casilla enable alarms de Wview.
9.-Reiniciamos wview
Notas:
—El número de telefono va sin "+" ni 00, solo 34 por delante: 34*********
--Disponeis de 0,50€ de credito gratuito en
www.clockworksms.com si registrais vuestro número de teléfono .