Metadata-Version: 2.1
Name: habmapslib
Version: 1.0.8
Summary: Librería para el acceso a habmaps
Home-page: https://github.com/alpeza/habmapsgateway
Author: Alpeza
Author-email: 
License: UNKNOWN
Project-URL: Bug Reports, https://github.com/alpeza/habmapsgateway/issues
Project-URL: Funding, https://github.com/alpeza/habmapsgateway/issues
Project-URL: Say Thanks!, https://github.com/alpeza/habmapsgateway/issues
Project-URL: Source, https://github.com/alpeza/habmapsgateway
Platform: UNKNOWN
Classifier: Intended Audience :: Developers
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Requires-Python: >=3.6, <4
Description-Content-Type: text/markdown
Requires-Dist: paho-mqtt (>=1.5.1)
Requires-Dist: click (>=7.1.2)
Requires-Dist: PyYAML (>=5.4.1)

# habmapslib

Librería para el uso de [habmaps](https://github.com/alpeza/habmaps)

* [GitHub](https://github.com/alpeza/habmapsgateway)
* [Pypi](https://pypi.org/project/habmapslib/#description)

## Quick Start

__1.- Instalamos el cliente de habmaps con__

Opción 1
```
pip3 install 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__

```python
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

```bash
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

```python
    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 File Parser

La librería también se puede emplear a modo de _deamon_ que va leyendo
de un fichero y transmitiéndolo a habmaps.

```bash
python3 -m habmapslib.cli --help
```

1.- Configuramos el programa:

```bash
python3 -m habmapslib.cli --genconffile > miConfig.yaml
#Editamos la configuración
nano miConfig.yaml
```
2.- Lanzamos el programa 

```bash
python3 -m habmapslib.cli --conffile miConfig.yaml
```

