Script Python permettant l'alimentation automatique d'une base de données avec les localisations GPS du constructeur [VECTRONIC] 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 VecTronic pour télécharger les localisations
- Intégration des dernières 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/vectronic2db.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>/vectronic2db
$ 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 vectronic2db.sh.default en le renommant vectronic2db.sh. Editer le pour remplacer la valeur <PATH_TO_lotek2db> par le chemin absolu vers le dossier de vectronic2db
Modifier le script vectronic2db.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>/vectronic2db.shLe chemin doit être en absolu.
La base de données recevant les données étant partagé avec d'autre constructeur de matériel, le code idFixStatus est augmenté de 10
| 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
