Script Python permettant l'alimentation automatique d'une base de données avec les localisations GPS du constructeur LOTEK via son API.
- Récupération de la liste des capteurs dont les données doivent être récupérées
- Interrogation de l'API LOTEK pour télécharger les denières localisations
- Intégration des localisations dans la base de données
En cas d'erreur lors de l'exécution du script, un mail sera envoyé (voir configuration)
Le script a été réalisé sous Ubuntu 20.04 et développé en Python3 avec une base de données est PostgreSQL 10 et l'extension PostGIS.
D'autres configurations doivent pouvoir correspondre mais reste à tester
Récupérer les codes sources avec git :
$ git clone https://github.com/PNPyrenees/lotek2db.git- Exécuter le script d'initialisation de la base de données (install/install_db.sql)
- Installer le paquet libpq-dev
$ sudo apt-get install libpq-dev- Créer un environnement virtuel python
$ cd <pathTo>/lotek2db
$ virtualenv --python=/usr/bin/python3 venv- Installer les dépendances Python
$ source venv/bin/activate
(venv) $ pip install -r install/requirements.txt
(venv) $ deactivate- Copier le fichier config/config.yml.default en le renommant config.yml
$ cp config/config.yml.default config/config.yml- éditer le fichier config.yml en renseignant chacun des paramètres
# YAML
database:
dbHost:
dbName:
dbPort:
dbUser:
dbPassword:
api:
apiUser:
apiPassword:
mail:
mailHost:
mailPort:
mailId:
mailPass:
log:
logFile: log/lotek2db.logl- Copier ensuite le fichier lotek2db.sh.default en le renommant lotek2db.sh. Editer le pour remplacer la valeur <PATH_TO_lotek2db> par le chemin absolu vers le dossier de lotek2db
Modifier le script lotek2db.sh de sorte que le chemin vers le dossier du projet corresponde à votre environnement local (ligne 5)
Ensuite, automatiser l'exécution du script en programmant une tâche avec cron
$ crontab -e
Exemple d'une configuration cron pour la récupération toutes les heures des données GPS
5 */1 * * * /<PathTo>/lotek2db.shLe chemin doit être en absolu.
La données RxStatut délivré par l'API LOTEK permet de déterminer le fix status et le nombre de satellites utilisés pour la localisation. La valeur de RxStatut est passé en binaire. Le trois premiers bits renseignent le fix statut et les autres le nombre de satellite.
Table de correspondance du code fx_status:
| fix code | value |
|---|---|
| 0 | No Fix |
| 1 | 1_SV KF Solution |
| 2 | 2_SV KF |
| 3 | 3_SV KF |
| 4 | 4 or more SV KF |
| 5 | 2-D least-squares |
| 6 | 3-D least-squares |
| 7 | DR |
Exemple avec un RxStatut à 76 :
- valeur binaire : 01001100
- trois premieris bits : 100 corespondant à 4 en base10 (décimal) -> soit "4 or more SV KF"
- les autres bits : 01001 correspondant à 9 en base 10 -> soit 9 satellites
- OpenSource - GPL-3.0
