Librería para el acceso a habmaps
Project description
habmapslib
Librería para el uso de habmaps
Quick Start
1.- Instalamos el cliente de habmaps con
Opción 1
pip3 install habmapslib
# para el upgrade pip3 install --upgrade habmapslib
Opción 2, instalación manual
git clone https://github.com/alpeza/habmapsgateway.git
cd habmapsgateway/habmapslib
sudo python3 setup.py install
2.- Envíamos información a la plataforma
from habmapslib import MapTracker, HabMapsMessage
import time
mt = MapTracker.MapTracker(id="default-station-id", #Nombre de la estación base
mqtt_url="localhost", #DNS o IP del servidor MQTT
mqtt_port=1883, #Puerto del servidor MQTT
user='habmaps', #Credenciales de acceso al broker MQTT
password='root')
mt.startAlive() #Iniciamos la señal de alive que se enviará cada n minutos
while True:
mt.sendHabMessage(HabMapsMessage.HabMapsMessage(
TimeStamp='2021-04-02 15:33:43', #El timestamp del hab en formato string datetime.now().strftime("%Y-%m-%d %H:%M:%S")
HabId='Mi-Hab', #Nombre del hab que se esta monitorizando, vendrá de la traza q transmita el hab
HabPosition=[5, 3], #Array de [ latitud, longitud]
Signals={ #Payload de sensores clave: Nombre del sensor, valor: valor del sensor
"miSensorUno": 122.4,
"miSensorDos": 400.5
},
BasestationPosition=[5, 3])) #Array opcional de [ latitud, longitud] de posición de la estacion base
time.sleep(5)
Logging
La configuración de los logs se realiza a través de variables de entorno
export HABLIB_LOGLEVEL=DEBUG #INFO,ERROR
export HABLIB_FORMAT="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
export HABLIB_LOGFILE="/tmp/hablibclient.log"
Error Handling
rc = mt.sendHabMessage(HabMapsMessage.HabMapsMessage(
TimeStamp='2021-04-02 15:33:43',
HabId='Mi-Hab',
HabPosition=[5, 3],
Signals={
"miSensorUno": 122.4,
"miSensorDos": 400.5
},
BasestationPosition=[5, 3]))
if rc['isOK']:
print("El mensaje se ha enviado correctamente ... ")
else:
print("Ha existido algun error en la transmision ...")
print(rc['reason'])
CLI FileParser
La librería también se puede emplear a modo de daemon que va leyendo de un fichero y transmitiéndolo a habmaps.
python3 -m habmapslib.cli --help
1.- Configuramos el programa:
python3 -m habmapslib.cli --genconffile > miConfig.yaml
#Editamos la configuración
nano miConfig.yaml
2.- Lanzamos el programa
python3 -m habmapslib.cli --conffile miConfig.yaml
Configuración del CLI FileParser
La configuración se define a través de un fichero YAML.
basestation:
id: "id-de-mi-estacion"
appenders:
gpsappender: "/Users/tests/ArchLab/habmapsgateway/demotraces/gps.appender"
mqtt:
url: "localhost"
topic: "hablistener"
port: 1883
user: "habmaps"
password: "root"
alive: 60
frame:
# Definición de la trama donde
# $time : Es la hora expresada en HHMMSS
# $pos : Es la posición gps del hab expresada en lat,lon
# $id : Es el identificador del hab
format: "$time|AlturaGPS|$pos|VelocidadHorizontalGPS|Temperatura|Presion|AlturaBarometrica|$id|"
# Fichero donde se van insertando las trazas de LoRa
file: "/Users/tests/ArchLab/habmapsgateway/demotraces/out.log"
# Cada cuantos segundos se mira el fichero de envio
refresh: 1
Nos resultarán de mayor interés las siguientes secciones:
Appender GPS
Se trata de un fichero donde el programa espera encontrar la posición gps de la antena.
...
appenders:
gpsappender: "/Users/tests/ArchLab/habmapsgateway/demotraces/gps.appender"
En caso de no disponer de un módulo gps. Se puede dejar a blancos:
...
appenders:
gpsappender: ""
En caso de querer hacer uso del appender es necesario informar en el
fichero especificado la posición gps en el siguiente formato <latitud>,<longitud>,<altura>
,
por ejemplo 29.1,12.3,100
. El appender siempre leerá la última línea y esperará que esta cumpla
con el formato especificado.
Trama de la sonda
El programa tratará de realizar un envío a mqtt por cada línea nueva que detecte en el fichero frame.file
.
Este interpretará y mapeará la línea a json según se le especifique en frame.format
. Cada campo vendrá separado por el caracter |
.
Existen campos de mapeo reservados:
$time
: Se interpreta como el timestamp de la sonda especificado en formaHHMMSS
.$pos
: Se interpreta como la posición gps de la sonda expresada comolat,lon
.$id
: Se interpreta como elid
de la sonda.
...
frame:
format: "$time|AlturaGPS|$pos|VelocidadHorizontalGPS|Temperatura|Presion|AlturaBarometrica|$id|"
file: "/Users/tests/ArchLab/habmapsgateway/demotraces/out.log"
El resto de campos se interpretarán como valores de sensor.
Un ejemplo de trama de sonda para este formato es el siguiente:
185359|1127|4.3074,2.2111|0.1717|22.64|900.5943|983|HABCAT2|
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Hashes for habmapslib-1.0.12-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 02168ddc5c82bf185dc055d7496bf18ffc8797c504786f018261852ade635649 |
|
MD5 | 05e259afbe5b8bdbef1765655dbe712b |
|
BLAKE2b-256 | e2ab233e20bdfab0c06bfdb1626fc719eb5a79c645dad3c4e434b427c67361aa |