Compare commits

338 Commits

Author SHA1 Message Date
Christian Zufferey
f612ffea71 Voilà, ma démo de train virtuel pour les PO du MsL fonctionne 2020-10-30 14:54:50 +01:00
Christian Zufferey
e13c623ada Commencé le projet démo pour les Portes ouvertes 2020 du Makerspace Lausanne 2020-10-30 13:56:44 +01:00
Christian Zufferey
c3ce01f62d Archivé le projet guirlande de Noël à LED RGB WS2812 2020-10-19 18:38:38 +02:00
Christian Zufferey
77071d2798 Passé à une période de msesure plus grande
- Dû passer à une mesure toutes les 3 minutes afin
d'économiser l'utilisation du quota du GSM
- Dû passer à 60 secondes la connection à socat
aussi à cause du quota GSM
- Dû passer à python 2.7 dans luatool.py à cause que
mon mac n'a plus de lien symbolique sur python2
2020-10-03 11:07:35 +02:00
Christian Zufferey
783d04a8af Dû passé en python 2.7 au lieu de python 2 mon luatool.py 2020-09-28 11:31:00 +02:00
Christian Zufferey
093b1e54da Passé à une mesure toutes les minutes au lieu de toutes 10 secondes 2020-09-28 11:13:42 +02:00
Christian Zufferey
9252ef4b47 Pas mal de reflexions pour savoir comment se connecter au WIFI lors du boot normal
Je pense avoir trouvé la solution.
J'arrive maintenant à détecter si un ap wifi existe ou non grace
à la fonction print(wifi.sta.status()).
J'essaie en premier de me connecter sur le 2e ssid (celui du smartphone)
et continue mon boot normalement.
Si non, j'essaie de me connecter sur mon 1er ssid (celui de la maison)
et continue mon boot normalement.
Si non, j'essaie de me connecter sur le wifi qui se trouve dans eus_params.lua
et continue mon boot normalement.
Si non, je passe en mode setup gadget pour trouver une nouvelle configuration
2020-08-18 23:26:26 +02:00
Christian Zufferey
d1cc747c14 Quand il voit qu'il est à la maison se remet à l'heure sur Internet
Maintenant quand il voit qu'il a le ssid1, il se connecte sur
Internet pour mettre à jour l'horloge.
Mais s'il voit ssid2, il redémarre et s'arrête pour la maintenance.

Reste encore à modifier le wifi_init qui soit capable de se connecter
aussi sur le ssid2, car actuellement c'est seulement le ssid1.
2020-08-16 20:02:07 +02:00
Christian Zufferey
a9abd91aa5 Complètement refactorisé la procédure de boot (initz.lua)
Maintenant les *secrets* sont chargés au moment de l'init.lua et
l'aiguillage du boot *dsleep* se fait en fonction de la variable
node_mode. Ainsi c'est le même iniz.lua et wifi_init.lua pour les
différents projets NodeMCU.
Reste encore à faire de pouvoir sauver deux possibilités de connexions
WIFI dans les secrets_wifi afin de pouvoir se connecter sur le
WIFI du smartphone en cas de dépannage sur le terrain
2020-08-16 14:58:54 +02:00
Christian Zufferey
cca4683200 Voilà, il est maintenant capable de repartir sur une ancienne heure après un power boot
Bien qu'il n'a pas de connexion réseau au moment du power boot, il peut
retrouver une ancienne heure sauvegardée dans la flash et continuer à
enregistrer.
Il faut maintenant qu'il voit que quand il a un wifi connu qu'il se
connecte sur Internet pour se resynchroniser avec la bonne heure
2020-08-15 15:02:46 +02:00
Christian Zufferey
abcfe3e18b Nouveau set_time, qui sauvegarde toutes les minutes l'heure dans la FLASH 2020-08-15 14:26:57 +02:00
Christian Zufferey
a86ea289b5 Marche plus car je suis en train de changer ma façon de gérer l'horloge 2020-08-15 12:56:17 +02:00
Christian Zufferey
94ffe17fcc Ajouté comment éteindre la LED de status du mini WIFI repeater ;-) 2020-08-14 22:38:01 +02:00
Christian Zufferey
0d1e801db4 Maintenant il arrive à s'arrêter quand il voir un wifi connu mais...
Comme il peut démarrer maintenant tout seul depuis un power off,
il n'a plus moyen d'aller chercher la date sur Internet.
Il faut donc régulièrement quand on est connecté sur Internet, sauver
la date dans la flash afin qu'il puisse au moins partir d'une date pas
trop fausse quand il démarre sans nternet
2020-08-14 19:36:49 +02:00
Christian Zufferey
017cff09d0 Je suis en train de travailler sur la partie NodeMCU du Pet Tracker
J'essaie que quand il voit, lors du scan wifi, un ap wifi connu,
qu'il redémarre et se connecte dessus. Cela ne fonctionne pas encore
2020-08-12 20:23:51 +02:00
Christian Zufferey
b25bf03d4e wip Cosmétique ;-) 2020-08-12 19:14:05 +02:00
Christian Zufferey
580a687c11 Refactorisé les noms des copies d'écran d'exemples de cartographies du pet tracker 2020-08-11 22:29:39 +02:00
Christian Zufferey
1e94e7baa2 Finalement j'ai laissé tous les way point car j'ai vu que cela va encore pas mal
J'affiche maintenant la trace du pet tracker sur un mymaps de Google, je suis assez content.
Mais pour l'instant c'est encore un peu de la théorie, car c'est le même fichier pet tracker
qui a servi pour l'étalonnage des paternes que celui que j'affiche, donc les paternes sont
toujours bien résolues, cela va être différents quand le pet tracker va se balader dans
des endroits inconnus de la cartographie des points GPS du quartier.
Faut donc maintenant aller faire un tour dans le quartier avec le pet tracker et voir
comment cela va fonctioner en pratique
2020-08-11 22:07:54 +02:00
Christian Zufferey
ac6a3f7a38 Voilà, cela commence à marcher, j'ai la trace avec les wait point maintenant
Mais je ne suis pas encore certain que c'est ceci que je veux car la carte va
peut être trop chargée :-(
2020-08-11 22:00:59 +02:00
Christian Zufferey
0ea3baaef3 Mon export GPX commence à fonctionner
Mais il faut que je lui ajoute des wait points avec un time
afin que je puisse savoir où il était quand ;-)
2020-08-11 21:18:31 +02:00
Christian Zufferey
bc5fe7c83a Commencé à créer le fichier de sortie en GPX
Ce n'est pas encore fonctionnel :-(
2020-08-10 21:15:07 +02:00
Christian Zufferey
c2ffc0c4dd Voilà, en fait il n'y avait pas de problème, j'ai bien toutes mes coordonnées GPS
Le problème était que pour les tests de fonctionalité de la dernière partie du code,
j'ai limité aux 5 premières paternes et que c'est seulement à partir de la 16e paterne
que les coordonnées GPS *bougent*, car je n'avais pas encore bougé lors de la 1ère minute ;-)
2020-08-10 20:45:34 +02:00
Christian Zufferey
b5df179f70 wip 2020-08-10 20:35:22 +02:00
Christian Zufferey
6eaed86fce Essayé de parser toute la table pet tracker à la recherche des coordonnées GPS,
mais cela ne marche pas encore :-(
2020-08-10 18:58:02 +02:00
Christian Zufferey
7887ee2e9b Récupération des coordonnées GPS pour la parterne gagnante
J'ai juste récupéré les coordonnées GPS pour la parterne gagnante
pour après faire la boucle for pour toutes les paternes
2020-08-10 18:38:44 +02:00
Christian Zufferey
e572baccd3 Refactrorisation de la partie comparaison de paternes (votation)
Nettoyé le code en découpant mieux en fonctions plus simples à comprendre
2020-08-09 16:46:19 +02:00
Christian Zufferey
6c1b0367bf Voilà, mon tri du gagnant marche bien et maintenant j'arrive presque
à avoir un bon résultat pour les très petites paternes grâce au calcul
de la déviation de rssi entre le pet tracker et la calibration.
Faudra juste tester s'il y a des doublons pour tout simplement ne pas
en tenir compte lors de l'affichage dans de rares cas
2020-08-09 15:00:20 +02:00
Christian Zufferey
659713ba89 Voilà, j'arrive à retrouver une paterne dans la table des ap wifi
En utilisation la technique des votations j'arrive à trouver la
corélation des paternes en triant le tableau de votes et prenant
le premier élément.
Me reste encore à récupérer la coordonée GPS de la paterne et
surtout le faire pour toutes les paternes du pet tracker ;-)
2020-08-08 15:12:47 +02:00
Christian Zufferey
b0288ff12a Bon, mon système de votation fonctionne bien sauf ...
pour les paternes comptant moins que 3x ap wifi, il y a trop de doublons et
la levée de doute avec le calcul des erreurs (rssi) ne fonctionne pas pour là
où il n'y a qu'un seul ap wifi dans la paterne.
Il faudra donc éliminer les mesures qui sont trop fausses
2020-08-08 14:53:34 +02:00
Christian Zufferey
8df493138b Voilà, cela fonctionne nettement mieux maintenant
Je n'avais pas pris le bon index pour remplir le tableau de votes.
Mais je m'aperçois que j'ai des fois une paterne avec qu'un seul ap wifi
et cela me crée pas mal de doublons au niveau votes.
Je dois donc encore chercher pourquoi et comment lever le doute avec le
coefficient error de distance
2020-08-08 13:53:46 +02:00
Christian Zufferey
db9adb1f59 Commencé les votations sur les patternes, mais cela ne marche pas encore
J'ai bien des votations, mais le résultat des patternes gagantes se trouvent
toujours dans les moins de 20, donc proche de la maison bien que j'ai pris une
patterne à 150. Je ne sais pas pourquoi
2020-08-07 17:07:47 +02:00
Christian Zufferey
90a76faf57 wip
J'arrive maintenant à parser toute la table ap wifi à la recherche d'une mac adresse.
Me reste encore à faire le voting pour savoir dans quelle paterne elle se trouve
Et après de parser toute la table pet tracker
2020-08-07 12:23:01 +02:00
Christian Zufferey
22d86c54dc Commencé maintenant à traiter un fichier NodeMCu de pet tracker
Je commence à charger le fichier pet tracker dans un tableau que je vais après parser
pour rechercher des corespondances dans les patternes ap wifi du quartier afin de pouvoir
trouver les coordonnées GPS de chaque lieu de passage
2020-08-07 11:48:35 +02:00
Christian Zufferey
be18088f9b Ajouté une fonction de filtre pour une seule mac adresse de ap wifi
Afin de pouvoir voir visuellement la localisation d'un seul ap wifi en fonction de sa force du signal
2020-08-04 10:49:21 +02:00
Christian Zufferey
2289b88638 Super, j'ai bien réussi à récupérer les coordonnées GPS de chaque ap wifi
Et là où j'ai fait fort, c'est que j'ai pris à chaque fois où j'avais le
maximum de signal, et on peut bien voir la disposition de mes ap wifi perso
tout autour de la maison. Je suis vraiment très content que mon principe
fonctionne enfin
2020-08-03 18:14:53 +02:00
Christian Zufferey
83669454de wip 2020-08-03 17:37:03 +02:00
Christian Zufferey
7d0dc244e7 Commencé à rechercher le nombre d'ap wifi uniques
J'en ai besoin pour trouver la coordonnée GPS la plus proche de chaque ap wifi
2020-08-03 12:18:22 +02:00
Christian Zufferey
ceb621275f Refactorisé la timezone, maintenant elle se trouve au début du code 2020-08-03 10:58:47 +02:00
Christian Zufferey
18d35985e6 Voilà, j'ai enfin les coordonnées GPS pour tous les groupes
d'ap wifi *vu* par le NodeMCU
Maintenant il faut que j'extrais les coordonnées GPS de chaque
ap wifi les plus proches afin de pouvoir afficher dans un google
mymap tous les ap wifi du quartier
2020-08-03 10:53:21 +02:00
Christian Zufferey
b199a5c4ba wip 2020-08-03 10:44:06 +02:00
Christian Zufferey
c55b5ab55f Calculé la distance d'erreur en mètres en fonction du rssi
C'est beaucoup plus simple de travailler en mètres qu'en dB
pour évaluer à combien se trouve environ l'ap wifi ;-)
2020-08-03 09:34:43 +02:00
Christian Zufferey
2552be7a08 Voilà, les donées du NodeMCU (ap wifi) sont sauvegardés dans le tableau
Reste encore à les corréler avec les données gpx afin de récupérer les
longitudes et latitudes des ap wifi
2020-07-31 18:42:29 +02:00
Christian Zufferey
510fcf0be8 J'arrive à récupérer les datas des ap wifi mais pas à les mettre dans le tableau
Je ne suis pas encore clair dans ma tête pour la définition de mon tableau des ap wifi :-(
2020-07-30 23:50:10 +02:00
Christian Zufferey
eb2a137269 Le temps et les coordonnées GPS du fichier GPX sont maintenant enregistrés dans le tableau
Reste à encore récupérer les données des ap wifi ;-)
2020-07-30 23:05:00 +02:00
Christian Zufferey
019dae1769 Commencé à faire mon parser en lua pour géolocaliser les ap wifi
Je commence par parser le fichier gpx pour en faire un tableau
de coordonnées en fonction du temps
Cela commence à bien fonctionner ;-)
2020-07-30 18:22:44 +02:00
Christian Zufferey
4094230c72 Nouveau tracing mais cette fois avec les adresses mac de ap wifi
J'ai vu que j'avais beaucoup trop de doublons au niveau des noms
des ap wifi comme par exemple *upc free*, j'enregistre donc
maintenant l'adresse mac de l'ap wifi aussi, ainsi j'arrive à
les différentier
2020-07-27 23:26:12 +02:00
Christian Zufferey
050772651c Enregistré un nouveau chemin, cette fois avec un gpx de osmand+
Je change de méthode pour trouver les positions GPS, plus avec
Wigle car il y avait trop de bruit, mais maintenant en
enregistrement // du NodeMCU et du OSMand+ pour avoir la
corrélation GPS avec les timestamps d'enregistrement.
Reste encore maintenant à faire le calcul post traitement
pour pouvoir *coller* le positions GPS aux ap wifi *vu* par
le NodeMCU
2020-07-27 15:19:24 +02:00
Christian Zufferey
aa16b2f4f4 Refactorisé le dossier de post tracking, problème avec Wigle
Les données de géolocalisation des ap wifi de Wigle sont pourries !
Je dois m'y prendre autrement pour pouvoir *étalonner* la
géolocalisation du trajet de mes ap wifi :-(
2020-07-27 13:31:10 +02:00
Christian Zufferey
c73612e6c6 Fait un nouveau cat.lua qui permet de descendre de GRAND fichiers
L'ancien cat.lua, faisait sauter le buffer RAM de socat.

Le nouveau attend entre chaque ligne 50mS afin que le socat ait le
temps de vider le buffer de la trame réseau

Ajouté aussi, pour des tests de post traitements, le tout premier
fichier de logs des ap wifi quand j'ai fait le tour du quartier à
pied avec mon NodeMCU dans une boîte
2020-07-25 13:37:20 +02:00
Christian Zufferey
06498486d4 Voilà, mon socat fonctionne à nouveau avec la version du firmeware de dec 19
Mon socat ne fonctionne plus avec les nouvelles version du firmeware
et mon pet tracker utilisait le module rtc-mem qui ne se trouvait pas
dans la version de dec 19.

J'ai donc dû modifier la procédure de boot afin de ne plus devoir
utiliser le module rtc-mem et de pouvoir revenir au firmeware de
dec 19 et pouvoir utiliser à nouveau mon socat qui est indispensable
afin de pouvoir récupérer les logs des ap wifi scannés lors de la sortie du chat
2020-07-25 12:28:42 +02:00
Christian Zufferey
2f2b9a843c Commencé une nouvelle version de pet tracker qui n'utilise pas le module rtc-mem
J'utilisais la possibilité de sauvegarder le flag de dsleep dans la rtc-mem afin de pouvoir différencier lors du boot si c'est un reset ou une sortie de sommeil profond.

Maintenant je vais partir du principe que quand il y a un *hardware RESET* c'est forcément une sortie de dsleep.

Si on veut avoir la *seconde chance* lors de la procédure de boot, il faudra utiliser le *power on RESET*
2020-07-25 11:44:54 +02:00
Christian Zufferey
2b18f3e800 Refactorisé le dossier pet_tracker_2 2020-07-25 11:13:42 +02:00
Christian Zufferey
1a69277497 Cela commence à bien enregistrer dans la flash maintenant ;-) 2020-07-24 18:40:53 +02:00
Christian Zufferey
7394b7931e Cela commence à marcher, il s'endore, se réveille, scan le réseau wifi et se rendort 2020-07-22 19:45:48 +02:00
Christian Zufferey
3e676db63d Commencé maintenant à gérer la mise en sleep et le réveil du NodeMCU 2020-07-22 15:47:32 +02:00
Christian Zufferey
d9d92f34ba Voilà mon dsleep commence enfin à fonctionner
J'ai fait un sacré moment car quand le NodeMCU se réveille d'un dsleep il est toujours vu comme venant d'un hard reset et pas moyen alors de détecter que l'on était en dsleep.
Maintenant je sauve un flag dans la rtc-mem et je peux tester ce flag au moment du reset et détecter si je sors du dsleep.
Reste encore à mieux faire la détection wifi pour savoir si on arrête le dsleep ou si on le relance
2020-07-22 11:49:42 +02:00
Christian Zufferey
cb98b94bc3 Ajouté un nouveau firmware dédié pour le mode dsleep
Je pensais que c'était un problème de firmware où il manquait la collection des modules rtc_x que
je n'avais pas de boot reason avec un retour de dsleep. Ce n'est pas le cas, je ne sais pas pourquoi
je réveille pas avec un bootreason=5. Je vais donc devoir traiter le réveil du dsleep à la mano avec
une mémoire sur le rtc_mem
2020-07-22 09:40:18 +02:00
Christian Zufferey
8b718295ac Commencé la partie dsleep, mais cela ne marche pas encore :-( 2020-07-20 21:00:06 +02:00
Christian Zufferey
374e04bb61 J'ai enfin un esp-m3 minimaliste qui boot avec le nouveau code 2020-07-20 20:26:03 +02:00
Christian Zufferey
767333aa36 Commencé le projet pet_tracker_2, une nouvelle évolution avec mes nouveaux outils de l'ancien pet-tracker 2020-07-20 19:19:33 +02:00
Christian Zufferey
6570ab5287 Refactorisé encore le HelloWorld du Workshop 2020-07-18 12:10:38 +02:00
Christian Zufferey
5f864b0d3d Bien refactorisé et simplifié les exemples pour le Workshop NodeMCU 2020-07-17 18:06:46 +02:00
Christian Zufferey
b46db00735 Repassé de 3cm à 10cm le filtrage d'erreur, mais passé de 5s à 2s la fréquence de mesure afin de pouvoir lisser plus rapidement les mesures 2020-07-07 07:24:31 +02:00
Christian Zufferey
c4dfe74779 Passé à une hauteur de +/- 3cm de filtrage pour la mesure de la hauteur d'eau 2020-07-06 17:22:19 +02:00
Christian Zufferey
bb310fe31c Mon filtre d'élimination d'erreurs de mesures de la hauteur de l'eau à l'air de bien fonctionner maintenant 2020-07-05 23:10:17 +02:00
Christian Zufferey
c7def89f62 Envoie dans la db influxdb la mesure de la hauteur sans filtre afin de pouvoir voir la cadence des erreurs 2020-07-05 22:22:05 +02:00
Christian Zufferey
a23c98c874 Corrigé enfin mon problème d'oscillation du pourcentage de remplissage du bidon à cause des math.flors imbriqués 2020-07-04 18:46:21 +02:00
Christian Zufferey
5ac0febdc9 Dû corriger encore la partie élimination des mesures erronées (parasites) 2020-06-28 15:31:59 +02:00
Christian Zufferey
d41b389e1b Voilà, mon niveau d'eau en pourcentage est enfin correct, ouf ! 2020-06-28 14:56:36 +02:00
Christian Zufferey
e9ea5a978d Calcul maintenant le pourcentage de remplissage du bidon. Mais le calcul n'est pas encore juste :-( 2020-06-28 13:46:41 +02:00
Christian Zufferey
9e3d6d75c8 Fait une moyenne tournante pour la mesure de la hauteur 2020-06-27 18:48:31 +02:00
Christian Zufferey
4af112c41f wip 2020-06-27 13:30:14 +02:00
Christian Zufferey
d38d02252f Ouf enfin terminé le readme, il en avait bien besoin ;-) 2020-06-27 13:25:38 +02:00
Christian Zufferey
e0d8306de1 Commencé à refactoriser le readme pour ce projet 2020-06-27 13:11:47 +02:00
Christian Zufferey
0a7bde6de9 J'avais mis des mauvais png :-( 2020-06-27 12:22:30 +02:00
Christian Zufferey
1272455067 Ajouté le schéma pour le projet water-level 2020-06-27 12:16:09 +02:00
Christian Zufferey
35f4b71912 Commencé le schéma mais j'ai des problèmes de connexion avec le composant ultrason 2020-06-25 21:37:58 +02:00
Christian Zufferey
5b80499b7d Refactorisé le projet water-level ;-) 2020-06-25 20:35:33 +02:00
Christian Zufferey
4e859cc17e Mise en prod et ajouté des photos 2020-06-25 20:33:48 +02:00
Christian Zufferey
3220d39d7d Voilà, cela envoie sur InfluxDB la hauteur maintenant ;-) 2020-06-25 12:08:39 +02:00
Christian Zufferey
4cacf06970 Voilà, le module mesure bien la distance entre 15cm et 2m. Reste encore à l'envoyer sur InfluxDB 2020-06-24 20:14:07 +02:00
Christian Zufferey
657af220be Configuré les bons secrets pour ce projet, mais la mesure de distance ne fonctionne pas encore 2020-06-24 19:25:18 +02:00
Christian Zufferey
904221563b Refactorisation de noms de projets en cours
- dupliqué le projet energy 1 phase pour le projet mesure déshumidificateur à Ruchonnet
- créé le nouveau projet level, mesure d'eau dans un bidon à Ruchonnet
2020-06-24 18:56:12 +02:00
Christian Zufferey
a843ae1631 Cela commence enfin à fonctionner correctement, j'ai encore le problème du reboot après 10mn à vérifier 2020-06-21 23:38:06 +02:00
Christian Zufferey
9d484b3d4d Ouf j'ai bien l'impression que j'ai trouvé ma fuite mémoire dans le socat, maintenant cela fonctionne ceomme je veux 2020-06-21 19:48:55 +02:00
Christian Zufferey
152e78a264 Enfin on dirait que j'ai réussi à boucher la fuite mémoire, mais il faut encore vérifier mieux ;-) 2020-06-21 19:35:22 +02:00
Christian Zufferey
eb9801b227 C'est la cata, j'ai toujours des fuites mémoire à la déconnexion 2020-06-21 16:49:48 +02:00
Christian Zufferey
0be912153b Complètement refactorisé encore une fois mon socat et rtelnet, j'ai toujours la fuite mémoire à la déconnection 2020-06-21 16:31:03 +02:00
Christian Zufferey
b29c4dc20e wip, avec le firmeware du 31.12.19 cela marche mieux
- mais j'ai encore des fuites mémoire quand je reconnecte le telnet en remote
- donc avec le nouveau firmeware mon socat ne marche pas du tout, intéressant
2020-06-21 14:03:04 +02:00
Christian Zufferey
3138584dd6 wip, je try encore quelque chose, ne marche pas 2020-06-21 13:36:27 +02:00
Christian Zufferey
777d1726a7 wip, cela ne marche toujours pas 2020-06-21 13:20:46 +02:00
Christian Zufferey
4351c8eca4 wip, y'a plus rien qui marche au niveau socat avec le nouveau firmware :-( 2020-06-21 12:35:54 +02:00
Christian Zufferey
812e36037e Terminé la mise à jour des secrets sur les sondes température/humidité de Ruchonnet 2020-06-19 16:30:45 +02:00
Christian Zufferey
5842a3c2fb Ajouté un frimware 'latest' afin de voir si j'ai toujours le même problème de reboot 2020-06-17 20:15:11 +02:00
Christian Zufferey
0060a661ee Refactorisé le socat, maintenant ce n'est plus un timer mais le cron qui le relance 2020-06-17 12:00:06 +02:00
Christian Zufferey
8fb0c9a1db Refactorisé/simplifié le cron et remis le get_power. Maintenant l'appli est complète et il me reste 18kB de RAM ! 2020-06-16 16:41:45 +02:00
Christian Zufferey
0a3d430f36 Refactorisé le http_post, commenté toutes les lignes utilisées pour le debug 2020-06-16 16:35:40 +02:00
Christian Zufferey
235c5fe8c2 Refactorisé complètement mon boot.lua, le debug recording avec timestamp fait partie maintenant du boot ! 2020-06-16 16:18:54 +02:00
Christian Zufferey
06cd6ad46a Ne fait que tourner socat et rien d'autre afin de voir si cela plante aussi pendant la nuit 2020-06-15 22:50:06 +02:00
Christian Zufferey
ff5a7b605e Remis les mesures de courant pour voir si cela plante plus que 15mn 2020-06-15 19:40:03 +02:00
Christian Zufferey
42b137a2d3 Ca marche mieux mais ce n'est pas encore cela, cela reboote toutes les 15mn maintenant :-( 2020-06-15 19:32:33 +02:00
Christian Zufferey
514e42806f Ajouté une fonction qui sauvegarde dans un fichier 00_debug.txt dans la FS des messages utilisés pour le debug 2020-06-14 17:37:25 +02:00
Christian Zufferey
f08c3815db Commencé à enregistrer dans la FS les connexions/déconnexions du socat afin de pouvoir mieux 'voir' les problèmes de reconnexions en boucle 2020-06-14 14:27:57 +02:00
Christian Zufferey
5b1af2e6bd wip, je cherche toujours une solution pour les reconnexions de socat 2020-06-13 18:33:26 +02:00
Christian Zufferey
ca74d7507e Je bosse toujours sur les reboots toutes les 5 minutes 2020-06-12 16:47:51 +02:00
Christian Zufferey
70f9652cef wip, réaligné les tabs dans socat et recherche toujours le problème de crash toutes les 5 minutes 2020-06-12 11:46:47 +02:00
Christian Zufferey
e893835527 Voilà, mon affichage des versions des fichiers sur le NodeMCU est bien fonctionnel 2020-06-11 19:22:26 +02:00
Christian Zufferey
331da40361 wip 2020-06-11 17:07:44 +02:00
Christian Zufferey
05a879f1a8 wip, cela commence enfin à marcher 2020-06-11 16:51:43 +02:00
Christian Zufferey
a681b8cd0e Ajouté un script pour afficher toutes les versions des scripts lua sur le NodeMCU, ne marche pas encore ! 2020-06-11 15:32:22 +02:00
Christian Zufferey
6f0fe48920 Corrigé une erreur de nom de version dans les scripts dir.lua (dir2 au lieu de dir1) 2020-06-11 13:51:09 +02:00
Christian Zufferey
b0b67eaa00 Ajouté, enfin, la possibilité d'enregistrer dans la FLASH la raison du boot 2020-06-11 11:55:49 +02:00
Christian Zufferey
b3e8f12d53 Ajouté ma nouvelle smart bulb que j'ai achetée 25 balles chez Hornbach 2020-06-11 10:29:45 +02:00
Christian Zufferey
6839ae56b4 Monté un banc test pour trouver pourquoi il plante toutes les heures environ, je le mets en stress avec pleins de http_post 2020-06-10 18:48:26 +02:00
Christian Zufferey
40cb639ea4 wip 2020-06-09 18:39:47 +02:00
Christian Zufferey
5f9df6bbe7 J'envoie maintenant à Grafana l'état de la RAM à chaque http_post, peut-être que j'arriverai mieux à suivre les fuites ;-) 2020-06-07 16:46:20 +02:00
Christian Zufferey
8784c7dc7e Envoie maintenant le nombre d'urls en attentes de http_post dans Grafana 2020-06-07 16:35:14 +02:00
Christian Zufferey
048174d44a Ajouté maintenant la boot reason dans Grafana afin de savoir pourquoi il a redémarré 2020-06-07 16:01:52 +02:00
Christian Zufferey
e6d7448d77 Ajouté un canary suplémentaire dans Grafana (tmr_socat1_) pour les problèmes de socat observés pendant la nuit 2020-06-07 11:20:29 +02:00
Christian Zufferey
9c887e7242 Affichage maintenant le nombre d'url restant dans la salle d'attente 2020-06-06 13:48:33 +02:00
Christian Zufferey
a7093b2b49 Refactorisé le socat afin de grapher dans Grafana les retry de connexions car j'ai des problèmes quand je perds le wifi 2020-06-06 13:21:08 +02:00
Christian Zufferey
5e71652c2c Corrigé le seuil de la puissance minimale mesurée 2020-06-05 10:53:42 +02:00
Christian Zufferey
ece78ec2ad Ajouté des nouvelles photos pour le readme :-) 2020-06-04 15:29:11 +02:00
Christian Zufferey
bb105fcf57 Nettoyé des restes de code dans le cron ;-) 2020-06-04 15:10:51 +02:00
Christian Zufferey
08a070813b On dirait que cela fonctionne bien, cela envoie la puissance mesurée sur Grafana maintenant, pour le compteur 3 :-) 2020-06-04 14:47:59 +02:00
Christian Zufferey
5acd21666f Refactorisé encore une fois les nom de projet energy afin de pouvoir séparer le projet de l'installation solaire du toit et du sol 2020-06-03 20:18:55 +02:00
Christian Zufferey
7431eeb759 La mesure de puissance fonctionne maintenant, reste encore tout le reste à faire 2020-06-03 20:13:40 +02:00
Christian Zufferey
3583c74cd5 Ajouté la TOC dans le readme 2020-06-03 15:30:46 +02:00
Christian Zufferey
ea6dc82274 Commencé l'update de la mesure de puissance monophasée (clip transfo de courant) avec le nouveau code de base utilisé pour la mesure de température solar grafana 2020-06-03 15:20:14 +02:00
Christian Zufferey
a3e4bf3690 Changé le titre du projet ;-) 2020-06-03 15:09:51 +02:00
Christian Zufferey
8fbf045784 Refais tous les liens des images des readme qui avaient été cassés lors de la refactorisation des dossiers 2020-06-03 15:05:19 +02:00
Christian Zufferey
344f08edbc Refactorisé la partie mesure de puissance avec le transfo clip, ajouté une phase et trois phases. Faudrait maintenant refaire tous les liens photos qui sont cassés :-( 2020-06-03 14:47:56 +02:00
Christian Zufferey
4e58848461 wip 2020-05-30 12:45:09 +02:00
Christian Zufferey
1928d6e42a Ajouté la nouvelle fonctionalité du setup wifi dans le README et purgé initz du code debug 2020-05-30 12:42:48 +02:00
Christian Zufferey
f80828f2cf Merge branch 'master' of https://github.com/zuzu59/NodeMCU_Lua 2020-05-30 12:25:39 +02:00
Christian Zufferey
8c6860a2c0 Ajouté la possibilité de demander le setup wifi en appuyant sur le btn entre 5s et 10s après le reset 2020-05-30 12:22:16 +02:00
Christian Zufferey
7f392bae7c Create SECURITY.md 2020-05-28 09:15:35 +02:00
Christian Zufferey
34a72130f0 Cela fonctionne super bien, j'ai pu modifier, depuis le MsL, deux fichiers en rtelnet sans problème. Purger 3x variables qui traînaient 2020-05-27 18:45:43 +02:00
Christian Zufferey
ae417e7200 Voilà c'est mieux, j'ai dû enlever le web server et maintenant j'ai assez de RAM, cela ne plante plus tout en ayant le socat qui fonctionne bien 2020-05-27 18:18:39 +02:00
Christian Zufferey
c9e67324d9 Ca marchotte mais je suis beaucoup trop tangent quand je mets le socat, 1x sur 3, pas assez de ram :-( 2020-05-25 15:42:57 +02:00
Christian Zufferey
03a20c0921 Enlevé tous les codes de profiling de print timestamp 2020-05-25 14:09:23 +02:00
Christian Zufferey
099e257876 La routine set_time consomme trop de ram, j'utilise donc maintenant tmr.now() comme time_stamp. Socat est aussi démarré ! 2020-05-25 12:39:27 +02:00
Christian Zufferey
397e2b56a6 Ajouté le time stamp à la micro seconde, mais je n'ai pas encore les zéros significatifs :-( 2020-05-24 19:23:09 +02:00
Christian Zufferey
8515670cc8 Ajouté un time stamp aux routines principales pour le profiling, ne marche pas encore ! 2020-05-24 17:28:33 +02:00
Christian Zufferey
6ac26d0c89 Super ! Ma petite salle d'attente pour les http.post fonctionne à merveille. Je graphe même maintenant l'utilisation de la mémoire pour suivre les fuites mémoire ;-) 2020-05-24 14:28:19 +02:00
Christian Zufferey
e1cd0eb2af Mon fifo http_post à l'air de fonctionner à la mano, me reste encore à le mettre en auto dans le crontab :-) 2020-05-24 13:37:07 +02:00
Christian Zufferey
f54cd6f5f9 J'arrête avec mon send_data pour commencer maintenant avec http_post qui lui aura son fifo 2020-05-24 12:25:29 +02:00
Christian Zufferey
b8cc11ad97 Corrigé le problème du clignotement de la led car j'utilisais la pin4 pour le clock du 2e device HTU21D 2020-05-23 18:48:52 +02:00
Christian Zufferey
8f47416fc0 Ouf enfin cela commence à fonctionner, j'ai eu des problèmes de lancement en // de http.post qui ne pouvaient pas être lancés en // 2020-05-23 18:21:02 +02:00
Christian Zufferey
f3ebbb4f15 Cela va mieux, mais ça n'envoie pas automatiquement vie le crontab :-( 2020-05-23 16:56:29 +02:00
Christian Zufferey
b6847f614f Ouf, enfin mes deux sondes fonctionnent, c'étaient les câbles trop long et mal torsadés ainsi qu'une pull up trop haute 4.7k au lieu de 3.3k 2020-05-23 14:11:07 +02:00
Christian Zufferey
76bda051a0 Je ne sais pas pourquoi je n'arrive PAS à lire le premier capteur, bien que je l'ai changé, peut-être les longs câbles ? 2020-05-21 14:19:16 +02:00
Christian Zufferey
1024ce5a95 Continué enfin le projet mesures Humidité/Température solar sur Grafana 2020-05-20 20:07:38 +02:00
Christian Zufferey
16056a08c2 Ajouté le nouveau box de protection des sondes en plexy 2020-05-20 18:06:56 +02:00
Christian Zufferey
e21e9ffe45 Mise à jour du README pour ce nouveau projet ;-) 2020-04-26 17:36:27 +02:00
Christian Zufferey
59081358d1 Nouveau projet solar-grafana 2020-04-26 17:31:18 +02:00
Christian Zufferey
443f1b85ec Ajouté le nouveau port serial pour le Macbook pro ;-) 2020-04-22 17:37:34 +02:00
Christian Zufferey
3b9eecb26a Ajouté l'information pour la configuration du NAT pour le petit repeater WIFI 2020-04-22 17:29:56 +02:00
Christian Zufferey
6bcfb2f5f3 Mis la dernière version du firmware du WIFI repeater 2020-04-16 23:14:40 +02:00
Christian Zufferey
409f6dae74 wip 2020-04-16 15:51:02 +02:00
Christian Zufferey
f133207709 Renommé mon Workshop 2020-03-03 00:07:00 +01:00
Christian Zufferey
70961043e4 Super bien nettoyé mon workshop :-) 2020-03-03 00:05:54 +01:00
Christian Zufferey
94f1dfead4 Essayé de déployer mon nouveau système sur un SonOff, pour l'instant cela fonctionne, mais il y a très peu de RAM :-( 2020-03-01 14:07:47 +01:00
Christian Zufferey
1e895448ed Mis le timeout de connexion wifi à 30 secondes pour les AP NodeMCU repeater qui sont très lents :-( 2020-02-29 23:34:36 +01:00
Christian Zufferey
e735e06a5e Yeah ! Y'a mon luatool.py qui fonctionne super bien avec le rtelnet, une bonne chose de faite 2020-02-29 23:16:06 +01:00
Christian Zufferey
56708f8880 Finalement j'ai laissé le bouclage en cas de socket occupée, cela redémarre tout seul jusqu'à ce que le socket se libère :-( 2020-02-29 23:00:53 +01:00
Christian Zufferey
00f283fe98 J'ai toujours un fuite de mémoire quand mon rtelnet par en boucle à cause d'un socket occupé 2020-02-29 18:54:55 +01:00
Christian Zufferey
2e86ee5ec0 Ma reconnection automatique commence à fonctionner, mais j'ai des fuites de mémoire en cas de boucle :-( 2020-02-29 18:01:15 +01:00
Christian Zufferey
4e15fcb8ea Enlevé la variable yellow_tag qui ne servait à plus rien 2020-02-29 16:01:38 +01:00
Christian Zufferey
9b545696bf Corrigé le bug que j'avais sur mon script rtelnet.sh ;-) 2020-02-29 15:49:10 +01:00
Christian Zufferey
773e039ad8 Amélioré ma procédure wifi_init afin d'éviter qu'il parte en wifi setup si il n'y a momentamément plus de wifi 2020-02-29 14:40:03 +01:00
Christian Zufferey
9b07651d7d J'ai des problèmes de fuite mémoire avec mon reverse telnet :-( 2020-02-21 13:37:00 +01:00
Christian Zufferey
8e7defb8f2 Voilà mon client zdyndns est prêt, faut voir encore maintenant comment l'utiliser ;-) 2020-02-21 12:12:59 +01:00
Christian Zufferey
188f93b374 Yeah, mon client zdyndns commence enfin à fonctionner, maintenant il faut nettoyer tout le code de debug ;-) 2020-02-21 12:04:21 +01:00
Christian Zufferey
89adb559ec Repris mon client zdyndns, mais cela ne fonctionne pas encore :-( 2020-02-20 09:46:28 +01:00
Christian Zufferey
7d359f93d0 Voilà, c'est bien nettoyé et le reverse telnet fonctionne bien 2020-02-19 17:12:13 +01:00
Christian Zufferey
85023963e1 Yeah cela refonctionne, mais je dois nettoyer maintenant tout le code de test que j'ai dû mettre pour trouver la panne ;-) 2020-02-19 16:18:47 +01:00
Christian Zufferey
aa1e4c9709 faut que je revienne en arrière 2020-02-19 14:20:56 +01:00
Christian Zufferey
3342bc05ac Cela ne marche plus :-(( 2020-02-19 14:13:34 +01:00
Christian Zufferey
0766eeda4b Ajouté la variable yellow_tag qui représente le numéro jaune collé sur le NodeMCU, plus facile pour retrouver le port du reverse telnet ;-) 2020-02-17 08:24:21 +01:00
Christian Zufferey
57461f4e48 Refactorisé un peu le script reverse telnet 2020-02-17 04:29:27 +01:00
Christian Zufferey
0d3dac544d Commencé la partie cliente pour le zdyndns 2020-02-16 18:26:20 +01:00
Christian Zufferey
de74f5408e Pris comme numéro de port pour le telnet reverse, 23000+num_jaune du NodeMCU. Mis le telnet reverse dans le boot.lua 2020-02-16 16:57:45 +01:00
Christian Zufferey
742283019d Refactorisé la gestion du btn verbose. Le telnet reverse fonctionne bien maintenant \o/ 2020-02-16 15:25:43 +01:00
Christian Zufferey
faaac5ae05 Refactorisé encore une fois ma procédure de wifi_init, pour la simplifier quand il ne trouve pas de AP WIFI ;-) 2020-02-16 13:50:15 +01:00
Christian Zufferey
1ff624e99a Mis à jour ma planchette support pour le capteur d'humidité HTU21D 2020-02-16 12:34:40 +01:00
Christian Zufferey
2e27bd68aa La nouvelle version avec le telnet complexe comme à marchotter, mais il y a encore pleins de trucs à améliorer 2020-02-09 19:31:06 +01:00
Christian Zufferey
2f64ee456c Je vais passer maintenant avec un telnet plus efficace 2020-02-09 18:59:46 +01:00
Christian Zufferey
53d5028a72 Ca commence à marcher en reconnexion automatique, mais maintenant c'est mon 'serveur' telnet local qui est trop simpliste :-( 2020-02-09 16:37:35 +01:00
Christian Zufferey
b155f1e812 Mon petit tunnel reverse telnet commence à bien fonctionner, faut que je l'automatise encore 2020-02-09 14:42:51 +01:00
Christian Zufferey
fd43d0c64f Commencé mes tests de telnet reverse, cela commence à super bien avancer 2020-02-03 18:44:44 +01:00
Christian Zufferey
b13a10c5ce Ajouté un script pour Maxime :-) 2020-01-31 11:25:05 +01:00
Christian Zufferey
ad3bd0a046 Corrigé les secrets du projet, il manquait zBTN3 :-( 2020-01-31 10:59:18 +01:00
Christian Zufferey
cd132ca354 Malheureusement c'est encore lent, seulement 1.6mS entre deux mesures 2020-01-26 18:03:23 +01:00
Christian Zufferey
92a4771130 c pas encore le foot :-( 2020-01-26 17:42:02 +01:00
Christian Zufferey
b1dfd3ccfc wip 2020-01-26 17:26:45 +01:00
Christian Zufferey
564d08bb0b J'arrive à lire l'ADC0 et l'afficher, c'est déjà un bon début ;-) 2020-01-26 15:28:29 +01:00
Christian Zufferey
0b546dcf6d Ajouté les photos au README.md du projet ;-) 2020-01-26 11:50:40 +01:00
Christian Zufferey
c41db863c7 Commencé le projet de tests et décourvete avec le convertisseur ADC ADS1115 2020-01-26 11:39:03 +01:00
Christian Zufferey
cfdf2f2248 Ajouté une fonction btn verbose afin de pouvoir éteindre le clignotement de la LED depuis le bouton 2020-01-19 15:29:53 +01:00
Christian Zufferey
f14a9bae68 Continué à optimiser la RAM en ne chargeant les functions pour la mesure et l'envoi au Cloud que quand on en a besoin 2020-01-19 14:41:12 +01:00
Christian Zufferey
11630c1395 Purgé les variables plus utilisées 2020-01-19 10:35:21 +01:00
Christian Zufferey
48b41042bf Mis en service le mode verbose afin de pas polluer la console telnet avec tous les *prints* utilisés pour les debugs 2020-01-19 09:54:38 +01:00
Christian Zufferey
fb02f462f0 Ajouté la page WEB pour afficher la température et l'humidité 2020-01-18 18:17:36 +01:00
Christian Zufferey
d45caf2ea3 Corrigé quelques coquilles dans le Readme 2020-01-18 16:36:03 +01:00
Christian Zufferey
40798017e4 Ouf terminé enfin la docu :-) 2020-01-18 16:19:26 +01:00
Christian Zufferey
0d6984ff99 Amélioré ma gestion des secrets de projet :-) 2020-01-18 15:46:40 +01:00
Christian Zufferey
938b269228 wip 2020-01-18 12:37:25 +01:00
Christian Zufferey
cc0c52c88b wip 2020-01-18 12:27:00 +01:00
Christian Zufferey
504ac8ceb9 Et on continue à faire le readme ;-) 2020-01-18 12:24:00 +01:00
Christian Zufferey
eb74975989 Edition du readme ;-) 2020-01-18 11:46:32 +01:00
Christian Zufferey
a2ce3854c4 Rangé les dossiers bolo-thingspeak et bolo, commencé à rédiger le readme de bolo-thingspeak 2020-01-18 11:24:17 +01:00
Christian Zufferey
1f10958a8e Ajouté le nouveau projet mesures de température pour Bolo dans ThingSpeak ;-) 2020-01-15 20:06:48 +01:00
Christian Zufferey
a00b22765f Amélioré encore l'occupation mémoire du serveur WEB. Mon SonOff à l'air de fonctionner maintenant 2020-01-12 19:33:25 +01:00
Christian Zufferey
639be69b97 Amélioré l'api sur SonOff. J'ai toujours le wifi setup qui reboot quand il a une adresse ip de valide :-( 2020-01-12 17:11:01 +01:00
Christian Zufferey
411d725bb5 Voilà, bien amélioré la home page z_index.html avec l'affichage des GLOBALS à la fin et purge des variables plus utilisées dans le serveur WEB 2020-01-12 16:36:33 +01:00
Christian Zufferey
3573e2396a wip, corrigé un problème de 'send' de string 'vide' en LUA inline dans le serveur WEB 2020-01-12 16:09:35 +01:00
Christian Zufferey
6ea241b223 Trouvé le problème, c'était à nouveau une ligne dans le fichier .html qui était plus longue que 128 bytes :-( Profité pour nettoyer le code du serveur WEB ASP ZYX ;-) 2020-01-12 15:31:52 +01:00
Christian Zufferey
33f01d7114 wip 2020-01-11 13:53:14 +01:00
Christian Zufferey
6cb43da99c Bon j'ai enfin trouvé le problème, c'est quand il y a déjà une config wifi de ok que cela sortait automatiquement du setup wifi après la connexion. Maintenant avant de passer en setup wifi je vide la connexion wifi manuellement. Je dois encore sécuriser la demande de setup wifi pour ne pas le faire automatiquement en remote avec un code aléatoire 2020-01-11 12:42:34 +01:00
Christian Zufferey
3634607a34 Y'a de nouveau quelque chose qui ne marche plus, c'est dingue :-( 2020-01-10 20:05:18 +01:00
Christian Zufferey
ac5e21678e Mis à jour la docu des fichiers 'secrets' 2020-01-10 18:27:00 +01:00
Christian Zufferey
be32296b38 Voilà, ma nouvelle procédure de boot est terminée, enfin. Reste encore à la tester pendant un certain temps ;-) 2020-01-10 12:39:48 +01:00
Christian Zufferey
e580806239 Ouf, voilà, cela commence à refonctionner comme je le veux :-) 2020-01-09 18:57:40 +01:00
Christian Zufferey
c64bac0b05 wip 2020-01-09 13:50:37 +01:00
Christian Zufferey
c792ff6b21 Cela ne fonctionne pas encore :-( 2020-01-08 18:12:08 +01:00
Christian Zufferey
f4f4228827 Bien refactorisé ma procédure de boot, mais cela n'est pas encore terminé 2020-01-07 15:31:29 +01:00
Christian Zufferey
5716fbd93f Je suis à nouveau en train de refactoriser ma procédure de boot, car j'ai toujours des problèmes de mémoire. Cela ne fonctionne pas encore :-( 2020-01-06 23:32:50 +01:00
Christian Zufferey
b97ff69216 C'est bon maintenant le setup wifi marche bien mais j'ai encore des problèmes de mémoire juste après avoir eu une adresse ip :-( 2020-01-06 18:47:27 +01:00
Christian Zufferey
40ab0cde4b beuhh, ma superbe procédure de configuration automatique du wifi ne fonctionne plus :-( 2020-01-06 00:17:23 +01:00
Christian Zufferey
f3ee385aab Amélioré l'état de sortie de la home page (états de la LED et du RELAY, ainsi que le reste de la RAM) 2020-01-03 12:18:05 +01:00
Christian Zufferey
fe952c2062 Ajouté une WEB API pour le SonOff qui permet d'allumer la LED ou le RELAIS ;-) 2020-01-01 18:46:20 +01:00
Christian Zufferey
ebf9943c8c Corrigé les todo des différents projets en cours 2020-01-01 13:08:26 +01:00
Christian Zufferey
d5f28ce7e4 Corrigé le port de la LED sur le SonOff et refactorisé encore une fois la procédure de boot avec le WIFI_init. Le mode AP est maintenant au tout début de la phase de boot, afin de pouvoir voir l'adresse IP avant que boot2 ne plante 2020-01-01 12:46:20 +01:00
Christian Zufferey
eb7d0f8b48 Commencé le projet de reflashage d'un SonOff en Lua afin de pouvoir le programmer à distance sans devoir le brancher sur le port série 2020-01-01 11:13:30 +01:00
Christian Zufferey
f45dd0b58b wip 2019-12-28 23:21:40 +01:00
Christian Zufferey
39f5aa0dd1 Commencé un nouveau projet, mesure de la consommation électrique d'un installation triphasée avec un convertisseur ADC ADS1015 en I2C 2019-12-28 23:18:48 +01:00
Christian Zufferey
a74bab6d3d Commencé à écrire le script pour télécharger en masse via telnet, ne marche pas encore très bien :-( 2019-12-28 18:58:53 +01:00
Christian Zufferey
b2cceb4f64 Amélioré le listing des fichiers sur le NodeMCU avec luatool.py, maintenant les fichiers sont triés ;-) 2019-12-25 14:30:04 +01:00
Christian Zufferey
79224ea1e1 Ecrit le srcipt qui liste le contenu de chaque NodeMCU en remote 2019-12-25 14:06:31 +01:00
Christian Zufferey
7b667134c6 Ecrit le script pour créer en batch les tunnels SSH pour tous les NodeMCU en remotes via la passerelle SSH reverse 2019-12-25 13:55:52 +01:00
Christian Zufferey
9caf4894a8 wip 2019-12-24 14:28:44 +01:00
Christian Zufferey
363495914d wip 2019-12-23 23:38:15 +01:00
Christian Zufferey
cd6e4cb9a4 Etendu le délais du mode AP à 60 secondes au moment du boot pour avoir le temps de récupérer l'adresse IP du NodeMCU 2019-12-23 23:21:18 +01:00
Christian Zufferey
d67f5a38c8 Dû ajouter un fichier 'dir.lua' pour juste afficher les fichiers sur le NodeMCU car le dir2.lua consommait beaucoup trop de RAM 2019-12-23 15:15:02 +01:00
Christian Zufferey
459f4b0d62 Commencé à bosser sur l'effacement de la configuration WIFI depuis une page WEB 2019-12-22 23:58:34 +01:00
Christian Zufferey
bcf1a8ad75 wip 2019-12-22 20:09:45 +01:00
Christian Zufferey
cb4acdb653 Commencé à refactorisé la procédure de configuration du wifi quand il se trouve sur un autre AP 2019-12-22 18:29:24 +01:00
Christian Zufferey
fde43f3da8 wip 2019-12-21 15:59:55 +01:00
Christian Zufferey
f4ecc8746d Amélioré encore ma procédure de boot ;-) 2019-12-21 15:54:03 +01:00
Christian Zufferey
11ec004436 Fait un nouveau firmware minimaliste pour essayer de gagner de la RAM, mais finalement je n'ai gagné que 100 bytes de RAM :-( 2019-12-21 12:42:35 +01:00
Christian Zufferey
234d69ca49 Corrections de bugs dans le readme :-( 2019-12-19 19:25:07 +01:00
Christian Zufferey
2e61241c8c Terminé d'écrire la documentation pour la mesure d'humidité avec le HTU21D ;-) 2019-12-19 19:16:18 +01:00
Christian Zufferey
f7b0f65379 wip au niveau docu ;-) 2019-12-19 17:04:23 +01:00
Christian Zufferey
67752b954b wip 2019-12-19 16:42:41 +01:00
Christian Zufferey
051ffe730b Ajouté des photos et le schéma de câblage ;-) 2019-12-19 07:24:55 +01:00
Christian Zufferey
18347b83d2 Ajouté un 7e capteur, pas soudé sur le NodeMCU, pour mesurer la référence 2019-12-18 08:20:24 +01:00
Christian Zufferey
448d809523 Voilà, mes 6 sondes de mesures d'humidité/température pour Bolo fonctionnent super bien, je suis très content ;-) 2019-12-17 23:13:53 +01:00
Christian Zufferey
ba9001be0e Cela commence à envoyer des données à la DB InfluxDB :-) 2019-12-17 22:26:55 +01:00
Christian Zufferey
bb16121bb6 Dû refaire un firmware car j'avais oublié le module SNTP :-( 2019-12-17 21:59:06 +01:00
Christian Zufferey
5667f7b33b wip 2019-12-16 21:48:20 +01:00
Christian Zufferey
18480f8bb6 Enfin cela commence à bien fonctionner. Fait de l'ordre dans le code. Reste maintenant encore à envoyer les données dans la DB InfluxDB 2019-12-16 21:34:50 +01:00
Christian Zufferey
3350b3b21c Yeah ! cela fonctionne enfin. En fait cela ne fonctionne QUE avec certaines pines du NodeMCU. A creuser maintenant pourquoi ? 2019-12-16 12:07:35 +01:00
Christian Zufferey
ca0029ecb0 Incroyable après deux jours non stop pas moyen de faire fonctionner le module HTU21D de mesure d'humidité 2019-12-15 22:42:26 +01:00
Christian Zufferey
cff00d2d67 c'est la cata, y'a rien qui marche en I2C 2019-12-15 17:59:11 +01:00
Christian Zufferey
09a41ab6dc wip, cela ne marche vraiment pas du tout :-( 2019-12-15 13:56:45 +01:00
Christian Zufferey
0699933487 Commencé à travailler sur le capteur d'humidité HTU21D pour Bolo. Ne marche pas du tout encore :-( 2019-12-14 13:39:36 +01:00
Christian Zufferey
e2c4ec9966 Ajouté le projet mesure température pour Mario 2019-12-03 19:40:07 +01:00
Christian Zufferey
121548edad wip 2019-12-03 00:23:04 +01:00
Christian Zufferey
adf72b87b3 wip 2019-12-03 00:13:50 +01:00
Christian Zufferey
2f6dab3255 wip 2019-12-03 00:09:52 +01:00
Christian Zufferey
16bbfe2da2 Mis à jour le README.md avec les photos d'illustration 2019-12-03 00:01:02 +01:00
Christian Zufferey
4ad8719e61 Ajouté des images pour mon psychromètre 2019-12-02 23:54:35 +01:00
Christian Zufferey
9d80bfed26 Commencé le projet psychrometre pour l'étallonage d'hygromètres 2019-12-02 19:38:54 +01:00
Christian Zufferey
65b70e1115 Flashé le nouveau firware et uploadé tous les fichiers du projet humidity. Reste maintenant à écrire le code pour lire le capteur d'huminité ;-) 2019-12-01 23:35:01 +01:00
Christian Zufferey
02e90e839a Commencé le projet mesure d'humidité pour les locaux du Musée Bolo 2019-12-01 23:08:02 +01:00
Christian Zufferey
0e56311434 wip 2019-12-01 14:17:28 +01:00
Christian Zufferey
3b2d75eb83 Amélioré le README.md ;-) 2019-12-01 13:18:04 +01:00
Christian Zufferey
d9237bf108 Ajouté le super petit WIFI repeater sur NodeMCU :-) 2019-12-01 12:46:51 +01:00
Christian Zufferey
9d5d3722cc Mon parser regexp pour récupérer les arguments de mes requêtes GET dans wifi_set_conf.html ne fonctionne pas :-( 2019-11-24 23:41:30 +01:00
Christian Zufferey
86106f561e Ouf mon serveur web refonctionne, plus lentement, mais il fonctionne, 3h de perdues à cause de ce bug de file.readline :-( 2019-11-24 22:30:35 +01:00
Christian Zufferey
8b80e0f61f Gros problème, je me suis aperçu que la commande file.readline dans web_srv2.lua a un gros bug quand une ligne est longue, j'ai dû la réécrire et testée dans cat.lua. Me reste encore à corriger web_srv2.lua 2019-11-24 22:05:21 +01:00
Christian Zufferey
0b6f71ca95 Ajouté un script lua pour afficher la taille des fichiers dans le dossier du host, cela permet déjà de faire une première comparaison beaucoup plus rapide qu'avec le checksum sur le NodeMCU 2019-11-24 17:02:19 +01:00
Christian Zufferey
9c0ce19393 wip 2019-11-24 16:44:54 +01:00
Christian Zufferey
e6a7d6c191 wip 2019-11-24 15:46:00 +01:00
Christian Zufferey
29bcd3ff9e wip 2019-11-24 15:25:12 +01:00
Christian Zufferey
3d0389d8c4 Gros problème pour mon script dir2.lua, il bloque trop longtemps le NodeMCU et est inutilisable en en remote telnet. Je dois utiliser un callback 2019-11-24 14:37:08 +01:00
Christian Zufferey
cd354cba35 Voilà, maintenant mon checksum local/remote fonctionne corectement après l'utilisation de luatool.py. On peut maintenant bien comparer ce que l'on a sur le NodeMCU 2019-11-24 10:57:27 +01:00
Christian Zufferey
083eb1369c Corrigé le problème de supression des espaces inutiles dans le code lua envoyé au NodeMCU avec luatool.py, ce n'était plus possible alors de comparer leur checksum 2019-11-24 10:17:00 +01:00
Christian Zufferey
b39b45ac93 Encore des problèmes non résolus avec mon luatool.py quand je suis en mode serial, certains fichiers coincent sans raisons :-( 2019-11-23 14:57:19 +01:00
Christian Zufferey
6582e98d9f Voilà, ma fonction calcul de checksum des fichiers fonctionne sur le host ainsi que sur le NodeMCU, cerise: 95% du code est le même, donc facile à maintenir ;-) 2019-11-23 14:14:08 +01:00
Christian Zufferey
469becc873 wip 2019-11-23 14:03:27 +01:00
Christian Zufferey
564a5df953 Presque terminé le calcul des checksums des fichiers du dossier courant sur le host, cela commence à bien fonctionner 2019-11-10 20:01:45 +01:00
Christian Zufferey
58235715bd Commencer à tester la gestion des fichiers via un script lua sur le host au lieu du NodeMCU, ATTENTION, cela ne marche pas encore ! 2019-11-10 15:29:25 +01:00
Christian Zufferey
a8f2632eea Commencé à calculer le hash d'un fichier dans la fonction dir(), ne fonctionne pas encore :-( 2019-11-09 18:22:32 +01:00
Christian Zufferey
6b9078063e Fait la mise à jour en remote du .137 au crêt 5. Ca fonctionne bien :-) 2019-11-09 13:48:59 +01:00
Christian Zufferey
5fcb0e4225 wip 2019-11-08 17:53:56 +01:00
Christian Zufferey
e6f7b0db46 Commencé à refactoriser le WIFI_sniffer du crêt en me basant sur le MsL, ATTENTION, pour l'instant, cela ne fonctionne PAS ! ;-) 2019-11-08 17:38:50 +01:00
Christian Zufferey
c9716034cd wip 2019-10-30 21:12:36 +01:00
Christian Zufferey
03e73dcdd1 Re-complètement encore une fois refactorisé la procédure de boot, j'ai gagné 10kB de RAM, soit 25% :-) 2019-10-30 20:43:04 +01:00
Christian Zufferey
03a82341f0 Complètement en train de remanier la procédure de boot. Ne fonctionne pas encore ! 2019-10-30 19:58:42 +01:00
Christian Zufferey
9adbbabaed J'ai toujours encore des problèmes pour la configuration du WIFI en mode défaut, afin qu'il démarre automatiquement comme demandé :-( 2019-10-30 14:11:40 +01:00
Christian Zufferey
f61282391a Dû remonter le trig, car ce NodeMCU est vraiment moins sensible que les autres et je ne sniffe même pas tout le salon :-( 2019-10-30 08:03:32 +01:00
Christian Zufferey
f41dde57ce wip 2019-10-29 23:26:09 +01:00
Christian Zufferey
8bea48f359 wip 2019-10-29 23:19:20 +01:00
Christian Zufferey
a030bc82ab Essayé d'optimiser au maximum l'occupation RAM, mais sans trop de succès malheureusement :-( 2019-10-29 23:02:12 +01:00
Christian Zufferey
4eff40cf3c Complètement refactorisé la partie initialisation du WIFI au boot. On ne l'initialise PLUS au moment du boot ! 2019-10-29 21:59:33 +01:00
Christian Zufferey
9a625964db Fait une commande de sioux pour creuser un tunnel ssh direct via un tunnel ssh reverse pour arriver sur le NodeMCU au MsL ;-) 2019-10-28 20:55:05 +01:00
Christian Zufferey
d05e8fae79 wip 2019-10-28 19:19:39 +01:00
Christian Zufferey
524254d3b6 wip 2019-10-28 15:37:08 +01:00
Christian Zufferey
cecd75545a Commencé le projet wifi sniffer pour le MsL ;-) 2019-10-28 14:10:27 +01:00
Christian Zufferey
ad99120b7c Ajouté la fonction 'verbose' afin de pouvoir afficher les 'prints' pour le debug 2019-10-24 10:45:54 +02:00
Christian Zufferey
4bd148d049 Ajouté pleins de commandes pratiques à envoyer via le plugin atom-ide-terminal au NodeMCU remote en WIFI 2019-10-23 10:38:47 +02:00
Christian Zufferey
78ff437184 Commencé à travailler avec mon super nouvel outil: luatool. Je fais la maintenance de mon compteur energy de mon installation solaire 2019-10-23 09:57:00 +02:00
Christian Zufferey
40deda3365 Voilà mon luatool.py est bien réparé, je peux continuer enfin à tester mon plugin NodeMCU pour Atom ;-) 2019-10-21 16:20:11 +02:00
Christian Zufferey
29477ae92d wip 2019-10-21 16:10:38 +02:00
Christian Zufferey
e2d8734eb8 wip 2019-10-21 15:58:25 +02:00
Christian Zufferey
b801fcc16d J'ai l'air d'avoir trouvé le problème, mais ce n'est pas encore terminé :-( 2019-10-21 15:34:41 +02:00
Christian Zufferey
2e55f25f19 Mon luatool est tout cassé quand le plugin NodeMCU d'Atom tourne, je cherche encore pourquoi :-( 2019-10-21 10:28:02 +02:00
Christian Zufferey
e44a854393 wip 2019-10-21 10:08:06 +02:00
Christian Zufferey
2e9f01b498 Dû refaire un nouveau firmware, mais du coup mon luatool.py ne fonctionne plus :-( 2019-10-21 09:39:51 +02:00
Christian Zufferey
f2d779616b Commencé à bosser sur le plugin NodeMCU pour Atom 2019-10-21 09:16:09 +02:00
Christian Zufferey
bbd57138d1 Ajouté quelques exemples via WIFI dans le README.md ;-) 2019-10-20 21:27:59 +02:00
Christian Zufferey
dadbc09b68 Supprimé l'ancien serveur telnet 2019-10-20 21:08:45 +02:00
Christian Zufferey
043db99ebf Ouf, voilà tout fonctionne super bien, aussi bien en USB qu'en TELNET ! 2019-10-20 20:55:27 +02:00
Christian Zufferey
85966e9a08 wip 2019-10-20 20:12:53 +02:00
Christian Zufferey
0a161206d1 wip 2019-10-20 18:38:16 +02:00
Christian Zufferey
37babf725b Refactorisé encore une fois la branche IDE_remote afin de pouvoir ajouter luatool que j'ai remis au goût du jour ;-) 2019-10-20 18:21:13 +02:00
Christian Zufferey
2bde7567fe Super, maintenant cela marche vachement bien, enlevé tout le code de debug (toto) dans luatool.py ;-) 2019-10-20 18:05:50 +02:00
Christian Zufferey
063a809160 wip 2019-10-20 17:48:07 +02:00
Christian Zufferey
c6130fc82a ça marche un peu mieux mais ce n'est pas encore terminé :-( 2019-10-20 17:25:29 +02:00
Christian Zufferey
31c4cdf224 Commencé à travailler sur le plugin NodeMCU pour Atom, mais j'ai des problèmes de 'delay' avec l'utilitaire luatool.py encore à régler, il va trop vite entre les commandes envoyées 2019-10-20 15:09:29 +02:00
Christian Zufferey
c67426658a Terminé de tester le WEB IDE à Matthieu Borgognon, il est super sexy, mais consomme BEAUCOUP trop de RAM en l'état. 8'344 de plus que mon web_ide2.lua actuel ! 2019-10-20 13:37:48 +02:00
Christian Zufferey
32dc293415 Commencé à tester le petit WEB IDE de Matthieu Borgognon ;-) 2019-10-20 12:32:30 +02:00
Christian Zufferey
d1ffbc522c Complètement refactorisé la partie WEB_IDE pour en faire une IDE_remote. Ainsi je peux ajouter un petit nouveau SOCKET_IDE ;-) 2019-10-20 11:39:24 +02:00
Christian Zufferey
6ab29bd11b Dessiné enfin le schéma de mon power meter ;-) 2019-09-22 23:41:07 +02:00
Christian Zufferey
38eafb35db Modifié les deux READ.md afin de remettre les bons liens pour les photos qui ont bougés à cause de la dernière refactorisation :-) 2019-09-22 17:42:12 +02:00
Christian Zufferey
05950befe6 Encore une fois, complètement refactorisé ma structure de mesure de puissance et de température afin de pouvoir être le plus générique possible ;-) 2019-09-22 17:25:06 +02:00
1325 changed files with 90854 additions and 1289 deletions

5
.gitignore vendored
View File

@@ -1,3 +1,7 @@
t1
t2
t3
eus_params*
secret* secret*
credential* credential*
Icon? Icon?
@@ -46,4 +50,3 @@ luac.out
*.i*86 *.i*86
*.x86_64 *.x86_64
*.hex *.hex

View File

@@ -1,13 +1,13 @@
-- programme pour faire clignoter une LED version simplifiée -- programme pour faire clignoter une LED version simplifiée
print("\n blink_led2.lua zf181015.1138 \n") print("\n blink_led2.lua zf200203.1823 \n")
zLED=0 zLED=0
gpio.mode(zLED, gpio.OUTPUT) gpio.mode(zLED, gpio.OUTPUT)
ztmr_LED = tmr.create() ztmr_LED = tmr.create()
value = true value = true
tmr.alarm(ztmr_LED, 100, tmr.ALARM_AUTO, function () ztmr_LED:alarm(100, tmr.ALARM_AUTO, function ()
if value then if value then
gpio.write(zLED, gpio.HIGH) gpio.write(zLED, gpio.HIGH)
else else

View File

@@ -1,4 +1,4 @@
-- Petit script pour configurer le client WIFI du NodeMCU -- Petit script pour configurer le client WIFI du NodeMCU
print("\n wifi_cli_conf.lua zf180824.2000 \n") print("\n wifi_cli_conf.lua zf180824.2000 \n")
wifi.sta.config{ssid="3g-s7", pwd="12234567", save=true} wifi.sta.config{ssid="3g-s7", pwd="xxx", save=true}

View File

@@ -1,4 +1,4 @@
-- Petit script pour configurer le client WIFI du NodeMCU -- Petit script pour configurer le client WIFI du NodeMCU
print("\n wifi_cli_conf.lua zf180824.2000 \n") print("\n wifi_cli_conf.lua zf180824.2000 \n")
wifi.sta.config{ssid="3g-s7", pwd="12234567", save=true} wifi.sta.config{ssid="3g-s7", pwd="xxx", save=true}

View File

@@ -4,7 +4,7 @@ print("\n wifi_cli_conf.lua zf181205.1931 \n")
--credentials par défaut --credentials par défaut
cli_ssid="3g-s7" cli_ssid="3g-s7"
cli_pwd="12234567" cli_pwd="xxx"
--ses propre credentials --ses propre credentials
f= "credentials.lua" if file.exists(f) then dofile(f) end f= "credentials.lua" if file.exists(f) then dofile(f) end

View File

@@ -0,0 +1,116 @@
-- Teste le deep sleep !
-- s'endore pendant xx secondes après xx secondes
-- ATTENTION: il faut connecter la pin 0 à la pin RESET avec une résistance de 1k !
print("\n dsleep.lua zf200725.1053 \n")
zLED=4
f= "flash_led_xfois.lua" if file.exists(f) then dofile(f) end
function ztime()
tm = rtctime.epoch2cal(rtctime.get()+2*3600)
return (string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
end
function dsleep_on()
print("timer dsleep on...")
-- ztmr_SLEEP = tmr.create()
-- ztmr_SLEEP:alarm(2*1000, tmr.ALARM_SINGLE, function ()
print("Il est "..ztime().." et je vais dormir...")
tmr.delay(100*1000)
-- node.dsleep(4*1000*1000)
-- print(node.bootreason())
rtcmem.write32(10, 43690) --flag pour détecter le réveil dsleep au moment du boot
-- print("le flag est à "..rtcmem.read32(10))
wifi.setmode(wifi.NULLMODE,true)
rtctime.dsleep(4*1000*1000)
-- end)
end
--[[
dsleep_on()
print(node.bootreason())
print("le flag est à "..rtcmem.read32(10))
f= "wifi_info.lua" if file.exists(f) then dofile(f) end
function ztime()
tm = rtctime.epoch2cal(rtctime.get()+2*3600)
print(string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
end
print(ztime())
]]
-- on se réveil, vérifie si on peut avoir du réseau autrement on va redormir
function dsleep_wake_up()
print("Coucou, je suis réveillé... et il est "..ztime())
if wifi.sta.getip() == nil then
print("Unconnected...")
f = "0_wifi_scan.lua" if file.exists(f) then dofile(f) end
wifi.setmode(wifi.STATION)
scan_wifi()
else
print("Connected...")
end
-- f= "wifi_info.lua" if file.exists(f) then dofile(f) end
end
function zcat_logs_ap_wifi()
zfilei = file.open(z_logs_ap_wifi, "r")
zline=file.readline()
repeat
print(string.sub(zline,1,string.len(zline)-1))
zline=file.readline()
until zline== nil
file.close(zfilei)
end
-- function dsleep_off()
-- print("timer dsleep off...")
-- ztmr_SLEEP:unregister()
-- end
-- function watch_wifi_on()
-- dsleep_on()
-- ztmr_watch_wifi_on = tmr.create()
-- ztmr_watch_wifi_on:alarm(1*1000, tmr.ALARM_AUTO , function()
-- if wifi.sta.getip() == nil then
-- -- print("Unconnected... (on)")
-- else
-- ztmr_watch_wifi_on:stop()
-- print("Connected... (on)")
-- -- f= "wifi_info.lua" if file.exists(f) then dofile(f) end
-- watch_wifi_off()
-- end
-- end)
-- end
-- function watch_wifi_off()
-- dsleep_off()
-- ztmr_watch_wifi_on:unregister()
-- ztmr_watch_wifi_off = tmr.create()
-- ztmr_watch_wifi_off:alarm(1*1000, tmr.ALARM_AUTO , function()
-- if wifi.sta.getip() == nil then
-- ztmr_watch_wifi_off:stop()
-- print("Unconnected... (off)")
-- watch_wifi_on()
-- ztmr_watch_wifi_off:unregister()
-- else
-- -- print("Connected... (off)")
-- xfois = 2
-- blink_LED ()
-- end
-- end)
-- end
-- watch_wifi_on()
dsleep_wake_up()

View File

@@ -0,0 +1,148 @@
-- script telnet pour le socat
function telnet_listener(socket)
print("\n 0_rtelnet1.lua zf200621.2309 \n")
-- node, table, tmr, uwrite, tostring =
-- node, table, tmr, uart.write, tostring
print("................telnet_listener")
-- insert, remove, concat, heap, gc =
-- table.insert, table.remove, table.concat, node.heap, collectgarbage
fifo1, fifo1l, fifo2, fifo2l = {}, 0, {}, 0
-- local s -- s is a copy of the TCP socket if and only if sending is in progress
function flushGarbage()
if node.heap() < 13440 then collectgarbage() end
end
function sendLine()
if not s then return end
if fifo2l + fifo1l == 0 then -- both FIFOs empty, so clear down s
s = nil
return
end
flushGarbage()
if #fifo2 < 4 then -- Flush FIFO1 into FIFO2
table.insert(fifo2,table.concat(fifo1))
fifo2l, fifo1, fifo1l = fifo2l + fifo1l, {}, 0
end
rec = table.remove(fifo2,1)..(table.remove(fifo2,1) or '') ..(table.remove(fifo2,1) or '') .. (table.remove(fifo2,1) or '')
fifo2l = fifo2l - #rec
flushGarbage()
if srv_rt:getpeer()~=nil then
s:send(rec)
end
end
local F1_SIZE = 256
function queueLine(str)
while #str > 0 do -- this is because str might be longer than the packet size!
k, l = F1_SIZE - fifo1l, #str
if #fifo1 >= 32 or (k < l and k < 16) then
table.insert(fifo2, table.concat(fifo1))
fifo2l, fifo1, fifo1l, k = fifo2l + fifo1l, {}, 0, F1_SIZE
end
if l > k+16 then -- also tolerate a size overrun of 16 bytes to avoid a split
chunk, str = str:sub(1,k), str:sub(k+1)
else
chunk, str = str, ''
end
table.insert(fifo1, chunk)
fifo1l = fifo1l + #chunk
end
if not s and socket then
s = socket
sendLine()
else
flushGarbage()
end
end
function receiveLine(s, line)
node.input(line)
end
function disconnect(_,zerr)
node.output(nil)
gpio.write(zLED, gpio.HIGH)
print("................disconnect")
if socket~=nil then
-- if http_post~=nil then http_post(influxdb_url,"energy,memory=srv_rt_no_nil_"..yellow_id.." ram="..node.heap()) end
print("................disconnect 2e", socket, socket:getpeer())
socket:on("connection", nil)
socket:on("reconnection", nil)
socket:on("disconnection", nil)
socket:on("receive", nil)
socket:on("sent", nil)
socket=nil
end
-- fifo1, fifo1l, fifo2, fifo2l, s = nil, nil, nil, nil, nil
print("disconnected... "..zerr..", "..node.heap())
-- if debug_rec~=nil then debug_rec("disconnect, disconnected, "..zerr..", "..node.heap()) end
-- node, table, tmr, uwrite, tostring = nil, nil, nil, nil, nil
-- insert, remove, concat, heap, gc = nil, nil, nil, nil, nil
-- fifo1, fifo1l, fifo2, fifo2l = nil, nil, nil, nil
-- rec = nil
-- s = nil
-- socket = nil
-- flushGarbage = nil
-- sendLine = nil
-- queueLine = nil
-- receiveLine = nil
-- zconnection = nil
-- disconnect = nil
-- -- telnet_listener=nil
fifo1, fifo1l, fifo2, fifo2l = nil, nil, nil, nil
rec = nil
k = nil
l = nil
s = nil
chunk = nil
socket = nil
flushGarbage = nil
sendLine = nil
queueLine = nil
receiveLine = nil
zconnection = nil
disconnect = nil
telnet_listener=nil
srv_rt=nil
-- collectgarbage()
rt_connect()
end
--zzz
function zconnection(s)
print("socket: ",socket)
if socket~=nil then
-- if http_post~=nil then http_post(influxdb_url,"energy,memory=srv_rt_no_nil_"..yellow_id.." ram="..node.heap()) end
print(socket:getpeer())
end
local zstr="zconnection, Oups, on ne devrait jamais passer par là to NodeMCU world."
print(zstr) if debug_rec~=nil then debug_rec(zstr) end
socket=nil
end
socket:on("connection", zconnection)
socket:on("receive", receiveLine)
socket:on("disconnection", disconnect)
socket:on("sent", sendLine)
node.output(queueLine, 0)
-- print(queueLine, 0)
end

View File

@@ -0,0 +1,115 @@
--[[
tests connection reverse telnet commande à faire tourner sur le GATEWAY !
1ere console
pour une liaison directe:
socat TCP-LISTEN:23064,fork,reuseaddr STDIO
pour une console sur un port:
socat TCP-LISTEN:23043,reuseaddr,fork TCP-LISTEN:23000,reuseaddr,bind=127.0.0.1
2e console
telnet -r localhost 23000
]]
--[[
tests connection reverse telnet commande à faire tourner sur le GATEWAY ET sur sa MACHINE !
1ere console sur le GATEWAY
socat TCP-LISTEN:23043,reuseaddr,fork TCP-LISTEN:23000,reuseaddr,bind=127.0.0.1
2e console sur sa MACHINE
ssh -L 23000:localhost:23000 user@GATEWAY
3e console sur sa MACHINE (~.return pour sortir !)
telnet -r localhost 23000
ou sur MAC
telnet -rN localhost 23000
]]
print("\n 0_tst5_socat.lua zf200628.1458 \n")
function rt_connect()
-- print("................rt_connect")
collectgarbage()
local zlaps=tmr.now()/1000000-ztime_connect
-- print("time of retry connect... "..zlaps)
-- if debug_rec~=nil then debug_rec("time of retry connect... "..zlaps..", "..node.heap()) end
if zlaps>1 then
local zstr="trying connect to "..console_host..":"..console_port..", "..node.heap()
-- if debug_rec~=nil then debug_rec(zstr) end
if verbose==verbose then
gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH)
-- print(zstr)
end
if http_post~=nil then http_post(influxdb_url,"energy,memory=socat_try_con_"..yellow_id.." ram="..node.heap()) end
ztime_connect=tmr.now()/1000000
srv_rt=nil
srv_rt = net.createConnection(net.TCP, 0)
srv_rt:on("connection", function(sck)
print("................connection")
if debug_rec~=nil then debug_rec("rt_connect, srv_rt:on, connected on, "..node.heap()) end
collectgarbage()
-- if verbose then
gpio.write(zLED, gpio.LOW)
print("connected on "..console_host..":"..console_port..", "..node.heap())
print(node.heap())
-- end
if http_post~=nil then http_post(influxdb_url,"energy,memory=socat_connected_"..yellow_id.." ram="..node.heap()) end
dofile("0_rtelnet1.lua")
telnet_listener(sck)
print("Welcome to NodeMCU world.")
end)
srv_rt:on("reconnection", function(sck)
-- print(";;;;;;;;;;;;;;;;reconnection")
srv_rt:on("connection", nil)
srv_rt:on("reconnection", nil)
end)
-- srv_rt:on("disconnection", function(sck)
-- print(";;;;;;;;;;;;;;;;disconnection")
-- end)
--
-- srv_rt:on("receive", function(sck)
-- print(";;;;;;;;;;;;;;;;receive")
-- end)
--
-- srv_rt:on("sent", function(sck)
-- print(";;;;;;;;;;;;;;;;sent")
-- end)
srv_rt:connect(console_port,console_host)
else
print("on ne se reconnecte pas vite 1x...")
end
collectgarbage()
end
function rt_launch()
-- if http_post~=nil then http_post(influxdb_url,"energy,memory=tmr_socat1_"..yellow_id.." ram="..node.heap()) end
if srv_rt~=nil then
-- if http_post~=nil then http_post(influxdb_url,"energy,memory=srv_rt_no_nil_"..yellow_id.." ram="..node.heap()) end
if console_port ~= srv_rt:getpeer() then
rt_connect()
end
else
rt_connect()
end
end
tmr_socat1=tmr.create()
tmr_socat1:alarm(20*1000, tmr.ALARM_AUTO , rt_launch)
ztime_connect=tmr.now()/1000000-10
rt_launch()
print("Revers telnet server running...\n")

View File

@@ -0,0 +1,56 @@
-- Scripts pour tester l'écoute des AP WIFI
print("\n wifi_scan.lua zf200725.1053 \n")
f= "secrets_project.lua" if file.exists(f) then dofile(f) end
-- https://www.epochconverter.com/
ztime2020 = 1577836800 -- Unix time pour 1.1.2020 0:0:0 GMT
-- sauvegarde les données dans la flash du NodeMCU
function save_flash(zstr_ap_wifi)
ztime1 = tostring(rtctime.get() + 2*3600 - ztime2020)
local zstr = ztime1..", "..zstr_ap_wifi
if verbose then print("saving to flash: "..zstr) end
file.open(z_logs_ap_wifi, "a+") file.writeline(zstr) file.close()
end
-- print AP list in new format
function scan_wifi()
print(ztime())
function listap(t)
print("start display liste ap wifi...")
for k,v in pairs(t) do
-- local ssid, rssi, authmode, channel = string.match(v, "([^,]+),([^,]+),([^,]+),([^,]*)")
-- print(ssid,rssi)
-- print(k.." : "..v)
-- local zstr = k..", "..v
local zstr = v
save_flash(zstr)
end
print("end display...")
dsleep_on()
end
print("wifi scan...")
wifi.sta.getap(1, listap)
end
--[[
scan_wifi()
]]
--[[
-- Print AP list that is easier to read
function listap(t) -- (SSID : Authmode, RSSI, BSSID, Channel)
print("\n\t\t\tSSID\t\t\t\t\tBSSID\t\t\t RSSI\t\tAUTHMODE\t\tCHANNEL")
for bssid,v in pairs(t) do
local ssid, rssi, authmode, channel = string.match(v, "([^,]+),([^,]+),([^,]+),([^,]*)")
print(string.format("%32s",ssid).."\t"..bssid.."\t "..rssi.."\t\t"..authmode.."\t\t\t"..channel)
end
end
wifi.sta.getap(1, listap)
]]

View File

@@ -0,0 +1,188 @@
# Enregistre sur la FLASH tous les AP WIFI vu lors du réveil du NodeMCU
Version qui utilise la fonctionnalité d'enregistrer dans la mémoire rtc-mem un flag qui permet de détecter lors du boot si l'on sort du *sommeil profond*. Car quand le NodeMCU sort du *sommeil profond*, c'est une pin D0 qui fait un RESET une résistance de 1k !
Nécessite donc d'avoir le module rtc-mem dans le firmware du NodeMCU
zf200725.1140
<!-- TOC titleSize:2 tabSpaces:2 depthFrom:1 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 skip:1 title:1 charForUnorderedList:* -->
## Table of Contents
* [Buts](#buts)
* [Problématiques](#problématiques)
* [Astuces de mesures de la distance au moyen du senseur ultrason](#astuces-de-mesures-de-la-distance-au-moyen-du-senseur-ultrason)
* [Schéma](#schéma)
* [Astuces](#astuces)
* [Installation](#installation)
* [Utilisation](#utilisation)
* [Upload Lua code](#upload-lua-code)
* [Secrets pour le projet](#secrets-pour-le-projet)
* [Rename initz.lua pour le boot automatique](#rename-initzlua-pour-le-boot-automatique)
* [Utilisation de la console du NodeMCU en remote](#utilisation-de-la-console-du-nodemcu-en-remote)
* [Visualisation sur Grafana/InfluxDB](#visualisation-sur-grafanainfluxdb)
<!-- /TOC -->
## Buts
Petit projet pour *géolocaliser* un chat lors de ses sorties à l'extérieur afin de *voir* où il va.
Le but étant de fixer un NodeMCU avec un collier au coup d'un chat et d'enregistrer sur la FLASH tous les AP WIFI vu lors de la sortie.
Après, en post traitement sur l'ordi, on arrive à faire la corrélation AP WIFI coordonnées GPS et pourvoir tracer (géolocaliser) la sortie du chat sans avoir besoin d'utiliser un module GPS qui est trop gros pour le mettre dans un collier.
## Problématiques
La problématique c'est que le NodeMCU doit fonctionner sur une batterie très petite, 400mA/h de capacité.
Le NodeMCU doit donc *dormir* la plus part du temps si l'on veut pouvoir utiliser le *pet tracker* sur plusieurs jours sans devoir recharger la batterie à chaque sortie.
ATTENTION, tout le reste provient d'un autre readme ! zf200725.1116
Petit projet pour mesurer la hauteur d'eau dans un réservoir de 100l au moyen d'un senseur à ultrason utilisé pour de la robotique récréative.
Le but est de mesurer la distance entre le haut du bidon et la surface de l'eau dans le bidon et ainsi pouvoir en déduire le pourcentage de remplissage du bidon.
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/water-level/water-level_ruru_1/img/20200625_163032.jpg)
Senseur à ultrason, très bon marché, permettant de mesurer la distance
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/water-level/water-level_ruru_1/img/20200625_160818.jpg)
NodeMCU autonome, alimenté ici par une batterie, faisant la lecture de la hauteur d'eau et envoyant le résultat dans une DB InfluxDB via le WIFI
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/water-level/water-level_ruru_1/img/20200625_164022.jpg)
Banc test dans le jardin pour vérifier le bon fonctionnement du système
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/water-level/water-level_ruru_1/img/grafana2020-06-25.16.54.32.png)
Graphique obtenu lors du banc test avec de l'eau dans le jardin
<br><br>
On peut voir ici, avec ce projet assez complet, toutes les possibilités offertes de la programmation des NodeMCU en LUA, en mode événementiel. <br>
Choses qui ne seraient pas possible si on l'avait fait en C++ (mode Arduino), comme par exemple:
* crontab, horloge pour les mesures
* envoi des données sur la DB InfluxDB
* serveur reverse TELNET, traversant tous les routers sans devoir en modifier la configuration, permettant d'accéder à la console série (USB) du NodeMCU
Toutes les fonctions sont bien séparées dans des scripts, cela *complexifie* le projet mais ce qui facilite la portabilité entre les projets et aussi sa mise au point.
## Astuces de mesures de la distance au moyen du senseur ultrason
Dans ce projet il y a 1x NodeMCU qui mesure la hauteur d'eau dans le bidon au moyen d'un senseur à ultrason utilisé pour de la robotique récréative très bon marché, 0.70FS
https://www.aliexpress.com/item/32477198302.html
https://cdn.sparkfun.com/datasheets/Sensors/Proximity/HCSR04.pdf
Il n'y a pas de *module* NodeMCU pour ce senseur, mais son utilisation en Lua est vraiment très simple, il suffit juste d'envoyer une *pulse* de 10uS sur la pin *trig* et de *connecter* une interruption du NodeMCU sur la pin *echo*. <br>
Après une simple règle de trois en relation avec la vitesse du son dans l'air et on a la distance en cm.
### Schéma
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/water-level/water-level_ruru_1/schemas/schema.png)
Le schéma est vraiment très simple !
### Astuces
* La seul problématique dans ce projet c'est que le senseur DOIT absolument être alimenté en 5V et que le NodeMCU lui est en 3.3V. <br>
Il faut donc lui ajouter une petite résistance, R1, d'adaptation du niveau pour le signal pour l'interruption du NodeMCU.
## Installation
Il faut *flasher* le NodeMCU avec ce firmware:
https://github.com/zuzu59/NodeMCU_Lua/blob/master/Firmware/nodemcu-master-19-modules-2019-12-31-16-40-12-float.bin
Avec ces modules:
https://github.com/zuzu59/NodeMCU_Lua/blob/master/Firmware/nodemcu-master-19-modules-2019-12-31-16-40-12-float.pdf
## Utilisation
### Upload Lua code
Après avoir *flashé* le NodeMCU avec le bon *firmware* il faut télécharger tous les fichiers \*.lua sur le NodeMCU.
### Secrets pour le projet
Mais il faut aussi bien *remplir* et charger sur le NodeMCU, le fichier des secrets du projet:
```
secrets_project.lua
```
ainsi que le fichier des secrets pour le WIFI
```
secrets_wifi.lua
```
Tout en sachant que les variables utilisées pour les secrets sont utiles pour:
* **znode_chipid == nnn then**<br>
C'est l'id du NodeMCU que chaque NodeMCU ont gravé dans leur mémoire, on peut le lire avec cette commande:
```
=node.chipid()
```
* **node_id = "ttt"**<br>
C'est le nom de *fonction* du NodeMCU qui sera *visible* dans la DB InfluxDB
* **yellow_id = nn**<br>
C'est le *numéro* du NodeMCU que l'on indique sur une *petite étiquette jaune collée* sur le NodeMCU. Ce *numéro* permet par la suite de connaitre très facilement le numéro du *port* utilisé pour le *reverse telnet* quand on veut accéder à la console série du NodeMCU
* **-- thingspeak_url="http://api.thingspeak.com/update?api_key=kkk"**<br>
Pas utilisé dans ce projet
* **influxdb_url="http://uuu:8086/write?db=ddd&u=admin&p=ppp"**<br>
Secrets utilisés pour envoyer des données sur le DB InfluxDB
* **console_host = "uuu" console_port = 23000+yellow_id**<br>
Serveur utilisé pour le *tremplin* du reverse telnet utilisé pour accéder à la console série du NodeMCU au moyen d'un *socat*. L'information d'utilisation se trouve dans le fichier 0_tst5_socat.lua
* **-- zdyndns_host = "hhh" zdyndns_port = nnn**<br>
Pas utilisé dans ce projet
### Rename initz.lua pour le boot automatique
Ne pas oublier après avoir vérifié que tout fonctionne bien de *renommer* le fichier **initz.lua** en **init.lua** afin que quand le NodeMCU puisse démarrer automatiquement le code et bien fonctionner de manière autonome.
### Utilisation de la console du NodeMCU en remote
Très pratique pour le debug, on peut directement modifier le code source Lua du NodeMCU en remote via un *reverse telnet*. Plus d'info dans le fichier 0_tst5_socat.lua.
On peut aussi modifier le code Lua du NodeMCU en remote avec l'utilitaire *luatools.py*
### Visualisation sur Grafana/InfluxDB
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/water-level/water-level_ruru_1/img/grafana2020-06-25.16.54.32.png)
Graphique obtenu lors du banc test avec de l'eau dans le jardin
La totale en détail
https://github.com/zuzu59/docker-influxdb-grafana
pense bête:
```
file.open("hello.lua","w+")
file.writeline([[print("hello nodemcu")]])
file.writeline([[print(node.heap())]])
file.close()
```

View File

@@ -0,0 +1,35 @@
-- Petit script pour configurer les secrets dans ce projet
-- et que l'on n'aimerait pas être exportés sur Internet (github)
-- Il faut donc modifier le .gitignore avec secrets*.lua
-- il faut le renommer en 'secrets_project.lua' et sera exécuté
-- par 'wifi_init.lua' au moment du boot
function secrets_project()
print("\n secrets_project.lua zf200625.1146 \n")
zLED=4 zBTN=3 node_id = "generic"
znode_chipid=node.chipid() print("znode_chipid:",znode_chipid)
if znode_chipid == iii then node_id = "sonoff_1" zLED=7 end
if znode_chipid == iii then node_id = "sonoff_2" zLED=7 end
if znode_chipid == iii then
node_id = "level1"
yellow_id = nn
-- thingspeak_url="http://api.thingspeak.com/update?api_key=kkk"
influxdb_url="http://uuu:8086/write?db=ddd&u=admin&p=ppp"
print("influxdb_url: "..influxdb_url)
console_host = "uuu" console_port = 23000+yellow_id
-- zdyndns_host = "hhh" zdyndns_port = nnn
end
znode_chipid=nil
print("node_id: "..node_id..", console_port: "..console_port)
end
secrets_project()
secrets_project=nil
--[[
=node.chipid()
]]

View File

@@ -0,0 +1,18 @@
-- Petit script pour configurer les secrets utilisés pour le wifi
-- et que l'on n'aimerait pas être exportés sur Internet (github)
-- Il faut donc modifier le .gitignore avec eus_params* et secret*
-- il faut le renommer en 'secrets_wifi.lua' et sera exécuté
-- par 'wifi_init.lua' une fois pour la configuration du WIFI
function secrets_wifi()
print("\n secrets_wifi.lua zf191222.2002 \n")
f= "eus_params.lua" if file.exists(f) then p = dofile(f) end
if p ~= nil then
cli_ssid = p.wifi_ssid cli_pwd = p.wifi_password p=nil
else
cli_ssid = "" cli_pwd = ""
end
ap_ssid="sss" ap_pwd="ppp"
end
secrets_wifi()

View File

@@ -0,0 +1,16 @@
zf200724.1053
print(ztime())
dsleep_on()
zcat_logs_ap_wifi()
print(node.bootreason())
print("le flag est à "..rtcmem.read32(10))
f= "wifi_info.lua" if file.exists(f) then dofile(f) end

View File

@@ -0,0 +1,301 @@
# Quelques commandes remote (luatool) à envoyer avec le plugin Atom-IDE-terminal de l'éditeur Atom
# zf200720.2019
Todo à faire pour ce projet !
???
# si luatool ne marche pas sur le MAC, il faut lire ceci:
# https://docs.google.com/document/d/1q64uK3IMOgEDdKaIAttbYuFt4GuLQ06k3FLeyfCsWLg/edit#heading=h.bmefcu67uwj0
# raccourcis clavier
# CTRL+ALT+ENTER envoie au terminal la ligne de l'éditeur
# SHIT+CTRL+` ouvre le terminal (attention, ne pas oublier de copier le *path* dans le *tree* et le changer)
# ALT+CMD+F bascule entre le terminal et l'éditeur
# définitions à faire AVANT !
#export luatool_tty="/dev/cu.wchusbserial1410"
#export zIP="192.168.0.182"
#export zport="23"
export zIP="localhost"
export zport="23000"
# ouvrir et fermer (ALT+N+.) une session telnet sur le NodeMCU avec l'adresse zIP)
telnet -rN $zIP $zport
~.
--node.restart()
collectgarbage()
=node.heap()
for k,v in pairs(_G) do print(k,v) end
################################
# commandes lua pour ce projet #
################################
# pour les tests en direct sur la gateway
ssh ubuntu@www.zuzu-test.ml
socat TCP-LISTEN:23069,fork,reuseaddr STDIO
################################
# pour les tests en remote
killall -9 ssh
ssh ubuntu@www.zuzu-test.ml killall -9 socat
ssh ubuntu@www.zuzu-test.ml socat TCP-LISTEN:23010,reuseaddr,fork TCP-LISTEN:23000,reuseaddr,bind=127.0.0.1 &
# SHIFT+CMD+K SHIFT+CMD+K ALT+CMD+F
watch -n 1 'ssh ubuntu@www.zuzu-test.ml netstat -nat |grep 230'
# ALT+CMD+F CTRL+C ALT+CMD+F
export zIP="localhost"
export zport="23000"
ssh -N -L 23000:localhost:23000 ubuntu@www.zuzu-test.ml &
telnet -rN $zIP $zport
verbose=false
~.
=node.heap()
verbose=true
node.restart()
dofile("head.lua")
zhead("0_ultra_son.lua")
./luatool.py --ip $zIP:$zport -f boot.lua
./luatool.py --ip $zIP:$zport -f 0_get_power.lua
./luatool.py --ip $zIP:$zport -f 0_cron.lua
./luatool.py --ip $zIP:$zport -f 0_http_post.lua
./luatool.py --ip $zIP:$zport -f 0_tst5_socat.lua
./luatool.py --ip $zIP:$zport -f 0_ultra_son.lua
./luatool.py --ip $zIP:$zport --zrestart
= node.bootreason()
# https://nodemcu.readthedocs.io/en/master/modules/node/#nodebootreason
for k,v in pairs(_G) do print(k,v) end
verbose=true
#zdyn
./luatool.py --ip $zIP:$zport -f api_sonoff.html
http://192.168.0.182
./luatool.py --ip $zIP:$zport -f dir.lua
telnet -rN $zIP $zport
verbose=false
verbose=true
~.
=node.heap()
collectgarbage()
=node.heap()
dofile("dir.lua")
dir()
for k,v in pairs(_G) do print(k,v) end
dofile("wifi_info.lua")
node.restart()
~.
./luatool.py --ip $zIP:$zport -f head.lua
telnet -rN $zIP $zport
dofile("head.lua")
zhead("boot.lua")
verbose=true
verbose=false
zsort_rssi() zshow()
#commandes luatool pour ce projet le .137 est à jour avec la nouvelle version du wifi !
~.
./luatool.py --ip $zIP:$zport -l
./luatool.py --ip $zIP:$zport -f wifi_init.lua
./luatool.py --ip $zIP:$zport -f secrets_wifi.lua
./luatool.py --ip $zIP:$zport -f initz.lua -t init.lua
./luatool.py --ip $zIP:$zport -f boot.lua
./luatool.py --ip $zIP:$zport -f boot2.lua
./luatool.py --ip $zIP:$zport -f wifi_init.lua
./luatool.py --ip $zIP:$zport -f set_time.lua
./luatool.py --ip $zIP:$zport -f wifi_info.lua
./luatool.py --ip $zIP:$zport -f c.lua
./luatool.py --ip $zIP:$zport -f cat.lua
./luatool.py --ip $zIP:$zport -f flash_led_xfois.lua
./luatool.py --ip $zIP:$zport -f head.lua
./luatool.py --ip $zIP:$zport -f b.lua
./luatool.py --ip $zIP:$zport -f web_srv2.lua
./luatool.py --ip $zIP:$zport -f z_index.html
./luatool.py --ip $zIP:$zport -f wifi_get_conf.html
./luatool.py --ip $zIP:$zport -f wifi_set_conf.html
./luatool.py --ip $zIP:$zport -f z_page1.html
./luatool.py --ip $zIP:$zport -f z_page2.html
./luatool.py --ip $zIP:$zport -f z_page3.html
./luatool.py --ip $zIP:$zport -f z_page4.html
./luatool.py --ip $zIP:$zport --delete wifi_ap_start.lua
./luatool.py --ip $zIP:$zport --delete wifi_cli_conf.lua
./luatool.py --ip $zIP:$zport --delete wifi_cli_start.lua
./luatool.py --ip $zIP:$zport --delete dir.lua
./luatool.py --ip $zIP:$zport --delete initz.lua
./luatool.py --ip $zIP:$zport --delete wifi_conf.lua
dofile("wifi_info.lua")
--node.restart()
for k,v in pairs(_G) do print(k,v) end
t=12
t=nil
print(pcall(function () print("2"..t) end))
# ici c'est maintenant ;-)
~.
./luatool.py --ip $zIP:$zport -f b.lua
#./luatool.py --ip $zIP:$zport --zrestart
telnet -rN $zIP $zport
zsort_rssi() zshow()
print(ztrig_rssi)
ztrig_rssi=-1000
ztrig_rssi=-90
# test de la gestion des erreurs
~.
./luatool.py --ip $zIP:$zport -f c.lua
#./luatool.py --ip $zIP:$zport --zrestart
telnet -rN $zIP $zport
status, err = pcall(function () dofile("c.lua") end) if status==false then print("Error: ",err) end
zerr=nil
zerr=1
ztmr_tst_err:unregister()
ztmr_tst_err:unregister()
for k,v in pairs(_G) do print(k,v) end
./luatool.py --ip $zIP --zrestart
# faire un cat d'un fichier sur le NodeMCU
dofile("cat.lua")
cat("boot2.lua")
# commandes luatool
./luatool.py -h
./luatool.py --ip $zIP:$zport -i
./luatool.py --ip $zIP:$zport -l
./luatool.py --ip $zIP:$zport -f toto.lua -d
./luatool.py --ip $zIP:$zport --delete toto.lua
****************************************************************************
# création des tunnels ssh
ATTENTION: dans un premier terminal !
Pour Bolo à Ruchonnet:
ssh -t -L 2323:localhost:2323 ubuntu@www.zuzu-test.ml ssh -N -L 2323:192.168.8.102:23 ubuntu@localhost -p 20223
Pour le Crêt
ssh -N -L 2323:192.168.0.137:23 admin@z.zufferey.com -p 1822
ssh -N -L 2323:192.168.0.122:23 admin@z.zufferey.com -p 1822
ssh -N -L 2323:192.168.0.118:23 admin@z.zufferey.com -p 1822
ATTENTION: dans un deuxième terminal !
export zIP="localhost"
export zport="2323"
telnet -rN $zIP $zport
~.
=node.heap()
verbose=false
verbose=true
dofile("dir2.lua")
dir()
filec("head.lua")
dofile("head.lua")
zhead("dir2.lua")
dofile("cat.lua")
cat("head.lua")
~.
--node.restart()
=node.heap()
status, err = pcall(function () fonction_a_tester() end) if status==false then print("Error: ",err) end
status, err = pcall(function () toto() end) if status==false then print("Error: ",err) end
Gestion de la passerelle SSH reverse
Puis depuis une autre console on peut faire directement pour aller sur l'OpiZ (ici le 20223):
ssh -t ubuntu@www.zuzu-test.ml ssh ubuntu@localhost -p 20223
ou
1ère console
On établit le tunnel local avec l'OpiZ
ssh -N -L 20223:localhost:20223 ubuntu@www.zuzu-test.ml
2ème console, on utilise le tunnel OpiZ en local sur sa machine
pour aller sur l'OpiZ
ssh ubuntu@localhost -p 20223
pour copier sa clef SSH depuis un MAC
./ssh-copy-id -i ~/.ssh/id_rsa.pub 'ubuntu@localhost -p 20223'
après on devrait pouvoir se connecter sans devoir entrer son password à chaque fois
ssh ubuntu@localhost -p 20223
ou, on établit un tunnel pour telnet sur un NodeMCU
ssh -L 2323:192.168.0.137:23 ubuntu@localhost -p 20223
puis
telnet -rN localhost 2323
ou, on établit un tunnel pour le rpimonotor sur l'OpiZ
ssh -N -L 8888:192.168.0.113:8888 ubuntu@localhost -p 20223
puis
http://localhost:8888
ou, on établit un tunnel proxy Socket 5 pour le modem 4G HUAWEI sur l'OpiZ
ssh -N -D 8080 ubuntu@localhost -p 20223
puis depuis le browser FireFox avec le plugin FoxyProxy Socket 5 sur localhost port 8080
http://192.168.8.1
.

View File

@@ -0,0 +1,77 @@
-- Scripts à charger après le boot pour démarrer son projet
function boot()
print("\n boot.lua zf200722.1944 \n")
print("On lance le boot...")
collectgarbage() print(node.heap())
local f
-- f = "0_http_post.lua" if file.exists(f) then dofile(f) end
-- collectgarbage() print(node.heap())
-- local _, boot_reason = node.bootreason()
-- zarg_boot= "energy,memory=boot_"..yellow_id.." ram="..node.heap().."\n"
-- zarg_boot=zarg_boot.."energy,value=boot_reason_"..yellow_id.." val="..boot_reason
-- http_post(influxdb_url,zarg_boot)
f = "set_time.lua" if file.exists(f) then dofile(f) end
print(node.heap()) collectgarbage() print(node.heap())
f = "0_dsleep2.lua" if file.exists(f) then dofile(f) end
print(node.heap()) collectgarbage() print(node.heap())
-- f = "0_wifi_scan.lua" if file.exists(f) then dofile(f) end
-- print(node.heap()) collectgarbage() print(node.heap())
-- f = "flash_led_xfois.lua" if file.exists(f) then dofile(f) end
-- print(node.heap()) collectgarbage() print(node.heap())
-- f = "0_zdyndns.lua" if file.exists(f) then dofile(f) end
-- print(node.heap()) collectgarbage() print(node.heap())
-- f="0_btn_flipflop.lua" if file.exists(f) then dofile(f) end
-- collectgarbage() print(node.heap())
-- f="0_ultra_son.lua" if file.exists(f) then dofile(f) end
-- collectgarbage() print(node.heap())
-- f="0_cron.lua" if file.exists(f) then dofile(f) end
-- collectgarbage() print(node.heap())
verbose = true
print("verbose: ",verbose,"\nle boot est lancé...")
gpio.write(zLED, gpio.HIGH)
f=nil boot=nil
end
-- function debug_rec(zdebug)
-- local sec, usec = rtctime.get() local tm = rtctime.epoch2cal(sec + 2*3600)
-- local ztm = string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"])
-- file.open("00_debug.txt", "a+") file.writeline(ztm.."."..usec..", "..zdebug) file.close()
-- end
--
-- function rec_boot()
-- sntp.sync(nil, nil, nil, 1)
-- tmr_rec_boot1=tmr.create()
-- tmr_rec_boot1:alarm(1*1000, tmr.ALARM_AUTO, function()
-- print("beep...")
-- if rtctime.get() > 0 then
-- tmr_rec_boot1:unregister()
-- print("Voilà on à l'heure, on peut enregistrer la raison du boot...")
-- local _, zboot_reason, zboot_detail = node.bootreason()
-- debug_rec("boot reason: "..zboot_reason)
-- tmr_rec_boot1=nil rec_boot=nil
-- collectgarbage() print(node.heap())
-- end
-- end)
-- end
verbose=true
if rec_boot~=nil then rec_boot() end
boot()
collectgarbage() print(node.heap())
--[[
verbose = true
verbose = false
]]

View File

@@ -0,0 +1,38 @@
-- programme pour faire clignoter x fois une LED avec un rapport on/off
function flash_led_xfois()
print("\n flash_led_xfois.lua zf200722.1139 \n")
--zLED=0 --NodeMCU
--zLED=4 --EPS-M3
zTm_On_LED = 50 --> en ms
zTm_Off_LED = 100 --> en ms
nbfois = 0
gpio.write(zLED, gpio.HIGH)
gpio.mode(zLED, gpio.OUTPUT)
ztmr_Flash_LED = tmr.create()
function blink_LED ()
if nbfois >= xfois then
-- print(nbfois)
nbfois = 0
else
if gpio.read(zLED)==gpio.HIGH then
gpio.write(zLED, gpio.LOW)
-- tmr.alarm(ztmr_Flash_LED, zTm_Off_LED, tmr.ALARM_SINGLE, blink_LED)
ztmr_Flash_LED:alarm(zTm_Off_LED, tmr.ALARM_SINGLE, blink_LED)
else
gpio.write(zLED, gpio.HIGH)
nbfois = nbfois+1
-- tmr.alarm(ztmr_Flash_LED, zTm_On_LED, tmr.ALARM_SINGLE, blink_LED)
ztmr_Flash_LED:alarm(zTm_On_LED, tmr.ALARM_SINGLE, blink_LED)
end
end
end
xfois =2
blink_LED ()
end
flash_led_xfois()

View File

@@ -0,0 +1,49 @@
-- Petit script pour faire office de crontab pour les mesures
print("\n 0_cron.lua zf200705.2247 \n")
cron1=tmr.create()
cron1:alarm(15*1000, tmr.ALARM_AUTO, function()
-- if verbose then print("cron1........................") end
-- if verbose then gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH) end
-- rt_launch()
-- http_post(influxdb_url,"energy,value=test1_"..yellow_id.." val=1")
-- http_post(influxdb_url,"energy,memory=cron1_"..yellow_id.." ram="..node.heap())
-- if yellow_id == 60 then http_post(influxdb_url,"energy,compteur=3 puissance="..zpower/1000) end
-- if yellow_id == 64 then http_post(influxdb_url,"energy,compteur=4 puissance="..zpower/1000) end
if yellow_id == 69 then
local zmes="bolo_ruru,capteur="..node_id.." level="..zlevel
zmes=zmes.."\n".."bolo_ruru,capteur="..node_id.." hauteur="..zlength
http_post(influxdb_url,zmes)
end
-- http_post(influxdb_url,"energy,value=test2_"..yellow_id.." val=2")
-- http_post(influxdb_url,"energy,value=test3_"..yellow_id.." val=3")
-- http_post(influxdb_url,"energy,value=test4_"..yellow_id.." val=4")
-- f = "0_zdyndns.lua" if file.exists(f) then dofile(f) end
-- f=nil
-- if verbose then print("End cron:") end
collectgarbage()
-- if verbose then print(node.heap()) end
end)
--[[
cron1:stop()
cron1:start()
]]

View File

@@ -0,0 +1,45 @@
-- Petit script pour envoyer en // es valeurs sur un serveur WEB (InfluxDB)
-- via un http POST à travers un FIFO
if verbose then print("\n 0_http_post.lua zf200625.1137 \n") end
t_zurl={} t_zarg={} f_zpost=false
-- function tprint(t)
-- for key,value in pairs(t) do print(key, value) end
-- end
function zpost()
f_zpost=true local zurl=t_zurl[1] local zarg=t_zarg[1]
-- zarg=zarg.."\n".."energy,value=nb_waiting_"..yellow_id.." val="..#t_zurl
-- zarg=zarg.."\n".."energy,memory=zpost_"..yellow_id.." ram="..node.heap()
if verbose then print("zurl: "..zurl) end if verbose then print("zarg: "..zarg) end
http.post(zurl, 'Content-Type: application/x-www-form-urlencoded\r\n', zarg, function(code, data)
if (code < 0) then
print("HTTP request failed")
print("zuzu", code, data)
if debug_rec~=nil then debug_rec("HTTP request failed: ", code, data) end
else
if verbose then print(code, data) end
end
table.remove(t_zurl, 1) table.remove(t_zarg, 1)
if t_zurl[1]==nil then
f_zpost=false
else
zpost()
end
-- if verbose then print("End zpost:") end
collectgarbage()
-- if verbose then print(node.heap()) end
end)
end
function http_post(zurl,zarg)
if #t_zurl <=10 then table.insert(t_zurl, zurl) table.insert(t_zarg, zarg) end
-- if verbose then print("Nb wait: "..#t_zurl) print(node.heap()) end
-- if verbose then print("t_zurl:") tprint(t_zurl) print("t_zarg:") tprint(t_zarg) end
if f_zpost==false then zpost() end
-- if verbose then print("End http_post:") end
collectgarbage()
-- if verbose then print(node.heap()) end
end

View File

@@ -1,5 +1,5 @@
-- fonction cat() pour afficher le contenu d'un fichier dans la flash -- fonction cat() pour afficher le contenu d'un fichier dans la flash
print("\n cat.lua zf180826.1109 \n") print("\n cat.lua zf192026.0858 \n")
function cat(zfile) function cat(zfile)
print("\n"..zfile.."\n-------------------------------") print("\n"..zfile.."\n-------------------------------")
@@ -8,7 +8,8 @@ function cat(zfile)
i=1 i=1
zline=file.readline() zline=file.readline()
repeat repeat
print(i..": "..string.sub(zline,1,string.len(zline)-1)) -- print(i..": "..string.sub(zline,1,string.len(zline)-1))
print(string.sub(zline,1,string.len(zline)-1))
i=i+1 zline=file.readline() i=i+1 zline=file.readline()
until zline== nil until zline== nil
file.close(zfilei) file.close(zfilei)

View File

@@ -0,0 +1,31 @@
-- fonction dir() pour juste afficher les fichiers avec leur taille
print("\n dir.lua zf191223.1455 \n")
function dir()
local zdir={}
local pfile = file.list()
for k,v in pairs(pfile) do
zdir[#zdir+1] = k..string.rep(" ",24-string.len(k)).." : "..v
end
table.sort(zdir) for i=1, #zdir do print(zdir[i]) end
size_file=nil chksum_file=nil k=nil
end
dir()
print("\nusage:")
print(" dir()")
--[[
dir()
dirc()
filec("dir2.lua")
=node.heap()
clear_dir()
=node.heap()
for k,v in pairs(_G) do print(k,v) end
status, err = pcall(function () print(zhash("il était une fois trois petits cochons roses...")) end) if status==false then print("Error: ",err) end
]]

View File

@@ -0,0 +1,52 @@
-- fonction dir_vers() pour afficher toutes les versions de tous les fichiers *.lua sur le NodeMCU !
-- fonction filec(fichier) pour afficher la version d'un seul fichiers sur le NodeMCU !
function dir3()
print("\n 0_dir3.lua zf200611.1714 \n")
function file_vers(name_file)
local z=""
if string.find(name_file,"%.lua") then
z=name_file..":"
-- print("fichier: "..name_file)
local f,i1,i2,j1,j2,k,t = f,i1,i2,j1,j2,k,t
f = file.open(name_file, "r")
while true do
local t = f:readline() if t == nil then break end
-- recherche de l'entête de version [print("\n ]
-- ATTENTION, il faut échapper la '(' avec un % et convertir le '\' en char(92)
k='print%("'..string.char(92)..'n '
i1,j1 = string.find(t,k)
if i1 ~= nil then
k=string.char(92)..'n"%)'
i2,j2 = string.find(t,k,j1)
z=name_file..": "..string.sub(t,j1+1,i2-2)
break
end
end
f:close()
uart.write(0,".")
end
return z
end
zdir={} list_files={}
local k,v = k,v local pfile = file.list()
for k,v in pairs(pfile) do
zdir[#zdir+1] = file_vers(k)
end
table.sort(zdir) for i=1, #zdir do print(zdir[i]) end
dir_vers=nil file_vers=nil list_files=nil zdir=nil
dir3=nil
end
dir3()
--[[
status, err = pcall(function () print(zhash("il était une fois trois petits cochons roses...")) end) if status==false then print("Error: ",err) end
]]

View File

@@ -0,0 +1,19 @@
-- fonction cat() pour afficher les 10 premières lignes d'un fichier dans la flash
print("\n head.lua zf192028.1516 \n")
function zhead(zfile)
print("\n"..zfile.."\n-------------------------------")
zfilei = file.open(zfile, "r")
i=1
zline=file.readline()
repeat
-- print(i..": "..string.sub(zline,1,string.len(zline)-1))
print(string.sub(zline,1,string.len(zline)-1))
i=i+1 zline=file.readline()
if i>10 then break end
until zline==nil
file.close(zfilei)
print("-------------------------------")
end

View File

@@ -0,0 +1,91 @@
--Script de bootstrap, test au moment du boot qui a été la cause de boot.
-- Si la cause est un power on ou une connexion depuis l'IDE, alors
-- le script repair.lua pendant xx secondes avant de continuer
--Source: https://nodemcu.readthedocs.io/en/master/en/modules/node/#nodebootreason
print("\n init.lua zf200722.1526 \n")
verbose = true
function initz()
function initz_end()
print("initz_end...")
f= "wifi_init.lua" if file.exists(f) then dofile(f) end
f=nil initz=nil second_chance=nil hvbouton=nil initz_end=nil
print(node.heap()) collectgarbage() print(node.heap())
print("initz_end out...")
end
function hvbouton()
gpio.trig(zswitch, "none") zswitch=nil
print("hvbouton...")
print(tmr.now())
if tmr.now() > 5000000 then
file.putcontents("_setup_wifi_", "toto")
print("on a demandé le setup wifi !")
end
initalarme1:unregister() initalarme1=nil second_chance=nil
gpio.write(zLED, gpio.HIGH) zLED=nil
reset_reason="hvbouton"
initz_end()
end
function second_chance()
print("seconde chance...")
zLED=4 -- NodeMCU
--zLED=7 -- SonOff
gpio.write(zLED, gpio.LOW) gpio.mode(zLED, gpio.OUTPUT)
initalarme1=tmr.create()
initalarme1:alarm(10*1000, tmr.ALARM_SINGLE, function()
gpio.write(zLED, gpio.HIGH) zLED=nil
gpio.trig(zswitch, "none") zswitch=nil
reset_reason="seconde_chance"
initz_end()
end)
zswitch=3 --switch flash ou SonOff
gpio.mode(zswitch, gpio.INT, gpio.PULLUP)
gpio.trig(zswitch, "both", hvbouton)
end
_, reset_reason = node.bootreason()
print("reset_reason: ",reset_reason)
if reset_reason == 0 then
print("power on")
second_chance()
elseif reset_reason == 4 then
print("node.restart")
initz_end()
elseif reset_reason == 5 then
print("dsleep wake up")
initz_end()
elseif reset_reason == 6 then
print("external reset")
if rtcmem.read32(10) == 43690 then
print("dsleep wake up")
f = "0_dsleep2.lua" if file.exists(f) then dofile(f) end
else
second_chance()
end
else
print("autre raison")
second_chance()
end
end
initz()
--[[
zLED=7
gpio.mode(zLED, gpio.OUTPUT)
gpio.write(zLED, gpio.LOW) -- actif !
gpio.write(zLED, gpio.HIGH)
zBTN=3
gpio.mode(zBTN, gpio.INPUT)
print(gpio.read(zBTN))
zRELAY=6
gpio.mode(zRELAY, gpio.OUTPUT)
gpio.write(zRELAY, gpio.HIGH) -- actif !
gpio.write(zRELAY, gpio.LOW)
]]

View File

@@ -0,0 +1,408 @@
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
version = "0.6.8 zf191225.1428"
print("luatool.py ver " + version)
#Améliorations
# Pour voir les améliorations il faut 'chercher' les zzz
#
# ESP8266 luatool
# Author e-mail: 4ref0nt@gmail.com
# Site: http://esp8266.ru
# Contributions from: https://github.com/sej7278
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
# Street, Fifth Floor, Boston, MA 02110-1301 USA.
import sys
import serial
from time import sleep
import socket
import argparse
from os.path import basename
tqdm_installed = True
try:
from tqdm import tqdm
except ImportError, e:
if e.message == 'No module named tqdm':
tqdm_installed = False
else:
raise
class TransportError(Exception):
"""Custom exception to represent errors with a transport
"""
def __init__(self, message):
self.message = message
def __str__(self):
return self.message
class AbstractTransport:
def __init__(self):
raise NotImplementedError('abstract transports cannot be instantiated.')
def close(self):
raise NotImplementedError('Function not implemented')
def read(self, length):
raise NotImplementedError('Function not implemented')
def writeln(self, data, check=1):
raise NotImplementedError('Function not implemented')
def writer(self, data):
##zzz191124 enlève la fin de ligne afin de ne pas perturber la vérification finale
data = data.rstrip('\r\n')
self.writeln("file.writeline([==[" + data + "]==])\r")
def performcheck(self, expected):
line = ''
char = ''
i = -1
while char != chr(62): # '>'
char = self.read(1)
if char == '':
raise Exception('No proper answer from MCU')
if char == chr(13) or char == chr(10): # LF or CR
if line != '':
#zzz191124 line = line.strip()
# zzz191021 Affiche ce que l'on a reçu du NodeMCU
if args.verbose:
print("\n\nzread0957: {" + line + "\n}\n")
if line+'\r' == expected and not args.bar:
sys.stdout.write(" -> ok")
elif line+'\r' != expected:
if line[:4] == "lua:":
sys.stdout.write("\r\n\r\nLua ERROR: %s" % line)
raise Exception('ERROR from Lua interpreter\r\n\r\n')
else:
expected = expected.split("\r")[0]
sys.stdout.write("\r\n\r\nERROR")
sys.stdout.write("\r\n send string : '%s'" % expected)
sys.stdout.write("\r\n expected echo : '%s'" % expected)
sys.stdout.write("\r\n but got answer : '%s'" % line)
sys.stdout.write("\r\n\r\n")
raise Exception('Error sending data to MCU\r\n\r\n')
line = ''
else:
line += char
if char == chr(62) and expected[i] == char:
char = ''
i += 1
class SerialTransport(AbstractTransport):
def __init__(self, port, baud, delay):
self.port = port
self.baud = baud
self.serial = None
self.delay = delay
try:
self.serial = serial.Serial(port, baud)
except serial.SerialException as e:
raise TransportError(e.strerror)
self.serial.timeout = 3
self.serial.interCharTimeout = 3
# zzz191021 juste après l'ouverture du port série, on attend le caractère '>'
line = ''
char = ''
i = -1
while char != chr(62): # '>'
char = self.read(1)
if char == '':
raise Exception('No proper answer from MCU')
line += char
i += 1
if args.verbose:
print("line: ." + line + ".")
def writeln(self, data, check=1):
# zzz191020 on fait une petite pause avant l'envoi de chaque ligne
sleep(self.delay)
if self.serial.inWaiting() > 0:
self.serial.flushInput()
if len(data) > 0 and not args.bar:
sys.stdout.write("\r\n->")
sys.stdout.write(data.split("\r")[0])
##zzz191124 attend encore un petit peu avant d'envoyer
sleep(self.delay)
self.serial.write(data)
sleep(self.delay)
# zzz191021 Affiche ce que l'on a envoyé au NodeMCU
if args.verbose:
print("\n\nzwrite0952: {" + data + "\n}\n")
if check > 0:
self.performcheck(data)
elif not args.bar:
sys.stdout.write(" -> send without check")
def read(self, length):
return self.serial.read(length)
def close(self):
self.serial.flush()
self.serial.close()
class TcpSocketTransport(AbstractTransport):
def __init__(self, host, port):
self.host = host
self.port = port
self.socket = None
try:
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error as e:
raise TransportError(e.strerror)
try:
self.socket.connect((host, port))
except socket.error as e:
raise TransportError(e.strerror)
# read intro from telnet server (see telnet_srv.lua)
self.socket.recv(50)
def writeln(self, data, check=1):
if len(data) > 0 and not args.bar:
sys.stdout.write("\r\n->")
sys.stdout.write(data.split("\r")[0])
self.socket.sendall(data)
if check > 0:
self.performcheck(data)
elif not args.bar:
sys.stdout.write(" -> send without check")
def read(self, length):
return self.socket.recv(length)
def close(self):
self.socket.close()
def decidetransport(cliargs):
if cliargs.ip:
data = cliargs.ip.split(':')
host = data[0]
if len(data) == 2:
port = int(data[1])
else:
port = 23
return TcpSocketTransport(host, port)
else:
return SerialTransport(cliargs.port, cliargs.baud, cliargs.delay)
if __name__ == '__main__':
# parse arguments or use defaults
parser = argparse.ArgumentParser(description='ESP8266 Lua script uploader.')
parser.add_argument('--bar', action='store_true', help='Show a progress bar for uploads instead of printing each line')
parser.add_argument('--delay', default=0.025, help='Delay in seconds between each write, default 0.03 sec.', type=float)
parser.add_argument('--delete', default=None, help='Delete a lua/lc file from device.')
parser.add_argument('--ip', default=None, help='Connect via telnet server (--ip IP[:port])')
parser.add_argument('--zrestart', action='store_true', help='Restart the NodeMCU.')
parser.add_argument('-a', '--append', action='store_true', help='Append source file to destination file.')
parser.add_argument('-b', '--baud', default=115200, help='Baudrate, default 115200')
parser.add_argument('-c', '--compile', action='store_true', help='Compile lua to lc after upload')
parser.add_argument('-d', '--dofile', action='store_true', help='Run the Lua script after upload')
parser.add_argument('-e', '--echo', action='store_true', help='Echo output of MCU until script is terminated.')
parser.add_argument('-f', '--src', default='main.lua', help='Source file on computer, default main.lua')
parser.add_argument('-i', '--id', action='store_true', help='Query the modules chip id.')
parser.add_argument('-l', '--list', action='store_true', help='List files on device')
parser.add_argument('-p', '--port', default='/dev/ttyUSB0', help='Device name, default /dev/ttyUSB0')
parser.add_argument('-r', '--restart', action='store_true', help='Restart MCU after upload')
parser.add_argument('-t', '--dest', default=None, help='Destination file on MCU, default to source file name')
parser.add_argument('-v', '--verbose', action='store_true', help="Show progress messages.")
parser.add_argument('-w', '--wipe', action='store_true', help='Delete all lua/lc files on device.')
args = parser.parse_args()
transport = decidetransport(args)
if args.bar and not tqdm_installed:
sys.stdout.write("You must install the tqdm library to use the bar feature\n")
sys.stdout.write("To install, at the prompt type: \"pip install tqdm\"\n")
sys.exit(0)
if args.list:
# zzz191020 Amélioré la sortie du listing des fichiers
#transport.writeln("print('\\n-----');local l = file.list();for k,v in pairs(l) do print(k..', size:'..v)end;print('-----\\n')\r", 0)
# zzz191225 Amélioré encore la sortie du listing des fichiers (sort file)
transport.writeln("zdir={};pfile = file.list();for k,v in pairs(pfile) do zdir[#zdir+1] = k..string.rep(' ',24-string.len(k))..' : '..v end;table.sort(zdir);print('\\n-----');for i=1, #zdir do print(zdir[i]) end;print('-----\\n');zdir=nil;pfile=nil;k=nil;v=nil;i=nil\r", 0)
while True:
char = transport.read(1)
if char == '' or char == chr(62): # '' or '>'
break
sys.stdout.write(char)
sys.exit(0)
if args.id:
transport.writeln("=node.chipid()\r", 0)
id=""
while True:
char = transport.read(1)
if char == '' or char == chr(62):
break
if char.isdigit():
id += char
print("\n"+id)
sys.exit(0)
# zzz191020 Ajouté la fonction restart seule
if args.zrestart:
transport.writeln("node.restart()\r")
sys.exit(0)
if args.wipe:
transport.writeln("local l = file.list();for k,v in pairs(l) do print(k)end\r", 0)
file_list = []
fn = ""
while True:
char = transport.read(1)
if char == '' or char == chr(62):
break
if char not in ['\r', '\n']:
fn += char
else:
if fn:
file_list.append(fn.strip())
fn = ''
for fn in file_list[1:]: # first line is the list command sent to device
if args.verbose:
sys.stderr.write("Delete file {} from device.\r\n".format(fn))
transport.writeln("file.remove(\"" + fn + "\")\r")
sys.exit(0)
if args.delete:
transport.writeln("file.remove(\"" + args.delete + "\")\r")
sys.exit(0)
if args.dest is None:
args.dest = basename(args.src)
# zzz191020 Affiche le fichier à envoyer
print("File: " + args.src)
# open source file for reading
try:
try:
f = open(args.src, "rt")
except:
import os
base_dir = os.path.dirname(os.path.realpath(__file__))
f = open(os.path.join(base_dir, args.src), "rt")
os.chdir(base_dir)
except:
sys.stderr.write("Could not open input file \"%s\"\n" % args.src)
sys.exit(1)
# Verify the selected file will not exceed the size of the serial buffer.
# The size of the buffer is 256. This script does not accept files with
# lines longer than 230 characters to have some room for command overhead.
num_lines = 0
for ln in f:
if len(ln) > 230:
sys.stderr.write("File \"%s\" contains a line with more than 240 "
"characters. This exceeds the size of the serial buffer.\n"
% args.src)
f.close()
sys.exit(1)
num_lines += 1
# Go back to the beginning of the file after verifying it has the correct
# line length
f.seek(0)
# set serial timeout
if args.verbose:
sys.stderr.write("Upload starting\r\n")
# remove existing file on device
if args.append==False:
if args.verbose:
sys.stderr.write("Stage 1. Deleting old file from flash memory")
transport.writeln("file.open(\"" + args.dest + "\", \"w\")\r")
transport.writeln("file.close()\r")
transport.writeln("file.remove(\"" + args.dest + "\")\r")
else:
if args.verbose:
sys.stderr.write("[SKIPPED] Stage 1. Deleting old file from flash memory [SKIPPED]")
# read source file line by line and write to device
if args.verbose:
sys.stderr.write("\r\nStage 2. Creating file in flash memory and write first line")
if args.append:
transport.writeln("file.open(\"" + args.dest + "\", \"a+\")\r")
else:
transport.writeln("file.open(\"" + args.dest + "\", \"w+\")\r")
line = f.readline()
if args.verbose:
sys.stderr.write("\r\nStage 3. Start writing data to flash memory...")
if args.bar:
for i in tqdm(range(0, num_lines)):
#zzz191124 transport.writer(line.strip())
transport.writer(line)
line = f.readline()
else:
while line != '':
#zzz191124 transport.writer(line.strip())
transport.writer(line)
line = f.readline()
# close both files
f.close()
if args.verbose:
sys.stderr.write("\r\nStage 4. Flush data and closing file")
transport.writeln("file.flush()\r")
transport.writeln("file.close()\r")
# compile?
if args.compile:
if args.verbose:
sys.stderr.write("\r\nStage 5. Compiling")
transport.writeln("node.compile(\"" + args.dest + "\")\r")
transport.writeln("file.remove(\"" + args.dest + "\")\r")
# restart or dofile
if args.restart:
transport.writeln("node.restart()\r")
if args.dofile: # never exec if restart=1
transport.writeln("dofile(\"" + args.dest + "\")\r", 0)
if args.echo:
if args.verbose:
sys.stderr.write("\r\nEchoing MCU output, press Ctrl-C to exit")
while True:
sys.stdout.write(transport.read(1))
# close serial port
transport.close()
# flush screen
sys.stdout.flush()
sys.stderr.flush()
if not args.bar:
sys.stderr.write("\r\n--->>> All done <<<---\r\n")

View File

@@ -0,0 +1,91 @@
-- Teste le deep sleep !
-- s'endore pendant xx secondes après xx secondes
-- ATTENTION: il faut connecter la pin 0 à la pin RESET avec une résistance de 1k !
print("\n dsleep.lua zf200722.1133 \n")
zLED=4
f= "flash_led_xfois.lua" if file.exists(f) then dofile(f) end
function ztime()
tm = rtctime.epoch2cal(rtctime.get()+2*3600)
print(string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
end
function dsleep_on()
print("timer dsleep on...")
ztmr_SLEEP = tmr.create()
ztmr_SLEEP:alarm(2*1000, tmr.ALARM_SINGLE, function ()
print("Je dors...")
tmr.delay(100*1000)
-- node.dsleep(4*1000*1000)
-- print(node.bootreason())
rtcmem.write32(10, 43690) --flag pour détecter le réveil dsleep
-- print("le flag est à "..rtcmem.read32(10))
wifi.setmode(wifi.NULLMODE,true)
rtctime.dsleep(4*1000*1000)
end)
end
--[[
dsleep_on()
print(node.bootreason())
print("le flag est à "..rtcmem.read32(10))
f= "wifi_info.lua" if file.exists(f) then dofile(f) end
function ztime()
tm = rtctime.epoch2cal(rtctime.get()+2*3600)
print(string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
end
print(ztime())
]]
function dsleep_off()
print("timer dsleep off...")
ztmr_SLEEP:unregister()
end
function watch_wifi_on()
dsleep_on()
ztmr_watch_wifi_on = tmr.create()
ztmr_watch_wifi_on:alarm(1*1000, tmr.ALARM_AUTO , function()
if wifi.sta.getip() == nil then
-- print("Unconnected... (on)")
else
ztmr_watch_wifi_on:stop()
print("Connected... (on)")
-- f= "wifi_info.lua" if file.exists(f) then dofile(f) end
watch_wifi_off()
end
end)
end
function watch_wifi_off()
dsleep_off()
ztmr_watch_wifi_on:unregister()
ztmr_watch_wifi_off = tmr.create()
ztmr_watch_wifi_off:alarm(1*1000, tmr.ALARM_AUTO , function()
if wifi.sta.getip() == nil then
ztmr_watch_wifi_off:stop()
print("Unconnected... (off)")
watch_wifi_on()
ztmr_watch_wifi_off:unregister()
else
-- print("Connected... (off)")
xfois = 2
blink_LED ()
end
end)
end
print("Coucou, je suis réveillé...")
print("Et il est: ")
ztime()
watch_wifi_on()

Binary file not shown.

View File

@@ -0,0 +1,19 @@
-- Scripts pour régler l'horloge quand on est connecté en WIFI
print("\n set_time.lua zf2007222.110755 \n")
function set_time()
sntp.sync(nil, nil, nil, 1)
end
function ztime()
tm = rtctime.epoch2cal(rtctime.get()+2*3600)
print(string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
end
set_time()
--[[
print(ztime())
]]

View File

@@ -0,0 +1,48 @@
#!/bin/bash
# Petit script pour télécharger facilement tout le binz via le port série
#zf191228.2313
# S'il y a des erreurs lors d'un téléchargement, il faut simplement augmenter un peu le délai !
# Il est préférable de télécharger en premier les *gros* fichiers .lua !
# ATTENTION: cela efface tout le NodeMCU !
luatool_tty="/dev/cu.wchusbserial1410"
echo ""
read -p "ATTENTION, cela va effacer tout le NodeMCU !"
read -p "Etes-vous vraiment certain ?"
chmod +x luatool.py
./luatool.py --port $luatool_tty -w
./luatool.py --port $luatool_tty -l
read -p "Est-ce bien vide ?"
./luatool.py --port $luatool_tty --bar -f z_index.html
./luatool.py --port $luatool_tty --bar -f wifi_init.lua
./luatool.py --port $luatool_tty --bar -f wifi_info.lua
./luatool.py --port $luatool_tty --bar -f wifi_clear.html
./luatool.py --port $luatool_tty --bar -f web_srv2.lua
./luatool.py --port $luatool_tty --bar -f web_ide2.lua
./luatool.py --port $luatool_tty --bar -f telnet_srv2.lua
./luatool.py --port $luatool_tty --bar -f set_time.lua
./luatool.py --port $luatool_tty --bar -f secrets_wifi.lua
./luatool.py --port $luatool_tty --bar -f secrets_project.lua
./luatool.py --port $luatool_tty --bar -f head.lua
./luatool.py --port $luatool_tty --bar -f eus_params.lua
./luatool.py --port $luatool_tty --bar -f disp_temp.html
./luatool.py --port $luatool_tty --bar -f dir2.lua
./luatool.py --port $luatool_tty --bar -f cat.lua
./luatool.py --port $luatool_tty --bar -f boot2.lua
./luatool.py --port $luatool_tty --bar -f boot.lua
./luatool.py --port $luatool_tty --bar -f 0_send_data.lua
#./luatool.py --port $luatool_tty --bar -f 0_htu21d.lua
./luatool.py --port $luatool_tty --bar -f 0_cron.lua
./luatool.py --port $luatool_tty -l
read -p "Pas eu d'erreur, on part à fond avec le init.lua ?"
./luatool.py --port $luatool_tty --bar -f initz.lua -t init.lua
./luatool.py --port $luatool_tty -l
echo -e "\nC'est tout bon ;-)"

View File

@@ -0,0 +1,45 @@
-- Petit script pour afficher les infos actuel du WIFI
print("\n wifi_info.lua zf200106.1803 \n")
function wifi_info()
local zmodewifi=wifi.getmode()
--wifi.NULLMODE, wifi.STATION, wifi.SOFTAP, wifi.STATIONAP
if zmodewifi == wifi.NULLMODE then
print("WIFI OFF")
elseif zmodewifi == wifi.STATION then
print("WIFI mode CLI")
print("Connected IP:\n",wifi.sta.getip())
local sta_config=wifi.sta.getconfig(true)
print("Current client config:")
print("\tssid:", sta_config.ssid)
print("\tpassword:", sta_config.pwd)
print("\tbssid:", sta_config.bssid)
elseif zmodewifi == wifi.SOFTAP then
print("WIFI mode AP\n")
print("AP IP: ", wifi.ap.getip())
print("Current AP config:")
local ap_config=wifi.ap.getconfig(true)
print("\tssid:", ap_config.ssid)
print("\tpassword:", ap_config.pwd)
print("\tbssid:", wifi.ap.getmac())
elseif zmodewifi == wifi.STATIONAP then
print("WIFI mode CLI+AP\n")
print("CLIENT IP:\n",wifi.sta.getip())
local sta_config=wifi.sta.getconfig(true)
print("Current CLIENT config:")
print("\tssid:", sta_config.ssid)
print("\tpassword:", sta_config.pwd)
print("\tbssid:", sta_config.bssid.."\n")
print("AP IP: ", wifi.ap.getip())
print("Current AP config:")
local ap_config=wifi.ap.getconfig(true)
print("\tssid:", ap_config.ssid)
print("\tpassword:", ap_config.pwd)
print("\tbssid:", wifi.ap.getmac())
end
wifi_info=nil
end
wifi_info()

View File

@@ -0,0 +1,92 @@
-- Petit script pour initaliser la couche WIFI
function wifi_init()
print("\n wifi_init.lua zf200621.1608 \n")
f= "secrets_wifi.lua" if file.exists(f) then dofile(f) end
f= "secrets_project.lua" if file.exists(f) then dofile(f) end
function wifi_init_end()
tmr_wifi_init1:unregister() i=nil
f= "wifi_info.lua" if file.exists(f) then dofile(f) end
f=nil secrets_wifi=nil cli_pwd=nil cli_ssid=nil
tmr_wifi_init1=nil wifi_init=nil
print(node.heap()) collectgarbage() print(node.heap())
-- f= "telnet_srv2.lua" if file.exists(f) then dofile(f) end
f="0_tst5_socat.lua" if file.exists(f) then dofile(f) end
-- f= "web_srv2.lua" if file.exists(f) then dofile(f) end
print(node.heap()) collectgarbage() print(node.heap())
zdelay=1 if reset_reason=="seconde_chance" then zdelay=20 end
tmr_wifi_init3=tmr.create()
tmr_wifi_init3:alarm(zdelay*1000, tmr.ALARM_SINGLE, function()
gpio.write(zLED, gpio.LOW)
f= "boot.lua" if file.exists(f) then dofile(f) end
tmr_wifi_init3:unregister() tmr_wifi_init3=nil wifi_init_end=nil
reset_reason=nil zdelay=nil
end)
end
if file.exists("_setup_wifi_") then
print("setup wifi...")
file.remove("_setup_wifi_")
wifi.sta.config{ssid="", pwd=""} wifi.sta.connect()
if zLED == nil then zLED = 4 end
gpio.write(zLED, gpio.HIGH) gpio.mode(zLED, gpio.OUTPUT)
tmr_wifi_init4=tmr.create()
tmr_wifi_init4:alarm(0.1*1000, tmr.ALARM_AUTO , function()
gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH)
end)
tmr.create():alarm(90*1000, tmr.ALARM_SINGLE, function()
node.restart()
end)
enduser_setup.start(function()
print("on est sortit du setup wifi et on restart !")
node.restart()
end)
print("setup gadget lancé...")
else
wifi.setmode(wifi.STATION,true)
wifi.sta.config{ssid=cli_ssid, pwd=cli_pwd} wifi.sta.connect()
-- wifi.setmode(wifi.STATIONAP,true)
-- if node_id == nil then node_id = "generic" ap_pwd = "12345678" end
-- wifi.ap.config({ ssid = ap_ssid.."_"..node_id, pwd = ap_pwd, save=true })
-- ap_ssid=nil ap_pwd=nil
-- tmr_wifi_init2=tmr.create()
-- tmr_wifi_init2:alarm(60*1000, tmr.ALARM_SINGLE, function()
-- print("BOOOOUM, y'a plus de AP WIFI !")
-- wifi.setmode(wifi.STATION,true) tmr_wifi_init2=nil
-- print(node.heap()) collectgarbage() print(node.heap())
-- end)
gpio.write(zLED, gpio.HIGH) gpio.mode(zLED, gpio.OUTPUT) i=1
tmr_wifi_init1=tmr.create()
tmr_wifi_init1:alarm(1*1000, tmr.ALARM_AUTO , function()
gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH)
if wifi.sta.getip() == nil then
print(i,"Connecting to AP...")
i=i+1
if i > 30 then
print("pas de wifi :-(")
file.putcontents("_setup_wifi_", "toto")
print("on restart pour le setup wifi")
node.restart()
--tmr_wifi_init2:unregister() tmr_wifi_init2=nil
--wifi.setmode(wifi.SOFTAP,true)
--wifi_init_end()
end
else
wifi_init_end()
end
end)
end
end
wifi_init()
--[[
file.putcontents("_setup_wifi_", "toto")
file.remove("eus_params.lua")
]]

View File

@@ -0,0 +1,34 @@
-- Script de gestion du deep sleep !
-- ATTENTION: il faut connecter la pin 0 à la pin RESET avec une résistance de 1k !
print("\n 0_dsleep2.lua zf200816.1934 \n")
f= "flash_led_xfois.lua" if file.exists(f) then dofile(f) end
function ztime()
tm = rtctime.epoch2cal(rtctime.get()+2*3600)
return (string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
end
-- on s'endort
function dsleep_on()
print("Il est "..ztime().." et je vais dormir...")
tmr.delay(100*1000)
wifi.setmode(wifi.NULLMODE,true)
-- durée du sommeil !
rtctime.dsleep(0.1*1000*1000)
end
-- on se réveil
function dsleep_wake_up()
print("Coucou, je suis réveillé... et il est "..ztime())
if rtctime.get() < 1597494477 then
print("oups je n'ai pas la bonne heure...")
rtctime.set(file.getcontents("_ztime_"))
print("voilà j'ai retrouvé une ancienne heure "..ztime())
end
wifi.setmode(wifi.STATION)
f = "0_wifi_scan.lua" if file.exists(f) then dofile(f) end
end
dsleep_wake_up()

View File

@@ -0,0 +1,148 @@
-- script telnet pour le socat
function telnet_listener(socket)
print("\n 0_rtelnet1.lua zf200621.2309 \n")
-- node, table, tmr, uwrite, tostring =
-- node, table, tmr, uart.write, tostring
print("................telnet_listener")
-- insert, remove, concat, heap, gc =
-- table.insert, table.remove, table.concat, node.heap, collectgarbage
fifo1, fifo1l, fifo2, fifo2l = {}, 0, {}, 0
-- local s -- s is a copy of the TCP socket if and only if sending is in progress
function flushGarbage()
if node.heap() < 13440 then collectgarbage() end
end
function sendLine()
if not s then return end
if fifo2l + fifo1l == 0 then -- both FIFOs empty, so clear down s
s = nil
return
end
flushGarbage()
if #fifo2 < 4 then -- Flush FIFO1 into FIFO2
table.insert(fifo2,table.concat(fifo1))
fifo2l, fifo1, fifo1l = fifo2l + fifo1l, {}, 0
end
rec = table.remove(fifo2,1)..(table.remove(fifo2,1) or '') ..(table.remove(fifo2,1) or '') .. (table.remove(fifo2,1) or '')
fifo2l = fifo2l - #rec
flushGarbage()
if srv_rt:getpeer()~=nil then
s:send(rec)
end
end
local F1_SIZE = 256
function queueLine(str)
while #str > 0 do -- this is because str might be longer than the packet size!
k, l = F1_SIZE - fifo1l, #str
if #fifo1 >= 32 or (k < l and k < 16) then
table.insert(fifo2, table.concat(fifo1))
fifo2l, fifo1, fifo1l, k = fifo2l + fifo1l, {}, 0, F1_SIZE
end
if l > k+16 then -- also tolerate a size overrun of 16 bytes to avoid a split
chunk, str = str:sub(1,k), str:sub(k+1)
else
chunk, str = str, ''
end
table.insert(fifo1, chunk)
fifo1l = fifo1l + #chunk
end
if not s and socket then
s = socket
sendLine()
else
flushGarbage()
end
end
function receiveLine(s, line)
node.input(line)
end
function disconnect(_,zerr)
node.output(nil)
gpio.write(zLED, gpio.HIGH)
print("................disconnect")
if socket~=nil then
-- if http_post~=nil then http_post(influxdb_url,"energy,memory=srv_rt_no_nil_"..yellow_id.." ram="..node.heap()) end
print("................disconnect 2e", socket, socket:getpeer())
socket:on("connection", nil)
socket:on("reconnection", nil)
socket:on("disconnection", nil)
socket:on("receive", nil)
socket:on("sent", nil)
socket=nil
end
-- fifo1, fifo1l, fifo2, fifo2l, s = nil, nil, nil, nil, nil
print("disconnected... "..zerr..", "..node.heap())
-- if debug_rec~=nil then debug_rec("disconnect, disconnected, "..zerr..", "..node.heap()) end
-- node, table, tmr, uwrite, tostring = nil, nil, nil, nil, nil
-- insert, remove, concat, heap, gc = nil, nil, nil, nil, nil
-- fifo1, fifo1l, fifo2, fifo2l = nil, nil, nil, nil
-- rec = nil
-- s = nil
-- socket = nil
-- flushGarbage = nil
-- sendLine = nil
-- queueLine = nil
-- receiveLine = nil
-- zconnection = nil
-- disconnect = nil
-- -- telnet_listener=nil
fifo1, fifo1l, fifo2, fifo2l = nil, nil, nil, nil
rec = nil
k = nil
l = nil
s = nil
chunk = nil
socket = nil
flushGarbage = nil
sendLine = nil
queueLine = nil
receiveLine = nil
zconnection = nil
disconnect = nil
telnet_listener=nil
srv_rt=nil
-- collectgarbage()
rt_connect()
end
--zzz
function zconnection(s)
print("socket: ",socket)
if socket~=nil then
-- if http_post~=nil then http_post(influxdb_url,"energy,memory=srv_rt_no_nil_"..yellow_id.." ram="..node.heap()) end
print(socket:getpeer())
end
local zstr="zconnection, Oups, on ne devrait jamais passer par là to NodeMCU world."
print(zstr) if debug_rec~=nil then debug_rec(zstr) end
socket=nil
end
socket:on("connection", zconnection)
socket:on("receive", receiveLine)
socket:on("disconnection", disconnect)
socket:on("sent", sendLine)
node.output(queueLine, 0)
-- print(queueLine, 0)
end

View File

@@ -0,0 +1,115 @@
--[[
tests connection reverse telnet commande à faire tourner sur le GATEWAY !
1ere console
pour une liaison directe:
socat TCP-LISTEN:23064,fork,reuseaddr STDIO
pour une console sur un port:
socat TCP-LISTEN:23043,reuseaddr,fork TCP-LISTEN:23000,reuseaddr,bind=127.0.0.1
2e console
telnet -r localhost 23000
]]
--[[
tests connection reverse telnet commande à faire tourner sur le GATEWAY ET sur sa MACHINE !
1ere console sur le GATEWAY
socat TCP-LISTEN:23043,reuseaddr,fork TCP-LISTEN:23000,reuseaddr,bind=127.0.0.1
2e console sur sa MACHINE
ssh -L 23000:localhost:23000 user@GATEWAY
3e console sur sa MACHINE (~.return pour sortir !)
telnet -r localhost 23000
ou sur MAC
telnet -rN localhost 23000
]]
print("\n 0_tst5_socat.lua zf200628.1458 \n")
function rt_connect()
-- print("................rt_connect")
collectgarbage()
local zlaps=tmr.now()/1000000-ztime_connect
-- print("time of retry connect... "..zlaps)
-- if debug_rec~=nil then debug_rec("time of retry connect... "..zlaps..", "..node.heap()) end
if zlaps>1 then
local zstr="trying connect to "..console_host..":"..console_port..", "..node.heap()
-- if debug_rec~=nil then debug_rec(zstr) end
if verbose==verbose then
gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH)
-- print(zstr)
end
if http_post~=nil then http_post(influxdb_url,"energy,memory=socat_try_con_"..yellow_id.." ram="..node.heap()) end
ztime_connect=tmr.now()/1000000
srv_rt=nil
srv_rt = net.createConnection(net.TCP, 0)
srv_rt:on("connection", function(sck)
print("................connection")
if debug_rec~=nil then debug_rec("rt_connect, srv_rt:on, connected on, "..node.heap()) end
collectgarbage()
-- if verbose then
gpio.write(zLED, gpio.LOW)
print("connected on "..console_host..":"..console_port..", "..node.heap())
print(node.heap())
-- end
if http_post~=nil then http_post(influxdb_url,"energy,memory=socat_connected_"..yellow_id.." ram="..node.heap()) end
dofile("0_rtelnet1.lua")
telnet_listener(sck)
print("Welcome to NodeMCU world.")
end)
srv_rt:on("reconnection", function(sck)
-- print(";;;;;;;;;;;;;;;;reconnection")
srv_rt:on("connection", nil)
srv_rt:on("reconnection", nil)
end)
-- srv_rt:on("disconnection", function(sck)
-- print(";;;;;;;;;;;;;;;;disconnection")
-- end)
--
-- srv_rt:on("receive", function(sck)
-- print(";;;;;;;;;;;;;;;;receive")
-- end)
--
-- srv_rt:on("sent", function(sck)
-- print(";;;;;;;;;;;;;;;;sent")
-- end)
srv_rt:connect(console_port,console_host)
else
print("on ne se reconnecte pas vite 1x...")
end
collectgarbage()
end
function rt_launch()
-- if http_post~=nil then http_post(influxdb_url,"energy,memory=tmr_socat1_"..yellow_id.." ram="..node.heap()) end
if srv_rt~=nil then
-- if http_post~=nil then http_post(influxdb_url,"energy,memory=srv_rt_no_nil_"..yellow_id.." ram="..node.heap()) end
if console_port ~= srv_rt:getpeer() then
rt_connect()
end
else
rt_connect()
end
end
tmr_socat1=tmr.create()
tmr_socat1:alarm(20*1000, tmr.ALARM_AUTO , rt_launch)
ztime_connect=tmr.now()/1000000-10
rt_launch()
print("Revers telnet server running...\n")

View File

@@ -0,0 +1,78 @@
-- Scripts pour scanner les AP WIFI et les enregistrer dans le log
-- https://www.epochconverter.com/
print("\n 0_wifi_scan.lua zf200816.1955 \n")
ztime2020 = 1577836800 -- Unix time pour 1.1.2020 0:0:0 GMT
-- sauvegarde les données dans la flash du NodeMCU
function save_flash(zstr_ap_wifi)
ztime1 = tostring(rtctime.get() + 2*3600 - ztime2020)
local zstr = ztime1..", "..zstr_ap_wifi
if verbose then print("saving to flash: "..zstr) end
file.open(logs_ap_wifi, "a+") file.writeline(zstr) file.close()
end
function listap(t)
print("start display liste ap wifi...")
for k,v in pairs(t) do
local ssid, rssi, authmode, channel = string.match(v, "([^,]+),([^,]+),([^,]+),([^,]*)")
if ssid == cli_ssid2 then
print("ah je vois que je dois m'arrêter...")
zdsleep_stop =true
elseif ssid == cli_ssid1 then
print("ah je vois que je dois chercher l'heure...")
zdsleep_get_time = true
end
local zstr = k..', "'..ssid..'", '..rssi
save_flash(zstr)
end
print("...end display")
if zdsleep_stop then
node.restart()
elseif zdsleep_get_time then
wifi.setmode(wifi.STATION,true)
wifi.sta.config{ssid=cli_ssid1, pwd=cli_pwd1} wifi.sta.connect()
gpio.write(zLED, gpio.HIGH) gpio.mode(zLED, gpio.OUTPUT) i=1
tmr_wifi_init1=tmr.create()
tmr_wifi_init1:alarm(1*1000, tmr.ALARM_AUTO , function()
gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH)
if wifi.sta.getip() == nil then
print(i,"Connecting to AP...")
i=i+1
if i > 10 then
print("pas de wifi :-(")
print("pas grave, on continue le dsleep")
-- sauve l'heure sur la flash pour si jamais il y a un boot power on sans Internet
file.putcontents("_ztime_", rtctime.get())
dsleep_on()
end
else
tmr_wifi_init1:unregister()
rtctime.set(0) sntp.sync(nil, nil, nil, 1)
ztmr_set_time = tmr.create()
ztmr_set_time:alarm(1*1000, tmr.ALARM_AUTO , function()
zrtc_time = rtctime.get()
print("je cherche l'heure: "..zrtc_time)
if zrtc_time > ztime2020 then
ztmr_set_time:unregister()
print("j'ai trouvé l'heure: "..zrtc_time)
file.putcontents("_ztime_", zrtc_time)
-- print(file.getcontents("_ztime_"))
dsleep_on()
end
end)
end
end)
else
-- sauve l'heure sur la flash pour si jamais il y a un boot power on sans Internet
file.putcontents("_ztime_", rtctime.get())
dsleep_on()
end
end
print("wifi scan...")
wifi.sta.getap(1, listap)

View File

@@ -0,0 +1,191 @@
# Enregistre sur la FLASH tous les AP WIFI vu lors du réveil du NodeMCU
Version qui part du principe que quand la *boot reason* est un RESET c'est par défaut une sortie de *sommeil profond*. Car quand le NodeMCU sort du *sommeil profond*, c'est une pin D0 qui fait un RESET une résistance de 1k !
Cela simplifie beaucoup la phase de réveil.
Mais a pour corolaire de ne plus pouvoir faire de RESET et espérer arriver dans la partie seconde chance de la procédure de démarrage.
zf200725.1144
<!-- TOC titleSize:2 tabSpaces:2 depthFrom:1 depthTo:6 withLinks:1 updateOnSave:1 orderedList:0 skip:1 title:1 charForUnorderedList:* -->
## Table of Contents
* [Buts](#buts)
* [Problématiques](#problématiques)
* [Astuces de mesures de la distance au moyen du senseur ultrason](#astuces-de-mesures-de-la-distance-au-moyen-du-senseur-ultrason)
* [Schéma](#schéma)
* [Astuces](#astuces)
* [Installation](#installation)
* [Utilisation](#utilisation)
* [Upload Lua code](#upload-lua-code)
* [Secrets pour le projet](#secrets-pour-le-projet)
* [Rename initz.lua pour le boot automatique](#rename-initzlua-pour-le-boot-automatique)
* [Utilisation de la console du NodeMCU en remote](#utilisation-de-la-console-du-nodemcu-en-remote)
* [Visualisation sur Grafana/InfluxDB](#visualisation-sur-grafanainfluxdb)
<!-- /TOC -->
## Buts
Petit projet pour *géolocaliser* un chat lors de ses sorties à l'extérieur afin de *voir* où il va.
Le but étant de fixer un NodeMCU avec un collier au coup d'un chat et d'enregistrer sur la FLASH tous les AP WIFI vu lors de la sortie.
Après, en post traitement sur l'ordi, on arrive à faire la corrélation AP WIFI coordonnées GPS et pourvoir tracer (géolocaliser) la sortie du chat sans avoir besoin d'utiliser un module GPS qui est trop gros pour le mettre dans un collier.
## Problématiques
La problématique c'est que le NodeMCU doit fonctionner sur une batterie très petite, 400mA/h de capacité.
Le NodeMCU doit donc *dormir* la plus part du temps si l'on veut pouvoir utiliser le *pet tracker* sur plusieurs jours sans devoir recharger la batterie à chaque sortie.
ATTENTION, tout le reste provient d'un autre readme ! zf200725.1116
Petit projet pour mesurer la hauteur d'eau dans un réservoir de 100l au moyen d'un senseur à ultrason utilisé pour de la robotique récréative.
Le but est de mesurer la distance entre le haut du bidon et la surface de l'eau dans le bidon et ainsi pouvoir en déduire le pourcentage de remplissage du bidon.
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/water-level/water-level_ruru_1/img/20200625_163032.jpg)
Senseur à ultrason, très bon marché, permettant de mesurer la distance
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/water-level/water-level_ruru_1/img/20200625_160818.jpg)
NodeMCU autonome, alimenté ici par une batterie, faisant la lecture de la hauteur d'eau et envoyant le résultat dans une DB InfluxDB via le WIFI
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/water-level/water-level_ruru_1/img/20200625_164022.jpg)
Banc test dans le jardin pour vérifier le bon fonctionnement du système
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/water-level/water-level_ruru_1/img/grafana2020-06-25.16.54.32.png)
Graphique obtenu lors du banc test avec de l'eau dans le jardin
<br><br>
On peut voir ici, avec ce projet assez complet, toutes les possibilités offertes de la programmation des NodeMCU en LUA, en mode événementiel. <br>
Choses qui ne seraient pas possible si on l'avait fait en C++ (mode Arduino), comme par exemple:
* crontab, horloge pour les mesures
* envoi des données sur la DB InfluxDB
* serveur reverse TELNET, traversant tous les routers sans devoir en modifier la configuration, permettant d'accéder à la console série (USB) du NodeMCU
Toutes les fonctions sont bien séparées dans des scripts, cela *complexifie* le projet mais ce qui facilite la portabilité entre les projets et aussi sa mise au point.
## Astuces de mesures de la distance au moyen du senseur ultrason
Dans ce projet il y a 1x NodeMCU qui mesure la hauteur d'eau dans le bidon au moyen d'un senseur à ultrason utilisé pour de la robotique récréative très bon marché, 0.70FS
https://www.aliexpress.com/item/32477198302.html
https://cdn.sparkfun.com/datasheets/Sensors/Proximity/HCSR04.pdf
Il n'y a pas de *module* NodeMCU pour ce senseur, mais son utilisation en Lua est vraiment très simple, il suffit juste d'envoyer une *pulse* de 10uS sur la pin *trig* et de *connecter* une interruption du NodeMCU sur la pin *echo*. <br>
Après une simple règle de trois en relation avec la vitesse du son dans l'air et on a la distance en cm.
### Schéma
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/water-level/water-level_ruru_1/schemas/schema.png)
Le schéma est vraiment très simple !
### Astuces
* La seul problématique dans ce projet c'est que le senseur DOIT absolument être alimenté en 5V et que le NodeMCU lui est en 3.3V. <br>
Il faut donc lui ajouter une petite résistance, R1, d'adaptation du niveau pour le signal pour l'interruption du NodeMCU.
## Installation
Il faut *flasher* le NodeMCU avec ce firmware:
https://github.com/zuzu59/NodeMCU_Lua/blob/master/Firmware/nodemcu-master-19-modules-2019-12-31-16-40-12-float.bin
Avec ces modules:
https://github.com/zuzu59/NodeMCU_Lua/blob/master/Firmware/nodemcu-master-19-modules-2019-12-31-16-40-12-float.pdf
## Utilisation
### Upload Lua code
Après avoir *flashé* le NodeMCU avec le bon *firmware* il faut télécharger tous les fichiers \*.lua sur le NodeMCU.
### Secrets pour le projet
Mais il faut aussi bien *remplir* et charger sur le NodeMCU, le fichier des secrets du projet:
```
secrets_project.lua
```
ainsi que le fichier des secrets pour le WIFI
```
secrets_wifi.lua
```
Tout en sachant que les variables utilisées pour les secrets sont utiles pour:
* **znode_chipid == nnn then**<br>
C'est l'id du NodeMCU que chaque NodeMCU ont gravé dans leur mémoire, on peut le lire avec cette commande:
```
=node.chipid()
```
* **node_id = "ttt"**<br>
C'est le nom de *fonction* du NodeMCU qui sera *visible* dans la DB InfluxDB
* **yellow_id = nn**<br>
C'est le *numéro* du NodeMCU que l'on indique sur une *petite étiquette jaune collée* sur le NodeMCU. Ce *numéro* permet par la suite de connaitre très facilement le numéro du *port* utilisé pour le *reverse telnet* quand on veut accéder à la console série du NodeMCU
* **-- thingspeak_url="http://api.thingspeak.com/update?api_key=kkk"**<br>
Pas utilisé dans ce projet
* **influxdb_url="http://uuu:8086/write?db=ddd&u=admin&p=ppp"**<br>
Secrets utilisés pour envoyer des données sur le DB InfluxDB
* **console_host = "uuu" console_port = 23000+yellow_id**<br>
Serveur utilisé pour le *tremplin* du reverse telnet utilisé pour accéder à la console série du NodeMCU au moyen d'un *socat*. L'information d'utilisation se trouve dans le fichier 0_tst5_socat.lua
* **-- zdyndns_host = "hhh" zdyndns_port = nnn**<br>
Pas utilisé dans ce projet
### Rename initz.lua pour le boot automatique
Ne pas oublier après avoir vérifié que tout fonctionne bien de *renommer* le fichier **initz.lua** en **init.lua** afin que quand le NodeMCU puisse démarrer automatiquement le code et bien fonctionner de manière autonome.
### Utilisation de la console du NodeMCU en remote
Très pratique pour le debug, on peut directement modifier le code source Lua du NodeMCU en remote via un *reverse telnet*. Plus d'info dans le fichier 0_tst5_socat.lua.
On peut aussi modifier le code Lua du NodeMCU en remote avec l'utilitaire *luatools.py*
### Visualisation sur Grafana/InfluxDB
![Image](https://raw.githubusercontent.com/zuzu59/NodeMCU_Lua/master/Mesures/water-level/water-level_ruru_1/img/grafana2020-06-25.16.54.32.png)
Graphique obtenu lors du banc test avec de l'eau dans le jardin
La totale en détail
https://github.com/zuzu59/docker-influxdb-grafana
pense bête:
```
file.open("hello.lua","w+")
file.writeline([[print("hello nodemcu")]])
file.writeline([[print(node.heap())]])
file.close()
```

View File

@@ -0,0 +1,35 @@
-- Petit script pour configurer les secrets dans ce projet
-- et que l'on n'aimerait pas être exportés sur Internet (github)
-- Il faut donc modifier le .gitignore avec secrets*.lua
-- il faut le renommer en 'secrets_project.lua' et sera exécuté
-- par 'wifi_init.lua' au moment du boot
function secrets_project()
print("\n secrets_project.lua zf200625.1146 \n")
zLED=4 zBTN=3 node_id = "generic"
znode_chipid=node.chipid() print("znode_chipid:",znode_chipid)
if znode_chipid == iii then node_id = "sonoff_1" zLED=7 end
if znode_chipid == iii then node_id = "sonoff_2" zLED=7 end
if znode_chipid == iii then
node_id = "level1"
yellow_id = nn
-- thingspeak_url="http://api.thingspeak.com/update?api_key=kkk"
influxdb_url="http://uuu:8086/write?db=ddd&u=admin&p=ppp"
print("influxdb_url: "..influxdb_url)
console_host = "uuu" console_port = 23000+yellow_id
-- zdyndns_host = "hhh" zdyndns_port = nnn
end
znode_chipid=nil
print("node_id: "..node_id..", console_port: "..console_port)
end
secrets_project()
secrets_project=nil
--[[
=node.chipid()
]]

View File

@@ -0,0 +1,18 @@
-- Petit script pour configurer les secrets utilisés pour le wifi
-- et que l'on n'aimerait pas être exportés sur Internet (github)
-- Il faut donc modifier le .gitignore avec eus_params* et secret*
-- il faut le renommer en 'secrets_wifi.lua' et sera exécuté
-- par 'wifi_init.lua' une fois pour la configuration du WIFI
function secrets_wifi()
print("\n secrets_wifi.lua zf191222.2002 \n")
f= "eus_params.lua" if file.exists(f) then p = dofile(f) end
if p ~= nil then
cli_ssid = p.wifi_ssid cli_pwd = p.wifi_password p=nil
else
cli_ssid = "" cli_pwd = ""
end
ap_ssid="sss" ap_pwd="ppp"
end
secrets_wifi()

View File

@@ -0,0 +1,62 @@
zf200815.1404
print(ztime())
print("rtctime: "..rtctime.get())
dsleep_on()
f = "0_wifi_scan.lua" if file.exists(f) then dofile(f) end
wifi.setmode(wifi.STATION)
scan_wifi()
zcat_logs_ap_wifi()
print(node.bootreason())
print("le flag est à "..rtcmem.read32(10))
f= "wifi_info.lua" if file.exists(f) then dofile(f) end
wifi.sta.connect()
wifi.sta.disconnect()
print(wifi.sta.status())
wifi.setmode(wifi.STATION,true)
wifi.sta.setaplimit(2)
wifi.sta.config{ssid="apzuzu66", pwd="12345678", save=true, auto=true}
wifi.sta.config{ssid="apzuzu67", pwd="12345678", save=true, auto=true}
wifi.sta.connect()
print(wifi.sta.status())
node.restore()
wifi.sta.changeap(1)
wifi.sta.clearconfig()
wifi.sta.changeap(2)
wifi.sta.clearconfig()
print(wifi.sta.getapindex())
--print stored access point info
do
for k,v in pairs(wifi.sta.getapinfo()) do
if (type(v)=="table") then
print(" "..k.." : "..type(v))
for k,v in pairs(v) do
print("\t\t"..k.." : "..v)
end
else
print(" "..k.." : "..v)
end
end
end
print(wifi.STA_IDLE)
print(wifi.STA_CONNECTING)
print(wifi.STA_WRONGPWD)
print(wifi.STA_APNOTFOUND)
print(wifi.STA_FAIL)
print(wifi.STA_GOTIP)

View File

@@ -0,0 +1,372 @@
# Quelques commandes remote (luatool) à envoyer avec le plugin Atom-IDE-terminal de l'éditeur Atom
# zf200818.2326
*****************************
# Todo à faire pour ce projet !
- éviter de trop remplir la FLASH !
- faut mettre à jour le _secrets_projet.lua pour la documentation
- refaire totalement la détection de connexion wifi start
- faire un petit serveur en lua pour décharger les logs automatiquement quand on se trouve à la maison
- comment avoir une balise de recherche quand le pet tracker est perdu ?
*****************************
# Logigramme de connexion au WIFI lors du boot
1) on essaie en premier de se connecter sur le cli_ssid2, si oui, on continue la procédure de boot
2) on essaie en deuxième de se connecter sur le cli_ssid1, si oui, on continue la procédure de boot
3) on part en mode setup gadget
4) si pas de réponse au setup gadget, on restart
*****************************
# J'ai encore quelques problèmes à régler !
v- comment faire pour sauver l'horloge afin d'avoir une horloge quand on n'a pas
eu de connexion internet au moment du power on ?
v- 1: il faut que quand il se réveille et que la date est en 1970, il doit alors aller
chercher la date dans un fichier sur la flash.
Et qu'à chaque fois qu'il écrit le log dans la flash il sauve aussi la date qu'il
a pour si jamais qu'il puisse repartir au moins depuis un temps connu
v- comment se comporter quand on a trouvé un WIFI connu ?
Afin de pouvoir
1) se connecter pour vider les logs
2) récupérer l'horloge
3) faire la maintenance
4) continuer quand même le recording
v- 1: s'il voit apzuzu6, il se connecte, va régler l'horloge et continue son dsleep habituel
- 1: s'il voit apzuzu6 ET qu'il voit le serveur de vidange de log, il se connecte,
va régler l'horloge, vide ses logs et continue son dsleep habituel
v- 2: s'il voit 3g-s7, il se connecte et va régler l'horloge et arrête son dsleep
Convertisseur GPX to CSV
https://mygeodata.cloud/converter/gpx-to-csv
???
# si luatool ne marche pas sur le MAC, il faut lire ceci:
# https://docs.google.com/document/d/1q64uK3IMOgEDdKaIAttbYuFt4GuLQ06k3FLeyfCsWLg/edit#heading=h.bmefcu67uwj0
# raccourcis clavier
# CTRL+ALT+ENTER envoie au terminal la ligne de l'éditeur
# SHIT+CTRL+` ouvre le terminal (attention, ne pas oublier de copier le *path* dans le *tree* et le changer)
# ALT+CMD+F bascule entre le terminal et l'éditeur
screen /dev/cu.wchusb
serial1410 115200
# définitions à faire AVANT !
#export luatool_tty="/dev/cu.wchusbserial1410"
#export zIP="192.168.0.182"
#export zport="23"
export zIP="localhost"
export zport="23000"
# ouvrir et fermer (ALT+N+.) une session telnet sur le NodeMCU avec l'adresse zIP)
telnet -rN $zIP $zport
~.
--node.restart()
collectgarbage()
=node.heap()
for k,v in pairs(_G) do print(k,v) end
################################
# commandes lua pour ce projet #
################################
# pour les tests en direct sur la gateway
ssh ubuntu@www.zuzu-test.ml
socat TCP-LISTEN:23069,fork,reuseaddr STDIO
################################
# pour les tests en remote
killall -9 ssh
ssh ubuntu@www.zuzu-test.ml killall -9 socat
ssh ubuntu@www.zuzu-test.ml socat TCP-LISTEN:23010,reuseaddr,fork TCP-LISTEN:23000,reuseaddr,bind=127.0.0.1 &
# SHIFT+CMD+K SHIFT+CMD+K ALT+CMD+F
watch -n 1 'ssh ubuntu@www.zuzu-test.ml netstat -nat |grep 230'
# ALT+CMD+F CTRL+C ALT+CMD+F
export zIP="localhost"
export zport="23000"
ssh -N -L 23000:localhost:23000 ubuntu@www.zuzu-test.ml &
telnet -rN $zIP $zport
verbose=false
file.remove("apwifi.txt")
print(ztime())
dsleep_on()
dofile("cat2.lua")
cat2("apwifi.txt")
zcat_logs_ap_wifi()
verbose=false
~.
=node.heap()
verbose=true
node.restart()
dofile("head.lua")
zhead("0_ultra_son.lua")
./luatool.py --ip $zIP:$zport -f boot.lua
./luatool.py --ip $zIP:$zport -f 0_get_power.lua
./luatool.py --ip $zIP:$zport -f 0_cron.lua
./luatool.py --ip $zIP:$zport -f 0_http_post.lua
./luatool.py --ip $zIP:$zport -f 0_tst5_socat.lua
./luatool.py --ip $zIP:$zport -f 0_dsleep2.lua
./luatool.py --ip $zIP:$zport -f dir.lua
./luatool.py --ip $zIP:$zport -f cat2.lua
./luatool.py --ip $zIP:$zport -f head.lua
./luatool.py --ip $zIP:$zport --zrestart
= node.bootreason()
# https://nodemcu.readthedocs.io/en/master/modules/node/#nodebootreason
for k,v in pairs(_G) do print(k,v) end
verbose=true
#zdyn
./luatool.py --ip $zIP:$zport -f api_sonoff.html
http://192.168.0.182
./luatool.py --ip $zIP:$zport -f dir.lua
telnet -rN $zIP $zport
verbose=false
verbose=true
~.
=node.heap()
collectgarbage()
=node.heap()
dofile("dir.lua")
dir()
for k,v in pairs(_G) do print(k,v) end
dofile("wifi_info.lua")
node.restart()
~.
./luatool.py --ip $zIP:$zport -f head.lua
telnet -rN $zIP $zport
dofile("head.lua")
zhead("boot.lua")
verbose=true
verbose=false
zsort_rssi() zshow()
#commandes luatool pour ce projet le .137 est à jour avec la nouvelle version du wifi !
~.
./luatool.py --ip $zIP:$zport -l
./luatool.py --ip $zIP:$zport -f wifi_init.lua
./luatool.py --ip $zIP:$zport -f secrets_wifi.lua
./luatool.py --ip $zIP:$zport -f initz.lua -t init.lua
./luatool.py --ip $zIP:$zport -f boot.lua
./luatool.py --ip $zIP:$zport -f boot2.lua
./luatool.py --ip $zIP:$zport -f wifi_init.lua
./luatool.py --ip $zIP:$zport -f set_time.lua
./luatool.py --ip $zIP:$zport -f wifi_info.lua
./luatool.py --ip $zIP:$zport -f c.lua
./luatool.py --ip $zIP:$zport -f cat.lua
./luatool.py --ip $zIP:$zport -f flash_led_xfois.lua
./luatool.py --ip $zIP:$zport -f head.lua
./luatool.py --ip $zIP:$zport -f b.lua
./luatool.py --ip $zIP:$zport -f web_srv2.lua
./luatool.py --ip $zIP:$zport -f z_index.html
./luatool.py --ip $zIP:$zport -f wifi_get_conf.html
./luatool.py --ip $zIP:$zport -f wifi_set_conf.html
./luatool.py --ip $zIP:$zport -f z_page1.html
./luatool.py --ip $zIP:$zport -f z_page2.html
./luatool.py --ip $zIP:$zport -f z_page3.html
./luatool.py --ip $zIP:$zport -f z_page4.html
./luatool.py --ip $zIP:$zport --delete wifi_ap_start.lua
./luatool.py --ip $zIP:$zport --delete wifi_cli_conf.lua
./luatool.py --ip $zIP:$zport --delete wifi_cli_start.lua
./luatool.py --ip $zIP:$zport --delete dir.lua
./luatool.py --ip $zIP:$zport --delete initz.lua
./luatool.py --ip $zIP:$zport --delete wifi_conf.lua
dofile("wifi_info.lua")
--node.restart()
for k,v in pairs(_G) do print(k,v) end
t=12
t=nil
print(pcall(function () print("2"..t) end))
# ici c'est maintenant ;-)
~.
./luatool.py --ip $zIP:$zport -f b.lua
#./luatool.py --ip $zIP:$zport --zrestart
telnet -rN $zIP $zport
zsort_rssi() zshow()
print(ztrig_rssi)
ztrig_rssi=-1000
ztrig_rssi=-90
# test de la gestion des erreurs
~.
./luatool.py --ip $zIP:$zport -f c.lua
#./luatool.py --ip $zIP:$zport --zrestart
telnet -rN $zIP $zport
status, err = pcall(function () dofile("c.lua") end) if status==false then print("Error: ",err) end
zerr=nil
zerr=1
ztmr_tst_err:unregister()
ztmr_tst_err:unregister()
for k,v in pairs(_G) do print(k,v) end
./luatool.py --ip $zIP --zrestart
# faire un cat d'un fichier sur le NodeMCU
dofile("cat.lua")
cat("boot2.lua")
# commandes luatool
./luatool.py -h
./luatool.py --ip $zIP:$zport -i
./luatool.py --ip $zIP:$zport -l
./luatool.py --ip $zIP:$zport -f toto.lua -d
./luatool.py --ip $zIP:$zport --delete toto.lua
****************************************************************************
# création des tunnels ssh
ATTENTION: dans un premier terminal !
Pour Bolo à Ruchonnet:
ssh -t -L 2323:localhost:2323 ubuntu@www.zuzu-test.ml ssh -N -L 2323:192.168.8.102:23 ubuntu@localhost -p 20223
Pour le Crêt
ssh -N -L 2323:192.168.0.137:23 admin@z.zufferey.com -p 1822
ssh -N -L 2323:192.168.0.122:23 admin@z.zufferey.com -p 1822
ssh -N -L 2323:192.168.0.118:23 admin@z.zufferey.com -p 1822
ATTENTION: dans un deuxième terminal !
export zIP="localhost"
export zport="2323"
telnet -rN $zIP $zport
~.
=node.heap()
verbose=false
verbose=true
dofile("dir2.lua")
dir()
filec("head.lua")
dofile("head.lua")
zhead("dir2.lua")
dofile("cat.lua")
cat("head.lua")
~.
--node.restart()
=node.heap()
status, err = pcall(function () fonction_a_tester() end) if status==false then print("Error: ",err) end
status, err = pcall(function () toto() end) if status==false then print("Error: ",err) end
Gestion de la passerelle SSH reverse
Puis depuis une autre console on peut faire directement pour aller sur l'OpiZ (ici le 20223):
ssh -t ubuntu@www.zuzu-test.ml ssh ubuntu@localhost -p 20223
ou
1ère console
On établit le tunnel local avec l'OpiZ
ssh -N -L 20223:localhost:20223 ubuntu@www.zuzu-test.ml
2ème console, on utilise le tunnel OpiZ en local sur sa machine
pour aller sur l'OpiZ
ssh ubuntu@localhost -p 20223
pour copier sa clef SSH depuis un MAC
./ssh-copy-id -i ~/.ssh/id_rsa.pub 'ubuntu@localhost -p 20223'
après on devrait pouvoir se connecter sans devoir entrer son password à chaque fois
ssh ubuntu@localhost -p 20223
ou, on établit un tunnel pour telnet sur un NodeMCU
ssh -L 2323:192.168.0.137:23 ubuntu@localhost -p 20223
puis
telnet -rN localhost 2323
ou, on établit un tunnel pour le rpimonotor sur l'OpiZ
ssh -N -L 8888:192.168.0.113:8888 ubuntu@localhost -p 20223
puis
http://localhost:8888
ou, on établit un tunnel proxy Socket 5 pour le modem 4G HUAWEI sur l'OpiZ
ssh -N -D 8080 ubuntu@localhost -p 20223
puis depuis le browser FireFox avec le plugin FoxyProxy Socket 5 sur localhost port 8080
http://192.168.8.1
.

View File

@@ -0,0 +1,77 @@
-- Scripts à charger après le boot pour démarrer son projet
function boot()
print("\n boot.lua zf200815.1436 \n")
print("On lance le boot...")
collectgarbage() print(node.heap())
local f
-- f = "0_http_post.lua" if file.exists(f) then dofile(f) end
-- collectgarbage() print(node.heap())
-- local _, boot_reason = node.bootreason()
-- zarg_boot= "energy,memory=boot_"..yellow_id.." ram="..node.heap().."\n"
-- zarg_boot=zarg_boot.."energy,value=boot_reason_"..yellow_id.." val="..boot_reason
-- http_post(influxdb_url,zarg_boot)
f = "set_time2.lua" if file.exists(f) then dofile(f) end
print(node.heap()) collectgarbage() print(node.heap())
-- f = "0_dsleep2.lua" if file.exists(f) then dofile(f) end
-- print(node.heap()) collectgarbage() print(node.heap())
-- f = "0_wifi_scan.lua" if file.exists(f) then dofile(f) end
-- print(node.heap()) collectgarbage() print(node.heap())
-- f = "flash_led_xfois.lua" if file.exists(f) then dofile(f) end
-- print(node.heap()) collectgarbage() print(node.heap())
-- f = "0_zdyndns.lua" if file.exists(f) then dofile(f) end
-- print(node.heap()) collectgarbage() print(node.heap())
-- f="0_btn_flipflop.lua" if file.exists(f) then dofile(f) end
-- collectgarbage() print(node.heap())
-- f="0_ultra_son.lua" if file.exists(f) then dofile(f) end
-- collectgarbage() print(node.heap())
-- f="0_cron.lua" if file.exists(f) then dofile(f) end
-- collectgarbage() print(node.heap())
verbose = true
print("verbose: ",verbose,"\nle boot est lancé...")
gpio.write(zLED, gpio.HIGH)
f=nil boot=nil
end
-- function debug_rec(zdebug)
-- local sec, usec = rtctime.get() local tm = rtctime.epoch2cal(sec + 2*3600)
-- local ztm = string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"])
-- file.open("00_debug.txt", "a+") file.writeline(ztm.."."..usec..", "..zdebug) file.close()
-- end
--
-- function rec_boot()
-- sntp.sync(nil, nil, nil, 1)
-- tmr_rec_boot1=tmr.create()
-- tmr_rec_boot1:alarm(1*1000, tmr.ALARM_AUTO, function()
-- print("beep...")
-- if rtctime.get() > 0 then
-- tmr_rec_boot1:unregister()
-- print("Voilà on à l'heure, on peut enregistrer la raison du boot...")
-- local _, zboot_reason, zboot_detail = node.bootreason()
-- debug_rec("boot reason: "..zboot_reason)
-- tmr_rec_boot1=nil rec_boot=nil
-- collectgarbage() print(node.heap())
-- end
-- end)
-- end
verbose=true
if rec_boot~=nil then rec_boot() end
boot()
collectgarbage() print(node.heap())
--[[
verbose = true
verbose = false
]]

View File

@@ -1,5 +1,5 @@
-- fonction cat() pour afficher le contenu d'un fichier dans la flash -- fonction cat() pour afficher le contenu d'un fichier dans la flash
print("\n cat.lua zf180826.1109 \n") print("\n cat.lua zf192026.0858 \n")
function cat(zfile) function cat(zfile)
print("\n"..zfile.."\n-------------------------------") print("\n"..zfile.."\n-------------------------------")
@@ -8,7 +8,8 @@ function cat(zfile)
i=1 i=1
zline=file.readline() zline=file.readline()
repeat repeat
print(i..": "..string.sub(zline,1,string.len(zline)-1)) -- print(i..": "..string.sub(zline,1,string.len(zline)-1))
print(string.sub(zline,1,string.len(zline)-1))
i=i+1 zline=file.readline() i=i+1 zline=file.readline()
until zline== nil until zline== nil
file.close(zfilei) file.close(zfilei)

View File

@@ -0,0 +1,24 @@
-- fonction cat() pour afficher le contenu d'un fichier dans la flash
print("\n cat2.lua zf200816.1417 \n")
print("\nusage:")
print(" cat2(\"filename\")")
zfilei = ""
zline = ""
ztmr_cat1 = tmr.create()
function zprintline()
print(string.sub(zline,1,string.len(zline)-1))
zline = file.readline()
if zline == nil then
ztmr_cat1:unregister()
file.close(zfilei)
end
end
function cat2()
zfilei = file.open(logs_ap_wifi, "r")
zline = file.readline()
ztmr_cat1:alarm(50, tmr.ALARM_AUTO, zprintline)
end

View File

@@ -0,0 +1,31 @@
-- fonction dir() pour juste afficher les fichiers avec leur taille
print("\n dir.lua zf191223.1455 \n")
function dir()
local zdir={}
local pfile = file.list()
for k,v in pairs(pfile) do
zdir[#zdir+1] = k..string.rep(" ",24-string.len(k)).." : "..v
end
table.sort(zdir) for i=1, #zdir do print(zdir[i]) end
size_file=nil chksum_file=nil k=nil
end
dir()
print("\nusage:")
print(" dir()")
--[[
dir()
dirc()
filec("dir2.lua")
=node.heap()
clear_dir()
=node.heap()
for k,v in pairs(_G) do print(k,v) end
status, err = pcall(function () print(zhash("il était une fois trois petits cochons roses...")) end) if status==false then print("Error: ",err) end
]]

View File

@@ -0,0 +1,38 @@
-- programme pour faire clignoter x fois une LED avec un rapport on/off
function flash_led_xfois()
print("\n flash_led_xfois.lua zf200722.1139 \n")
--zLED=0 --NodeMCU
--zLED=4 --EPS-M3
zTm_On_LED = 50 --> en ms
zTm_Off_LED = 100 --> en ms
nbfois = 0
gpio.write(zLED, gpio.HIGH)
gpio.mode(zLED, gpio.OUTPUT)
ztmr_Flash_LED = tmr.create()
function blink_LED ()
if nbfois >= xfois then
-- print(nbfois)
nbfois = 0
else
if gpio.read(zLED)==gpio.HIGH then
gpio.write(zLED, gpio.LOW)
-- tmr.alarm(ztmr_Flash_LED, zTm_Off_LED, tmr.ALARM_SINGLE, blink_LED)
ztmr_Flash_LED:alarm(zTm_Off_LED, tmr.ALARM_SINGLE, blink_LED)
else
gpio.write(zLED, gpio.HIGH)
nbfois = nbfois+1
-- tmr.alarm(ztmr_Flash_LED, zTm_On_LED, tmr.ALARM_SINGLE, blink_LED)
ztmr_Flash_LED:alarm(zTm_On_LED, tmr.ALARM_SINGLE, blink_LED)
end
end
end
xfois =2
blink_LED ()
end
flash_led_xfois()

View File

@@ -0,0 +1,49 @@
-- Petit script pour faire office de crontab pour les mesures
print("\n 0_cron.lua zf200705.2247 \n")
cron1=tmr.create()
cron1:alarm(15*1000, tmr.ALARM_AUTO, function()
-- if verbose then print("cron1........................") end
-- if verbose then gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH) end
-- rt_launch()
-- http_post(influxdb_url,"energy,value=test1_"..yellow_id.." val=1")
-- http_post(influxdb_url,"energy,memory=cron1_"..yellow_id.." ram="..node.heap())
-- if yellow_id == 60 then http_post(influxdb_url,"energy,compteur=3 puissance="..zpower/1000) end
-- if yellow_id == 64 then http_post(influxdb_url,"energy,compteur=4 puissance="..zpower/1000) end
if yellow_id == 69 then
local zmes="bolo_ruru,capteur="..node_id.." level="..zlevel
zmes=zmes.."\n".."bolo_ruru,capteur="..node_id.." hauteur="..zlength
http_post(influxdb_url,zmes)
end
-- http_post(influxdb_url,"energy,value=test2_"..yellow_id.." val=2")
-- http_post(influxdb_url,"energy,value=test3_"..yellow_id.." val=3")
-- http_post(influxdb_url,"energy,value=test4_"..yellow_id.." val=4")
-- f = "0_zdyndns.lua" if file.exists(f) then dofile(f) end
-- f=nil
-- if verbose then print("End cron:") end
collectgarbage()
-- if verbose then print(node.heap()) end
end)
--[[
cron1:stop()
cron1:start()
]]

View File

@@ -0,0 +1,45 @@
-- Petit script pour envoyer en // es valeurs sur un serveur WEB (InfluxDB)
-- via un http POST à travers un FIFO
if verbose then print("\n 0_http_post.lua zf200625.1137 \n") end
t_zurl={} t_zarg={} f_zpost=false
-- function tprint(t)
-- for key,value in pairs(t) do print(key, value) end
-- end
function zpost()
f_zpost=true local zurl=t_zurl[1] local zarg=t_zarg[1]
-- zarg=zarg.."\n".."energy,value=nb_waiting_"..yellow_id.." val="..#t_zurl
-- zarg=zarg.."\n".."energy,memory=zpost_"..yellow_id.." ram="..node.heap()
if verbose then print("zurl: "..zurl) end if verbose then print("zarg: "..zarg) end
http.post(zurl, 'Content-Type: application/x-www-form-urlencoded\r\n', zarg, function(code, data)
if (code < 0) then
print("HTTP request failed")
print("zuzu", code, data)
if debug_rec~=nil then debug_rec("HTTP request failed: ", code, data) end
else
if verbose then print(code, data) end
end
table.remove(t_zurl, 1) table.remove(t_zarg, 1)
if t_zurl[1]==nil then
f_zpost=false
else
zpost()
end
-- if verbose then print("End zpost:") end
collectgarbage()
-- if verbose then print(node.heap()) end
end)
end
function http_post(zurl,zarg)
if #t_zurl <=10 then table.insert(t_zurl, zurl) table.insert(t_zarg, zarg) end
-- if verbose then print("Nb wait: "..#t_zurl) print(node.heap()) end
-- if verbose then print("t_zurl:") tprint(t_zurl) print("t_zarg:") tprint(t_zarg) end
if f_zpost==false then zpost() end
-- if verbose then print("End http_post:") end
collectgarbage()
-- if verbose then print(node.heap()) end
end

View File

@@ -0,0 +1,57 @@
-- Scripts pour tester la consommation des différents mode du WIFI
print("\n a_test_power_wifi zf181209.1718 \n")
f= "wifi_ap_stop.lua" if file.exists(f) then dofile(f) end
f= "wifi_cli_conf.lua" if file.exists(f) then dofile(f) end
f= "wifi_cli_start.lua" if file.exists(f) then dofile(f) end
--f= "telnet_srv.lua" if file.exists(f) then dofile(f) end
--f= "web_ide2.lua" if file.exists(f) then dofile(f) end
--f= "dsleep.lua" if file.exists(f) then dofile(f) end
print("mode physique: ", wifi.getphymode())
print("defaut mode: ", wifi.getdefaultmode())
print("wifi stat status: ", wifi.sta.status())
-- print AP list in old format (format not defined)
function listap(t)
for k,v in pairs(t) do
print(k.." : "..v)
end
end
wifi.sta.getap(listap)
-- Print AP list that is easier to read
function listap(t) -- (SSID : Authmode, RSSI, BSSID, Channel)
print("\n"..string.format("%32s","SSID").."\tBSSID\t\t\t\t RSSI\t\tAUTHMODE\tCHANNEL")
for ssid,v in pairs(t) do
local authmode, rssi, bssid, channel = string.match(v, "([^,]+),([^,]+),([^,]+),([^,]+)")
print(string.format("%32s",ssid).."\t"..bssid.."\t "..rssi.."\t\t"..authmode.."\t\t\t"..channel)
end
end
wifi.sta.getap(listap)
-- print AP list in new format
function listap(t)
for k,v in pairs(t) do
print(k.." : "..v)
end
end
wifi.sta.getap(1, listap)
-- Print AP list that is easier to read
function listap(t) -- (SSID : Authmode, RSSI, BSSID, Channel)
print("\n\t\t\tSSID\t\t\t\t\tBSSID\t\t\t RSSI\t\tAUTHMODE\t\tCHANNEL")
for bssid,v in pairs(t) do
local ssid, rssi, authmode, channel = string.match(v, "([^,]+),([^,]+),([^,]+),([^,]*)")
print(string.format("%32s",ssid).."\t"..bssid.."\t "..rssi.."\t\t"..authmode.."\t\t\t"..channel)
end
end
wifi.sta.getap(1, listap)

View File

@@ -0,0 +1,52 @@
-- fonction dir_vers() pour afficher toutes les versions de tous les fichiers *.lua sur le NodeMCU !
-- fonction filec(fichier) pour afficher la version d'un seul fichiers sur le NodeMCU !
function dir3()
print("\n 0_dir3.lua zf200611.1714 \n")
function file_vers(name_file)
local z=""
if string.find(name_file,"%.lua") then
z=name_file..":"
-- print("fichier: "..name_file)
local f,i1,i2,j1,j2,k,t = f,i1,i2,j1,j2,k,t
f = file.open(name_file, "r")
while true do
local t = f:readline() if t == nil then break end
-- recherche de l'entête de version [print("\n ]
-- ATTENTION, il faut échapper la '(' avec un % et convertir le '\' en char(92)
k='print%("'..string.char(92)..'n '
i1,j1 = string.find(t,k)
if i1 ~= nil then
k=string.char(92)..'n"%)'
i2,j2 = string.find(t,k,j1)
z=name_file..": "..string.sub(t,j1+1,i2-2)
break
end
end
f:close()
uart.write(0,".")
end
return z
end
zdir={} list_files={}
local k,v = k,v local pfile = file.list()
for k,v in pairs(pfile) do
zdir[#zdir+1] = file_vers(k)
end
table.sort(zdir) for i=1, #zdir do print(zdir[i]) end
dir_vers=nil file_vers=nil list_files=nil zdir=nil
dir3=nil
end
dir3()
--[[
status, err = pcall(function () print(zhash("il était une fois trois petits cochons roses...")) end) if status==false then print("Error: ",err) end
]]

View File

@@ -0,0 +1,16 @@
-- Scripts de seconde chance pour réparer une boucle dans le restart
print("\n repair.lua zf181210.1456 \n")
--f= "wifi_ap_start.lua" if file.exists(f) then dofile(f) end
--f= "telnet_srv.lua" if file.exists(f) then dofile(f) end
--f= "az_init_led.lua" if file.exists(f) then dofile(f) end
--[[
jobtimer1=tmr.create()
tmr.alarm(jobtimer1, 5*1000, tmr.ALARM_AUTO, function()
print("repair...")
end)
]]

View File

@@ -0,0 +1,12 @@
-- Scripts pour faire un soft reset
print("\n restart.lua zf181209.1753 \n")
restarttimer1=tmr.create()
tmr.alarm(restarttimer1, 2*1000, tmr.ALARM_SINGLE, function()
node.restart()
end)
print("hello zuzu")

View File

@@ -0,0 +1,19 @@
-- fonction cat() pour afficher les 10 premières lignes d'un fichier dans la flash
print("\n head.lua zf192028.1516 \n")
function zhead(zfile)
print("\n"..zfile.."\n-------------------------------")
zfilei = file.open(zfile, "r")
i=1
zline=file.readline()
repeat
-- print(i..": "..string.sub(zline,1,string.len(zline)-1))
print(string.sub(zline,1,string.len(zline)-1))
i=i+1 zline=file.readline()
if i>10 then break end
until zline==nil
file.close(zfilei)
print("-------------------------------")
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 204 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 646 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

View File

@@ -0,0 +1,105 @@
--Script de bootstrap, test au moment du boot qui a été la cause de boot.
-- Si la cause est un power on ou une connexion depuis l'IDE, alors
-- le script repair.lua pendant xx secondes avant de continuer
--Source: https://nodemcu.readthedocs.io/en/master/en/modules/node/#nodebootreason
print("\n init.lua zf200816.1421 \n")
verbose = true
function initz()
function initz_end()
print("initz_end...")
f= "wifi_init.lua" if file.exists(f) then dofile(f) end
f=nil initz=nil second_chance=nil hvbouton=nil initz_end=nil
print(node.heap()) collectgarbage() print(node.heap())
print("initz_end out...")
end
function hvbouton()
gpio.trig(zswitch, "none") zswitch=nil
print("hvbouton...")
print(tmr.now())
if tmr.now() > 5000000 then
file.putcontents("_setup_wifi_", "toto")
print("on a demandé le setup wifi !")
end
initalarme1:unregister() initalarme1=nil second_chance=nil
gpio.write(zLED, gpio.HIGH) zLED=nil
reset_reason="hvbouton"
initz_end()
end
function second_chance()
print("seconde chance...")
zLED=4 -- NodeMCU
--zLED=7 -- SonOff
gpio.write(zLED, gpio.LOW) gpio.mode(zLED, gpio.OUTPUT)
initalarme1=tmr.create()
initalarme1:alarm(10*1000, tmr.ALARM_SINGLE, function()
gpio.write(zLED, gpio.HIGH) zLED=nil
gpio.trig(zswitch, "none") zswitch=nil
reset_reason="seconde_chance"
initz_end()
end)
zswitch=3 --switch flash ou SonOff
gpio.mode(zswitch, gpio.INT, gpio.PULLUP)
gpio.trig(zswitch, "both", hvbouton)
end
_, reset_reason = node.bootreason()
print("reset_reason: ",reset_reason)
if reset_reason == 0 then
print("power on")
if node_mode == "dsleep" then
print("dsleep wake up")
f = "0_dsleep2.lua" if file.exists(f) then dofile(f) end
else
second_chance()
end
elseif reset_reason == 4 then
print("node.restart")
initz_end()
elseif reset_reason == 5 then
print("dsleep wake up")
if node_mode == "dsleep" then
print("dsleep wake up")
f = "0_dsleep2.lua" if file.exists(f) then dofile(f) end
else
initz_end()
end
elseif reset_reason == 6 then
print("external reset")
if node_mode == "dsleep" then
print("dsleep wake up")
f = "0_dsleep2.lua" if file.exists(f) then dofile(f) end
else
initz_end()
end
else
print("autre raison")
second_chance()
end
end
f= "secrets_wifi.lua" if file.exists(f) then dofile(f) end
f= "secrets_project.lua" if file.exists(f) then dofile(f) end
initz()
--[[
zLED=7
gpio.mode(zLED, gpio.OUTPUT)
gpio.write(zLED, gpio.LOW) -- actif !
gpio.write(zLED, gpio.HIGH)
zBTN=3
gpio.mode(zBTN, gpio.INPUT)
print(gpio.read(zBTN))
zRELAY=6
gpio.mode(zRELAY, gpio.OUTPUT)
gpio.write(zRELAY, gpio.HIGH) -- actif !
gpio.write(zRELAY, gpio.LOW)
]]

View File

@@ -0,0 +1,408 @@
#!/usr/bin/env python
# -*- coding: utf-8 -*-
version = "0.6.9 zf200725.1209"
print("luatool.py ver " + version)
#Améliorations
# Pour voir les améliorations il faut 'chercher' les zzz
#
# ESP8266 luatool
# Author e-mail: 4ref0nt@gmail.com
# Site: http://esp8266.ru
# Contributions from: https://github.com/sej7278
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with
# this program; if not, write to the Free Software Foundation, Inc., 51 Franklin
# Street, Fifth Floor, Boston, MA 02110-1301 USA.
import sys
import serial
from time import sleep
import socket
import argparse
from os.path import basename
tqdm_installed = True
try:
from tqdm import tqdm
except ImportError, e:
if e.message == 'No module named tqdm':
tqdm_installed = False
else:
raise
class TransportError(Exception):
"""Custom exception to represent errors with a transport
"""
def __init__(self, message):
self.message = message
def __str__(self):
return self.message
class AbstractTransport:
def __init__(self):
raise NotImplementedError('abstract transports cannot be instantiated.')
def close(self):
raise NotImplementedError('Function not implemented')
def read(self, length):
raise NotImplementedError('Function not implemented')
def writeln(self, data, check=1):
raise NotImplementedError('Function not implemented')
def writer(self, data):
##zzz191124 enlève la fin de ligne afin de ne pas perturber la vérification finale
data = data.rstrip('\r\n')
self.writeln("file.writeline([==[" + data + "]==])\r")
def performcheck(self, expected):
line = ''
char = ''
i = -1
while char != chr(62): # '>'
char = self.read(1)
if char == '':
raise Exception('No proper answer from MCU')
if char == chr(13) or char == chr(10): # LF or CR
if line != '':
#zzz191124 line = line.strip()
# zzz191021 Affiche ce que l'on a reçu du NodeMCU
if args.verbose:
print("\n\nzread0957: {" + line + "\n}\n")
if line+'\r' == expected and not args.bar:
sys.stdout.write(" -> ok")
elif line+'\r' != expected:
if line[:4] == "lua:":
sys.stdout.write("\r\n\r\nLua ERROR: %s" % line)
raise Exception('ERROR from Lua interpreter\r\n\r\n')
else:
expected = expected.split("\r")[0]
sys.stdout.write("\r\n\r\nERROR")
sys.stdout.write("\r\n send string : '%s'" % expected)
sys.stdout.write("\r\n expected echo : '%s'" % expected)
sys.stdout.write("\r\n but got answer : '%s'" % line)
sys.stdout.write("\r\n\r\n")
raise Exception('Error sending data to MCU\r\n\r\n')
line = ''
else:
line += char
if char == chr(62) and expected[i] == char:
char = ''
i += 1
class SerialTransport(AbstractTransport):
def __init__(self, port, baud, delay):
self.port = port
self.baud = baud
self.serial = None
self.delay = delay
try:
self.serial = serial.Serial(port, baud)
except serial.SerialException as e:
raise TransportError(e.strerror)
self.serial.timeout = 3
self.serial.interCharTimeout = 3
# zzz191021 juste après l'ouverture du port série, on attend le caractère '>'
line = ''
char = ''
i = -1
while char != chr(62): # '>'
char = self.read(1)
if char == '':
raise Exception('No proper answer from MCU')
line += char
i += 1
if args.verbose:
print("line: ." + line + ".")
def writeln(self, data, check=1):
# zzz191020 on fait une petite pause avant l'envoi de chaque ligne
sleep(self.delay)
if self.serial.inWaiting() > 0:
self.serial.flushInput()
if len(data) > 0 and not args.bar:
sys.stdout.write("\r\n->")
sys.stdout.write(data.split("\r")[0])
##zzz191124 attend encore un petit peu avant d'envoyer
sleep(self.delay)
self.serial.write(data)
sleep(self.delay)
# zzz191021 Affiche ce que l'on a envoyé au NodeMCU
if args.verbose:
print("\n\nzwrite0952: {" + data + "\n}\n")
if check > 0:
self.performcheck(data)
elif not args.bar:
sys.stdout.write(" -> send without check")
def read(self, length):
return self.serial.read(length)
def close(self):
self.serial.flush()
self.serial.close()
class TcpSocketTransport(AbstractTransport):
def __init__(self, host, port):
self.host = host
self.port = port
self.socket = None
try:
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
except socket.error as e:
raise TransportError(e.strerror)
try:
self.socket.connect((host, port))
except socket.error as e:
raise TransportError(e.strerror)
# read intro from telnet server (see telnet_srv.lua)
self.socket.recv(50)
def writeln(self, data, check=1):
if len(data) > 0 and not args.bar:
sys.stdout.write("\r\n->")
sys.stdout.write(data.split("\r")[0])
self.socket.sendall(data)
if check > 0:
self.performcheck(data)
elif not args.bar:
sys.stdout.write(" -> send without check")
def read(self, length):
return self.socket.recv(length)
def close(self):
self.socket.close()
def decidetransport(cliargs):
if cliargs.ip:
data = cliargs.ip.split(':')
host = data[0]
if len(data) == 2:
port = int(data[1])
else:
port = 23
return TcpSocketTransport(host, port)
else:
return SerialTransport(cliargs.port, cliargs.baud, cliargs.delay)
if __name__ == '__main__':
# parse arguments or use defaults
parser = argparse.ArgumentParser(description='ESP8266 Lua script uploader.')
parser.add_argument('--bar', action='store_true', help='Show a progress bar for uploads instead of printing each line')
parser.add_argument('--delay', default=0.025, help='Delay in seconds between each write, default 0.03 sec.', type=float)
parser.add_argument('--delete', default=None, help='Delete a lua/lc file from device.')
parser.add_argument('--ip', default=None, help='Connect via telnet server (--ip IP[:port])')
parser.add_argument('--zrestart', action='store_true', help='Restart the NodeMCU.')
parser.add_argument('-a', '--append', action='store_true', help='Append source file to destination file.')
parser.add_argument('-b', '--baud', default=115200, help='Baudrate, default 115200')
parser.add_argument('-c', '--compile', action='store_true', help='Compile lua to lc after upload')
parser.add_argument('-d', '--dofile', action='store_true', help='Run the Lua script after upload')
parser.add_argument('-e', '--echo', action='store_true', help='Echo output of MCU until script is terminated.')
parser.add_argument('-f', '--src', default='main.lua', help='Source file on computer, default main.lua')
parser.add_argument('-i', '--id', action='store_true', help='Query the modules chip id.')
parser.add_argument('-l', '--list', action='store_true', help='List files on device')
parser.add_argument('-p', '--port', default='/dev/ttyUSB0', help='Device name, default /dev/ttyUSB0')
parser.add_argument('-r', '--restart', action='store_true', help='Restart MCU after upload')
parser.add_argument('-t', '--dest', default=None, help='Destination file on MCU, default to source file name')
parser.add_argument('-v', '--verbose', action='store_true', help="Show progress messages.")
parser.add_argument('-w', '--wipe', action='store_true', help='Delete all lua/lc files on device.')
args = parser.parse_args()
transport = decidetransport(args)
if args.bar and not tqdm_installed:
sys.stdout.write("You must install the tqdm library to use the bar feature\n")
sys.stdout.write("To install, at the prompt type: \"pip install tqdm\"\n")
sys.exit(0)
if args.list:
# zzz191020 Amélioré la sortie du listing des fichiers
#transport.writeln("print('\\n-----');local l = file.list();for k,v in pairs(l) do print(k..', size:'..v)end;print('-----\\n')\r", 0)
# zzz191225 Amélioré encore la sortie du listing des fichiers (sort file)
transport.writeln("zdir={};pfile = file.list();for k,v in pairs(pfile) do zdir[#zdir+1] = k..string.rep(' ',24-string.len(k))..' : '..v end;table.sort(zdir);print('\\n-----');for i=1, #zdir do print(zdir[i]) end;print('-----\\n');zdir=nil;pfile=nil;k=nil;v=nil;i=nil\r", 0)
while True:
char = transport.read(1)
if char == '' or char == chr(62): # '' or '>'
break
sys.stdout.write(char)
sys.exit(0)
if args.id:
transport.writeln("=node.chipid()\r", 0)
id=""
while True:
char = transport.read(1)
if char == '' or char == chr(62):
break
if char.isdigit():
id += char
print("\n"+id)
sys.exit(0)
# zzz191020 Ajouté la fonction restart seule
if args.zrestart:
transport.writeln("node.restart()\r")
sys.exit(0)
if args.wipe:
transport.writeln("local l = file.list();for k,v in pairs(l) do print(k)end\r", 0)
file_list = []
fn = ""
while True:
char = transport.read(1)
if char == '' or char == chr(62):
break
if char not in ['\r', '\n']:
fn += char
else:
if fn:
file_list.append(fn.strip())
fn = ''
for fn in file_list[1:]: # first line is the list command sent to device
if args.verbose:
sys.stderr.write("Delete file {} from device.\r\n".format(fn))
transport.writeln("file.remove(\"" + fn + "\")\r")
sys.exit(0)
if args.delete:
transport.writeln("file.remove(\"" + args.delete + "\")\r")
sys.exit(0)
if args.dest is None:
args.dest = basename(args.src)
# zzz191020 Affiche le fichier à envoyer
print("File: " + args.src)
# open source file for reading
try:
try:
f = open(args.src, "rt")
except:
import os
base_dir = os.path.dirname(os.path.realpath(__file__))
f = open(os.path.join(base_dir, args.src), "rt")
os.chdir(base_dir)
except:
sys.stderr.write("Could not open input file \"%s\"\n" % args.src)
sys.exit(1)
# Verify the selected file will not exceed the size of the serial buffer.
# The size of the buffer is 256. This script does not accept files with
# lines longer than 230 characters to have some room for command overhead.
num_lines = 0
for ln in f:
if len(ln) > 230:
sys.stderr.write("File \"%s\" contains a line with more than 240 "
"characters. This exceeds the size of the serial buffer.\n"
% args.src)
f.close()
sys.exit(1)
num_lines += 1
# Go back to the beginning of the file after verifying it has the correct
# line length
f.seek(0)
# set serial timeout
if args.verbose:
sys.stderr.write("Upload starting\r\n")
# remove existing file on device
if args.append==False:
if args.verbose:
sys.stderr.write("Stage 1. Deleting old file from flash memory")
transport.writeln("file.open(\"" + args.dest + "\", \"w\")\r")
transport.writeln("file.close()\r")
transport.writeln("file.remove(\"" + args.dest + "\")\r")
else:
if args.verbose:
sys.stderr.write("[SKIPPED] Stage 1. Deleting old file from flash memory [SKIPPED]")
# read source file line by line and write to device
if args.verbose:
sys.stderr.write("\r\nStage 2. Creating file in flash memory and write first line")
if args.append:
transport.writeln("file.open(\"" + args.dest + "\", \"a+\")\r")
else:
transport.writeln("file.open(\"" + args.dest + "\", \"w+\")\r")
line = f.readline()
if args.verbose:
sys.stderr.write("\r\nStage 3. Start writing data to flash memory...")
if args.bar:
for i in tqdm(range(0, num_lines)):
#zzz191124 transport.writer(line.strip())
transport.writer(line)
line = f.readline()
else:
while line != '':
#zzz191124 transport.writer(line.strip())
transport.writer(line)
line = f.readline()
# close both files
f.close()
if args.verbose:
sys.stderr.write("\r\nStage 4. Flush data and closing file")
transport.writeln("file.flush()\r")
transport.writeln("file.close()\r")
# compile?
if args.compile:
if args.verbose:
sys.stderr.write("\r\nStage 5. Compiling")
transport.writeln("node.compile(\"" + args.dest + "\")\r")
transport.writeln("file.remove(\"" + args.dest + "\")\r")
# restart or dofile
if args.restart:
transport.writeln("node.restart()\r")
if args.dofile: # never exec if restart=1
transport.writeln("dofile(\"" + args.dest + "\")\r", 0)
if args.echo:
if args.verbose:
sys.stderr.write("\r\nEchoing MCU output, press Ctrl-C to exit")
while True:
sys.stdout.write(transport.read(1))
# close serial port
transport.close()
# flush screen
sys.stdout.flush()
sys.stderr.flush()
if not args.bar:
sys.stderr.write("\r\n--->>> All done <<<---\r\n")

View File

@@ -0,0 +1,91 @@
-- Teste le deep sleep !
-- s'endore pendant xx secondes après xx secondes
-- ATTENTION: il faut connecter la pin 0 à la pin RESET avec une résistance de 1k !
print("\n dsleep.lua zf200722.1133 \n")
zLED=4
f= "flash_led_xfois.lua" if file.exists(f) then dofile(f) end
function ztime()
tm = rtctime.epoch2cal(rtctime.get()+2*3600)
print(string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
end
function dsleep_on()
print("timer dsleep on...")
ztmr_SLEEP = tmr.create()
ztmr_SLEEP:alarm(2*1000, tmr.ALARM_SINGLE, function ()
print("Je dors...")
tmr.delay(100*1000)
-- node.dsleep(4*1000*1000)
-- print(node.bootreason())
rtcmem.write32(10, 43690) --flag pour détecter le réveil dsleep
-- print("le flag est à "..rtcmem.read32(10))
wifi.setmode(wifi.NULLMODE,true)
rtctime.dsleep(4*1000*1000)
end)
end
--[[
dsleep_on()
print(node.bootreason())
print("le flag est à "..rtcmem.read32(10))
f= "wifi_info.lua" if file.exists(f) then dofile(f) end
function ztime()
tm = rtctime.epoch2cal(rtctime.get()+2*3600)
print(string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
end
print(ztime())
]]
function dsleep_off()
print("timer dsleep off...")
ztmr_SLEEP:unregister()
end
function watch_wifi_on()
dsleep_on()
ztmr_watch_wifi_on = tmr.create()
ztmr_watch_wifi_on:alarm(1*1000, tmr.ALARM_AUTO , function()
if wifi.sta.getip() == nil then
-- print("Unconnected... (on)")
else
ztmr_watch_wifi_on:stop()
print("Connected... (on)")
-- f= "wifi_info.lua" if file.exists(f) then dofile(f) end
watch_wifi_off()
end
end)
end
function watch_wifi_off()
dsleep_off()
ztmr_watch_wifi_on:unregister()
ztmr_watch_wifi_off = tmr.create()
ztmr_watch_wifi_off:alarm(1*1000, tmr.ALARM_AUTO , function()
if wifi.sta.getip() == nil then
ztmr_watch_wifi_off:stop()
print("Unconnected... (off)")
watch_wifi_on()
ztmr_watch_wifi_off:unregister()
else
-- print("Connected... (off)")
xfois = 2
blink_LED ()
end
end)
end
print("Coucou, je suis réveillé...")
print("Et il est: ")
ztime()
watch_wifi_on()

View File

@@ -0,0 +1,19 @@
-- Scripts pour régler l'horloge quand on est connecté en WIFI
print("\n set_time.lua zf2007222.110755 \n")
function set_time()
sntp.sync(nil, nil, nil, 1)
end
function ztime()
tm = rtctime.epoch2cal(rtctime.get()+2*3600)
print(string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
end
set_time()
--[[
print(ztime())
]]

View File

@@ -0,0 +1 @@
{"url": "https://docs.google.com/open?id=1A7fmA_YISZln3S4hHAlio8McLcWC62xCi80Ff7kayUM", "doc_id": "1A7fmA_YISZln3S4hHAlio8McLcWC62xCi80Ff7kayUM", "email": "christian.zufferey@gmail.com"}

View File

@@ -0,0 +1 @@
{"url": "https://docs.google.com/open?id=1lCD6qNpv_cjU2SBtiHsuB_wSe-OnFv0Uo7Imi0vdGvk", "doc_id": "1lCD6qNpv_cjU2SBtiHsuB_wSe-OnFv0Uo7Imi0vdGvk", "email": "christian.zufferey@gmail.com"}

View File

@@ -0,0 +1 @@
{"url": "https://docs.google.com/open?id=1I5djlXvNkcSF6UAhG_9nH6-oXMU8UxDYpaxZr0ZOp0A", "doc_id": "1I5djlXvNkcSF6UAhG_9nH6-oXMU8UxDYpaxZr0ZOp0A", "email": "christian.zufferey@gmail.com"}

View File

@@ -0,0 +1,263 @@
mac,name,long,lat,error
90:ef:68:ca:ac:89,Adrian,6.5750527,46.5417605,158
7c:b7:33:85:d4:00,aed-65320,6.5763656,46.5413323,50
ec:f4:51:ff:fc:76,aldebaran0341,6.5762683,46.5413457,14
a0:64:8f:bb:81:60,aldebaran0341,6.5760991,46.5414379,50
1c:24:cd:4b:ee:a0,Alves WIFI,6.5760968,46.5417264,447
f6:c2:48:6b:c9:64,AndroidAP6385,6.574465,46.5422594,112
38:2c:4a:4e:d3:d8,apzuzu6,6.5750463,46.5421444,8
b0:7f:b9:3e:f1:f1,apzuzu6_EXT,6.575112,46.5422243,1
3c:37:86:c6:7d:da,apzuzu6_EXT2,6.5749114,46.5421823,7
ce:50:e3:2e:85:7e,apzuzu6_EXT3,6.5749067,46.5421885,22
d8:fb:5e:c0:90:6d,aqp-71511,6.5762493,46.5413497,112
ec:f4:51:ae:e2:e0,ATB-74564,6.5767512,46.5415813,282
48:8d:36:c9:90:74,aur-38771,6.5743687,46.5420562,200
5c:dc:96:b9:7c:1d,baj-34992,6.5741691,46.5416048,398
00:b1:e3:25:bf:88,Crassus-wifi-2.4G,6.5744894,46.5419325,251
7c:b7:33:3f:a2:ee,cuo-36796,6.5740927,46.541642,224
30:d3:2d:cb:ca:64,devolo-a64,6.5742064,46.54173,158
30:d3:2d:cb:d2:40,devolo-a64,6.5742313,46.541755,200
b0:ea:bc:b3:d4:50,dhg-87555,6.5749039,46.5417954,178
4a:5f:99:03:48:0b,DIRECT-0b-HP M477 LaserJet,6.5749705,46.5422652,282
8e:57:9b:07:4c:83,DIRECT-9n-BRAVIA,6.5762527,46.5416828,126
12:08:c1:df:e3:ea,DIRECT-AP[TV][LG]60LB580V-ZM,6.5763656,46.5413323,35
ae:e2:d3:ca:e5:ce,DIRECT-CE-HP OfficeJet 5200,6.5743809,46.5421847,63
9e:ad:97:c1:9f:b7,DIRECT-dt-BRAVIA,6.5743025,46.5418067,282
00:78:88:e0:6e:e1,DK_MDE,6.5742313,46.541755,141
00:78:88:e0:6e:e2,DK_Pub,6.5741489,46.5416962,126
1c:24:cd:6f:40:d0,dxh-12522,6.5742064,46.54173,282
e8:d1:1b:5e:e4:40,dym-55538,6.5752029,46.5420469,178
ec:f4:51:7f:a3:39,ech-02870,6.5744894,46.5419325,35
d8:b0:4c:c0:f7:10,ECU_R_216000002442,6.5751536,46.5422885,316
00:1b:63:2b:78:4b,EDU-VD,6.5750679,46.5423802,355
90:5c:44:f2:85:e6,Error 404,6.5767409,46.5414379,158
86:83:c2:87:2c:2b,erteco-iot,6.5743534,46.5419439,355
c4:06:83:3f:ac:1a,Fanny,6.5749636,46.5417747,40
1c:24:cd:44:49:c0,fjc-53416,6.5767151,46.5415735,316
8c:fe:74:31:0e:b8,FMEL,6.5762493,46.5413497,28
8c:fe:74:31:0d:58,FMEL,6.5762493,46.5413497,40
8c:fe:74:31:0d:98,FMEL,6.5761838,46.5413861,89
8c:fe:74:2d:6a:98,FMEL,6.5762683,46.5413457,100
8c:fe:74:2d:7e:18,FMEL,6.5761838,46.5413861,100
8c:fe:74:31:0a:f8,FMEL,6.5763656,46.5413323,126
8c:fe:74:2d:70:18,FMEL,6.5765897,46.541326,141
8c:fe:74:2d:6a:58,FMEL,6.5763442,46.5413311,141
8c:fe:74:2d:70:08,FMEL,6.576706,46.5413371,178
8c:fe:74:31:09:e8,FMEL,6.5761952,46.5413778,200
8c:fe:74:2d:6a:d8,FMEL,6.5765897,46.541326,224
78:29:ed:3e:42:30,fpl-76051,6.5758246,46.5415289,224
c8:0e:14:0d:09:1c,FRITZ!Box 7490,6.5767498,46.5415141,178
1c:24:cd:1a:fd:00,fth-89239,6.5765295,46.5413269,32
ec:f4:51:e5:b7:46,fth-89239,6.576706,46.5413371,56
e4:57:40:d4:7b:9b,GafferNetwork,6.5750462,46.5421185,126
1c:24:cd:1b:d8:b0,Gigi80,6.5751537,46.5424076,398
54:67:51:fe:13:d1,GOGOwifi,6.5749705,46.5422652,251
3c:37:86:85:5e:d9,HomeSweetHome,6.5763656,46.5413323,200
dc:53:7c:b8:19:81,Hoxha_WiFi,6.5767498,46.5415141,251
28:92:4a:c3:a3:38,HP-Print-38-Officejet Pro 8600,6.5743251,46.5418813,355
e8:d1:1b:98:3e:d0,hrj88926,6.5743809,46.5421847,100
1c:13:86:d3:63:4b,HUAWEI_B818_634B,6.5746371,46.5418748,282
c0:b5:cd:ac:90:53,HUAWEI_B818_9053,6.5763656,46.5413323,40
dc:d9:16:3e:3d:54,HUAWEI-3D54,6.5751883,46.5423409,79
d0:16:b4:84:8e:93,HUAWEI-8E93,6.575112,46.5422243,28
b0:e1:7e:ab:a2:67,HUAWEI-A267,6.576754,46.5415525,50
a0:b5:49:12:77:79,hyj-39315,6.5760968,46.5417264,282
54:67:51:06:12:34,Kadioglu,6.5765667,46.5415872,251
90:5c:44:22:36:c1,Konate,6.5766409,46.541318,89
b4:ee:b4:83:dd:13,kty-12802,6.5762493,46.5413497,32
fc:b4:e6:33:58:09,linksysmanuel,6.5747733,46.5418451,50
34:29:12:0e:b0:cd,LYA-L29%08%CloudClone,6.5760572,46.5417393,282
04:18:d6:82:c3:55,Marcolet 15,6.5743809,46.5421847,141
04:18:d6:82:c4:7f,Marcolet 15,6.5743528,46.5420161,158
b4:ec:02:79:a9:9b,MB Hotspot 74173 2.4 GHz,6.5742313,46.541755,355
ec:f4:51:ea:58:46,mhj-86336,6.5751536,46.5422885,141
1c:24:cd:33:6b:c0,mhj-86336,6.5751536,46.5422885,316
ec:f4:51:e8:c6:86,mni-94777,6.5767433,46.541795,158
f4:63:1f:71:67:6f,Moksha,6.5767593,46.5417717,178
1c:24:cd:38:59:10,MonWifiEtPasLeTien ,6.5751812,46.5423194,35
b0:ea:bc:ae:f8:f0,nli-86919,6.5759538,46.5414903,79
34:12:f9:42:2b:6d,One can never have...,6.5767409,46.5414379,126
b0:05:94:31:c5:c1,PS4-CE586EE4E6E5,6.5767288,46.5413883,100
78:d3:8d:fc:e9:a9,RCProductions-EXT,6.5750679,46.5423802,13
7a:d3:8d:fc:e9:a9,RCProductions-EXT pour Ariane,6.5750679,46.5423802,10
8a:d3:8d:fc:e9:a9,RCProductions-EXT pour Yasmine,6.5749569,46.5422483,20
60:e3:27:f0:10:81,RVZ-00300,6.5751046,46.5424101,447
d0:66:7b:a5:f6:b4,SEC_LinkShare_52e4fc,6.5767593,46.5417717,355
e8:be:81:b9:7f:da,Sinaud_2.4,6.5743912,46.5422149,89
a0:b5:49:0f:a7:29,sjm-42413,6.5742313,46.541755,316
1c:24:cd:29:1d:50,Solachris15,6.5742766,46.5418172,282
c0:f4:e6:af:0d:b9,Sunrise 4G WiFi Tower,6.5751536,46.5422885,178
f8:08:4f:01:b0:62,Sunrise_2.4GHz_01B05E,6.5759538,46.5414903,35
f8:08:4f:04:4b:7a,Sunrise_2.4GHz_044B76,6.5764547,46.5416181,316
38:35:fb:16:0b:80,Sunrise_2.4GHz_160B7C,6.576706,46.5413371,316
38:35:fb:39:b3:b4,Sunrise_2.4GHz_39B3B0,6.57521,46.54171,251
38:35:fb:52:e9:84,Sunrise_2.4GHz_52E980,6.5744016,46.5422385,501
40:c7:29:66:26:54,Sunrise_2.4GHz_662650,6.574837,46.541821,45
58:90:43:8c:c0:84,Sunrise_2.4GHz_8CC080,6.5743129,46.5416957,158
58:90:43:a6:90:84,Sunrise_2.4GHz_A69080,6.5756882,46.5415762,71
b0:ea:bc:2c:b3:e1,teran invites,6.5767498,46.5415141,200
b4:cd:27:ab:3c:69,thermoap01,6.5743305,46.5418789,141
00:05:fe:c5:7a:f6,TI BPL2 TRC,6.5765897,46.541326,50
e4:3e:d7:42:f7:29,tji-59218,6.5747733,46.5418451,50
c4:3d:c7:89:14:ba,TvT_0004656,6.5754661,46.541951,45
92:5c:14:53:0d:d1,UPC Wi-Free,6.5744016,46.5422385,11
56:67:11:22:22:e5,UPC Wi-Free,6.5765295,46.5413269,14
92:5c:14:27:4b:43,UPC Wi-Free,6.5767627,46.5416445,18
92:5c:14:25:e2:b3,UPC Wi-Free,6.5766624,46.5413184,22
92:5c:14:a8:34:97,UPC Wi-Free,6.5743129,46.5416957,32
3a:43:1d:38:b0:73,UPC Wi-Free,6.5767512,46.5415813,50
56:67:11:bd:4d:be,UPC Wi-Free,6.5743912,46.5422149,56
56:67:11:2e:f7:9e,UPC Wi-Free,6.5766304,46.5415742,56
92:5c:14:dd:59:e8,UPC Wi-Free,6.5743912,46.5422149,56
de:53:1c:ba:96:d8,UPC Wi-Free,6.5754661,46.541951,56
3a:43:1d:88:b7:fc,UPC Wi-Free,6.5755325,46.5419363,63
36:2c:94:5e:6e:8b,UPC Wi-Free,6.5767547,46.5414893,63
92:5c:14:22:9e:4a,UPC Wi-Free,6.5765152,46.5415999,71
56:67:11:2a:61:32,UPC Wi-Free,6.5751536,46.5422885,79
ae:22:15:de:19:38,UPC Wi-Free,6.5763308,46.5416596,79
ae:22:15:ce:e9:92,UPC Wi-Free,6.5763656,46.5413323,89
56:67:11:e5:16:d5,UPC Wi-Free,6.5751537,46.5424076,89
3a:43:1d:88:b6:4e,UPC Wi-Free,6.5754325,46.5416449,100
92:5c:14:83:e6:4f,UPC Wi-Free,6.575171,46.5423998,100
92:5c:14:4b:9e:93,UPC Wi-Free,6.57521,46.54171,100
56:67:11:dd:86:3c,UPC Wi-Free,6.5765667,46.5415872,112
92:5c:14:ad:93:21,UPC Wi-Free,6.5749067,46.5421885,112
92:5c:14:22:36:c1,UPC Wi-Free,6.5766624,46.5413184,112
56:67:11:e8:4e:2b,UPC Wi-Free,6.575987,46.541769,112
3a:43:1d:8e:fa:6a,UPC Wi-Free,6.5753701,46.5416664,126
92:5c:14:7d:55:8a,UPC Wi-Free,6.5765667,46.5415872,126
92:5c:14:a4:ce:b2,UPC Wi-Free,6.5762527,46.5416828,126
56:67:11:22:5e:30,UPC Wi-Free,6.5750737,46.5423861,141
3a:43:1d:a3:bf:cd,UPC Wi-Free,6.5750737,46.5423861,141
92:5c:14:f2:85:e6,UPC Wi-Free,6.5767409,46.5414379,158
92:5c:14:07:97:b7,UPC Wi-Free,6.5761247,46.5417203,158
92:5c:14:83:fc:e6,UPC Wi-Free,6.5750737,46.5423861,158
36:2c:94:0f:f0:6f,UPC Wi-Free,6.5755325,46.5419363,178
ae:22:15:c7:17:d6,UPC Wi-Free,6.5767424,46.5416224,178
de:53:1c:b8:19:81,UPC Wi-Free,6.5767288,46.5413883,178
36:2c:94:34:98:75,UPC Wi-Free,6.5743688,46.5421322,178
36:2c:94:6b:a1:9e,UPC Wi-Free,6.5750737,46.5423861,178
92:5c:14:27:b8:4e,UPC Wi-Free,6.5765503,46.5415906,178
56:67:11:2b:09:55,UPC Wi-Free,6.5762527,46.5416828,200
92:5c:14:75:d4:20,UPC Wi-Free,6.576753,46.5417426,200
92:5c:14:ce:d4:35,UPC Wi-Free,6.5760968,46.5417264,200
92:5c:14:a8:06:6f,UPC Wi-Free,6.5767547,46.5414893,224
3a:43:1d:41:dd:2f,UPC Wi-Free,6.5750463,46.5421444,224
e6:57:40:c0:c3:91,UPC Wi-Free,6.5764367,46.5416236,224
de:53:1c:8b:65:8c,UPC Wi-Free,6.5749176,46.5422284,251
56:67:11:c9:d2:d1,UPC Wi-Free,6.5751536,46.5422885,251
36:2c:94:11:21:98,UPC Wi-Free,6.5741489,46.5416962,251
3a:43:1d:f1:5a:6b,UPC Wi-Free,6.5767383,46.5417898,251
ae:22:15:85:c5:6e,UPC Wi-Free,6.5758922,46.5415098,251
56:67:11:06:12:34,UPC Wi-Free,6.5765667,46.5415872,282
de:53:1c:ef:8e:bb,UPC Wi-Free,6.576738,46.5416106,282
36:2c:94:5e:71:5f,UPC Wi-Free,6.5750737,46.5423861,282
ae:22:15:22:4e:aa,UPC Wi-Free,6.5767305,46.5413977,316
56:67:11:29:9e:44,UPC Wi-Free,6.5756447,46.5418882,316
92:5c:14:05:2a:57,UPC Wi-Free,6.5762192,46.541692,316
de:53:1c:ad:34:a4,UPC Wi-Free,6.5764162,46.541632,316
56:67:11:eb:4c:32,UPC Wi-Free,6.5750874,46.5423988,316
36:2c:94:71:dc:20,UPC Wi-Free,6.5767288,46.5413883,316
56:67:11:fe:13:d1,UPC Wi-Free,6.5749569,46.5422483,316
ae:22:15:c6:28:f9,UPC Wi-Free,6.5751536,46.5422885,316
56:67:11:fd:db:8e,UPC Wi-Free,6.576738,46.5416106,355
92:5c:14:de:02:47,UPC Wi-Free,6.5751046,46.5424101,355
56:67:11:e8:ea:a7,UPC Wi-Free,6.5765897,46.541326,355
36:2c:94:84:34:15,UPC Wi-Free,6.5761247,46.5417203,355
ae:22:15:84:0a:7f,UPC Wi-Free,6.5750737,46.5423861,398
3a:43:1d:9b:27:c3,UPC Wi-Free,6.5743912,46.5422149,398
92:5c:14:05:be:55,UPC Wi-Free,6.575112,46.5422243,398
ae:22:15:2f:3a:46,UPC Wi-Free,6.5742064,46.54173,398
36:2c:94:72:07:8f,UPC Wi-Free,6.5766056,46.5413233,447
36:2c:94:5d:60:4b,UPC Wi-Free,6.5742766,46.5418172,447
56:67:11:fd:db:b7,UPC Wi-Free,6.5763789,46.5416447,447
56:67:11:fe:0d:50,UPC Wi-Free,6.5765897,46.541326,447
3a:43:1d:9b:1c:5e,UPC Wi-Free,6.5750463,46.5421444,501
56:67:11:c6:8c:23,UPC Wi-Free,6.5742313,46.541755,501
3a:43:1d:a4:56:07,UPC Wi-Free,6.5749569,46.5422483,501
92:5c:14:4b:93:2d,UPC Wi-Free,6.5766056,46.5413233,562
56:67:11:b9:dd:a2,UPC Wi-Free,6.5763308,46.5416596,631
28:be:9b:06:19:70,UPC0038956,6.5764547,46.5416181,251
34:2c:c4:71:dc:20,UPC1205070,6.5767288,46.5413883,316
90:5c:44:a8:34:97,UPC17E648D,6.5749039,46.5417954,35
90:5c:44:7d:55:8a,UPC19F466E,6.5765152,46.5415999,158
38:43:7d:f1:5a:6b,UPC2137701,6.5767638,46.5416916,224
38:43:7d:88:b7:fc,UPC2203812,6.5754661,46.541951,71
c4:27:95:be:60:e5,UPC2310492,6.5754953,46.5416255,282
54:67:51:fd:db:8e,UPC2367964,6.5767478,46.5416455,447
64:7c:34:90:a0:af,UPC2763130,6.5741628,46.5417067,316
90:5c:44:1d:06:33,UPC2913D37,6.5765152,46.5415999,316
90:5c:44:83:fc:e6,UPC29E3417,6.5750737,46.5423861,112
54:67:51:b9:dd:a2,UPC2BEFDC3,6.5763308,46.5416596,398
34:2c:c4:11:21:98,UPC3386356,6.5741489,46.5416962,200
54:67:51:fd:db:b7,UPC33E6D82,6.5764162,46.541632,447
ac:22:05:de:19:38,UPC3DF8B6F,6.5763308,46.5416596,71
34:2c:c4:5d:60:4b,UPC4455098,6.5742766,46.5418172,355
34:2c:c4:5e:6e:8b,UPC4586505,6.5767409,46.5414379,71
54:67:51:2a:61:32,UPC46DF3EF,6.5750373,46.5423404,71
90:5c:44:27:b8:4e,UPC48478BC,6.5766593,46.5415669,112
90:5c:44:a8:06:6f,UPC4BE516B,6.5767547,46.5414893,224
90:5c:44:05:2a:57,UPC4FD67EF,6.5767512,46.5415813,316
54:67:51:2e:f7:9e,UPC53FA795,6.5766304,46.5415742,50
90:5c:44:53:0d:d1,UPC578B7A3,6.5744148,46.5422492,9
54:67:51:e8:4e:2b,UPC57F67AE,6.5761247,46.5417203,100
34:2c:c4:84:34:15,UPC5841864 2.4GHZ,6.5767469,46.5414572,398
dc:53:7c:8b:65:8c,UPC5F9AF36,6.5760487,46.541462,224
38:43:7d:8e:fa:6a,UPC6439111,6.5753701,46.5416664,112
90:5c:44:22:9e:4a,UPC65FA757,6.5765152,46.5415999,89
34:2c:c4:5e:71:5f,UPC6683612,6.5750828,46.5421898,282
90:5c:44:07:97:b7,UPC681C4FE,6.576706,46.5413371,141
90:5c:44:83:e6:4f,UPC69AA7F9,6.5751537,46.5424076,112
54:67:51:22:22:e5,UPC6F6F4C1,6.5765192,46.5413293,10
34:2c:c4:6b:a1:9e,UPC7083705,6.5750737,46.5423861,200
6e:b0:ce:f7:f0:f6,UPC72E5C4E_EXT,6.5743659,46.5420829,8
dc:53:7c:ad:34:a4,UPC745F177,6.5767424,46.5416224,282
ac:22:05:85:c5:6e,UPC7482BAC,6.5758922,46.5415098,126
ac:22:05:22:4e:aa,UPC7AAB2FB,6.5767305,46.5413977,355
38:43:7d:38:b0:73,UPC8461370,6.5767512,46.5415813,50
38:43:7d:a3:bf:cd,UPC8773645,6.5750737,46.5423861,178
54:67:51:22:5e:30,UPC8CD6FFB,6.5750737,46.5423861,178
ac:22:05:ce:e9:92,UPC8D6737C,6.5763442,46.5413311,71
90:5c:44:ce:d4:35,UPC8EC9133,6.5760968,46.5417264,282
34:2c:c4:34:98:75,UPC9197578,6.5743688,46.5421322,224
38:43:7d:88:b6:4e,UPC9241635,6.5754325,46.5416449,100
e4:57:40:c0:c3:c1,UPC9568736,6.5764987,46.5416042,158
ac:22:05:84:0a:7f,UPC98F97D8,6.5750737,46.5423861,355
54:67:51:e5:16:d5,UPC9B15B32,6.5750737,46.5423861,126
54:67:51:fe:0d:50,UPCA13B887,6.5766056,46.5413233,398
90:5c:44:de:02:47,UPCA1AA9E3,6.5751046,46.5424101,224
dc:53:7c:ba:96:d8,UPCA8BF168,6.5754661,46.541951,40
ac:22:05:c7:1c:74,UPCABB651A,6.5742766,46.5418172,355
54:67:51:c9:d2:d1,UPCB299242,6.5751536,46.5422885,316
54:67:51:7d:d7:d4,UPCB5D675F,6.5763656,46.5413323,50
90:5c:44:c8:5d:e8,UPCB76BCD4,6.5762527,46.5416828,398
90:5c:44:4b:93:2d,UPCBF21657,6.5766056,46.5413233,316
54:67:51:29:9e:44,UPCBF2D62C,6.5756447,46.5418882,282
90:5c:44:27:4b:43,UPCC75E4EE,6.5767627,46.5416445,18
54:67:51:bd:4d:be,UPCC81FA2A,6.5743809,46.5421847,45
54:67:51:eb:4c:32,UPCCDDC593,6.5751536,46.5422885,282
ac:22:05:c7:17:d6,UPCCF2CA1A,6.5767424,46.5416224,178
90:5c:44:05:be:55,UPCE86AC2E,6.575112,46.5422243,355
90:5c:44:dd:59:e8,UPCEB861D9,6.5743912,46.5422149,63
90:5c:44:4b:9e:93,UPCEF3C5ED,6.57521,46.54171,112
54:67:51:2b:09:55,UPCEF73C85,6.5762527,46.5416828,224
90:5c:44:25:e2:b3,UPCEFAC398,6.5766624,46.5413184,22
90:5c:44:ad:93:21,UPCF2C6A3A,6.5749067,46.5421885,100
ac:22:05:c6:28:f9,UPCF5B5FC5,6.5751536,46.5422885,282
54:67:51:dd:86:3c,UPCF7744D7,6.5764547,46.5416181,126
90:5c:44:75:d4:20,UPCF962374,6.5763789,46.5416447,224
ec:f4:51:8f:5e:47,ValdezSabando,6.5767638,46.5416916,501
5c:dc:96:89:dc:d3,vcr-99345,6.5751536,46.5422885,79
b0:ea:bc:4b:10:d0,vcy-48117-5Ghz,6.5756669,46.5418818,56
ec:f4:51:ff:fc:77,visitor-23996,6.5760487,46.541462,13
a0:64:8f:bb:81:61,visitor-23996,6.5761546,46.5414019,89
b4:ee:b4:83:dd:14,visitor-49687,6.5762683,46.5413457,35
7c:b7:33:3f:a2:ef,visitor-57602,6.5741489,46.5416962,251
18:e8:29:6a:cd:96,Wifi-Ortho-Reha,6.5742766,46.5418172,398
38:43:7d:9b:1c:5e,Wifi-Piermaria,6.5750828,46.5421898,355
34:2c:c4:0f:f0:6f,WiFiCus,6.5756669,46.5418818,158
1c:b0:44:5c:bf:90,wmc-42326,6.5767529,46.5417195,224
68:a0:3e:86:c6:5a,Xperia Z5 Dual_86b5,6.5767424,46.5416224,224
1c:24:cd:40:dc:80,xrd-82638,6.5751536,46.5422885,126
34:12:f9:02:a9:15,yalloHome-B529-A915,6.5742313,46.541755,71
a8:d3:f7:3c:bd:e0,zos-98127,6.5757808,46.5418412,50
1 mac name long lat error
2 90:ef:68:ca:ac:89 Adrian 6.5750527 46.5417605 158
3 7c:b7:33:85:d4:00 aed-65320 6.5763656 46.5413323 50
4 ec:f4:51:ff:fc:76 aldebaran0341 6.5762683 46.5413457 14
5 a0:64:8f:bb:81:60 aldebaran0341 6.5760991 46.5414379 50
6 1c:24:cd:4b:ee:a0 Alves WIFI 6.5760968 46.5417264 447
7 f6:c2:48:6b:c9:64 AndroidAP6385 6.574465 46.5422594 112
8 38:2c:4a:4e:d3:d8 apzuzu6 6.5750463 46.5421444 8
9 b0:7f:b9:3e:f1:f1 apzuzu6_EXT 6.575112 46.5422243 1
10 3c:37:86:c6:7d:da apzuzu6_EXT2 6.5749114 46.5421823 7
11 ce:50:e3:2e:85:7e apzuzu6_EXT3 6.5749067 46.5421885 22
12 d8:fb:5e:c0:90:6d aqp-71511 6.5762493 46.5413497 112
13 ec:f4:51:ae:e2:e0 ATB-74564 6.5767512 46.5415813 282
14 48:8d:36:c9:90:74 aur-38771 6.5743687 46.5420562 200
15 5c:dc:96:b9:7c:1d baj-34992 6.5741691 46.5416048 398
16 00:b1:e3:25:bf:88 Crassus-wifi-2.4G 6.5744894 46.5419325 251
17 7c:b7:33:3f:a2:ee cuo-36796 6.5740927 46.541642 224
18 30:d3:2d:cb:ca:64 devolo-a64 6.5742064 46.54173 158
19 30:d3:2d:cb:d2:40 devolo-a64 6.5742313 46.541755 200
20 b0:ea:bc:b3:d4:50 dhg-87555 6.5749039 46.5417954 178
21 4a:5f:99:03:48:0b DIRECT-0b-HP M477 LaserJet 6.5749705 46.5422652 282
22 8e:57:9b:07:4c:83 DIRECT-9n-BRAVIA 6.5762527 46.5416828 126
23 12:08:c1:df:e3:ea DIRECT-AP[TV][LG]60LB580V-ZM 6.5763656 46.5413323 35
24 ae:e2:d3:ca:e5:ce DIRECT-CE-HP OfficeJet 5200 6.5743809 46.5421847 63
25 9e:ad:97:c1:9f:b7 DIRECT-dt-BRAVIA 6.5743025 46.5418067 282
26 00:78:88:e0:6e:e1 DK_MDE 6.5742313 46.541755 141
27 00:78:88:e0:6e:e2 DK_Pub 6.5741489 46.5416962 126
28 1c:24:cd:6f:40:d0 dxh-12522 6.5742064 46.54173 282
29 e8:d1:1b:5e:e4:40 dym-55538 6.5752029 46.5420469 178
30 ec:f4:51:7f:a3:39 ech-02870 6.5744894 46.5419325 35
31 d8:b0:4c:c0:f7:10 ECU_R_216000002442 6.5751536 46.5422885 316
32 00:1b:63:2b:78:4b EDU-VD 6.5750679 46.5423802 355
33 90:5c:44:f2:85:e6 Error 404 6.5767409 46.5414379 158
34 86:83:c2:87:2c:2b erteco-iot 6.5743534 46.5419439 355
35 c4:06:83:3f:ac:1a Fanny 6.5749636 46.5417747 40
36 1c:24:cd:44:49:c0 fjc-53416 6.5767151 46.5415735 316
37 8c:fe:74:31:0e:b8 FMEL 6.5762493 46.5413497 28
38 8c:fe:74:31:0d:58 FMEL 6.5762493 46.5413497 40
39 8c:fe:74:31:0d:98 FMEL 6.5761838 46.5413861 89
40 8c:fe:74:2d:6a:98 FMEL 6.5762683 46.5413457 100
41 8c:fe:74:2d:7e:18 FMEL 6.5761838 46.5413861 100
42 8c:fe:74:31:0a:f8 FMEL 6.5763656 46.5413323 126
43 8c:fe:74:2d:70:18 FMEL 6.5765897 46.541326 141
44 8c:fe:74:2d:6a:58 FMEL 6.5763442 46.5413311 141
45 8c:fe:74:2d:70:08 FMEL 6.576706 46.5413371 178
46 8c:fe:74:31:09:e8 FMEL 6.5761952 46.5413778 200
47 8c:fe:74:2d:6a:d8 FMEL 6.5765897 46.541326 224
48 78:29:ed:3e:42:30 fpl-76051 6.5758246 46.5415289 224
49 c8:0e:14:0d:09:1c FRITZ!Box 7490 6.5767498 46.5415141 178
50 1c:24:cd:1a:fd:00 fth-89239 6.5765295 46.5413269 32
51 ec:f4:51:e5:b7:46 fth-89239 6.576706 46.5413371 56
52 e4:57:40:d4:7b:9b GafferNetwork 6.5750462 46.5421185 126
53 1c:24:cd:1b:d8:b0 Gigi80 6.5751537 46.5424076 398
54 54:67:51:fe:13:d1 GOGOwifi 6.5749705 46.5422652 251
55 3c:37:86:85:5e:d9 HomeSweetHome 6.5763656 46.5413323 200
56 dc:53:7c:b8:19:81 Hoxha_WiFi 6.5767498 46.5415141 251
57 28:92:4a:c3:a3:38 HP-Print-38-Officejet Pro 8600 6.5743251 46.5418813 355
58 e8:d1:1b:98:3e:d0 hrj88926 6.5743809 46.5421847 100
59 1c:13:86:d3:63:4b HUAWEI_B818_634B 6.5746371 46.5418748 282
60 c0:b5:cd:ac:90:53 HUAWEI_B818_9053 6.5763656 46.5413323 40
61 dc:d9:16:3e:3d:54 HUAWEI-3D54 6.5751883 46.5423409 79
62 d0:16:b4:84:8e:93 HUAWEI-8E93 6.575112 46.5422243 28
63 b0:e1:7e:ab:a2:67 HUAWEI-A267 6.576754 46.5415525 50
64 a0:b5:49:12:77:79 hyj-39315 6.5760968 46.5417264 282
65 54:67:51:06:12:34 Kadioglu 6.5765667 46.5415872 251
66 90:5c:44:22:36:c1 Konate 6.5766409 46.541318 89
67 b4:ee:b4:83:dd:13 kty-12802 6.5762493 46.5413497 32
68 fc:b4:e6:33:58:09 linksysmanuel 6.5747733 46.5418451 50
69 34:29:12:0e:b0:cd LYA-L29%08%CloudClone 6.5760572 46.5417393 282
70 04:18:d6:82:c3:55 Marcolet 15 6.5743809 46.5421847 141
71 04:18:d6:82:c4:7f Marcolet 15 6.5743528 46.5420161 158
72 b4:ec:02:79:a9:9b MB Hotspot 74173 2.4 GHz 6.5742313 46.541755 355
73 ec:f4:51:ea:58:46 mhj-86336 6.5751536 46.5422885 141
74 1c:24:cd:33:6b:c0 mhj-86336 6.5751536 46.5422885 316
75 ec:f4:51:e8:c6:86 mni-94777 6.5767433 46.541795 158
76 f4:63:1f:71:67:6f Moksha 6.5767593 46.5417717 178
77 1c:24:cd:38:59:10 MonWifiEtPasLeTien 6.5751812 46.5423194 35
78 b0:ea:bc:ae:f8:f0 nli-86919 6.5759538 46.5414903 79
79 34:12:f9:42:2b:6d One can never have... 6.5767409 46.5414379 126
80 b0:05:94:31:c5:c1 PS4-CE586EE4E6E5 6.5767288 46.5413883 100
81 78:d3:8d:fc:e9:a9 RCProductions-EXT 6.5750679 46.5423802 13
82 7a:d3:8d:fc:e9:a9 RCProductions-EXT pour Ariane 6.5750679 46.5423802 10
83 8a:d3:8d:fc:e9:a9 RCProductions-EXT pour Yasmine 6.5749569 46.5422483 20
84 60:e3:27:f0:10:81 RVZ-00300 6.5751046 46.5424101 447
85 d0:66:7b:a5:f6:b4 SEC_LinkShare_52e4fc 6.5767593 46.5417717 355
86 e8:be:81:b9:7f:da Sinaud_2.4 6.5743912 46.5422149 89
87 a0:b5:49:0f:a7:29 sjm-42413 6.5742313 46.541755 316
88 1c:24:cd:29:1d:50 Solachris15 6.5742766 46.5418172 282
89 c0:f4:e6:af:0d:b9 Sunrise 4G WiFi Tower 6.5751536 46.5422885 178
90 f8:08:4f:01:b0:62 Sunrise_2.4GHz_01B05E 6.5759538 46.5414903 35
91 f8:08:4f:04:4b:7a Sunrise_2.4GHz_044B76 6.5764547 46.5416181 316
92 38:35:fb:16:0b:80 Sunrise_2.4GHz_160B7C 6.576706 46.5413371 316
93 38:35:fb:39:b3:b4 Sunrise_2.4GHz_39B3B0 6.57521 46.54171 251
94 38:35:fb:52:e9:84 Sunrise_2.4GHz_52E980 6.5744016 46.5422385 501
95 40:c7:29:66:26:54 Sunrise_2.4GHz_662650 6.574837 46.541821 45
96 58:90:43:8c:c0:84 Sunrise_2.4GHz_8CC080 6.5743129 46.5416957 158
97 58:90:43:a6:90:84 Sunrise_2.4GHz_A69080 6.5756882 46.5415762 71
98 b0:ea:bc:2c:b3:e1 teran invites 6.5767498 46.5415141 200
99 b4:cd:27:ab:3c:69 thermoap01 6.5743305 46.5418789 141
100 00:05:fe:c5:7a:f6 TI BPL2 TRC 6.5765897 46.541326 50
101 e4:3e:d7:42:f7:29 tji-59218 6.5747733 46.5418451 50
102 c4:3d:c7:89:14:ba TvT_0004656 6.5754661 46.541951 45
103 92:5c:14:53:0d:d1 UPC Wi-Free 6.5744016 46.5422385 11
104 56:67:11:22:22:e5 UPC Wi-Free 6.5765295 46.5413269 14
105 92:5c:14:27:4b:43 UPC Wi-Free 6.5767627 46.5416445 18
106 92:5c:14:25:e2:b3 UPC Wi-Free 6.5766624 46.5413184 22
107 92:5c:14:a8:34:97 UPC Wi-Free 6.5743129 46.5416957 32
108 3a:43:1d:38:b0:73 UPC Wi-Free 6.5767512 46.5415813 50
109 56:67:11:bd:4d:be UPC Wi-Free 6.5743912 46.5422149 56
110 56:67:11:2e:f7:9e UPC Wi-Free 6.5766304 46.5415742 56
111 92:5c:14:dd:59:e8 UPC Wi-Free 6.5743912 46.5422149 56
112 de:53:1c:ba:96:d8 UPC Wi-Free 6.5754661 46.541951 56
113 3a:43:1d:88:b7:fc UPC Wi-Free 6.5755325 46.5419363 63
114 36:2c:94:5e:6e:8b UPC Wi-Free 6.5767547 46.5414893 63
115 92:5c:14:22:9e:4a UPC Wi-Free 6.5765152 46.5415999 71
116 56:67:11:2a:61:32 UPC Wi-Free 6.5751536 46.5422885 79
117 ae:22:15:de:19:38 UPC Wi-Free 6.5763308 46.5416596 79
118 ae:22:15:ce:e9:92 UPC Wi-Free 6.5763656 46.5413323 89
119 56:67:11:e5:16:d5 UPC Wi-Free 6.5751537 46.5424076 89
120 3a:43:1d:88:b6:4e UPC Wi-Free 6.5754325 46.5416449 100
121 92:5c:14:83:e6:4f UPC Wi-Free 6.575171 46.5423998 100
122 92:5c:14:4b:9e:93 UPC Wi-Free 6.57521 46.54171 100
123 56:67:11:dd:86:3c UPC Wi-Free 6.5765667 46.5415872 112
124 92:5c:14:ad:93:21 UPC Wi-Free 6.5749067 46.5421885 112
125 92:5c:14:22:36:c1 UPC Wi-Free 6.5766624 46.5413184 112
126 56:67:11:e8:4e:2b UPC Wi-Free 6.575987 46.541769 112
127 3a:43:1d:8e:fa:6a UPC Wi-Free 6.5753701 46.5416664 126
128 92:5c:14:7d:55:8a UPC Wi-Free 6.5765667 46.5415872 126
129 92:5c:14:a4:ce:b2 UPC Wi-Free 6.5762527 46.5416828 126
130 56:67:11:22:5e:30 UPC Wi-Free 6.5750737 46.5423861 141
131 3a:43:1d:a3:bf:cd UPC Wi-Free 6.5750737 46.5423861 141
132 92:5c:14:f2:85:e6 UPC Wi-Free 6.5767409 46.5414379 158
133 92:5c:14:07:97:b7 UPC Wi-Free 6.5761247 46.5417203 158
134 92:5c:14:83:fc:e6 UPC Wi-Free 6.5750737 46.5423861 158
135 36:2c:94:0f:f0:6f UPC Wi-Free 6.5755325 46.5419363 178
136 ae:22:15:c7:17:d6 UPC Wi-Free 6.5767424 46.5416224 178
137 de:53:1c:b8:19:81 UPC Wi-Free 6.5767288 46.5413883 178
138 36:2c:94:34:98:75 UPC Wi-Free 6.5743688 46.5421322 178
139 36:2c:94:6b:a1:9e UPC Wi-Free 6.5750737 46.5423861 178
140 92:5c:14:27:b8:4e UPC Wi-Free 6.5765503 46.5415906 178
141 56:67:11:2b:09:55 UPC Wi-Free 6.5762527 46.5416828 200
142 92:5c:14:75:d4:20 UPC Wi-Free 6.576753 46.5417426 200
143 92:5c:14:ce:d4:35 UPC Wi-Free 6.5760968 46.5417264 200
144 92:5c:14:a8:06:6f UPC Wi-Free 6.5767547 46.5414893 224
145 3a:43:1d:41:dd:2f UPC Wi-Free 6.5750463 46.5421444 224
146 e6:57:40:c0:c3:91 UPC Wi-Free 6.5764367 46.5416236 224
147 de:53:1c:8b:65:8c UPC Wi-Free 6.5749176 46.5422284 251
148 56:67:11:c9:d2:d1 UPC Wi-Free 6.5751536 46.5422885 251
149 36:2c:94:11:21:98 UPC Wi-Free 6.5741489 46.5416962 251
150 3a:43:1d:f1:5a:6b UPC Wi-Free 6.5767383 46.5417898 251
151 ae:22:15:85:c5:6e UPC Wi-Free 6.5758922 46.5415098 251
152 56:67:11:06:12:34 UPC Wi-Free 6.5765667 46.5415872 282
153 de:53:1c:ef:8e:bb UPC Wi-Free 6.576738 46.5416106 282
154 36:2c:94:5e:71:5f UPC Wi-Free 6.5750737 46.5423861 282
155 ae:22:15:22:4e:aa UPC Wi-Free 6.5767305 46.5413977 316
156 56:67:11:29:9e:44 UPC Wi-Free 6.5756447 46.5418882 316
157 92:5c:14:05:2a:57 UPC Wi-Free 6.5762192 46.541692 316
158 de:53:1c:ad:34:a4 UPC Wi-Free 6.5764162 46.541632 316
159 56:67:11:eb:4c:32 UPC Wi-Free 6.5750874 46.5423988 316
160 36:2c:94:71:dc:20 UPC Wi-Free 6.5767288 46.5413883 316
161 56:67:11:fe:13:d1 UPC Wi-Free 6.5749569 46.5422483 316
162 ae:22:15:c6:28:f9 UPC Wi-Free 6.5751536 46.5422885 316
163 56:67:11:fd:db:8e UPC Wi-Free 6.576738 46.5416106 355
164 92:5c:14:de:02:47 UPC Wi-Free 6.5751046 46.5424101 355
165 56:67:11:e8:ea:a7 UPC Wi-Free 6.5765897 46.541326 355
166 36:2c:94:84:34:15 UPC Wi-Free 6.5761247 46.5417203 355
167 ae:22:15:84:0a:7f UPC Wi-Free 6.5750737 46.5423861 398
168 3a:43:1d:9b:27:c3 UPC Wi-Free 6.5743912 46.5422149 398
169 92:5c:14:05:be:55 UPC Wi-Free 6.575112 46.5422243 398
170 ae:22:15:2f:3a:46 UPC Wi-Free 6.5742064 46.54173 398
171 36:2c:94:72:07:8f UPC Wi-Free 6.5766056 46.5413233 447
172 36:2c:94:5d:60:4b UPC Wi-Free 6.5742766 46.5418172 447
173 56:67:11:fd:db:b7 UPC Wi-Free 6.5763789 46.5416447 447
174 56:67:11:fe:0d:50 UPC Wi-Free 6.5765897 46.541326 447
175 3a:43:1d:9b:1c:5e UPC Wi-Free 6.5750463 46.5421444 501
176 56:67:11:c6:8c:23 UPC Wi-Free 6.5742313 46.541755 501
177 3a:43:1d:a4:56:07 UPC Wi-Free 6.5749569 46.5422483 501
178 92:5c:14:4b:93:2d UPC Wi-Free 6.5766056 46.5413233 562
179 56:67:11:b9:dd:a2 UPC Wi-Free 6.5763308 46.5416596 631
180 28:be:9b:06:19:70 UPC0038956 6.5764547 46.5416181 251
181 34:2c:c4:71:dc:20 UPC1205070 6.5767288 46.5413883 316
182 90:5c:44:a8:34:97 UPC17E648D 6.5749039 46.5417954 35
183 90:5c:44:7d:55:8a UPC19F466E 6.5765152 46.5415999 158
184 38:43:7d:f1:5a:6b UPC2137701 6.5767638 46.5416916 224
185 38:43:7d:88:b7:fc UPC2203812 6.5754661 46.541951 71
186 c4:27:95:be:60:e5 UPC2310492 6.5754953 46.5416255 282
187 54:67:51:fd:db:8e UPC2367964 6.5767478 46.5416455 447
188 64:7c:34:90:a0:af UPC2763130 6.5741628 46.5417067 316
189 90:5c:44:1d:06:33 UPC2913D37 6.5765152 46.5415999 316
190 90:5c:44:83:fc:e6 UPC29E3417 6.5750737 46.5423861 112
191 54:67:51:b9:dd:a2 UPC2BEFDC3 6.5763308 46.5416596 398
192 34:2c:c4:11:21:98 UPC3386356 6.5741489 46.5416962 200
193 54:67:51:fd:db:b7 UPC33E6D82 6.5764162 46.541632 447
194 ac:22:05:de:19:38 UPC3DF8B6F 6.5763308 46.5416596 71
195 34:2c:c4:5d:60:4b UPC4455098 6.5742766 46.5418172 355
196 34:2c:c4:5e:6e:8b UPC4586505 6.5767409 46.5414379 71
197 54:67:51:2a:61:32 UPC46DF3EF 6.5750373 46.5423404 71
198 90:5c:44:27:b8:4e UPC48478BC 6.5766593 46.5415669 112
199 90:5c:44:a8:06:6f UPC4BE516B 6.5767547 46.5414893 224
200 90:5c:44:05:2a:57 UPC4FD67EF 6.5767512 46.5415813 316
201 54:67:51:2e:f7:9e UPC53FA795 6.5766304 46.5415742 50
202 90:5c:44:53:0d:d1 UPC578B7A3 6.5744148 46.5422492 9
203 54:67:51:e8:4e:2b UPC57F67AE 6.5761247 46.5417203 100
204 34:2c:c4:84:34:15 UPC5841864 2.4GHZ 6.5767469 46.5414572 398
205 dc:53:7c:8b:65:8c UPC5F9AF36 6.5760487 46.541462 224
206 38:43:7d:8e:fa:6a UPC6439111 6.5753701 46.5416664 112
207 90:5c:44:22:9e:4a UPC65FA757 6.5765152 46.5415999 89
208 34:2c:c4:5e:71:5f UPC6683612 6.5750828 46.5421898 282
209 90:5c:44:07:97:b7 UPC681C4FE 6.576706 46.5413371 141
210 90:5c:44:83:e6:4f UPC69AA7F9 6.5751537 46.5424076 112
211 54:67:51:22:22:e5 UPC6F6F4C1 6.5765192 46.5413293 10
212 34:2c:c4:6b:a1:9e UPC7083705 6.5750737 46.5423861 200
213 6e:b0:ce:f7:f0:f6 UPC72E5C4E_EXT 6.5743659 46.5420829 8
214 dc:53:7c:ad:34:a4 UPC745F177 6.5767424 46.5416224 282
215 ac:22:05:85:c5:6e UPC7482BAC 6.5758922 46.5415098 126
216 ac:22:05:22:4e:aa UPC7AAB2FB 6.5767305 46.5413977 355
217 38:43:7d:38:b0:73 UPC8461370 6.5767512 46.5415813 50
218 38:43:7d:a3:bf:cd UPC8773645 6.5750737 46.5423861 178
219 54:67:51:22:5e:30 UPC8CD6FFB 6.5750737 46.5423861 178
220 ac:22:05:ce:e9:92 UPC8D6737C 6.5763442 46.5413311 71
221 90:5c:44:ce:d4:35 UPC8EC9133 6.5760968 46.5417264 282
222 34:2c:c4:34:98:75 UPC9197578 6.5743688 46.5421322 224
223 38:43:7d:88:b6:4e UPC9241635 6.5754325 46.5416449 100
224 e4:57:40:c0:c3:c1 UPC9568736 6.5764987 46.5416042 158
225 ac:22:05:84:0a:7f UPC98F97D8 6.5750737 46.5423861 355
226 54:67:51:e5:16:d5 UPC9B15B32 6.5750737 46.5423861 126
227 54:67:51:fe:0d:50 UPCA13B887 6.5766056 46.5413233 398
228 90:5c:44:de:02:47 UPCA1AA9E3 6.5751046 46.5424101 224
229 dc:53:7c:ba:96:d8 UPCA8BF168 6.5754661 46.541951 40
230 ac:22:05:c7:1c:74 UPCABB651A 6.5742766 46.5418172 355
231 54:67:51:c9:d2:d1 UPCB299242 6.5751536 46.5422885 316
232 54:67:51:7d:d7:d4 UPCB5D675F 6.5763656 46.5413323 50
233 90:5c:44:c8:5d:e8 UPCB76BCD4 6.5762527 46.5416828 398
234 90:5c:44:4b:93:2d UPCBF21657 6.5766056 46.5413233 316
235 54:67:51:29:9e:44 UPCBF2D62C 6.5756447 46.5418882 282
236 90:5c:44:27:4b:43 UPCC75E4EE 6.5767627 46.5416445 18
237 54:67:51:bd:4d:be UPCC81FA2A 6.5743809 46.5421847 45
238 54:67:51:eb:4c:32 UPCCDDC593 6.5751536 46.5422885 282
239 ac:22:05:c7:17:d6 UPCCF2CA1A 6.5767424 46.5416224 178
240 90:5c:44:05:be:55 UPCE86AC2E 6.575112 46.5422243 355
241 90:5c:44:dd:59:e8 UPCEB861D9 6.5743912 46.5422149 63
242 90:5c:44:4b:9e:93 UPCEF3C5ED 6.57521 46.54171 112
243 54:67:51:2b:09:55 UPCEF73C85 6.5762527 46.5416828 224
244 90:5c:44:25:e2:b3 UPCEFAC398 6.5766624 46.5413184 22
245 90:5c:44:ad:93:21 UPCF2C6A3A 6.5749067 46.5421885 100
246 ac:22:05:c6:28:f9 UPCF5B5FC5 6.5751536 46.5422885 282
247 54:67:51:dd:86:3c UPCF7744D7 6.5764547 46.5416181 126
248 90:5c:44:75:d4:20 UPCF962374 6.5763789 46.5416447 224
249 ec:f4:51:8f:5e:47 ValdezSabando 6.5767638 46.5416916 501
250 5c:dc:96:89:dc:d3 vcr-99345 6.5751536 46.5422885 79
251 b0:ea:bc:4b:10:d0 vcy-48117-5Ghz 6.5756669 46.5418818 56
252 ec:f4:51:ff:fc:77 visitor-23996 6.5760487 46.541462 13
253 a0:64:8f:bb:81:61 visitor-23996 6.5761546 46.5414019 89
254 b4:ee:b4:83:dd:14 visitor-49687 6.5762683 46.5413457 35
255 7c:b7:33:3f:a2:ef visitor-57602 6.5741489 46.5416962 251
256 18:e8:29:6a:cd:96 Wifi-Ortho-Reha 6.5742766 46.5418172 398
257 38:43:7d:9b:1c:5e Wifi-Piermaria 6.5750828 46.5421898 355
258 34:2c:c4:0f:f0:6f WiFiCus 6.5756669 46.5418818 158
259 1c:b0:44:5c:bf:90 wmc-42326 6.5767529 46.5417195 224
260 68:a0:3e:86:c6:5a Xperia Z5 Dual_86b5 6.5767424 46.5416224 224
261 1c:24:cd:40:dc:80 xrd-82638 6.5751536 46.5422885 126
262 34:12:f9:02:a9:15 yalloHome-B529-A915 6.5742313 46.541755 71
263 a8:d3:f7:3c:bd:e0 zos-98127 6.5757808 46.5418412 50

View File

@@ -0,0 +1 @@
{"url": "https://docs.google.com/open?id=11dL4STO91xk7o5xI6fFX7_exLZAxHoF4rxX4RVKDQCY", "doc_id": "11dL4STO91xk7o5xI6fFX7_exLZAxHoF4rxX4RVKDQCY", "email": "christian.zufferey@gmail.com"}

View File

@@ -0,0 +1,531 @@
-- parse les données GPX avec les données des ap wifi du NodeMCU pour les
-- cooréler en fonction du temps afin de pouvoir géolocaliser les ap wifi
zversion = ("gpx2gpsapwifi.lua zfzf200811.2231 ")
-- print("\n"..zversion.."\n")
zgpx_tab = {}
zidx_gpx_tab = 0
zap_wifi_tab = {}
zidx_ap_wifi_tab1 = 0
zidx_ap_wifi_tab2 = 0
zap_wifi_unique_tab = {}
zidx_ap_wifi_unique_tab = 0
zpet_tracker_tab = {}
zidx_pet_tracker_tab1 = 0
zidx_pet_tracker_tab2 = 0
zvote_tab = {}
zidx_vote_tab = 0
ztime_old = 0
ztime2020 = 1577836800 -- Unix time pour 1.1.2020 0:0:0 GMT
ztimezone = 2*3600
function zround(num, dec)
local mult = 10^(dec or 0)
return math.floor(num * mult + 0.5) / mult
end
function zcalc_distance(zrssi)
zrssi_1m=-40 zn=2
zdist=10^((zrssi_1m - zrssi) / (10 * zn))
return zdist
end
function tprint(t)
for key,value in pairs(t) do
print(key, value)
end
end
function zunixtime2datetime(zunixtime)
-- local datetime = os.date("%Y/%m/%d %H:%M:%S",zunixtime-ztimezone)
local datetime = os.date("%Y-%m-%dT%H:%M:%SZ",zunixtime-2*ztimezone)
return datetime
end
function zdatetime2unixtime(zdatetime)
-- source: https://stackoverflow.com/questions/4105012/convert-a-string-date-to-a-timestamp
-- https://www.unixtimestamp.com/index.php
-- Assuming a date pattern like: yyyy-mm-ddThh:mm:ss
local pattern = "(%d+)-(%d+)-(%d+)T(%d+):(%d+):(%d+)"
-- local timeToConvert = "2020-07-27T20:03:27"
local timeToConvert = zdatetime
local runyear, runmonth, runday, runhour, runminute, runseconds = timeToConvert:match(pattern)
local convertedTimestamp = os.time({year = runyear, month = runmonth, day = runday, hour = runhour, min = runminute, sec = runseconds})
return (convertedTimestamp+ztimezone)
end
function gpx2tab(zfile_gpx)
local i = 1
for line in io.lines(zfile_gpx) do
-- print(line)
-- <trkpt lat="46.5421696" lon="6.5749532">
if string.find(line, "<trkpt ") then
-- print("coucou gps")
-- récupère la longitude
p1, p2 = string.find(line, "lat=\"")
-- print(p1,p2)
p3 = string.find(line, "\"", p2+1)
-- print(p3)
zlat = string.sub(line,p2+1,p3-1)
-- print("lat: " ..zlat)
-- récupère la latitude
p1, p2 = string.find(line, "lon=\"")
-- print(p1,p2)
p3 = string.find(line, "\"", p2+1)
-- print(p3)
zlon = string.sub(line,p2+1,p3-1)
-- print("lon: " ..zlon)
end
-- <time>2020-07-27T20:03:27Z</time>
if string.find(line, "<time>") then
-- print("coucou time")
-- récupère le temps
p1, p2 = string.find(line, "<time>")
-- print(p1,p2)
p3 = string.find(line, "Z</time>", p2+1)
-- print(p3)
ztime = string.sub(line,p2+1,p3-1)
-- print("time: " ..ztime)
zunixtime = zdatetime2unixtime(ztime)+ztimezone
-- print("unixtime: " ..zunixtime)
-- on a le temps et les coordonnées on peut les sauver dans le tableau§
zidx_gpx_tab = zidx_gpx_tab + 1
zgpx_tab[zidx_gpx_tab] = {unixtime = zunixtime, time = zunixtime2datetime(zunixtime),lon = zlon, lat = zlat}
end
-- juste un petit verrou pour ne pas parser tout le fichiers pendant les tests
i = i + 1
if i > 20000 then break end
end
end
function ap_wifi2tab(zfile_ap_wifi)
local i = 1
for line in io.lines(zfile_ap_wifi) do
-- print(line)
-- 18050624, b0:7f:b9:3e:f1:f1, "apzuzu6_EXT", -71
-- on récupère le temps unix 2020
p1 = string.find(line, ",")
zunixtime2020 = string.sub(line, 1, p1-1)
-- print(zunixtime2020)
-- on récupère le temps unix 1970
zunixtime = zunixtime2020 + ztime2020
-- print(zunixtime)
-- on récupère la mac adresse
p2 = string.find(line, ",", p1+1)
zmacadresse = string.sub(line, p1+2, p2-1)
-- print(zmacadresse)
-- on récupère le nom de l'ap wifi
p3 = string.find(line, ",", p2+1)
zap_wifiname = string.sub(line, p2+3, p3-2)
-- print(zap_wifi)
-- on récupère le RSSI
p4 = string.len(line)
zrssi = string.sub(line, p3+2, p4)
-- print(zrssi)
-- est-ce un nouveau groupe de time ?
if zunixtime ~= ztime_old then
ztime_old = zunixtime
zidx_ap_wifi_tab2 = 0
zidx_ap_wifi_tab1 = zidx_ap_wifi_tab1 + 1
zap_wifi_tab[zidx_ap_wifi_tab1] = {unixtime = zunixtime, time = zunixtime2datetime(zunixtime), lon = 0, lat = 0, {}}
end
zidx_ap_wifi_tab2 = zidx_ap_wifi_tab2 + 1
zap_wifi_tab[zidx_ap_wifi_tab1][zidx_ap_wifi_tab2] = {mac = zmacadresse, name = zap_wifiname, rssi = zrssi, error = zround(zcalc_distance(zrssi),2)}
-- juste un petit verrou pour ne pas parser tout le fichiers pendant les tests
i = i + 1
if i > 20000 then break end
end
end
function gpx2gpsap_wifi()
for i=1, #zap_wifi_tab do
-- print("groupe: "..i)
-- print("time ap_wifi: "..zap_wifi_tab[i].time)
-- print("unxitime ap_wifi: "..zap_wifi_tab[i].unixtime)
-- print("lon: "..zap_wifi_tab[i].lon)
-- print("lat: "..zap_wifi_tab[i].lat)
j = 1
while zgpx_tab[j].unixtime < zap_wifi_tab[i].unixtime do
-- print("coucou")
j = j + 1
end
-- print("j: "..j)
-- print("time gpx: "..zgpx_tab[j].time)
-- print("unxitime gpx: "..zgpx_tab[j].unixtime)
zap_wifi_tab[i].lon = zgpx_tab[j].lon
zap_wifi_tab[i].lat = zgpx_tab[j].lat
-- print("lon: "..zap_wifi_tab[i].lon)
-- print("lat: "..zap_wifi_tab[i].lat)
end
end
function zprint_ap_wifi_tab(ztab)
for i=1, #ztab do
print("groupe: "..i.." -----------------")
print("time: "..ztab[i].time)
print("unxitime: "..ztab[i].unixtime)
print("lon: "..ztab[i].lon)
print("lat: "..ztab[i].lat)
print("nombre de paternes: "..#ztab[i].."x")
for j=1 , #ztab[i] do
print("idx: "..j)
print("mac: "..ztab[i][j].mac)
print("name: "..ztab[i][j].name)
print("rssi: "..ztab[i][j].rssi)
print("error: "..ztab[i][j].error)
end
end
end
gpx2tab("osman_2020-07-27_22-03_Mon.gpx")
ap_wifi2tab("pet_tracker_200727.2203.csv")
gpx2gpsap_wifi()
-- zprint_ap_wifi_tab()
function zfind_unique_ap_wifi()
zidx_ap_wifi_unique_tab = 0
for i=1, #zap_wifi_tab do
-- print("groupe: "..i.." -----------------")
-- print("time: "..zap_wifi_tab[i].time)
-- print("unxitime: "..zap_wifi_tab[i].unixtime)
-- print("lon: "..zap_wifi_tab[i].lon)
-- print("lat: "..zap_wifi_tab[i].lat)
for j=1 , #zap_wifi_tab[i] do
-- print("idx: "..j)
-- print("mac: "..zap_wifi_tab[i][j].mac)
-- print("name: "..zap_wifi_tab[i][j].name)
-- print("rssi: "..zap_wifi_tab[i][j].rssi)
-- print("error: "..zap_wifi_tab[i][j].error)
zmacadresse = zap_wifi_tab[i][j].mac
if zap_wifi_unique_tab[zmacadresse] == nil then
-- print("oh un nouveau: "..zap_wifi_tab[i][j].mac..zap_wifi_tab[i][j].name)
zap_wifi_unique_tab[zmacadresse] = {
name = zap_wifi_tab[i][j].name,
error = zap_wifi_tab[i][j].error,
nb = 1,
lon = zap_wifi_tab[i].lon,
lat = zap_wifi_tab[i].lat}
-- zap_wifi_unique_tab[zmacadresse] = {lon = zap_wifi_tab[i][j].lon, lat =zap_wifi_tab[i][j].lat}
zidx_ap_wifi_unique_tab = zidx_ap_wifi_unique_tab + 1
else
if zap_wifi_tab[i][j].error < zap_wifi_unique_tab[zmacadresse].error then
-- print("oh il est plus proche "..zap_wifi_tab[i][j].error.." < "..zap_wifi_unique_tab[zmacadresse].error)
zap_wifi_unique_tab[zmacadresse].error = zap_wifi_tab[i][j].error
zap_wifi_unique_tab[zmacadresse].nb = zap_wifi_unique_tab[zmacadresse].nb + 1
zap_wifi_unique_tab[zmacadresse].lon = zap_wifi_tab[i].lon
zap_wifi_unique_tab[zmacadresse].lat = zap_wifi_tab[i].lat
end
end
end
end
end
function zprint_ap_wifi_unique()
print("mac, name, nb, lon, lat, error")
for key,value in pairs(zap_wifi_unique_tab) do
print(
key..", \""..
zap_wifi_unique_tab[key].name.."\", "..
zap_wifi_unique_tab[key].nb..", "..
zap_wifi_unique_tab[key].lon..", "..
zap_wifi_unique_tab[key].lat..", "..
zap_wifi_unique_tab[key].error)
end
end
zfind_unique_ap_wifi()
-- zprint_ap_wifi_unique()
-- print("j'en ai trouvé "..zidx_ap_wifi_unique_tab.."x")
-- affiche toutes les données pour un seul ap wifi afin de déterminer sa localisation visuellement
function zget_ap_wifi(zmacadresse)
print('"mac", "name", "lon", "lat", "error"')
zidx_get_ap_wiifi = 0
for i=1, #zap_wifi_tab do
print("groupe: "..i.." -----------------")
-- print("time: "..zap_wifi_tab[i].time)
-- print("unxitime: "..zap_wifi_tab[i].unixtime)
-- print("lon: "..zap_wifi_tab[i].lon)
-- print("lat: "..zap_wifi_tab[i].lat)
for j=1 , #zap_wifi_tab[i] do
print("idx: "..j)
-- print("mac: "..zap_wifi_tab[i][j].mac)
-- print("name: "..zap_wifi_tab[i][j].name)
-- print("rssi: "..zap_wifi_tab[i][j].rssi)
-- print("error: "..zap_wifi_tab[i][j].error)
if zap_wifi_tab[i][j].mac == zmacadresse then
zidx_get_ap_wiifi = zidx_get_ap_wiifi + 1
print(
zap_wifi_tab[i][j].mac..", \""..
zap_wifi_tab[i][j].name.."\", "..
zap_wifi_tab[i].lon..", "..
zap_wifi_tab[i].lat..", "..
zap_wifi_tab[i][j].error)
end
end
end
print("J'en ai trouvé "..zidx_get_ap_wiifi.."x")
end
-- zget_ap_wifi("7a:d3:8d:fc:e9:a9")
function pet_tracker2tab(zfile_pettracker)
local i = 1
for line in io.lines(zfile_pettracker) do
-- print(line)
-- 18050624, b0:7f:b9:3e:f1:f1, "apzuzu6_EXT", -71
-- on récupère le temps unix 2020
p1 = string.find(line, ",")
zunixtime2020 = string.sub(line, 1, p1-1)
-- print(zunixtime2020)
-- on récupère le temps unix 1970
zunixtime = zunixtime2020 + ztime2020
-- print(zunixtime)
-- on récupère la mac adresse
p2 = string.find(line, ",", p1+1)
zmacadresse = string.sub(line, p1+2, p2-1)
-- print(zmacadresse)
-- on récupère le nom de l'ap wifi
p3 = string.find(line, ",", p2+1)
zap_wifiname = string.sub(line, p2+3, p3-2)
-- print(zap_wifi)
-- on récupère le RSSI
p4 = string.len(line)
zrssi = string.sub(line, p3+2, p4)
-- print(zrssi)
-- est-ce un nouveau groupe de time ?
if zunixtime ~= ztime_old then
ztime_old = zunixtime
zidx_pet_tracker_tab2 = 0
zidx_pet_tracker_tab1 = zidx_pet_tracker_tab1 + 1
zpet_tracker_tab[zidx_pet_tracker_tab1] = {unixtime = zunixtime, time = zunixtime2datetime(zunixtime), lon = 0, lat = 0, {}}
end
zidx_pet_tracker_tab2 = zidx_pet_tracker_tab2 + 1
zpet_tracker_tab[zidx_pet_tracker_tab1][zidx_pet_tracker_tab2] = {mac = zmacadresse, name = zap_wifiname, rssi = zrssi, error = zround(zcalc_distance(zrssi),2)}
-- juste un petit verrou pour ne pas parser tout le fichiers pendant les tests
i = i + 1
if i > 20000 then break end
end
end
pet_tracker2tab("pet_tracker_200727.2203.csv")
-- zprint_ap_wifi_tab(zpet_tracker_tab)
-- fait des votations de corespondances de paternes ap wifi
-- ce qui permet de pouvoir comparer des paternes avec la déviation entre les paternes (rssi)
function zvotation_ap_wifi(zidx_paterne)
-- print("groupe: "..zidx_paterne.." -------------------------------")
for zidx_pet_tracker_tab2 = 1, #zpet_tracker_tab[zidx_paterne] do
-- print("idx: "..zidx_pet_tracker_tab2)
zmacadresse1 = zpet_tracker_tab[zidx_paterne][zidx_pet_tracker_tab2].mac
-- print("zmacadresse: "..zmacadresse1)
-- parse toute la table ap_wifi à la recherche de la mac adresse
local i = 1
for zidx_ap_wifi_tab1 = 1, #zap_wifi_tab do
-- print("groupe: "..zidx_ap_wifi_tab1.." -----------------")
-- print("time: "..zap_wifi_tab[zidx_ap_wifi_tab1].time)
-- print("unxitime: "..zap_wifi_tab[zidx_ap_wifi_tab1].unixtime)
-- print("lon: "..zap_wifi_tab[zidx_ap_wifi_tab1].lon)
-- print("lat: "..zap_wifi_tab[zidx_ap_wifi_tab1].lat)
for zidx_ap_wifi_tab2 = 1 , #zap_wifi_tab[zidx_ap_wifi_tab1] do
-- print("idx: "..zidx_ap_wifi_tab2)
-- print("mac: "..zap_wifi_tab[zidx_ap_wifi_tab1][zidx_ap_wifi_tab2].mac)
-- print("name: "..zap_wifi_tab[zidx_ap_wifi_tab1][zidx_ap_wifi_tab2].name)
-- print("rssi: "..zap_wifi_tab[zidx_ap_wifi_tab1][zidx_ap_wifi_tab2].rssi)
-- print("error: "..zap_wifi_tab[zidx_ap_wifi_tab1][zidx_ap_wifi_tab2].error)
zmacadresse2 = zap_wifi_tab[zidx_ap_wifi_tab1][zidx_ap_wifi_tab2].mac
-- avons-nous trouvé une corespondance ?
if zmacadresse1 == zmacadresse2 then
-- print("idx: "..zidx_ap_wifi_tab2.."/"..#zap_wifi_tab[zidx_ap_wifi_tab1])
-- print("mac1: "..zmacadresse1)
-- print("mac2: "..zmacadresse2)
-- print("J'en ai trouvée une...")
-- oui ! Alors on va voter pour elle
zvote_tab[zidx_ap_wifi_tab1].idx = zidx_ap_wifi_tab1
zvote_tab[zidx_ap_wifi_tab1].vote = zvote_tab[zidx_ap_wifi_tab1].vote + 1
zerror1 = zpet_tracker_tab[zidx_paterne][zidx_pet_tracker_tab2].error
zerror2 = zap_wifi_tab[zidx_ap_wifi_tab1][zidx_ap_wifi_tab2].error
if zerror1 < zerror2 then
zdeviation = zerror1 / zerror2
else
zdeviation = zerror2 / zerror1
end
zvote_tab[zidx_ap_wifi_tab1].sum_deviation = zvote_tab[zidx_ap_wifi_tab1].sum_deviation + zdeviation
-- print("vote: "..zvote_tab[zidx_ap_wifi_tab2].vote)
-- print("deviation: "..zdeviation)
end
end
-- juste un petit verrou pour ne pas parser tout le fichiers pendant les tests
i = i + 1
if i > 50000 then break end
end
end
end
-- initialise le tableau de votes des paternes
function zclear_vote_tab()
for zidx_vote_tab = 1, #zap_wifi_tab do
zvote_tab[zidx_vote_tab] = {
idx = 0,
vote = 0,
sum_deviation = 0,
deviation = 0,
key_sort = ""}
end
zidx_vote_tab = 0
end
-- imprime le tableau de votes des paternes
function zprint_vote_tab()
local i = 1
for zidx_vote_tab = 1, #zvote_tab do
if zvote_tab[zidx_vote_tab].idx > 0 then
print("pour "..zvote_tab[zidx_vote_tab].idx..
" nombre de votes "..zvote_tab[zidx_vote_tab].vote..
", déviation : "..zvote_tab[zidx_vote_tab].deviation)
end
-- juste un petit verrou pour ne pas parser tout le fichiers pendant les tests
i = i + 1
if i > 5000 then break end
end
end
-- calcul les déviations et la key_sort dans le tableau de votes des paternes
function zcalc_deviations()
for zidx_vote_tab = 1, #zvote_tab do
if zvote_tab[zidx_vote_tab].vote > 0 then
zvote_tab[zidx_vote_tab].deviation = zround(zvote_tab[zidx_vote_tab].sum_deviation / zvote_tab[zidx_vote_tab].vote, 3)
end
zvote_tab[zidx_vote_tab].key_sort = string.format("%02d",zvote_tab[zidx_vote_tab].vote)..","..string.format("%.3f",zvote_tab[zidx_vote_tab].deviation)
-- print("key sort: "..zvote_tab[zidx_vote_tab].key_sort)
end
end
-- tri le tableau de votes des paternes pour trouver le gagnant
function zsort_vote_tab()
table.sort(zvote_tab, function(lhs, rhs) return lhs.key_sort > rhs.key_sort end)
end
-- parse toutes les paternes du tableau pet tracker à la recherche de la patterne la plus
-- proche des ap wifi du quartier afin de pouvoir récupérer les coordonnées GPS de chaque
-- paternes vu dans le pet tracker
function zget_gps_pet_tracker()
local i = 1
for zidx_pet_tracker_tab1 = 1, #zpet_tracker_tab do
zclear_vote_tab()
zvotation_ap_wifi(zidx_pet_tracker_tab1)
zcalc_deviations()
-- zprint_vote_tab()
-- print("il y a "..#zpet_tracker_tab.." paternes !")
zsort_vote_tab()
-- print("#####################################################")
-- zprint_vote_tab()
-- print("et la gagnante est "..zvote_tab[1].idx)
-- print("nombre de paternes: "..#zpet_tracker_tab[zvote_tab[1].idx])
zpet_tracker_tab[zvote_tab[1].idx].lon = zap_wifi_tab[zvote_tab[1].idx].lon
zpet_tracker_tab[zvote_tab[1].idx].lat = zap_wifi_tab[zvote_tab[1].idx].lat
-- print("avec comme longitude: "..zpet_tracker_tab[zvote_tab[1].idx].lon)
-- print("et comme latitude: "..zpet_tracker_tab[zvote_tab[1].idx].lat)
-- juste un petit verrou pour ne pas parser tout le fichiers pendant les tests
i = i + 1
if i > 2000 then break end
end
end
function zprint_gps_pet_tracker_tab(ztab)
local i = 1
for zidx_paterne=1, #ztab do
print("groupe: "..zidx_paterne.." -----------------")
print("time: "..ztab[zidx_paterne].time)
-- print("unxitime: "..ztab[i].unixtime)
print("lon: "..ztab[zidx_paterne].lon)
print("lat: "..ztab[zidx_paterne].lat)
print("nombre de paternes: "..#ztab[zidx_paterne].."x")
-- juste un petit verrou pour ne pas parser tout le fichiers pendant les tests
i = i + 1
if i > 2000 then break end
end
end
zget_gps_pet_tracker()
-- zprint_gps_pet_tracker_tab(zpet_tracker_tab)
-- converti les coordonnées GPS du pet tracker en trace GPX pour pouvoir les afficher sur une carte Google
function zgps_pet_tracker_to_gpx(ztab)
print("<?xml version='1.0' encoding='UTF-8' standalone='yes' ?>")
print("<gpx version=\"1.1\" creator=\""..zversion.."\" xmlns=\"http://www.topografix.com/GPX/1/1\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://www.topografix.com/GPX/1/1 http://www.topografix.com/GPX/1/1/gpx.xsd\">")
print(" <metadata>")
print(" <name>"..zversion.."</name>")
print(" </metadata>")
local i = 1
for zidx_paterne=1, #ztab do
if ztab[zidx_paterne].lat ~= 0 then
print(" <wpt lat=\""..ztab[zidx_paterne].lat.."\" lon=\""..ztab[zidx_paterne].lon.."\">")
print(" <time>"..ztab[zidx_paterne].time.."</time>")
print(" <name>"..ztab[zidx_paterne].time.."</name>")
print(" </wpt>")
end
-- juste un petit verrou pour ne pas parser tout le fichiers pendant les tests
i = i + 1
if i > 2000 then break end
end
print(" <trk>")
print(" <trkseg>")
local i = 1
for zidx_paterne=1, #ztab do
if ztab[zidx_paterne].lat ~= 0 then
print(" <trkpt lat=\""..ztab[zidx_paterne].lat.."\" lon=\""..ztab[zidx_paterne].lon.."\">")
print(" <time>"..ztab[zidx_paterne].time.."</time>")
print(" </trkpt>")
end
-- juste un petit verrou pour ne pas parser tout le fichiers pendant les tests
i = i + 1
if i > 2000 then break end
end
print(" </trkseg>")
print(" </trk>")
print("</gpx>")
end
zgps_pet_tracker_to_gpx(zpet_tracker_tab)
-- zclear_vote_tab()
-- zvotation_ap_wifi(200)
-- zcalc_deviations()
-- -- zprint_vote_tab()
-- print("il y a "..#zpet_tracker_tab.." paternes !")
-- zsort_vote_tab()
-- print("#####################################################")
-- zprint_vote_tab()
-- print("et la gagnante est "..zvote_tab[1].idx)
-- zpet_tracker_tab[zvote_tab[1].idx].lon = zap_wifi_tab[zvote_tab[1].idx].lon
-- zpet_tracker_tab[zvote_tab[1].idx].lat = zap_wifi_tab[zvote_tab[1].idx].lat
-- print("avec comme longitude: "..zpet_tracker_tab[zvote_tab[1].idx].lon)
-- print("et comme latitude: "..zpet_tracker_tab[zvote_tab[1].idx].lat)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1 @@
{"url": "https://docs.google.com/open?id=1QL0K2TxEIZhA_3H4K3pPCJs3UKHCB5iQAlBk6j2_8Yw", "doc_id": "1QL0K2TxEIZhA_3H4K3pPCJs3UKHCB5iQAlBk6j2_8Yw", "email": "christian.zufferey@gmail.com"}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,338 @@
X,Y,track_fid,track_seg_id,track_seg_point_id,ele,time,magvar,geoidheight,name,cmt,desc,src,link1_href,link1_text,link1_type,link2_href,link2_text,link2_type,sym,type,fix,sat,hdop,vdop,pdop,ageofdgpsdata,dgpsid,speed
6.5747815,46.5420832,0,0,0,534.603,2020/07/27 11:49:33+00,,,,,,,,,,,,,,,,,48,,,,,1.72
6.5750736,46.5421493,0,0,1,492.145,2020/07/27 11:49:35+00,,,,,,,,,,,,,,,,,32,,,,,
6.5750736,46.5421493,0,0,2,492.533,2020/07/27 11:49:36+00,,,,,,,,,,,,,,,,,24,,,,,
6.5749041,46.5420945,0,0,3,496.478,2020/07/27 11:49:37+00,,,,,,,,,,,,,,,,,16,,,,,
6.5749041,46.5420945,0,0,4,494.232,2020/07/27 11:49:38+00,,,,,,,,,,,,,,,,,12,,,,,
6.5749041,46.5420945,0,0,5,490.67,2020/07/27 11:49:40+00,,,,,,,,,,,,,,,,,12,,,,,
6.5749041,46.5420945,0,0,6,491.29,2020/07/27 11:49:41+00,,,,,,,,,,,,,,,,,12,,,,,
6.5749041,46.5420945,0,0,7,490.077,2020/07/27 11:49:43+00,,,,,,,,,,,,,,,,,8,,,,,
6.5749041,46.5420945,0,0,8,489.084,2020/07/27 11:49:44+00,,,,,,,,,,,,,,,,,8,,,,,
6.5748305,46.5421458,0,0,9,488.321,2020/07/27 11:49:46+00,,,,,,,,,,,,,,,,,6,,,,,
6.5748305,46.5421458,0,0,10,487.62,2020/07/27 11:49:47+00,,,,,,,,,,,,,,,,,6,,,,,
6.5748305,46.5421458,0,0,11,487.042,2020/07/27 11:49:48+00,,,,,,,,,,,,,,,,,6,,,,,
6.5748305,46.5421458,0,0,12,485.744,2020/07/27 11:49:50+00,,,,,,,,,,,,,,,,,6,,,,,
6.5748305,46.5421458,0,0,13,485.215,2020/07/27 11:49:51+00,,,,,,,,,,,,,,,,,6,,,,,
6.5748305,46.5421458,0,0,14,485.255,2020/07/27 11:49:52+00,,,,,,,,,,,,,,,,,6,,,,,
6.5748305,46.5421458,0,0,15,484.435,2020/07/27 11:49:54+00,,,,,,,,,,,,,,,,,6,,,,,
6.5748305,46.5421458,0,0,16,484.218,2020/07/27 11:49:55+00,,,,,,,,,,,,,,,,,6,,,,,
6.5748305,46.5421458,0,0,17,483.962,2020/07/27 11:49:56+00,,,,,,,,,,,,,,,,,6,,,,,
6.5748305,46.5421458,0,0,18,483.838,2020/07/27 11:49:57+00,,,,,,,,,,,,,,,,,6,,,,,
6.5748305,46.5421458,0,0,19,483.981,2020/07/27 11:49:59+00,,,,,,,,,,,,,,,,,6,,,,,
6.5748305,46.5421458,0,0,20,484.139,2020/07/27 11:50:01+00,,,,,,,,,,,,,,,,,6,,,,,
6.5748305,46.5421458,0,0,21,484.198,2020/07/27 11:50:02+00,,,,,,,,,,,,,,,,,6,,,,,
6.5748439,46.5421737,0,0,22,484.197,2020/07/27 11:50:04+00,,,,,,,,,,,,,,,,,4,,,,,0.132
6.5748496,46.5421752,0,0,23,484.194,2020/07/27 11:50:05+00,,,,,,,,,,,,,,,,,4,,,,,0.125
6.5748549,46.5421767,0,0,24,484.189,2020/07/27 11:50:06+00,,,,,,,,,,,,,,,,,4,,,,,0.201
6.5748599,46.5421785,0,0,25,484.188,2020/07/27 11:50:07+00,,,,,,,,,,,,,,,,,4,,,,,0.144
6.574869,46.5421816,0,0,26,484.172,2020/07/27 11:50:09+00,,,,,,,,,,,,,,,,,4,,,,,0.268
6.5748907,46.5421965,0,0,27,484.165,2020/07/27 11:50:11+00,,,,,,,,,,,,,,,,,4,,,,,0.225
6.5749241,46.5422175,0,0,28,484.164,2020/07/27 11:50:13+00,,,,,,,,,,,,,,,,,4,,,,,0.35
6.5749487,46.542232,0,0,29,484.164,2020/07/27 11:50:15+00,,,,,,,,,,,,,,,,,4,,,,,0.493
6.5749812,46.5422426,0,0,30,484.168,2020/07/27 11:50:17+00,,,,,,,,,,,,,,,,,3,,,,,0.634
6.5749978,46.5422566,0,0,31,484.174,2020/07/27 11:50:19+00,,,,,,,,,,,,,,,,,3,,,,,0.514
6.5750056,46.5422631,0,0,32,484.18,2020/07/27 11:50:21+00,,,,,,,,,,,,,,,,,3,,,,,0.26
6.5750068,46.5422644,0,0,33,484.182,2020/07/27 11:50:23+00,,,,,,,,,,,,,,,,,3,,,,,0.006
6.5750068,46.5422647,0,0,34,484.183,2020/07/27 11:50:24+00,,,,,,,,,,,,,,,,,3,,,,,0.008
6.5750074,46.5422651,0,0,35,484.186,2020/07/27 11:50:26+00,,,,,,,,,,,,,,,,,3,,,,,0.053
6.5750047,46.5422719,0,0,36,484.204,2020/07/27 11:50:27+00,,,,,,,,,,,,,,,,,3,,,,,0.342
6.5750096,46.5422847,0,0,37,484.235,2020/07/27 11:50:29+00,,,,,,,,,,,,,,,,,3,,,,,0.622
6.5750126,46.5422964,0,0,38,484.249,2020/07/27 11:50:30+00,,,,,,,,,,,,,,,,,3,,,,,0.876
6.5750121,46.5423363,0,0,39,484.273,2020/07/27 11:50:32+00,,,,,,,,,,,,,,,,,4,,,,,0.949
6.5750192,46.5423615,0,0,40,484.293,2020/07/27 11:50:34+00,,,,,,,,,,,,,,,,,4,,,,,1.042
6.5750311,46.5423899,0,0,41,484.309,2020/07/27 11:50:36+00,,,,,,,,,,,,,,,,,4,,,,,1.075
6.5750382,46.5423982,0,0,42,484.316,2020/07/27 11:50:37+00,,,,,,,,,,,,,,,,,4,,,,,1.069
6.5750494,46.5424039,0,0,43,484.323,2020/07/27 11:50:39+00,,,,,,,,,,,,,,,,,4,,,,,1.008
6.5750691,46.542404,0,0,44,484.326,2020/07/27 11:50:41+00,,,,,,,,,,,,,,,,,4,,,,,0.581
6.5750722,46.5424036,0,0,45,484.326,2020/07/27 11:50:42+00,,,,,,,,,,,,,,,,,4,,,,,0.41
6.5750751,46.5424049,0,0,46,484.327,2020/07/27 11:50:44+00,,,,,,,,,,,,,,,,,3,,,,,0.25
6.5750754,46.5424043,0,0,47,484.327,2020/07/27 11:50:45+00,,,,,,,,,,,,,,,,,3,,,,,0.208
6.5750753,46.5424043,0,0,48,484.328,2020/07/27 11:50:46+00,,,,,,,,,,,,,,,,,3,,,,,0.184
6.5750782,46.542405,0,0,49,484.326,2020/07/27 11:50:48+00,,,,,,,,,,,,,,,,,3,,,,,0.177
6.5750827,46.5424022,0,0,50,484.322,2020/07/27 11:50:49+00,,,,,,,,,,,,,,,,,3,,,,,0.27
6.575088,46.5423949,0,0,51,484.314,2020/07/27 11:50:50+00,,,,,,,,,,,,,,,,,3,,,,,0.636
6.575091,46.5423744,0,0,52,484.291,2020/07/27 11:50:52+00,,,,,,,,,,,,,,,,,3,,,,,0.843
6.5751002,46.5423537,0,0,53,484.264,2020/07/27 11:50:54+00,,,,,,,,,,,,,,,,,3,,,,,0.994
6.5751039,46.542335,0,0,54,484.235,2020/07/27 11:50:56+00,,,,,,,,,,,,,,,,,3,,,,,0.999
6.5750953,46.5423303,0,0,55,484.22,2020/07/27 11:50:57+00,,,,,,,,,,,,,,,,,3,,,,,0.992
6.5750984,46.5423242,0,0,56,484.203,2020/07/27 11:50:58+00,,,,,,,,,,,,,,,,,3,,,,,1.002
6.5750885,46.5423104,0,0,57,484.17,2020/07/27 11:51:00+00,,,,,,,,,,,,,,,,,3,,,,,1.008
6.5750842,46.5423056,0,0,58,484.154,2020/07/27 11:51:01+00,,,,,,,,,,,,,,,,,3,,,,,0.994
6.5750763,46.542301,0,0,59,484.137,2020/07/27 11:51:02+00,,,,,,,,,,,,,,,,,3,,,,,0.985
6.5750713,46.5422788,0,0,60,484.1,2020/07/27 11:51:04+00,,,,,,,,,,,,,,,,,3,,,,,0.988
6.5750712,46.5422552,0,0,61,484.067,2020/07/27 11:51:06+00,,,,,,,,,,,,,,,,,3,,,,,0.965
6.5750653,46.5422451,0,0,62,484.052,2020/07/27 11:51:07+00,,,,,,,,,,,,,,,,,3,,,,,0.968
6.5750618,46.5422339,0,0,63,484.036,2020/07/27 11:51:08+00,,,,,,,,,,,,,,,,,3,,,,,0.98
6.5750406,46.5422157,0,0,64,484.005,2020/07/27 11:51:10+00,,,,,,,,,,,,,,,,,3,,,,,0.998
6.5750033,46.5422029,0,0,65,483.976,2020/07/27 11:51:12+00,,,,,,,,,,,,,,,,,3,,,,,1.061
6.5749967,46.5421945,0,0,66,483.962,2020/07/27 11:51:13+00,,,,,,,,,,,,,,,,,3,,,,,1.089
6.5749817,46.5421881,0,0,67,483.949,2020/07/27 11:51:14+00,,,,,,,,,,,,,,,,,3,,,,,1.109
6.5749712,46.542179,0,0,68,483.935,2020/07/27 11:51:15+00,,,,,,,,,,,,,,,,,3,,,,,1.101
6.5749831,46.5421725,0,0,69,483.921,2020/07/27 11:51:16+00,,,,,,,,,,,,,,,,,3,,,,,1.07
6.5749975,46.5421642,0,0,70,483.891,2020/07/27 11:51:18+00,,,,,,,,,,,,,,,,,3,,,,,0.62
6.5749994,46.5421532,0,0,71,483.858,2020/07/27 11:51:20+00,,,,,,,,,,,,,,,,,3,,,,,0.482
6.5750054,46.5421401,0,0,72,483.826,2020/07/27 11:51:22+00,,,,,,,,,,,,,,,,,3,,,,,0.443
6.575026,46.5421257,0,0,73,483.797,2020/07/27 11:51:24+00,,,,,,,,,,,,,,,,,3,,,,,0.744
6.575036,46.5421175,0,0,74,483.785,2020/07/27 11:51:25+00,,,,,,,,,,,,,,,,,3,,,,,0.846
6.5750607,46.5420976,0,0,75,483.761,2020/07/27 11:51:27+00,,,,,,,,,,,,,,,,,3,,,,,0.882
6.5750704,46.542089,0,0,76,483.749,2020/07/27 11:51:28+00,,,,,,,,,,,,,,,,,3,,,,,0.93
6.5751056,46.5420716,0,0,77,483.727,2020/07/27 11:51:30+00,,,,,,,,,,,,,,,,,3,,,,,0.965
6.5751253,46.542063,0,0,78,483.718,2020/07/27 11:51:31+00,,,,,,,,,,,,,,,,,3,,,,,0.98
6.5751546,46.5420499,0,0,79,483.699,2020/07/27 11:51:33+00,,,,,,,,,,,,,,,,,3,,,,,0.991
6.5751702,46.5420467,0,0,80,483.69,2020/07/27 11:51:34+00,,,,,,,,,,,,,,,,,3,,,,,0.987
6.5751997,46.5420344,0,0,81,483.676,2020/07/27 11:51:36+00,,,,,,,,,,,,,,,,,3,,,,,0.991
6.5752248,46.5420205,0,0,82,483.662,2020/07/27 11:51:38+00,,,,,,,,,,,,,,,,,3,,,,,0.996
6.5752407,46.5420145,0,0,83,483.656,2020/07/27 11:51:39+00,,,,,,,,,,,,,,,,,3,,,,,1.001
6.5752757,46.5420111,0,0,84,483.644,2020/07/27 11:51:41+00,,,,,,,,,,,,,,,,,3,,,,,1.005
6.5752902,46.5420083,0,0,85,483.637,2020/07/27 11:51:42+00,,,,,,,,,,,,,,,,,3,,,,,1.009
6.5753159,46.5419977,0,0,86,483.625,2020/07/27 11:51:44+00,,,,,,,,,,,,,,,,,3,,,,,1.003
6.5753399,46.5419897,0,0,87,483.617,2020/07/27 11:51:46+00,,,,,,,,,,,,,,,,,3,,,,,0.999
6.5753673,46.541976,0,0,88,483.612,2020/07/27 11:51:48+00,,,,,,,,,,,,,,,,,3,,,,,1.017
6.5753816,46.5419693,0,0,89,483.609,2020/07/27 11:51:49+00,,,,,,,,,,,,,,,,,3,,,,,1.024
6.5754099,46.5419588,0,0,90,483.605,2020/07/27 11:51:51+00,,,,,,,,,,,,,,,,,3,,,,,1.014
6.5754243,46.5419529,0,0,91,483.604,2020/07/27 11:51:52+00,,,,,,,,,,,,,,,,,3,,,,,1.007
6.5754509,46.5419381,0,0,92,483.604,2020/07/27 11:51:54+00,,,,,,,,,,,,,,,,,3,,,,,1.012
6.5754638,46.5419306,0,0,93,483.604,2020/07/27 11:51:55+00,,,,,,,,,,,,,,,,,3,,,,,1.03
6.5755032,46.5419111,0,0,94,483.607,2020/07/27 11:51:57+00,,,,,,,,,,,,,,,,,3,,,,,1.099
6.5755177,46.5419036,0,0,95,483.608,2020/07/27 11:51:58+00,,,,,,,,,,,,,,,,,3,,,,,1.128
6.5755539,46.5418846,0,0,96,483.613,2020/07/27 11:52:00+00,,,,,,,,,,,,,,,,,3,,,,,1.18
6.575566,46.541877,0,0,97,483.616,2020/07/27 11:52:01+00,,,,,,,,,,,,,,,,,3,,,,,1.188
6.5755936,46.5418625,0,0,98,483.623,2020/07/27 11:52:03+00,,,,,,,,,,,,,,,,,3,,,,,1.171
6.5756149,46.5418534,0,0,99,483.63,2020/07/27 11:52:05+00,,,,,,,,,,,,,,,,,3,,,,,1.142
6.5756388,46.5418476,0,0,100,483.637,2020/07/27 11:52:07+00,,,,,,,,,,,,,,,,,3,,,,,1.103
6.5756525,46.5418422,0,0,101,483.641,2020/07/27 11:52:08+00,,,,,,,,,,,,,,,,,3,,,,,1.093
6.5756818,46.5418281,0,0,102,483.648,2020/07/27 11:52:10+00,,,,,,,,,,,,,,,,,3,,,,,1.076
6.5757203,46.5418228,0,0,103,483.656,2020/07/27 11:52:12+00,,,,,,,,,,,,,,,,,3,,,,,1.093
6.5757397,46.5418191,0,0,104,483.661,2020/07/27 11:52:13+00,,,,,,,,,,,,,,,,,3,,,,,1.102
6.5757852,46.5418127,0,0,105,483.669,2020/07/27 11:52:15+00,,,,,,,,,,,,,,,,,3,,,,,1.132
6.5758046,46.5418055,0,0,106,483.674,2020/07/27 11:52:16+00,,,,,,,,,,,,,,,,,3,,,,,1.144
6.5758219,46.5417954,0,0,107,483.68,2020/07/27 11:52:17+00,,,,,,,,,,,,,,,,,3,,,,,1.136
6.5758616,46.5417852,0,0,108,483.69,2020/07/27 11:52:19+00,,,,,,,,,,,,,,,,,3,,,,,1.141
6.5759077,46.5417778,0,0,109,483.699,2020/07/27 11:52:21+00,,,,,,,,,,,,,,,,,3,,,,,1.156
6.5759456,46.5417767,0,0,110,483.71,2020/07/27 11:52:23+00,,,,,,,,,,,,,,,,,3,,,,,1.173
6.5759683,46.5417727,0,0,111,483.717,2020/07/27 11:52:24+00,,,,,,,,,,,,,,,,,3,,,,,1.195
6.575985,46.5417639,0,0,112,483.724,2020/07/27 11:52:25+00,,,,,,,,,,,,,,,,,3,,,,,1.221
6.5760265,46.5417543,0,0,113,483.741,2020/07/27 11:52:27+00,,,,,,,,,,,,,,,,,3,,,,,1.246
6.5760449,46.5417514,0,0,114,483.751,2020/07/27 11:52:28+00,,,,,,,,,,,,,,,,,3,,,,,1.265
6.5760794,46.5417431,0,0,115,483.773,2020/07/27 11:52:30+00,,,,,,,,,,,,,,,,,3,,,,,1.279
6.5761135,46.5417368,0,0,116,483.795,2020/07/27 11:52:32+00,,,,,,,,,,,,,,,,,3,,,,,1.295
6.576148,46.541726,0,0,117,483.82,2020/07/27 11:52:34+00,,,,,,,,,,,,,,,,,3,,,,,1.311
6.5761633,46.5417217,0,0,118,483.833,2020/07/27 11:52:35+00,,,,,,,,,,,,,,,,,3,,,,,1.319
6.5761785,46.5417178,0,0,119,483.846,2020/07/27 11:52:36+00,,,,,,,,,,,,,,,,,3,,,,,1.327
6.5761942,46.5417129,0,0,120,483.86,2020/07/27 11:52:37+00,,,,,,,,,,,,,,,,,3,,,,,1.331
6.5762255,46.541699,0,0,121,483.89,2020/07/27 11:52:39+00,,,,,,,,,,,,,,,,,3,,,,,1.34
6.5762573,46.5416852,0,0,122,483.923,2020/07/27 11:52:41+00,,,,,,,,,,,,,,,,,3,,,,,1.336
6.576287,46.5416723,0,0,123,483.958,2020/07/27 11:52:43+00,,,,,,,,,,,,,,,,,3,,,,,1.345
6.5763052,46.5416663,0,0,124,483.975,2020/07/27 11:52:44+00,,,,,,,,,,,,,,,,,3,,,,,1.349
6.5763199,46.5416613,0,0,125,483.992,2020/07/27 11:52:45+00,,,,,,,,,,,,,,,,,3,,,,,1.354
6.5763506,46.5416519,0,0,126,484.028,2020/07/27 11:52:47+00,,,,,,,,,,,,,,,,,3,,,,,1.352
6.5763781,46.5416429,0,0,127,484.064,2020/07/27 11:52:49+00,,,,,,,,,,,,,,,,,3,,,,,1.352
6.5764072,46.541632,0,0,128,484.1,2020/07/27 11:52:51+00,,,,,,,,,,,,,,,,,3,,,,,1.352
6.5764206,46.541629,0,0,129,484.12,2020/07/27 11:52:52+00,,,,,,,,,,,,,,,,,3,,,,,1.347
6.5764515,46.5416186,0,0,130,484.161,2020/07/27 11:52:54+00,,,,,,,,,,,,,,,,,3,,,,,1.324
6.5764668,46.5416149,0,0,131,484.182,2020/07/27 11:52:55+00,,,,,,,,,,,,,,,,,3,,,,,1.322
6.5765021,46.5416026,0,0,132,484.226,2020/07/27 11:52:57+00,,,,,,,,,,,,,,,,,3,,,,,1.325
6.5765314,46.541591,0,0,133,484.27,2020/07/27 11:52:59+00,,,,,,,,,,,,,,,,,3,,,,,1.306
6.5765451,46.5415848,0,0,134,484.292,2020/07/27 11:53:00+00,,,,,,,,,,,,,,,,,3,,,,,1.299
6.5765612,46.5415788,0,0,135,484.314,2020/07/27 11:53:01+00,,,,,,,,,,,,,,,,,3,,,,,1.29
6.5765914,46.5415699,0,0,136,484.359,2020/07/27 11:53:03+00,,,,,,,,,,,,,,,,,3,,,,,1.269
6.5766205,46.5415585,0,0,137,484.404,2020/07/27 11:53:05+00,,,,,,,,,,,,,,,,,3,,,,,1.255
6.5766524,46.5415496,0,0,138,484.451,2020/07/27 11:53:07+00,,,,,,,,,,,,,,,,,3,,,,,1.251
6.5766811,46.5415464,0,0,139,484.498,2020/07/27 11:53:09+00,,,,,,,,,,,,,,,,,3,,,,,0.844
6.5766899,46.5415558,0,0,140,484.545,2020/07/27 11:53:11+00,,,,,,,,,,,,,,,,,3,,,,,0.74
6.5767003,46.5415749,0,0,141,484.592,2020/07/27 11:53:13+00,,,,,,,,,,,,,,,,,3,,,,,0.819
6.5767077,46.5415868,0,0,142,484.616,2020/07/27 11:53:14+00,,,,,,,,,,,,,,,,,3,,,,,0.854
6.5767128,46.5415976,0,0,143,484.639,2020/07/27 11:53:15+00,,,,,,,,,,,,,,,,,3,,,,,0.901
6.5767234,46.5416226,0,0,144,484.687,2020/07/27 11:53:17+00,,,,,,,,,,,,,,,,,3,,,,,0.991
6.5767285,46.5416359,0,0,145,484.712,2020/07/27 11:53:18+00,,,,,,,,,,,,,,,,,3,,,,,1.012
6.5767333,46.5416496,0,0,146,484.737,2020/07/27 11:53:19+00,,,,,,,,,,,,,,,,,3,,,,,1.033
6.5767378,46.5416647,0,0,147,484.762,2020/07/27 11:53:20+00,,,,,,,,,,,,,,,,,3,,,,,1.066
6.5767408,46.5416952,0,0,148,484.812,2020/07/27 11:53:22+00,,,,,,,,,,,,,,,,,3,,,,,1.127
6.5767434,46.5417095,0,0,149,484.838,2020/07/27 11:53:23+00,,,,,,,,,,,,,,,,,3,,,,,1.151
6.5767376,46.5417399,0,0,150,484.889,2020/07/27 11:53:25+00,,,,,,,,,,,,,,,,,3,,,,,1.181
6.5767297,46.5417612,0,0,151,484.94,2020/07/27 11:53:27+00,,,,,,,,,,,,,,,,,3,,,,,1.166
6.5767321,46.5417722,0,0,152,484.992,2020/07/27 11:53:29+00,,,,,,,,,,,,,,,,,3,,,,,0.475
6.5767327,46.5417734,0,0,153,484.994,2020/07/27 11:53:30+00,,,,,,,,,,,,,,,,,3,,,,,0.045
6.5767329,46.5417739,0,0,154,485,2020/07/27 11:53:32+00,,,,,,,,,,,,,,,,,3,,,,,0.008
6.5767332,46.541774,0,0,155,485.002,2020/07/27 11:53:33+00,,,,,,,,,,,,,,,,,3,,,,,0.011
6.5767338,46.5417743,0,0,156,485.007,2020/07/27 11:53:35+00,,,,,,,,,,,,,,,,,3,,,,,0.017
6.5767342,46.5417746,0,0,157,485.009,2020/07/27 11:53:36+00,,,,,,,,,,,,,,,,,3,,,,,0.008
6.5767347,46.5417746,0,0,158,485.012,2020/07/27 11:53:37+00,,,,,,,,,,,,,,,,,3,,,,,0.02
6.5767353,46.541775,0,0,159,485.014,2020/07/27 11:53:38+00,,,,,,,,,,,,,,,,,3,,,,,0.012
6.5767357,46.5417752,0,0,160,485.018,2020/07/27 11:53:40+00,,,,,,,,,,,,,,,,,3,,,,,0.027
6.576734,46.5417741,0,0,161,485.02,2020/07/27 11:53:41+00,,,,,,,,,,,,,,,,,3,,,,,0.062
6.5767299,46.541771,0,0,162,485.045,2020/07/27 11:53:43+00,,,,,,,,,,,,,,,,,3,,,,,0.433
6.5767291,46.5417667,0,0,163,485.069,2020/07/27 11:53:45+00,,,,,,,,,,,,,,,,,3,,,,,0.546
6.5767203,46.541737,0,0,164,485.113,2020/07/27 11:53:47+00,,,,,,,,,,,,,,,,,3,,,,,1.106
6.5767188,46.541725,0,0,165,485.134,2020/07/27 11:53:48+00,,,,,,,,,,,,,,,,,3,,,,,1.266
6.5767167,46.541699,0,0,166,485.174,2020/07/27 11:53:50+00,,,,,,,,,,,,,,,,,3,,,,,1.346
6.5767144,46.5416872,0,0,167,485.193,2020/07/27 11:53:51+00,,,,,,,,,,,,,,,,,3,,,,,1.358
6.5767109,46.5416748,0,0,168,485.212,2020/07/27 11:53:52+00,,,,,,,,,,,,,,,,,3,,,,,1.373
6.5767078,46.541662,0,0,169,485.229,2020/07/27 11:53:53+00,,,,,,,,,,,,,,,,,3,,,,,1.389
6.5767,46.5416353,0,0,170,485.263,2020/07/27 11:53:55+00,,,,,,,,,,,,,,,,,3,,,,,1.394
6.5767004,46.5416112,0,0,171,485.296,2020/07/27 11:53:57+00,,,,,,,,,,,,,,,,,3,,,,,1.368
6.576698,46.541601,0,0,172,485.312,2020/07/27 11:53:58+00,,,,,,,,,,,,,,,,,3,,,,,1.356
6.5766958,46.5415893,0,0,173,485.328,2020/07/27 11:53:59+00,,,,,,,,,,,,,,,,,3,,,,,1.342
6.5766925,46.5415665,0,0,174,485.358,2020/07/27 11:54:01+00,,,,,,,,,,,,,,,,,3,,,,,1.311
6.5766859,46.5415434,0,0,175,485.386,2020/07/27 11:54:03+00,,,,,,,,,,,,,,,,,3,,,,,1.288
6.5766852,46.5415113,0,0,176,485.415,2020/07/27 11:54:05+00,,,,,,,,,,,,,,,,,3,,,,,1.293
6.5766792,46.5414979,0,0,177,485.43,2020/07/27 11:54:06+00,,,,,,,,,,,,,,,,,3,,,,,1.306
6.5766827,46.5414811,0,0,178,485.445,2020/07/27 11:54:07+00,,,,,,,,,,,,,,,,,3,,,,,1.326
6.5766818,46.5414518,0,0,179,485.477,2020/07/27 11:54:09+00,,,,,,,,,,,,,,,,,3,,,,,1.342
6.5766829,46.5414375,0,0,180,485.493,2020/07/27 11:54:10+00,,,,,,,,,,,,,,,,,3,,,,,1.343
6.5766813,46.5414091,0,0,181,485.526,2020/07/27 11:54:12+00,,,,,,,,,,,,,,,,,3,,,,,1.357
6.5766758,46.5413816,0,0,182,485.559,2020/07/27 11:54:14+00,,,,,,,,,,,,,,,,,3,,,,,1.369
6.576673,46.5413695,0,0,183,485.576,2020/07/27 11:54:15+00,,,,,,,,,,,,,,,,,3,,,,,1.369
6.5766654,46.5413405,0,0,184,485.609,2020/07/27 11:54:17+00,,,,,,,,,,,,,,,,,3,,,,,1.392
6.5766611,46.5413304,0,0,185,485.625,2020/07/27 11:54:18+00,,,,,,,,,,,,,,,,,3,,,,,1.379
6.5766543,46.54132,0,0,186,485.642,2020/07/27 11:54:19+00,,,,,,,,,,,,,,,,,3,,,,,1.365
6.5766255,46.5413097,0,0,187,485.678,2020/07/27 11:54:21+00,,,,,,,,,,,,,,,,,3,,,,,1.35
6.5765955,46.5413178,0,0,188,485.717,2020/07/27 11:54:23+00,,,,,,,,,,,,,,,,,3,,,,,1.336
6.5765682,46.5413301,0,0,189,485.757,2020/07/27 11:54:25+00,,,,,,,,,,,,,,,,,3,,,,,1.303
6.5765581,46.5413339,0,0,190,485.777,2020/07/27 11:54:26+00,,,,,,,,,,,,,,,,,3,,,,,1.28
6.576548,46.5413384,0,0,191,485.796,2020/07/27 11:54:27+00,,,,,,,,,,,,,,,,,3,,,,,1.258
6.5765209,46.5413411,0,0,192,485.836,2020/07/27 11:54:29+00,,,,,,,,,,,,,,,,,3,,,,,1.227
6.5765056,46.5413425,0,0,193,485.856,2020/07/27 11:54:30+00,,,,,,,,,,,,,,,,,3,,,,,1.207
6.5764767,46.5413428,0,0,194,485.894,2020/07/27 11:54:32+00,,,,,,,,,,,,,,,,,3,,,,,1.186
6.5764179,46.541338,0,0,195,485.933,2020/07/27 11:54:34+00,,,,,,,,,,,,,,,,,3,,,,,1.209
6.5764006,46.5413402,0,0,196,485.952,2020/07/27 11:54:35+00,,,,,,,,,,,,,,,,,3,,,,,1.214
6.5763647,46.5413453,0,0,197,485.99,2020/07/27 11:54:37+00,,,,,,,,,,,,,,,,,3,,,,,1.231
6.5763176,46.5413444,0,0,198,486.029,2020/07/27 11:54:39+00,,,,,,,,,,,,,,,,,3,,,,,1.291
6.5762846,46.5413557,0,0,199,486.067,2020/07/27 11:54:41+00,,,,,,,,,,,,,,,,,3,,,,,1.325
6.5762704,46.5413622,0,0,200,486.086,2020/07/27 11:54:42+00,,,,,,,,,,,,,,,,,3,,,,,1.328
6.5762533,46.541367,0,0,201,486.105,2020/07/27 11:54:43+00,,,,,,,,,,,,,,,,,3,,,,,1.319
6.5762145,46.5413726,0,0,202,486.144,2020/07/27 11:54:45+00,,,,,,,,,,,,,,,,,3,,,,,1.309
6.5761798,46.5413816,0,0,203,486.184,2020/07/27 11:54:47+00,,,,,,,,,,,,,,,,,3,,,,,1.295
6.5761596,46.5413876,0,0,204,486.204,2020/07/27 11:54:48+00,,,,,,,,,,,,,,,,,3,,,,,1.287
6.5761288,46.5414006,0,0,205,486.244,2020/07/27 11:54:50+00,,,,,,,,,,,,,,,,,3,,,,,1.268
6.5761087,46.5414136,0,0,206,486.284,2020/07/27 11:54:52+00,,,,,,,,,,,,,,,,,3,,,,,1.248
6.5761018,46.5414199,0,0,207,486.303,2020/07/27 11:54:53+00,,,,,,,,,,,,,,,,,3,,,,,1.242
6.5760767,46.5414408,0,0,208,486.344,2020/07/27 11:54:55+00,,,,,,,,,,,,,,,,,3,,,,,1.251
6.5760585,46.5414487,0,0,209,486.364,2020/07/27 11:54:56+00,,,,,,,,,,,,,,,,,3,,,,,1.267
6.5760245,46.5414609,0,0,210,486.404,2020/07/27 11:54:58+00,,,,,,,,,,,,,,,,,3,,,,,1.297
6.5759873,46.5414713,0,0,211,486.446,2020/07/27 11:55:00+00,,,,,,,,,,,,,,,,,3,,,,,1.311
6.5759513,46.5414806,0,0,212,486.489,2020/07/27 11:55:02+00,,,,,,,,,,,,,,,,,3,,,,,1.284
6.5759205,46.541484,0,0,213,486.533,2020/07/27 11:55:04+00,,,,,,,,,,,,,,,,,3,,,,,1.256
6.5759059,46.5414879,0,0,214,486.555,2020/07/27 11:55:05+00,,,,,,,,,,,,,,,,,3,,,,,1.248
6.5758703,46.5414987,0,0,215,486.6,2020/07/27 11:55:07+00,,,,,,,,,,,,,,,,,3,,,,,1.239
6.575835,46.5415099,0,0,216,486.646,2020/07/27 11:55:09+00,,,,,,,,,,,,,,,,,3,,,,,1.228
6.5758219,46.5415163,0,0,217,486.668,2020/07/27 11:55:10+00,,,,,,,,,,,,,,,,,3,,,,,1.215
6.5757973,46.5415279,0,0,218,486.711,2020/07/27 11:55:12+00,,,,,,,,,,,,,,,,,3,,,,,1.189
6.575783,46.5415359,0,0,219,486.732,2020/07/27 11:55:13+00,,,,,,,,,,,,,,,,,3,,,,,1.183
6.5757559,46.5415477,0,0,220,486.773,2020/07/27 11:55:15+00,,,,,,,,,,,,,,,,,3,,,,,1.174
6.5757456,46.5415511,0,0,221,486.792,2020/07/27 11:55:16+00,,,,,,,,,,,,,,,,,3,,,,,1.168
6.575712,46.541567,0,0,222,486.829,2020/07/27 11:55:18+00,,,,,,,,,,,,,,,,,3,,,,,1.159
6.5756941,46.5415729,0,0,223,486.846,2020/07/27 11:55:19+00,,,,,,,,,,,,,,,,,3,,,,,1.163
6.575659,46.5415843,0,0,224,486.881,2020/07/27 11:55:21+00,,,,,,,,,,,,,,,,,3,,,,,1.191
6.5756219,46.5416026,0,0,225,486.913,2020/07/27 11:55:23+00,,,,,,,,,,,,,,,,,3,,,,,1.21
6.5756045,46.5416113,0,0,226,486.929,2020/07/27 11:55:24+00,,,,,,,,,,,,,,,,,3,,,,,1.216
6.5755653,46.5416247,0,0,227,486.96,2020/07/27 11:55:26+00,,,,,,,,,,,,,,,,,3,,,,,1.226
6.5755278,46.5416399,0,0,228,486.99,2020/07/27 11:55:28+00,,,,,,,,,,,,,,,,,3,,,,,1.245
6.5754917,46.5416529,0,0,229,487.019,2020/07/27 11:55:30+00,,,,,,,,,,,,,,,,,3,,,,,1.254
6.5754618,46.5416648,0,0,230,487.047,2020/07/27 11:55:32+00,,,,,,,,,,,,,,,,,3,,,,,1.234
6.5754312,46.5416732,0,0,231,487.074,2020/07/27 11:55:34+00,,,,,,,,,,,,,,,,,3,,,,,1.203
6.575382,46.5416777,0,0,232,487.101,2020/07/27 11:55:36+00,,,,,,,,,,,,,,,,,3,,,,,1.215
6.575365,46.5416829,0,0,233,487.114,2020/07/27 11:55:37+00,,,,,,,,,,,,,,,,,3,,,,,1.229
6.575345,46.541688,0,0,234,487.127,2020/07/27 11:55:38+00,,,,,,,,,,,,,,,,,3,,,,,1.245
6.5753125,46.5417018,0,0,235,487.151,2020/07/27 11:55:40+00,,,,,,,,,,,,,,,,,3,,,,,1.253
6.5752968,46.5417082,0,0,236,487.162,2020/07/27 11:55:41+00,,,,,,,,,,,,,,,,,3,,,,,1.248
6.575281,46.5417103,0,0,237,487.173,2020/07/27 11:55:42+00,,,,,,,,,,,,,,,,,3,,,,,1.244
6.575261,46.5417142,0,0,238,487.184,2020/07/27 11:55:43+00,,,,,,,,,,,,,,,,,3,,,,,1.238
6.5752297,46.5417254,0,0,239,487.206,2020/07/27 11:55:45+00,,,,,,,,,,,,,,,,,3,,,,,1.225
6.5752121,46.5417307,0,0,240,487.216,2020/07/27 11:55:46+00,,,,,,,,,,,,,,,,,3,,,,,1.223
6.5751946,46.5417353,0,0,241,487.226,2020/07/27 11:55:47+00,,,,,,,,,,,,,,,,,3,,,,,1.22
6.5751811,46.5417387,0,0,242,487.236,2020/07/27 11:55:48+00,,,,,,,,,,,,,,,,,3,,,,,1.213
6.5751448,46.5417526,0,0,243,487.254,2020/07/27 11:55:50+00,,,,,,,,,,,,,,,,,3,,,,,1.202
6.5751067,46.5417614,0,0,244,487.271,2020/07/27 11:55:52+00,,,,,,,,,,,,,,,,,3,,,,,1.196
6.5750727,46.5417585,0,0,245,487.28,2020/07/27 11:55:53+00,,,,,,,,,,,,,,,,,3,,,,,1.196
6.5750163,46.5417567,0,0,246,487.299,2020/07/27 11:55:55+00,,,,,,,,,,,,,,,,,3,,,,,1.209
6.5750031,46.5417647,0,0,247,487.308,2020/07/27 11:55:56+00,,,,,,,,,,,,,,,,,3,,,,,1.21
6.5749562,46.5417712,0,0,248,487.327,2020/07/27 11:55:58+00,,,,,,,,,,,,,,,,,3,,,,,1.227
6.5749357,46.5417745,0,0,249,487.337,2020/07/27 11:55:59+00,,,,,,,,,,,,,,,,,3,,,,,1.235
6.5748952,46.541784,0,0,250,487.356,2020/07/27 11:56:01+00,,,,,,,,,,,,,,,,,3,,,,,1.27
6.57488,46.5417907,0,0,251,487.365,2020/07/27 11:56:02+00,,,,,,,,,,,,,,,,,3,,,,,1.282
6.5748621,46.5418108,0,0,252,487.382,2020/07/27 11:56:04+00,,,,,,,,,,,,,,,,,3,,,,,1.286
6.5748422,46.5418246,0,0,253,487.398,2020/07/27 11:56:06+00,,,,,,,,,,,,,,,,,3,,,,,1.261
6.5748326,46.5418313,0,0,254,487.405,2020/07/27 11:56:07+00,,,,,,,,,,,,,,,,,3,,,,,1.251
6.5748197,46.5418374,0,0,255,487.411,2020/07/27 11:56:08+00,,,,,,,,,,,,,,,,,3,,,,,1.243
6.574782,46.5418524,0,0,256,487.423,2020/07/27 11:56:10+00,,,,,,,,,,,,,,,,,3,,,,,1.245
6.5747632,46.5418613,0,0,257,487.428,2020/07/27 11:56:11+00,,,,,,,,,,,,,,,,,3,,,,,1.253
6.5747436,46.5418691,0,0,258,487.433,2020/07/27 11:56:12+00,,,,,,,,,,,,,,,,,3,,,,,1.258
6.5747253,46.5418752,0,0,259,487.437,2020/07/27 11:56:13+00,,,,,,,,,,,,,,,,,3,,,,,1.254
6.5746903,46.5418831,0,0,260,487.446,2020/07/27 11:56:15+00,,,,,,,,,,,,,,,,,3,,,,,1.235
6.5746508,46.5418942,0,0,261,487.453,2020/07/27 11:56:17+00,,,,,,,,,,,,,,,,,3,,,,,1.258
6.5746302,46.5419,0,0,262,487.456,2020/07/27 11:56:18+00,,,,,,,,,,,,,,,,,3,,,,,1.276
6.5745949,46.5419096,0,0,263,487.46,2020/07/27 11:56:20+00,,,,,,,,,,,,,,,,,3,,,,,1.283
6.5745773,46.5419145,0,0,264,487.462,2020/07/27 11:56:21+00,,,,,,,,,,,,,,,,,3,,,,,1.285
6.5745596,46.5419191,0,0,265,487.463,2020/07/27 11:56:22+00,,,,,,,,,,,,,,,,,3,,,,,1.287
6.5745419,46.5419248,0,0,266,487.465,2020/07/27 11:56:23+00,,,,,,,,,,,,,,,,,3,,,,,1.291
6.5745041,46.5419351,0,0,267,487.466,2020/07/27 11:56:25+00,,,,,,,,,,,,,,,,,3,,,,,1.312
6.5744692,46.5419427,0,0,268,487.467,2020/07/27 11:56:27+00,,,,,,,,,,,,,,,,,3,,,,,1.311
6.5744524,46.5419467,0,0,269,487.467,2020/07/27 11:56:28+00,,,,,,,,,,,,,,,,,3,,,,,1.307
6.574415,46.5419549,0,0,270,487.465,2020/07/27 11:56:30+00,,,,,,,,,,,,,,,,,3,,,,,1.298
6.5743988,46.5419577,0,0,271,487.464,2020/07/27 11:56:31+00,,,,,,,,,,,,,,,,,3,,,,,1.29
6.5743693,46.5419623,0,0,272,487.462,2020/07/27 11:56:33+00,,,,,,,,,,,,,,,,,3,,,,,1.266
6.5743552,46.5419644,0,0,273,487.46,2020/07/27 11:56:34+00,,,,,,,,,,,,,,,,,3,,,,,1.257
6.5743423,46.5419702,0,0,274,487.457,2020/07/27 11:56:35+00,,,,,,,,,,,,,,,,,3,,,,,1.226
6.5743347,46.5419741,0,0,275,487.454,2020/07/27 11:56:36+00,,,,,,,,,,,,,,,,,3,,,,,1.192
6.5743263,46.541982,0,0,276,487.451,2020/07/27 11:56:37+00,,,,,,,,,,,,,,,,,3,,,,,1.151
6.5743246,46.542001,0,0,277,487.445,2020/07/27 11:56:39+00,,,,,,,,,,,,,,,,,3,,,,,1.117
6.5743265,46.5420246,0,0,278,487.438,2020/07/27 11:56:41+00,,,,,,,,,,,,,,,,,3,,,,,1.139
6.5743307,46.5420505,0,0,279,487.43,2020/07/27 11:56:43+00,,,,,,,,,,,,,,,,,3,,,,,1.164
6.574335,46.5420733,0,0,280,487.423,2020/07/27 11:56:45+00,,,,,,,,,,,,,,,,,3,,,,,1.163
6.574338,46.542083,0,0,281,487.419,2020/07/27 11:56:46+00,,,,,,,,,,,,,,,,,3,,,,,1.14
6.5743401,46.5420915,0,0,282,487.415,2020/07/27 11:56:47+00,,,,,,,,,,,,,,,,,3,,,,,1.106
6.5743451,46.542112,0,0,283,487.406,2020/07/27 11:56:49+00,,,,,,,,,,,,,,,,,3,,,,,1.08
6.5743451,46.5421243,0,0,284,487.401,2020/07/27 11:56:50+00,,,,,,,,,,,,,,,,,3,,,,,1.076
6.5743496,46.5421476,0,0,285,487.393,2020/07/27 11:56:52+00,,,,,,,,,,,,,,,,,3,,,,,1.08
6.5743516,46.5421717,0,0,286,487.386,2020/07/27 11:56:54+00,,,,,,,,,,,,,,,,,3,,,,,1.105
6.5743541,46.5421827,0,0,287,487.382,2020/07/27 11:56:55+00,,,,,,,,,,,,,,,,,3,,,,,1.123
6.5743629,46.5421924,0,0,288,487.379,2020/07/27 11:56:56+00,,,,,,,,,,,,,,,,,3,,,,,1.14
6.574386,46.5422129,0,0,289,487.371,2020/07/27 11:56:58+00,,,,,,,,,,,,,,,,,3,,,,,1.173
6.5743999,46.5422216,0,0,290,487.368,2020/07/27 11:56:59+00,,,,,,,,,,,,,,,,,3,,,,,1.192
6.5744317,46.5422352,0,0,291,487.36,2020/07/27 11:57:01+00,,,,,,,,,,,,,,,,,3,,,,,1.222
6.574472,46.5422417,0,0,292,487.352,2020/07/27 11:57:03+00,,,,,,,,,,,,,,,,,3,,,,,1.266
6.5744944,46.5422443,0,0,293,487.347,2020/07/27 11:57:04+00,,,,,,,,,,,,,,,,,3,,,,,1.29
6.574515,46.5422474,0,0,294,487.342,2020/07/27 11:57:05+00,,,,,,,,,,,,,,,,,3,,,,,1.298
6.5745329,46.5422448,0,0,295,487.338,2020/07/27 11:57:06+00,,,,,,,,,,,,,,,,,3,,,,,1.302
6.574566,46.5422343,0,0,296,487.327,2020/07/27 11:57:08+00,,,,,,,,,,,,,,,,,3,,,,,1.298
6.5745974,46.5422249,0,0,297,487.316,2020/07/27 11:57:10+00,,,,,,,,,,,,,,,,,3,,,,,1.291
6.574613,46.5422209,0,0,298,487.31,2020/07/27 11:57:11+00,,,,,,,,,,,,,,,,,3,,,,,1.28
6.5746385,46.5422135,0,0,299,487.298,2020/07/27 11:57:13+00,,,,,,,,,,,,,,,,,4,,,,,1.263
6.5746669,46.5422016,0,0,300,487.285,2020/07/27 11:57:15+00,,,,,,,,,,,,,,,,,4,,,,,1.271
6.5746845,46.5421949,0,0,301,487.279,2020/07/27 11:57:16+00,,,,,,,,,,,,,,,,,4,,,,,1.278
6.5747164,46.542187,0,0,302,487.265,2020/07/27 11:57:18+00,,,,,,,,,,,,,,,,,4,,,,,1.281
6.5747551,46.5421809,0,0,303,487.253,2020/07/27 11:57:20+00,,,,,,,,,,,,,,,,,3,,,,,1.291
6.5748367,46.5421614,0,0,304,487.241,2020/07/27 11:57:22+00,,,,,,,,,,,,,,,,,3,,,,,1.324
6.5748522,46.5421553,0,0,305,487.235,2020/07/27 11:57:23+00,,,,,,,,,,,,,,,,,3,,,,,1.335
6.5748887,46.5421381,0,0,306,487.223,2020/07/27 11:57:25+00,,,,,,,,,,,,,,,,,3,,,,,1.351
6.5749112,46.5421289,0,0,307,487.217,2020/07/27 11:57:26+00,,,,,,,,,,,,,,,,,3,,,,,1.357
6.5749452,46.5421162,0,0,308,487.204,2020/07/27 11:57:28+00,,,,,,,,,,,,,,,,,3,,,,,1.378
6.5749591,46.5421121,0,0,309,487.197,2020/07/27 11:57:29+00,,,,,,,,,,,,,,,,,3,,,,,1.366
6.5749706,46.5421114,0,0,310,487.19,2020/07/27 11:57:30+00,,,,,,,,,,,,,,,,,3,,,,,1.349
6.5749863,46.5421084,0,0,311,487.184,2020/07/27 11:57:31+00,,,,,,,,,,,,,,,,,3,,,,,0.902
6.5749981,46.5421068,0,0,312,487.177,2020/07/27 11:57:32+00,,,,,,,,,,,,,,,,,3,,,,,0.716
6.5750105,46.5421111,0,0,313,487.162,2020/07/27 11:57:34+00,,,,,,,,,,,,,,,,,3,,,,,0.615
6.5750087,46.5421267,0,0,314,487.147,2020/07/27 11:57:36+00,,,,,,,,,,,,,,,,,3,,,,,0.829
6.5749973,46.5421376,0,0,315,487.139,2020/07/27 11:57:37+00,,,,,,,,,,,,,,,,,3,,,,,0.791
6.5749693,46.5421452,0,0,316,487.122,2020/07/27 11:57:39+00,,,,,,,,,,,,,,,,,3,,,,,0.833
6.5749412,46.5421576,0,0,317,487.105,2020/07/27 11:57:41+00,,,,,,,,,,,,,,,,,3,,,,,0.961
6.5749261,46.5421629,0,0,318,487.096,2020/07/27 11:57:42+00,,,,,,,,,,,,,,,,,3,,,,,0.987
6.5749106,46.5421664,0,0,319,487.087,2020/07/27 11:57:43+00,,,,,,,,,,,,,,,,,3,,,,,1.012
6.5748865,46.5421757,0,0,320,487.069,2020/07/27 11:57:45+00,,,,,,,,,,,,,,,,,3,,,,,0.714
6.5748847,46.5421787,0,0,321,487.068,2020/07/27 11:57:46+00,,,,,,,,,,,,,,,,,3,,,,,0.428
6.5748923,46.5421799,0,0,322,487.05,2020/07/27 11:57:48+00,,,,,,,,,,,,,,,,,3,,,,,0.327
6.5749026,46.5421827,0,0,323,487.031,2020/07/27 11:57:50+00,,,,,,,,,,,,,,,,,3,,,,,0.248
6.5749053,46.5421838,0,0,324,487.03,2020/07/27 11:57:52+00,,,,,,,,,,,,,,,,,3,,,,,0.033
6.5749068,46.5421835,0,0,325,487.02,2020/07/27 11:57:53+00,,,,,,,,,,,,,,,,,3,,,,,0.192
6.5749124,46.5421833,0,0,326,487.001,2020/07/27 11:57:55+00,,,,,,,,,,,,,,,,,4,,,,,0.413
6.5749084,46.542182,0,0,327,486.991,2020/07/27 11:57:57+00,,,,,,,,,,,,,,,,,4,,,,,0.362
6.5749039,46.5421799,0,0,328,486.982,2020/07/27 11:57:58+00,,,,,,,,,,,,,,,,,4,,,,,0.531
6.5748885,46.542172,0,0,329,486.965,2020/07/27 11:58:00+00,,,,,,,,,,,,,,,,,4,,,,,0.743
6.5748865,46.5421749,0,0,330,486.957,2020/07/27 11:58:01+00,,,,,,,,,,,,,,,,,8,,,,,0.713
6.5748946,46.5421753,0,0,331,486.948,2020/07/27 11:58:02+00,,,,,,,,,,,,,,,,,8,,,,,0.646
6.5748893,46.542168,0,0,332,486.932,2020/07/27 11:58:04+00,,,,,,,,,,,,,,,,,8,,,,,0.426
6.574885,46.542158,0,0,333,486.916,2020/07/27 11:58:06+00,,,,,,,,,,,,,,,,,8,,,,,0.304
6.5748782,46.5421565,0,0,334,486.908,2020/07/27 11:58:07+00,,,,,,,,,,,,,,,,,8,,,,,0.266
6.5748811,46.5421509,0,0,335,486.893,2020/07/27 11:58:09+00,,,,,,,,,,,,,,,,,8,,,,,0.243
6.5748783,46.5421501,0,0,336,486.893,2020/07/27 11:58:10+00,,,,,,,,,,,,,,,,,8,,,,,0.011
1 X Y track_fid track_seg_id track_seg_point_id ele time magvar geoidheight name cmt desc src link1_href link1_text link1_type link2_href link2_text link2_type sym type fix sat hdop vdop pdop ageofdgpsdata dgpsid speed
2 6.5747815 46.5420832 0 0 0 534.603 2020/07/27 11:49:33+00 48 1.72
3 6.5750736 46.5421493 0 0 1 492.145 2020/07/27 11:49:35+00 32
4 6.5750736 46.5421493 0 0 2 492.533 2020/07/27 11:49:36+00 24
5 6.5749041 46.5420945 0 0 3 496.478 2020/07/27 11:49:37+00 16
6 6.5749041 46.5420945 0 0 4 494.232 2020/07/27 11:49:38+00 12
7 6.5749041 46.5420945 0 0 5 490.67 2020/07/27 11:49:40+00 12
8 6.5749041 46.5420945 0 0 6 491.29 2020/07/27 11:49:41+00 12
9 6.5749041 46.5420945 0 0 7 490.077 2020/07/27 11:49:43+00 8
10 6.5749041 46.5420945 0 0 8 489.084 2020/07/27 11:49:44+00 8
11 6.5748305 46.5421458 0 0 9 488.321 2020/07/27 11:49:46+00 6
12 6.5748305 46.5421458 0 0 10 487.62 2020/07/27 11:49:47+00 6
13 6.5748305 46.5421458 0 0 11 487.042 2020/07/27 11:49:48+00 6
14 6.5748305 46.5421458 0 0 12 485.744 2020/07/27 11:49:50+00 6
15 6.5748305 46.5421458 0 0 13 485.215 2020/07/27 11:49:51+00 6
16 6.5748305 46.5421458 0 0 14 485.255 2020/07/27 11:49:52+00 6
17 6.5748305 46.5421458 0 0 15 484.435 2020/07/27 11:49:54+00 6
18 6.5748305 46.5421458 0 0 16 484.218 2020/07/27 11:49:55+00 6
19 6.5748305 46.5421458 0 0 17 483.962 2020/07/27 11:49:56+00 6
20 6.5748305 46.5421458 0 0 18 483.838 2020/07/27 11:49:57+00 6
21 6.5748305 46.5421458 0 0 19 483.981 2020/07/27 11:49:59+00 6
22 6.5748305 46.5421458 0 0 20 484.139 2020/07/27 11:50:01+00 6
23 6.5748305 46.5421458 0 0 21 484.198 2020/07/27 11:50:02+00 6
24 6.5748439 46.5421737 0 0 22 484.197 2020/07/27 11:50:04+00 4 0.132
25 6.5748496 46.5421752 0 0 23 484.194 2020/07/27 11:50:05+00 4 0.125
26 6.5748549 46.5421767 0 0 24 484.189 2020/07/27 11:50:06+00 4 0.201
27 6.5748599 46.5421785 0 0 25 484.188 2020/07/27 11:50:07+00 4 0.144
28 6.574869 46.5421816 0 0 26 484.172 2020/07/27 11:50:09+00 4 0.268
29 6.5748907 46.5421965 0 0 27 484.165 2020/07/27 11:50:11+00 4 0.225
30 6.5749241 46.5422175 0 0 28 484.164 2020/07/27 11:50:13+00 4 0.35
31 6.5749487 46.542232 0 0 29 484.164 2020/07/27 11:50:15+00 4 0.493
32 6.5749812 46.5422426 0 0 30 484.168 2020/07/27 11:50:17+00 3 0.634
33 6.5749978 46.5422566 0 0 31 484.174 2020/07/27 11:50:19+00 3 0.514
34 6.5750056 46.5422631 0 0 32 484.18 2020/07/27 11:50:21+00 3 0.26
35 6.5750068 46.5422644 0 0 33 484.182 2020/07/27 11:50:23+00 3 0.006
36 6.5750068 46.5422647 0 0 34 484.183 2020/07/27 11:50:24+00 3 0.008
37 6.5750074 46.5422651 0 0 35 484.186 2020/07/27 11:50:26+00 3 0.053
38 6.5750047 46.5422719 0 0 36 484.204 2020/07/27 11:50:27+00 3 0.342
39 6.5750096 46.5422847 0 0 37 484.235 2020/07/27 11:50:29+00 3 0.622
40 6.5750126 46.5422964 0 0 38 484.249 2020/07/27 11:50:30+00 3 0.876
41 6.5750121 46.5423363 0 0 39 484.273 2020/07/27 11:50:32+00 4 0.949
42 6.5750192 46.5423615 0 0 40 484.293 2020/07/27 11:50:34+00 4 1.042
43 6.5750311 46.5423899 0 0 41 484.309 2020/07/27 11:50:36+00 4 1.075
44 6.5750382 46.5423982 0 0 42 484.316 2020/07/27 11:50:37+00 4 1.069
45 6.5750494 46.5424039 0 0 43 484.323 2020/07/27 11:50:39+00 4 1.008
46 6.5750691 46.542404 0 0 44 484.326 2020/07/27 11:50:41+00 4 0.581
47 6.5750722 46.5424036 0 0 45 484.326 2020/07/27 11:50:42+00 4 0.41
48 6.5750751 46.5424049 0 0 46 484.327 2020/07/27 11:50:44+00 3 0.25
49 6.5750754 46.5424043 0 0 47 484.327 2020/07/27 11:50:45+00 3 0.208
50 6.5750753 46.5424043 0 0 48 484.328 2020/07/27 11:50:46+00 3 0.184
51 6.5750782 46.542405 0 0 49 484.326 2020/07/27 11:50:48+00 3 0.177
52 6.5750827 46.5424022 0 0 50 484.322 2020/07/27 11:50:49+00 3 0.27
53 6.575088 46.5423949 0 0 51 484.314 2020/07/27 11:50:50+00 3 0.636
54 6.575091 46.5423744 0 0 52 484.291 2020/07/27 11:50:52+00 3 0.843
55 6.5751002 46.5423537 0 0 53 484.264 2020/07/27 11:50:54+00 3 0.994
56 6.5751039 46.542335 0 0 54 484.235 2020/07/27 11:50:56+00 3 0.999
57 6.5750953 46.5423303 0 0 55 484.22 2020/07/27 11:50:57+00 3 0.992
58 6.5750984 46.5423242 0 0 56 484.203 2020/07/27 11:50:58+00 3 1.002
59 6.5750885 46.5423104 0 0 57 484.17 2020/07/27 11:51:00+00 3 1.008
60 6.5750842 46.5423056 0 0 58 484.154 2020/07/27 11:51:01+00 3 0.994
61 6.5750763 46.542301 0 0 59 484.137 2020/07/27 11:51:02+00 3 0.985
62 6.5750713 46.5422788 0 0 60 484.1 2020/07/27 11:51:04+00 3 0.988
63 6.5750712 46.5422552 0 0 61 484.067 2020/07/27 11:51:06+00 3 0.965
64 6.5750653 46.5422451 0 0 62 484.052 2020/07/27 11:51:07+00 3 0.968
65 6.5750618 46.5422339 0 0 63 484.036 2020/07/27 11:51:08+00 3 0.98
66 6.5750406 46.5422157 0 0 64 484.005 2020/07/27 11:51:10+00 3 0.998
67 6.5750033 46.5422029 0 0 65 483.976 2020/07/27 11:51:12+00 3 1.061
68 6.5749967 46.5421945 0 0 66 483.962 2020/07/27 11:51:13+00 3 1.089
69 6.5749817 46.5421881 0 0 67 483.949 2020/07/27 11:51:14+00 3 1.109
70 6.5749712 46.542179 0 0 68 483.935 2020/07/27 11:51:15+00 3 1.101
71 6.5749831 46.5421725 0 0 69 483.921 2020/07/27 11:51:16+00 3 1.07
72 6.5749975 46.5421642 0 0 70 483.891 2020/07/27 11:51:18+00 3 0.62
73 6.5749994 46.5421532 0 0 71 483.858 2020/07/27 11:51:20+00 3 0.482
74 6.5750054 46.5421401 0 0 72 483.826 2020/07/27 11:51:22+00 3 0.443
75 6.575026 46.5421257 0 0 73 483.797 2020/07/27 11:51:24+00 3 0.744
76 6.575036 46.5421175 0 0 74 483.785 2020/07/27 11:51:25+00 3 0.846
77 6.5750607 46.5420976 0 0 75 483.761 2020/07/27 11:51:27+00 3 0.882
78 6.5750704 46.542089 0 0 76 483.749 2020/07/27 11:51:28+00 3 0.93
79 6.5751056 46.5420716 0 0 77 483.727 2020/07/27 11:51:30+00 3 0.965
80 6.5751253 46.542063 0 0 78 483.718 2020/07/27 11:51:31+00 3 0.98
81 6.5751546 46.5420499 0 0 79 483.699 2020/07/27 11:51:33+00 3 0.991
82 6.5751702 46.5420467 0 0 80 483.69 2020/07/27 11:51:34+00 3 0.987
83 6.5751997 46.5420344 0 0 81 483.676 2020/07/27 11:51:36+00 3 0.991
84 6.5752248 46.5420205 0 0 82 483.662 2020/07/27 11:51:38+00 3 0.996
85 6.5752407 46.5420145 0 0 83 483.656 2020/07/27 11:51:39+00 3 1.001
86 6.5752757 46.5420111 0 0 84 483.644 2020/07/27 11:51:41+00 3 1.005
87 6.5752902 46.5420083 0 0 85 483.637 2020/07/27 11:51:42+00 3 1.009
88 6.5753159 46.5419977 0 0 86 483.625 2020/07/27 11:51:44+00 3 1.003
89 6.5753399 46.5419897 0 0 87 483.617 2020/07/27 11:51:46+00 3 0.999
90 6.5753673 46.541976 0 0 88 483.612 2020/07/27 11:51:48+00 3 1.017
91 6.5753816 46.5419693 0 0 89 483.609 2020/07/27 11:51:49+00 3 1.024
92 6.5754099 46.5419588 0 0 90 483.605 2020/07/27 11:51:51+00 3 1.014
93 6.5754243 46.5419529 0 0 91 483.604 2020/07/27 11:51:52+00 3 1.007
94 6.5754509 46.5419381 0 0 92 483.604 2020/07/27 11:51:54+00 3 1.012
95 6.5754638 46.5419306 0 0 93 483.604 2020/07/27 11:51:55+00 3 1.03
96 6.5755032 46.5419111 0 0 94 483.607 2020/07/27 11:51:57+00 3 1.099
97 6.5755177 46.5419036 0 0 95 483.608 2020/07/27 11:51:58+00 3 1.128
98 6.5755539 46.5418846 0 0 96 483.613 2020/07/27 11:52:00+00 3 1.18
99 6.575566 46.541877 0 0 97 483.616 2020/07/27 11:52:01+00 3 1.188
100 6.5755936 46.5418625 0 0 98 483.623 2020/07/27 11:52:03+00 3 1.171
101 6.5756149 46.5418534 0 0 99 483.63 2020/07/27 11:52:05+00 3 1.142
102 6.5756388 46.5418476 0 0 100 483.637 2020/07/27 11:52:07+00 3 1.103
103 6.5756525 46.5418422 0 0 101 483.641 2020/07/27 11:52:08+00 3 1.093
104 6.5756818 46.5418281 0 0 102 483.648 2020/07/27 11:52:10+00 3 1.076
105 6.5757203 46.5418228 0 0 103 483.656 2020/07/27 11:52:12+00 3 1.093
106 6.5757397 46.5418191 0 0 104 483.661 2020/07/27 11:52:13+00 3 1.102
107 6.5757852 46.5418127 0 0 105 483.669 2020/07/27 11:52:15+00 3 1.132
108 6.5758046 46.5418055 0 0 106 483.674 2020/07/27 11:52:16+00 3 1.144
109 6.5758219 46.5417954 0 0 107 483.68 2020/07/27 11:52:17+00 3 1.136
110 6.5758616 46.5417852 0 0 108 483.69 2020/07/27 11:52:19+00 3 1.141
111 6.5759077 46.5417778 0 0 109 483.699 2020/07/27 11:52:21+00 3 1.156
112 6.5759456 46.5417767 0 0 110 483.71 2020/07/27 11:52:23+00 3 1.173
113 6.5759683 46.5417727 0 0 111 483.717 2020/07/27 11:52:24+00 3 1.195
114 6.575985 46.5417639 0 0 112 483.724 2020/07/27 11:52:25+00 3 1.221
115 6.5760265 46.5417543 0 0 113 483.741 2020/07/27 11:52:27+00 3 1.246
116 6.5760449 46.5417514 0 0 114 483.751 2020/07/27 11:52:28+00 3 1.265
117 6.5760794 46.5417431 0 0 115 483.773 2020/07/27 11:52:30+00 3 1.279
118 6.5761135 46.5417368 0 0 116 483.795 2020/07/27 11:52:32+00 3 1.295
119 6.576148 46.541726 0 0 117 483.82 2020/07/27 11:52:34+00 3 1.311
120 6.5761633 46.5417217 0 0 118 483.833 2020/07/27 11:52:35+00 3 1.319
121 6.5761785 46.5417178 0 0 119 483.846 2020/07/27 11:52:36+00 3 1.327
122 6.5761942 46.5417129 0 0 120 483.86 2020/07/27 11:52:37+00 3 1.331
123 6.5762255 46.541699 0 0 121 483.89 2020/07/27 11:52:39+00 3 1.34
124 6.5762573 46.5416852 0 0 122 483.923 2020/07/27 11:52:41+00 3 1.336
125 6.576287 46.5416723 0 0 123 483.958 2020/07/27 11:52:43+00 3 1.345
126 6.5763052 46.5416663 0 0 124 483.975 2020/07/27 11:52:44+00 3 1.349
127 6.5763199 46.5416613 0 0 125 483.992 2020/07/27 11:52:45+00 3 1.354
128 6.5763506 46.5416519 0 0 126 484.028 2020/07/27 11:52:47+00 3 1.352
129 6.5763781 46.5416429 0 0 127 484.064 2020/07/27 11:52:49+00 3 1.352
130 6.5764072 46.541632 0 0 128 484.1 2020/07/27 11:52:51+00 3 1.352
131 6.5764206 46.541629 0 0 129 484.12 2020/07/27 11:52:52+00 3 1.347
132 6.5764515 46.5416186 0 0 130 484.161 2020/07/27 11:52:54+00 3 1.324
133 6.5764668 46.5416149 0 0 131 484.182 2020/07/27 11:52:55+00 3 1.322
134 6.5765021 46.5416026 0 0 132 484.226 2020/07/27 11:52:57+00 3 1.325
135 6.5765314 46.541591 0 0 133 484.27 2020/07/27 11:52:59+00 3 1.306
136 6.5765451 46.5415848 0 0 134 484.292 2020/07/27 11:53:00+00 3 1.299
137 6.5765612 46.5415788 0 0 135 484.314 2020/07/27 11:53:01+00 3 1.29
138 6.5765914 46.5415699 0 0 136 484.359 2020/07/27 11:53:03+00 3 1.269
139 6.5766205 46.5415585 0 0 137 484.404 2020/07/27 11:53:05+00 3 1.255
140 6.5766524 46.5415496 0 0 138 484.451 2020/07/27 11:53:07+00 3 1.251
141 6.5766811 46.5415464 0 0 139 484.498 2020/07/27 11:53:09+00 3 0.844
142 6.5766899 46.5415558 0 0 140 484.545 2020/07/27 11:53:11+00 3 0.74
143 6.5767003 46.5415749 0 0 141 484.592 2020/07/27 11:53:13+00 3 0.819
144 6.5767077 46.5415868 0 0 142 484.616 2020/07/27 11:53:14+00 3 0.854
145 6.5767128 46.5415976 0 0 143 484.639 2020/07/27 11:53:15+00 3 0.901
146 6.5767234 46.5416226 0 0 144 484.687 2020/07/27 11:53:17+00 3 0.991
147 6.5767285 46.5416359 0 0 145 484.712 2020/07/27 11:53:18+00 3 1.012
148 6.5767333 46.5416496 0 0 146 484.737 2020/07/27 11:53:19+00 3 1.033
149 6.5767378 46.5416647 0 0 147 484.762 2020/07/27 11:53:20+00 3 1.066
150 6.5767408 46.5416952 0 0 148 484.812 2020/07/27 11:53:22+00 3 1.127
151 6.5767434 46.5417095 0 0 149 484.838 2020/07/27 11:53:23+00 3 1.151
152 6.5767376 46.5417399 0 0 150 484.889 2020/07/27 11:53:25+00 3 1.181
153 6.5767297 46.5417612 0 0 151 484.94 2020/07/27 11:53:27+00 3 1.166
154 6.5767321 46.5417722 0 0 152 484.992 2020/07/27 11:53:29+00 3 0.475
155 6.5767327 46.5417734 0 0 153 484.994 2020/07/27 11:53:30+00 3 0.045
156 6.5767329 46.5417739 0 0 154 485 2020/07/27 11:53:32+00 3 0.008
157 6.5767332 46.541774 0 0 155 485.002 2020/07/27 11:53:33+00 3 0.011
158 6.5767338 46.5417743 0 0 156 485.007 2020/07/27 11:53:35+00 3 0.017
159 6.5767342 46.5417746 0 0 157 485.009 2020/07/27 11:53:36+00 3 0.008
160 6.5767347 46.5417746 0 0 158 485.012 2020/07/27 11:53:37+00 3 0.02
161 6.5767353 46.541775 0 0 159 485.014 2020/07/27 11:53:38+00 3 0.012
162 6.5767357 46.5417752 0 0 160 485.018 2020/07/27 11:53:40+00 3 0.027
163 6.576734 46.5417741 0 0 161 485.02 2020/07/27 11:53:41+00 3 0.062
164 6.5767299 46.541771 0 0 162 485.045 2020/07/27 11:53:43+00 3 0.433
165 6.5767291 46.5417667 0 0 163 485.069 2020/07/27 11:53:45+00 3 0.546
166 6.5767203 46.541737 0 0 164 485.113 2020/07/27 11:53:47+00 3 1.106
167 6.5767188 46.541725 0 0 165 485.134 2020/07/27 11:53:48+00 3 1.266
168 6.5767167 46.541699 0 0 166 485.174 2020/07/27 11:53:50+00 3 1.346
169 6.5767144 46.5416872 0 0 167 485.193 2020/07/27 11:53:51+00 3 1.358
170 6.5767109 46.5416748 0 0 168 485.212 2020/07/27 11:53:52+00 3 1.373
171 6.5767078 46.541662 0 0 169 485.229 2020/07/27 11:53:53+00 3 1.389
172 6.5767 46.5416353 0 0 170 485.263 2020/07/27 11:53:55+00 3 1.394
173 6.5767004 46.5416112 0 0 171 485.296 2020/07/27 11:53:57+00 3 1.368
174 6.576698 46.541601 0 0 172 485.312 2020/07/27 11:53:58+00 3 1.356
175 6.5766958 46.5415893 0 0 173 485.328 2020/07/27 11:53:59+00 3 1.342
176 6.5766925 46.5415665 0 0 174 485.358 2020/07/27 11:54:01+00 3 1.311
177 6.5766859 46.5415434 0 0 175 485.386 2020/07/27 11:54:03+00 3 1.288
178 6.5766852 46.5415113 0 0 176 485.415 2020/07/27 11:54:05+00 3 1.293
179 6.5766792 46.5414979 0 0 177 485.43 2020/07/27 11:54:06+00 3 1.306
180 6.5766827 46.5414811 0 0 178 485.445 2020/07/27 11:54:07+00 3 1.326
181 6.5766818 46.5414518 0 0 179 485.477 2020/07/27 11:54:09+00 3 1.342
182 6.5766829 46.5414375 0 0 180 485.493 2020/07/27 11:54:10+00 3 1.343
183 6.5766813 46.5414091 0 0 181 485.526 2020/07/27 11:54:12+00 3 1.357
184 6.5766758 46.5413816 0 0 182 485.559 2020/07/27 11:54:14+00 3 1.369
185 6.576673 46.5413695 0 0 183 485.576 2020/07/27 11:54:15+00 3 1.369
186 6.5766654 46.5413405 0 0 184 485.609 2020/07/27 11:54:17+00 3 1.392
187 6.5766611 46.5413304 0 0 185 485.625 2020/07/27 11:54:18+00 3 1.379
188 6.5766543 46.54132 0 0 186 485.642 2020/07/27 11:54:19+00 3 1.365
189 6.5766255 46.5413097 0 0 187 485.678 2020/07/27 11:54:21+00 3 1.35
190 6.5765955 46.5413178 0 0 188 485.717 2020/07/27 11:54:23+00 3 1.336
191 6.5765682 46.5413301 0 0 189 485.757 2020/07/27 11:54:25+00 3 1.303
192 6.5765581 46.5413339 0 0 190 485.777 2020/07/27 11:54:26+00 3 1.28
193 6.576548 46.5413384 0 0 191 485.796 2020/07/27 11:54:27+00 3 1.258
194 6.5765209 46.5413411 0 0 192 485.836 2020/07/27 11:54:29+00 3 1.227
195 6.5765056 46.5413425 0 0 193 485.856 2020/07/27 11:54:30+00 3 1.207
196 6.5764767 46.5413428 0 0 194 485.894 2020/07/27 11:54:32+00 3 1.186
197 6.5764179 46.541338 0 0 195 485.933 2020/07/27 11:54:34+00 3 1.209
198 6.5764006 46.5413402 0 0 196 485.952 2020/07/27 11:54:35+00 3 1.214
199 6.5763647 46.5413453 0 0 197 485.99 2020/07/27 11:54:37+00 3 1.231
200 6.5763176 46.5413444 0 0 198 486.029 2020/07/27 11:54:39+00 3 1.291
201 6.5762846 46.5413557 0 0 199 486.067 2020/07/27 11:54:41+00 3 1.325
202 6.5762704 46.5413622 0 0 200 486.086 2020/07/27 11:54:42+00 3 1.328
203 6.5762533 46.541367 0 0 201 486.105 2020/07/27 11:54:43+00 3 1.319
204 6.5762145 46.5413726 0 0 202 486.144 2020/07/27 11:54:45+00 3 1.309
205 6.5761798 46.5413816 0 0 203 486.184 2020/07/27 11:54:47+00 3 1.295
206 6.5761596 46.5413876 0 0 204 486.204 2020/07/27 11:54:48+00 3 1.287
207 6.5761288 46.5414006 0 0 205 486.244 2020/07/27 11:54:50+00 3 1.268
208 6.5761087 46.5414136 0 0 206 486.284 2020/07/27 11:54:52+00 3 1.248
209 6.5761018 46.5414199 0 0 207 486.303 2020/07/27 11:54:53+00 3 1.242
210 6.5760767 46.5414408 0 0 208 486.344 2020/07/27 11:54:55+00 3 1.251
211 6.5760585 46.5414487 0 0 209 486.364 2020/07/27 11:54:56+00 3 1.267
212 6.5760245 46.5414609 0 0 210 486.404 2020/07/27 11:54:58+00 3 1.297
213 6.5759873 46.5414713 0 0 211 486.446 2020/07/27 11:55:00+00 3 1.311
214 6.5759513 46.5414806 0 0 212 486.489 2020/07/27 11:55:02+00 3 1.284
215 6.5759205 46.541484 0 0 213 486.533 2020/07/27 11:55:04+00 3 1.256
216 6.5759059 46.5414879 0 0 214 486.555 2020/07/27 11:55:05+00 3 1.248
217 6.5758703 46.5414987 0 0 215 486.6 2020/07/27 11:55:07+00 3 1.239
218 6.575835 46.5415099 0 0 216 486.646 2020/07/27 11:55:09+00 3 1.228
219 6.5758219 46.5415163 0 0 217 486.668 2020/07/27 11:55:10+00 3 1.215
220 6.5757973 46.5415279 0 0 218 486.711 2020/07/27 11:55:12+00 3 1.189
221 6.575783 46.5415359 0 0 219 486.732 2020/07/27 11:55:13+00 3 1.183
222 6.5757559 46.5415477 0 0 220 486.773 2020/07/27 11:55:15+00 3 1.174
223 6.5757456 46.5415511 0 0 221 486.792 2020/07/27 11:55:16+00 3 1.168
224 6.575712 46.541567 0 0 222 486.829 2020/07/27 11:55:18+00 3 1.159
225 6.5756941 46.5415729 0 0 223 486.846 2020/07/27 11:55:19+00 3 1.163
226 6.575659 46.5415843 0 0 224 486.881 2020/07/27 11:55:21+00 3 1.191
227 6.5756219 46.5416026 0 0 225 486.913 2020/07/27 11:55:23+00 3 1.21
228 6.5756045 46.5416113 0 0 226 486.929 2020/07/27 11:55:24+00 3 1.216
229 6.5755653 46.5416247 0 0 227 486.96 2020/07/27 11:55:26+00 3 1.226
230 6.5755278 46.5416399 0 0 228 486.99 2020/07/27 11:55:28+00 3 1.245
231 6.5754917 46.5416529 0 0 229 487.019 2020/07/27 11:55:30+00 3 1.254
232 6.5754618 46.5416648 0 0 230 487.047 2020/07/27 11:55:32+00 3 1.234
233 6.5754312 46.5416732 0 0 231 487.074 2020/07/27 11:55:34+00 3 1.203
234 6.575382 46.5416777 0 0 232 487.101 2020/07/27 11:55:36+00 3 1.215
235 6.575365 46.5416829 0 0 233 487.114 2020/07/27 11:55:37+00 3 1.229
236 6.575345 46.541688 0 0 234 487.127 2020/07/27 11:55:38+00 3 1.245
237 6.5753125 46.5417018 0 0 235 487.151 2020/07/27 11:55:40+00 3 1.253
238 6.5752968 46.5417082 0 0 236 487.162 2020/07/27 11:55:41+00 3 1.248
239 6.575281 46.5417103 0 0 237 487.173 2020/07/27 11:55:42+00 3 1.244
240 6.575261 46.5417142 0 0 238 487.184 2020/07/27 11:55:43+00 3 1.238
241 6.5752297 46.5417254 0 0 239 487.206 2020/07/27 11:55:45+00 3 1.225
242 6.5752121 46.5417307 0 0 240 487.216 2020/07/27 11:55:46+00 3 1.223
243 6.5751946 46.5417353 0 0 241 487.226 2020/07/27 11:55:47+00 3 1.22
244 6.5751811 46.5417387 0 0 242 487.236 2020/07/27 11:55:48+00 3 1.213
245 6.5751448 46.5417526 0 0 243 487.254 2020/07/27 11:55:50+00 3 1.202
246 6.5751067 46.5417614 0 0 244 487.271 2020/07/27 11:55:52+00 3 1.196
247 6.5750727 46.5417585 0 0 245 487.28 2020/07/27 11:55:53+00 3 1.196
248 6.5750163 46.5417567 0 0 246 487.299 2020/07/27 11:55:55+00 3 1.209
249 6.5750031 46.5417647 0 0 247 487.308 2020/07/27 11:55:56+00 3 1.21
250 6.5749562 46.5417712 0 0 248 487.327 2020/07/27 11:55:58+00 3 1.227
251 6.5749357 46.5417745 0 0 249 487.337 2020/07/27 11:55:59+00 3 1.235
252 6.5748952 46.541784 0 0 250 487.356 2020/07/27 11:56:01+00 3 1.27
253 6.57488 46.5417907 0 0 251 487.365 2020/07/27 11:56:02+00 3 1.282
254 6.5748621 46.5418108 0 0 252 487.382 2020/07/27 11:56:04+00 3 1.286
255 6.5748422 46.5418246 0 0 253 487.398 2020/07/27 11:56:06+00 3 1.261
256 6.5748326 46.5418313 0 0 254 487.405 2020/07/27 11:56:07+00 3 1.251
257 6.5748197 46.5418374 0 0 255 487.411 2020/07/27 11:56:08+00 3 1.243
258 6.574782 46.5418524 0 0 256 487.423 2020/07/27 11:56:10+00 3 1.245
259 6.5747632 46.5418613 0 0 257 487.428 2020/07/27 11:56:11+00 3 1.253
260 6.5747436 46.5418691 0 0 258 487.433 2020/07/27 11:56:12+00 3 1.258
261 6.5747253 46.5418752 0 0 259 487.437 2020/07/27 11:56:13+00 3 1.254
262 6.5746903 46.5418831 0 0 260 487.446 2020/07/27 11:56:15+00 3 1.235
263 6.5746508 46.5418942 0 0 261 487.453 2020/07/27 11:56:17+00 3 1.258
264 6.5746302 46.5419 0 0 262 487.456 2020/07/27 11:56:18+00 3 1.276
265 6.5745949 46.5419096 0 0 263 487.46 2020/07/27 11:56:20+00 3 1.283
266 6.5745773 46.5419145 0 0 264 487.462 2020/07/27 11:56:21+00 3 1.285
267 6.5745596 46.5419191 0 0 265 487.463 2020/07/27 11:56:22+00 3 1.287
268 6.5745419 46.5419248 0 0 266 487.465 2020/07/27 11:56:23+00 3 1.291
269 6.5745041 46.5419351 0 0 267 487.466 2020/07/27 11:56:25+00 3 1.312
270 6.5744692 46.5419427 0 0 268 487.467 2020/07/27 11:56:27+00 3 1.311
271 6.5744524 46.5419467 0 0 269 487.467 2020/07/27 11:56:28+00 3 1.307
272 6.574415 46.5419549 0 0 270 487.465 2020/07/27 11:56:30+00 3 1.298
273 6.5743988 46.5419577 0 0 271 487.464 2020/07/27 11:56:31+00 3 1.29
274 6.5743693 46.5419623 0 0 272 487.462 2020/07/27 11:56:33+00 3 1.266
275 6.5743552 46.5419644 0 0 273 487.46 2020/07/27 11:56:34+00 3 1.257
276 6.5743423 46.5419702 0 0 274 487.457 2020/07/27 11:56:35+00 3 1.226
277 6.5743347 46.5419741 0 0 275 487.454 2020/07/27 11:56:36+00 3 1.192
278 6.5743263 46.541982 0 0 276 487.451 2020/07/27 11:56:37+00 3 1.151
279 6.5743246 46.542001 0 0 277 487.445 2020/07/27 11:56:39+00 3 1.117
280 6.5743265 46.5420246 0 0 278 487.438 2020/07/27 11:56:41+00 3 1.139
281 6.5743307 46.5420505 0 0 279 487.43 2020/07/27 11:56:43+00 3 1.164
282 6.574335 46.5420733 0 0 280 487.423 2020/07/27 11:56:45+00 3 1.163
283 6.574338 46.542083 0 0 281 487.419 2020/07/27 11:56:46+00 3 1.14
284 6.5743401 46.5420915 0 0 282 487.415 2020/07/27 11:56:47+00 3 1.106
285 6.5743451 46.542112 0 0 283 487.406 2020/07/27 11:56:49+00 3 1.08
286 6.5743451 46.5421243 0 0 284 487.401 2020/07/27 11:56:50+00 3 1.076
287 6.5743496 46.5421476 0 0 285 487.393 2020/07/27 11:56:52+00 3 1.08
288 6.5743516 46.5421717 0 0 286 487.386 2020/07/27 11:56:54+00 3 1.105
289 6.5743541 46.5421827 0 0 287 487.382 2020/07/27 11:56:55+00 3 1.123
290 6.5743629 46.5421924 0 0 288 487.379 2020/07/27 11:56:56+00 3 1.14
291 6.574386 46.5422129 0 0 289 487.371 2020/07/27 11:56:58+00 3 1.173
292 6.5743999 46.5422216 0 0 290 487.368 2020/07/27 11:56:59+00 3 1.192
293 6.5744317 46.5422352 0 0 291 487.36 2020/07/27 11:57:01+00 3 1.222
294 6.574472 46.5422417 0 0 292 487.352 2020/07/27 11:57:03+00 3 1.266
295 6.5744944 46.5422443 0 0 293 487.347 2020/07/27 11:57:04+00 3 1.29
296 6.574515 46.5422474 0 0 294 487.342 2020/07/27 11:57:05+00 3 1.298
297 6.5745329 46.5422448 0 0 295 487.338 2020/07/27 11:57:06+00 3 1.302
298 6.574566 46.5422343 0 0 296 487.327 2020/07/27 11:57:08+00 3 1.298
299 6.5745974 46.5422249 0 0 297 487.316 2020/07/27 11:57:10+00 3 1.291
300 6.574613 46.5422209 0 0 298 487.31 2020/07/27 11:57:11+00 3 1.28
301 6.5746385 46.5422135 0 0 299 487.298 2020/07/27 11:57:13+00 4 1.263
302 6.5746669 46.5422016 0 0 300 487.285 2020/07/27 11:57:15+00 4 1.271
303 6.5746845 46.5421949 0 0 301 487.279 2020/07/27 11:57:16+00 4 1.278
304 6.5747164 46.542187 0 0 302 487.265 2020/07/27 11:57:18+00 4 1.281
305 6.5747551 46.5421809 0 0 303 487.253 2020/07/27 11:57:20+00 3 1.291
306 6.5748367 46.5421614 0 0 304 487.241 2020/07/27 11:57:22+00 3 1.324
307 6.5748522 46.5421553 0 0 305 487.235 2020/07/27 11:57:23+00 3 1.335
308 6.5748887 46.5421381 0 0 306 487.223 2020/07/27 11:57:25+00 3 1.351
309 6.5749112 46.5421289 0 0 307 487.217 2020/07/27 11:57:26+00 3 1.357
310 6.5749452 46.5421162 0 0 308 487.204 2020/07/27 11:57:28+00 3 1.378
311 6.5749591 46.5421121 0 0 309 487.197 2020/07/27 11:57:29+00 3 1.366
312 6.5749706 46.5421114 0 0 310 487.19 2020/07/27 11:57:30+00 3 1.349
313 6.5749863 46.5421084 0 0 311 487.184 2020/07/27 11:57:31+00 3 0.902
314 6.5749981 46.5421068 0 0 312 487.177 2020/07/27 11:57:32+00 3 0.716
315 6.5750105 46.5421111 0 0 313 487.162 2020/07/27 11:57:34+00 3 0.615
316 6.5750087 46.5421267 0 0 314 487.147 2020/07/27 11:57:36+00 3 0.829
317 6.5749973 46.5421376 0 0 315 487.139 2020/07/27 11:57:37+00 3 0.791
318 6.5749693 46.5421452 0 0 316 487.122 2020/07/27 11:57:39+00 3 0.833
319 6.5749412 46.5421576 0 0 317 487.105 2020/07/27 11:57:41+00 3 0.961
320 6.5749261 46.5421629 0 0 318 487.096 2020/07/27 11:57:42+00 3 0.987
321 6.5749106 46.5421664 0 0 319 487.087 2020/07/27 11:57:43+00 3 1.012
322 6.5748865 46.5421757 0 0 320 487.069 2020/07/27 11:57:45+00 3 0.714
323 6.5748847 46.5421787 0 0 321 487.068 2020/07/27 11:57:46+00 3 0.428
324 6.5748923 46.5421799 0 0 322 487.05 2020/07/27 11:57:48+00 3 0.327
325 6.5749026 46.5421827 0 0 323 487.031 2020/07/27 11:57:50+00 3 0.248
326 6.5749053 46.5421838 0 0 324 487.03 2020/07/27 11:57:52+00 3 0.033
327 6.5749068 46.5421835 0 0 325 487.02 2020/07/27 11:57:53+00 3 0.192
328 6.5749124 46.5421833 0 0 326 487.001 2020/07/27 11:57:55+00 4 0.413
329 6.5749084 46.542182 0 0 327 486.991 2020/07/27 11:57:57+00 4 0.362
330 6.5749039 46.5421799 0 0 328 486.982 2020/07/27 11:57:58+00 4 0.531
331 6.5748885 46.542172 0 0 329 486.965 2020/07/27 11:58:00+00 4 0.743
332 6.5748865 46.5421749 0 0 330 486.957 2020/07/27 11:58:01+00 8 0.713
333 6.5748946 46.5421753 0 0 331 486.948 2020/07/27 11:58:02+00 8 0.646
334 6.5748893 46.542168 0 0 332 486.932 2020/07/27 11:58:04+00 8 0.426
335 6.574885 46.542158 0 0 333 486.916 2020/07/27 11:58:06+00 8 0.304
336 6.5748782 46.5421565 0 0 334 486.908 2020/07/27 11:58:07+00 8 0.266
337 6.5748811 46.5421509 0 0 335 486.893 2020/07/27 11:58:09+00 8 0.243
338 6.5748783 46.5421501 0 0 336 486.893 2020/07/27 11:58:10+00 8 0.011

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,439 @@
X,Y,track_fid,track_seg_id,track_seg_point_id,ele,time,magvar,geoidheight,name,cmt,desc,src,link1_href,link1_text,link1_type,link2_href,link2_text,link2_type,sym,type,fix,sat,hdop,vdop,pdop,ageofdgpsdata,dgpsid,speed
6.5749532,46.5421696,0,0,0,469.284,2020/07/27 20:03:27+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749481,46.542168,0,0,1,470.263,2020/07/27 20:03:28+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749432,46.5421667,0,0,2,470.876,2020/07/27 20:03:29+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749391,46.5421651,0,0,3,471.714,2020/07/27 20:03:30+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749339,46.5421646,0,0,4,472.729,2020/07/27 20:03:31+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749303,46.5421691,0,0,5,474.259,2020/07/27 20:03:33+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749319,46.5421729,0,0,6,475.056,2020/07/27 20:03:34+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749337,46.5421804,0,0,7,476.765,2020/07/27 20:03:36+00,,,,,,,,,,,,,,,,,4,,,,,
6.574935,46.5421826,0,0,8,476.974,2020/07/27 20:03:37+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749267,46.5421837,0,0,9,477.749,2020/07/27 20:03:38+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749192,46.5421869,0,0,10,478.193,2020/07/27 20:03:40+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749149,46.5421879,0,0,11,478.808,2020/07/27 20:03:41+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749085,46.5421868,0,0,12,479.567,2020/07/27 20:03:43+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749067,46.5421885,0,0,13,480.043,2020/07/27 20:03:45+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,14,480.335,2020/07/27 20:03:46+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,15,480.763,2020/07/27 20:03:48+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749067,46.5421885,0,0,16,480.957,2020/07/27 20:03:50+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749067,46.5421885,0,0,17,480.958,2020/07/27 20:03:51+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749067,46.5421885,0,0,18,480.962,2020/07/27 20:03:53+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,19,480.964,2020/07/27 20:03:54+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749067,46.5421885,0,0,20,480.967,2020/07/27 20:03:55+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749067,46.5421885,0,0,21,480.973,2020/07/27 20:03:57+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749067,46.5421885,0,0,22,480.977,2020/07/27 20:03:58+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,23,480.986,2020/07/27 20:04:00+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,24,480.996,2020/07/27 20:04:02+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,25,481.006,2020/07/27 20:04:04+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,26,481.011,2020/07/27 20:04:05+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,27,481.023,2020/07/27 20:04:07+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,28,481.034,2020/07/27 20:04:09+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,29,481.04,2020/07/27 20:04:10+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,30,481.046,2020/07/27 20:04:11+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,31,481.058,2020/07/27 20:04:13+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,32,481.064,2020/07/27 20:04:14+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,33,481.076,2020/07/27 20:04:16+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,34,481.089,2020/07/27 20:04:18+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,35,481.095,2020/07/27 20:04:19+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,36,481.108,2020/07/27 20:04:21+00,,,,,,,,,,,,,,,,,4,,,,,
6.5749067,46.5421885,0,0,37,481.12,2020/07/27 20:04:23+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749067,46.5421885,0,0,38,481.126,2020/07/27 20:04:24+00,,,,,,,,,,,,,,,,,6,,,,,
6.5749067,46.5421885,0,0,39,481.189,2020/07/27 20:04:26+00,,,,,,,,,,,,,,,,,4,,,,,
6.574916,46.5421767,0,0,40,481.33,2020/07/27 20:04:28+00,,,,,,,,,,,,,,,,,3,,,,,0.172
6.5749242,46.5421726,0,0,41,481.495,2020/07/27 20:04:30+00,,,,,,,,,,,,,,,,,3,,,,,0.165
6.5749221,46.5421721,0,0,42,481.505,2020/07/27 20:04:31+00,,,,,,,,,,,,,,,,,3,,,,,0.045
6.5749117,46.5421737,0,0,43,481.687,2020/07/27 20:04:33+00,,,,,,,,,,,,,,,,,3,,,,,0.357
6.5749114,46.5421823,0,0,44,481.781,2020/07/27 20:04:34+00,,,,,,,,,,,,,,,,,3,,,,,0.481
6.5749065,46.5421877,0,0,45,481.874,2020/07/27 20:04:35+00,,,,,,,,,,,,,,,,,3,,,,,0.4
6.5749145,46.5422018,0,0,46,481.959,2020/07/27 20:04:37+00,,,,,,,,,,,,,,,,,3,,,,,0.288
6.5749111,46.5422034,0,0,47,482.034,2020/07/27 20:04:38+00,,,,,,,,,,,,,,,,,4,,,,,0.256
6.5749135,46.5422054,0,0,48,482.098,2020/07/27 20:04:39+00,,,,,,,,,,,,,,,,,4,,,,,0.279
6.574909,46.5422101,0,0,49,482.183,2020/07/27 20:04:41+00,,,,,,,,,,,,,,,,,4,,,,,0.172
6.5749098,46.5422149,0,0,50,482.232,2020/07/27 20:04:42+00,,,,,,,,,,,,,,,,,4,,,,,0.207
6.5749176,46.5422284,0,0,51,482.307,2020/07/27 20:04:44+00,,,,,,,,,,,,,,,,,4,,,,,0.464
6.5749288,46.5422366,0,0,52,482.332,2020/07/27 20:04:45+00,,,,,,,,,,,,,,,,,4,,,,,0.498
6.5749392,46.5422407,0,0,53,482.355,2020/07/27 20:04:46+00,,,,,,,,,,,,,,,,,4,,,,,0.576
6.5749569,46.5422483,0,0,54,482.41,2020/07/27 20:04:48+00,,,,,,,,,,,,,,,,,4,,,,,0.737
6.5749707,46.5422585,0,0,55,482.457,2020/07/27 20:04:50+00,,,,,,,,,,,,,,,,,4,,,,,0.771
6.5749705,46.5422652,0,0,56,482.478,2020/07/27 20:04:51+00,,,,,,,,,,,,,,,,,4,,,,,0.759
6.5749714,46.5422775,0,0,57,482.507,2020/07/27 20:04:53+00,,,,,,,,,,,,,,,,,4,,,,,0.74
6.5749897,46.5422961,0,0,58,482.514,2020/07/27 20:04:55+00,,,,,,,,,,,,,,,,,4,,,,,0.717
6.5749984,46.5423042,0,0,59,482.512,2020/07/27 20:04:56+00,,,,,,,,,,,,,,,,,4,,,,,0.713
6.5750234,46.5423218,0,0,60,482.466,2020/07/27 20:04:58+00,,,,,,,,,,,,,,,,,4,,,,,0.543
6.5750307,46.5423296,0,0,61,482.432,2020/07/27 20:04:59+00,,,,,,,,,,,,,,,,,4,,,,,0.715
6.5750373,46.5423404,0,0,62,482.4,2020/07/27 20:05:00+00,,,,,,,,,,,,,,,,,4,,,,,0.835
6.5750542,46.5423605,0,0,63,482.325,2020/07/27 20:05:02+00,,,,,,,,,,,,,,,,,4,,,,,0.812
6.5750594,46.5423682,0,0,64,482.286,2020/07/27 20:05:03+00,,,,,,,,,,,,,,,,,4,,,,,0.602
6.5750679,46.5423802,0,0,65,482.222,2020/07/27 20:05:05+00,,,,,,,,,,,,,,,,,4,,,,,0.287
6.5750749,46.5423858,0,0,66,482.202,2020/07/27 20:05:07+00,,,,,,,,,,,,,,,,,4,,,,,0.048
6.5750737,46.5423861,0,0,67,482.197,2020/07/27 20:05:09+00,,,,,,,,,,,,,,,,,4,,,,,0.012
6.575073,46.5423865,0,0,68,482.159,2020/07/27 20:05:10+00,,,,,,,,,,,,,,,,,4,,,,,0.216
6.5750743,46.5423905,0,0,69,482.072,2020/07/27 20:05:12+00,,,,,,,,,,,,,,,,,4,,,,,0.235
6.5750874,46.5423988,0,0,70,481.971,2020/07/27 20:05:14+00,,,,,,,,,,,,,,,,,4,,,,,0.471
6.575094,46.5424028,0,0,71,481.918,2020/07/27 20:05:15+00,,,,,,,,,,,,,,,,,4,,,,,0.363
6.5750948,46.5424035,0,0,72,481.913,2020/07/27 20:05:16+00,,,,,,,,,,,,,,,,,4,,,,,0.237
6.5750952,46.542404,0,0,73,481.907,2020/07/27 20:05:17+00,,,,,,,,,,,,,,,,,4,,,,,0.014
6.5751046,46.5424101,0,0,74,481.817,2020/07/27 20:05:19+00,,,,,,,,,,,,,,,,,4,,,,,0.497
6.5751268,46.5424119,0,0,75,481.757,2020/07/27 20:05:21+00,,,,,,,,,,,,,,,,,4,,,,,0.426
6.5751428,46.5424095,0,0,76,481.755,2020/07/27 20:05:22+00,,,,,,,,,,,,,,,,,4,,,,,0.036
6.5751537,46.5424076,0,0,77,481.72,2020/07/27 20:05:23+00,,,,,,,,,,,,,,,,,4,,,,,0.306
6.5751596,46.5424059,0,0,78,481.713,2020/07/27 20:05:25+00,,,,,,,,,,,,,,,,,4,,,,,0.036
6.575171,46.5423998,0,0,79,481.672,2020/07/27 20:05:27+00,,,,,,,,,,,,,,,,,3,,,,,0.357
6.5751812,46.5423694,0,0,80,481.533,2020/07/27 20:05:29+00,,,,,,,,,,,,,,,,,3,,,,,0.629
6.5751855,46.5423521,0,0,81,481.432,2020/07/27 20:05:30+00,,,,,,,,,,,,,,,,,3,,,,,0.697
6.5751883,46.5423409,0,0,82,481.335,2020/07/27 20:05:31+00,,,,,,,,,,,,,,,,,3,,,,,0.717
6.5751812,46.5423194,0,0,83,481.126,2020/07/27 20:05:33+00,,,,,,,,,,,,,,,,,3,,,,,0.782
6.5751726,46.5423096,0,0,84,481.01,2020/07/27 20:05:34+00,,,,,,,,,,,,,,,,,3,,,,,0.837
6.5751536,46.5422885,0,0,85,480.795,2020/07/27 20:05:36+00,,,,,,,,,,,,,,,,,3,,,,,0.897
6.5751449,46.5422761,0,0,86,480.7,2020/07/27 20:05:37+00,,,,,,,,,,,,,,,,,3,,,,,0.953
6.5751249,46.5422476,0,0,87,480.494,2020/07/27 20:05:39+00,,,,,,,,,,,,,,,,,3,,,,,1.024
6.575112,46.5422243,0,0,88,480.279,2020/07/27 20:05:41+00,,,,,,,,,,,,,,,,,3,,,,,1.022
6.5751048,46.5422131,0,0,89,480.179,2020/07/27 20:05:42+00,,,,,,,,,,,,,,,,,3,,,,,1.018
6.5750959,46.5422021,0,0,90,480.082,2020/07/27 20:05:43+00,,,,,,,,,,,,,,,,,3,,,,,1.008
6.5750828,46.5421898,0,0,91,479.915,2020/07/27 20:05:45+00,,,,,,,,,,,,,,,,,3,,,,,0.994
6.5750674,46.542173,0,0,92,479.782,2020/07/27 20:05:47+00,,,,,,,,,,,,,,,,,3,,,,,0.974
6.5750494,46.5421607,0,0,93,479.671,2020/07/27 20:05:49+00,,,,,,,,,,,,,,,,,3,,,,,0.965
6.5750463,46.5421444,0,0,94,479.571,2020/07/27 20:05:51+00,,,,,,,,,,,,,,,,,3,,,,,0.952
6.5750456,46.5421381,0,0,95,479.521,2020/07/27 20:05:52+00,,,,,,,,,,,,,,,,,3,,,,,0.942
6.5750461,46.5421294,0,0,96,479.472,2020/07/27 20:05:53+00,,,,,,,,,,,,,,,,,3,,,,,0.915
6.5750462,46.5421185,0,0,97,479.387,2020/07/27 20:05:55+00,,,,,,,,,,,,,,,,,3,,,,,0.462
6.5750439,46.5421168,0,0,98,479.343,2020/07/27 20:05:57+00,,,,,,,,,,,,,,,,,3,,,,,0.329
6.5750478,46.5421143,0,0,99,479.305,2020/07/27 20:05:58+00,,,,,,,,,,,,,,,,,3,,,,,0.576
6.5750776,46.5420962,0,0,100,479.224,2020/07/27 20:06:00+00,,,,,,,,,,,,,,,,,3,,,,,0.869
6.5750897,46.5420893,0,0,101,479.183,2020/07/27 20:06:01+00,,,,,,,,,,,,,,,,,3,,,,,0.901
6.5751249,46.5420782,0,0,102,479.107,2020/07/27 20:06:03+00,,,,,,,,,,,,,,,,,3,,,,,0.947
6.5751623,46.5420666,0,0,103,479.042,2020/07/27 20:06:05+00,,,,,,,,,,,,,,,,,3,,,,,0.948
6.5751603,46.5420646,0,0,104,479.024,2020/07/27 20:06:06+00,,,,,,,,,,,,,,,,,3,,,,,0.947
6.5751752,46.5420588,0,0,105,479.006,2020/07/27 20:06:07+00,,,,,,,,,,,,,,,,,3,,,,,0.943
6.5752029,46.5420469,0,0,106,478.972,2020/07/27 20:06:09+00,,,,,,,,,,,,,,,,,3,,,,,0.943
6.5752302,46.5420342,0,0,107,478.937,2020/07/27 20:06:11+00,,,,,,,,,,,,,,,,,3,,,,,0.969
6.5752448,46.5420272,0,0,108,478.921,2020/07/27 20:06:12+00,,,,,,,,,,,,,,,,,3,,,,,0.974
6.5752707,46.5420156,0,0,109,478.89,2020/07/27 20:06:14+00,,,,,,,,,,,,,,,,,3,,,,,0.987
6.5752969,46.542007,0,0,110,478.87,2020/07/27 20:06:16+00,,,,,,,,,,,,,,,,,3,,,,,0.988
6.5753153,46.5420008,0,0,111,478.868,2020/07/27 20:06:17+00,,,,,,,,,,,,,,,,,3,,,,,0.985
6.5753459,46.5419882,0,0,112,478.877,2020/07/27 20:06:19+00,,,,,,,,,,,,,,,,,3,,,,,1
6.5753763,46.5419749,0,0,113,478.894,2020/07/27 20:06:21+00,,,,,,,,,,,,,,,,,3,,,,,1.024
6.5753859,46.5419703,0,0,114,478.907,2020/07/27 20:06:22+00,,,,,,,,,,,,,,,,,3,,,,,1.022
6.5753935,46.5419656,0,0,115,478.948,2020/07/27 20:06:24+00,,,,,,,,,,,,,,,,,3,,,,,1.013
6.5754183,46.541961,0,0,116,478.995,2020/07/27 20:06:26+00,,,,,,,,,,,,,,,,,3,,,,,1.002
6.5754218,46.5419607,0,0,117,479.022,2020/07/27 20:06:27+00,,,,,,,,,,,,,,,,,3,,,,,0.996
6.5754373,46.5419567,0,0,118,479.048,2020/07/27 20:06:28+00,,,,,,,,,,,,,,,,,3,,,,,0.997
6.5754661,46.541951,0,0,119,479.1,2020/07/27 20:06:30+00,,,,,,,,,,,,,,,,,3,,,,,0.995
6.5754803,46.5419483,0,0,120,479.126,2020/07/27 20:06:31+00,,,,,,,,,,,,,,,,,3,,,,,0.987
6.5755003,46.5419436,0,0,121,479.176,2020/07/27 20:06:33+00,,,,,,,,,,,,,,,,,3,,,,,0.987
6.5755325,46.5419363,0,0,122,479.224,2020/07/27 20:06:35+00,,,,,,,,,,,,,,,,,3,,,,,0.97
6.5755497,46.5419312,0,0,123,479.249,2020/07/27 20:06:36+00,,,,,,,,,,,,,,,,,3,,,,,0.958
6.5755635,46.5419256,0,0,124,479.274,2020/07/27 20:06:37+00,,,,,,,,,,,,,,,,,3,,,,,0.95
6.5755952,46.5419135,0,0,125,479.323,2020/07/27 20:06:39+00,,,,,,,,,,,,,,,,,3,,,,,0.94
6.575626,46.5418982,0,0,126,479.367,2020/07/27 20:06:41+00,,,,,,,,,,,,,,,,,3,,,,,0.921
6.5756447,46.5418882,0,0,127,479.39,2020/07/27 20:06:42+00,,,,,,,,,,,,,,,,,3,,,,,0.917
6.5756669,46.5418818,0,0,128,479.411,2020/07/27 20:06:43+00,,,,,,,,,,,,,,,,,3,,,,,0.919
6.5756998,46.5418766,0,0,129,479.454,2020/07/27 20:06:45+00,,,,,,,,,,,,,,,,,3,,,,,0.909
6.5757271,46.5418649,0,0,130,479.499,2020/07/27 20:06:47+00,,,,,,,,,,,,,,,,,3,,,,,0.934
6.5757443,46.5418589,0,0,131,479.521,2020/07/27 20:06:48+00,,,,,,,,,,,,,,,,,3,,,,,0.948
6.5757621,46.5418521,0,0,132,479.543,2020/07/27 20:06:49+00,,,,,,,,,,,,,,,,,3,,,,,0.962
6.5757808,46.5418412,0,0,133,479.598,2020/07/27 20:06:51+00,,,,,,,,,,,,,,,,,3,,,,,0.999
6.5757894,46.5418371,0,0,134,479.63,2020/07/27 20:06:52+00,,,,,,,,,,,,,,,,,3,,,,,1.017
6.5758225,46.5418298,0,0,135,479.692,2020/07/27 20:06:54+00,,,,,,,,,,,,,,,,,3,,,,,1.026
6.5758426,46.5418241,0,0,136,479.723,2020/07/27 20:06:55+00,,,,,,,,,,,,,,,,,3,,,,,1.038
6.575879,46.5418085,0,0,137,479.782,2020/07/27 20:06:57+00,,,,,,,,,,,,,,,,,3,,,,,1.058
6.5759017,46.5417965,0,0,138,479.836,2020/07/27 20:06:59+00,,,,,,,,,,,,,,,,,3,,,,,1.029
6.575912,46.5417925,0,0,139,479.862,2020/07/27 20:07:00+00,,,,,,,,,,,,,,,,,3,,,,,1.028
6.5759405,46.5417833,0,0,140,479.912,2020/07/27 20:07:02+00,,,,,,,,,,,,,,,,,3,,,,,1.043
6.5759555,46.541779,0,0,141,479.937,2020/07/27 20:07:03+00,,,,,,,,,,,,,,,,,3,,,,,1.058
6.575987,46.541769,0,0,142,479.988,2020/07/27 20:07:05+00,,,,,,,,,,,,,,,,,3,,,,,1.083
6.5760025,46.5417624,0,0,143,480.014,2020/07/27 20:07:06+00,,,,,,,,,,,,,,,,,3,,,,,1.096
6.5760331,46.5417482,0,0,144,480.066,2020/07/27 20:07:08+00,,,,,,,,,,,,,,,,,3,,,,,1.107
6.5760572,46.5417393,0,0,145,480.116,2020/07/27 20:07:10+00,,,,,,,,,,,,,,,,,3,,,,,1.117
6.5760726,46.5417338,0,0,146,480.14,2020/07/27 20:07:11+00,,,,,,,,,,,,,,,,,3,,,,,1.103
6.5760968,46.5417264,0,0,147,480.191,2020/07/27 20:07:13+00,,,,,,,,,,,,,,,,,3,,,,,1.072
6.5761247,46.5417203,0,0,148,480.245,2020/07/27 20:07:15+00,,,,,,,,,,,,,,,,,3,,,,,1.066
6.5761438,46.5417147,0,0,149,480.308,2020/07/27 20:07:17+00,,,,,,,,,,,,,,,,,3,,,,,1.048
6.5761512,46.5417121,0,0,150,480.347,2020/07/27 20:07:18+00,,,,,,,,,,,,,,,,,3,,,,,1.043
6.5761852,46.5417016,0,0,151,480.427,2020/07/27 20:07:20+00,,,,,,,,,,,,,,,,,3,,,,,1.056
6.5762019,46.5416976,0,0,152,480.468,2020/07/27 20:07:21+00,,,,,,,,,,,,,,,,,3,,,,,1.076
6.5762192,46.541692,0,0,153,480.51,2020/07/27 20:07:22+00,,,,,,,,,,,,,,,,,3,,,,,1.096
6.5762527,46.5416828,0,0,154,480.595,2020/07/27 20:07:24+00,,,,,,,,,,,,,,,,,3,,,,,1.115
6.5762825,46.5416745,0,0,155,480.684,2020/07/27 20:07:26+00,,,,,,,,,,,,,,,,,3,,,,,1.157
6.5763008,46.5416691,0,0,156,480.729,2020/07/27 20:07:27+00,,,,,,,,,,,,,,,,,3,,,,,1.173
6.5763308,46.5416596,0,0,157,480.824,2020/07/27 20:07:29+00,,,,,,,,,,,,,,,,,3,,,,,1.177
6.5763452,46.5416556,0,0,158,480.873,2020/07/27 20:07:30+00,,,,,,,,,,,,,,,,,3,,,,,1.179
6.5763749,46.5416468,0,0,159,480.971,2020/07/27 20:07:32+00,,,,,,,,,,,,,,,,,3,,,,,1.17
6.5763789,46.5416447,0,0,160,481.022,2020/07/27 20:07:33+00,,,,,,,,,,,,,,,,,3,,,,,1.166
6.5764162,46.541632,0,0,161,481.124,2020/07/27 20:07:35+00,,,,,,,,,,,,,,,,,3,,,,,1.179
6.5764197,46.5416298,0,0,162,481.179,2020/07/27 20:07:36+00,,,,,,,,,,,,,,,,,3,,,,,1.183
6.5764367,46.5416236,0,0,163,481.299,2020/07/27 20:07:38+00,,,,,,,,,,,,,,,,,3,,,,,1.192
6.5764547,46.5416181,0,0,164,481.361,2020/07/27 20:07:39+00,,,,,,,,,,,,,,,,,3,,,,,1.196
6.576472,46.5416128,0,0,165,481.422,2020/07/27 20:07:40+00,,,,,,,,,,,,,,,,,3,,,,,1.204
6.5764815,46.5416091,0,0,166,481.549,2020/07/27 20:07:42+00,,,,,,,,,,,,,,,,,3,,,,,1.213
6.5764987,46.5416042,0,0,167,481.612,2020/07/27 20:07:43+00,,,,,,,,,,,,,,,,,3,,,,,1.208
6.5765152,46.5415999,0,0,168,481.675,2020/07/27 20:07:44+00,,,,,,,,,,,,,,,,,3,,,,,1.208
6.5765211,46.5415982,0,0,169,481.739,2020/07/27 20:07:45+00,,,,,,,,,,,,,,,,,3,,,,,1.212
6.5765414,46.5415926,0,0,170,481.802,2020/07/27 20:07:46+00,,,,,,,,,,,,,,,,,3,,,,,1.211
6.5765503,46.5415906,0,0,171,481.934,2020/07/27 20:07:48+00,,,,,,,,,,,,,,,,,3,,,,,1.192
6.5765667,46.5415872,0,0,172,482.068,2020/07/27 20:07:50+00,,,,,,,,,,,,,,,,,3,,,,,1.188
6.5765768,46.5415853,0,0,173,482.136,2020/07/27 20:07:51+00,,,,,,,,,,,,,,,,,3,,,,,1.183
6.5765956,46.5415817,0,0,174,482.202,2020/07/27 20:07:52+00,,,,,,,,,,,,,,,,,3,,,,,1.172
6.5766304,46.5415742,0,0,175,482.333,2020/07/27 20:07:54+00,,,,,,,,,,,,,,,,,3,,,,,1.161
6.5766593,46.5415669,0,0,176,482.464,2020/07/27 20:07:56+00,,,,,,,,,,,,,,,,,3,,,,,1.176
6.5766926,46.5415629,0,0,177,482.596,2020/07/27 20:07:58+00,,,,,,,,,,,,,,,,,3,,,,,1.174
6.5767151,46.5415735,0,0,178,482.724,2020/07/27 20:08:00+00,,,,,,,,,,,,,,,,,3,,,,,1.137
6.576727,46.5415842,0,0,179,482.788,2020/07/27 20:08:01+00,,,,,,,,,,,,,,,,,3,,,,,1.133
6.576738,46.5416106,0,0,180,482.912,2020/07/27 20:08:03+00,,,,,,,,,,,,,,,,,3,,,,,1.176
6.5767424,46.5416224,0,0,181,482.972,2020/07/27 20:08:04+00,,,,,,,,,,,,,,,,,3,,,,,1.209
6.5767478,46.5416455,0,0,182,483.091,2020/07/27 20:08:06+00,,,,,,,,,,,,,,,,,3,,,,,1.235
6.5767496,46.5416541,0,0,183,483.148,2020/07/27 20:08:07+00,,,,,,,,,,,,,,,,,3,,,,,1.231
6.5767514,46.5416768,0,0,184,483.259,2020/07/27 20:08:09+00,,,,,,,,,,,,,,,,,3,,,,,1.237
6.5767525,46.5416977,0,0,185,483.363,2020/07/27 20:08:11+00,,,,,,,,,,,,,,,,,3,,,,,1.232
6.5767526,46.5417091,0,0,186,483.413,2020/07/27 20:08:12+00,,,,,,,,,,,,,,,,,3,,,,,1.221
6.5767529,46.5417195,0,0,187,483.461,2020/07/27 20:08:13+00,,,,,,,,,,,,,,,,,3,,,,,1.21
6.576753,46.5417426,0,0,188,483.554,2020/07/27 20:08:15+00,,,,,,,,,,,,,,,,,3,,,,,1.211
6.5767529,46.5417548,0,0,189,483.599,2020/07/27 20:08:16+00,,,,,,,,,,,,,,,,,3,,,,,1.217
6.5767508,46.5417781,0,0,190,483.685,2020/07/27 20:08:18+00,,,,,,,,,,,,,,,,,3,,,,,1.215
6.5767445,46.54179,0,0,191,483.768,2020/07/27 20:08:20+00,,,,,,,,,,,,,,,,,3,,,,,0.727
6.5767427,46.5417883,0,0,192,483.808,2020/07/27 20:08:21+00,,,,,,,,,,,,,,,,,3,,,,,0.457
6.5767429,46.5417843,0,0,193,483.811,2020/07/27 20:08:22+00,,,,,,,,,,,,,,,,,3,,,,,0.283
6.5767427,46.5417846,0,0,194,483.819,2020/07/27 20:08:24+00,,,,,,,,,,,,,,,,,3,,,,,0.01
6.5767428,46.5417846,0,0,195,483.823,2020/07/27 20:08:25+00,,,,,,,,,,,,,,,,,3,,,,,0.012
6.5767428,46.5417845,0,0,196,483.831,2020/07/27 20:08:27+00,,,,,,,,,,,,,,,,,2,,,,,0.004
6.5767429,46.5417844,0,0,197,483.834,2020/07/27 20:08:28+00,,,,,,,,,,,,,,,,,2,,,,,0.019
6.5767425,46.5417842,0,0,198,483.874,2020/07/27 20:08:30+00,,,,,,,,,,,,,,,,,2,,,,,0.218
6.5767383,46.5417898,0,0,199,483.943,2020/07/27 20:08:32+00,,,,,,,,,,,,,,,,,2,,,,,0.525
6.5767433,46.541795,0,0,200,483.975,2020/07/27 20:08:33+00,,,,,,,,,,,,,,,,,2,,,,,0.609
6.5767536,46.5417975,0,0,201,484.007,2020/07/27 20:08:34+00,,,,,,,,,,,,,,,,,3,,,,,0.641
6.5767602,46.5417906,0,0,202,484.068,2020/07/27 20:08:36+00,,,,,,,,,,,,,,,,,3,,,,,0.813
6.5767593,46.5417717,0,0,203,484.125,2020/07/27 20:08:38+00,,,,,,,,,,,,,,,,,3,,,,,0.933
6.5767648,46.541751,0,0,204,484.18,2020/07/27 20:08:40+00,,,,,,,,,,,,,,,,,3,,,,,0.992
6.5767665,46.5417371,0,0,205,484.207,2020/07/27 20:08:41+00,,,,,,,,,,,,,,,,,3,,,,,1.014
6.5767648,46.5417275,0,0,206,484.234,2020/07/27 20:08:42+00,,,,,,,,,,,,,,,,,2,,,,,1.031
6.5767629,46.5417159,0,0,207,484.26,2020/07/27 20:08:43+00,,,,,,,,,,,,,,,,,2,,,,,1.045
6.5767638,46.5416916,0,0,208,484.311,2020/07/27 20:08:45+00,,,,,,,,,,,,,,,,,2,,,,,1.073
6.5767653,46.5416799,0,0,209,484.335,2020/07/27 20:08:46+00,,,,,,,,,,,,,,,,,2,,,,,1.078
6.5767651,46.5416575,0,0,210,484.382,2020/07/27 20:08:48+00,,,,,,,,,,,,,,,,,2,,,,,1.095
6.5767627,46.5416445,0,0,211,484.404,2020/07/27 20:08:49+00,,,,,,,,,,,,,,,,,2,,,,,1.107
6.5767603,46.5416302,0,0,212,484.426,2020/07/27 20:08:50+00,,,,,,,,,,,,,,,,,2,,,,,1.118
6.5767536,46.541606,0,0,213,484.469,2020/07/27 20:08:52+00,,,,,,,,,,,,,,,,,2,,,,,1.146
6.5767512,46.5415813,0,0,214,484.51,2020/07/27 20:08:54+00,,,,,,,,,,,,,,,,,2,,,,,1.161
6.576754,46.5415525,0,0,215,484.55,2020/07/27 20:08:56+00,,,,,,,,,,,,,,,,,2,,,,,1.181
6.5767524,46.541525,0,0,216,484.588,2020/07/27 20:08:58+00,,,,,,,,,,,,,,,,,2,,,,,1.194
6.5767498,46.5415141,0,0,217,484.606,2020/07/27 20:08:59+00,,,,,,,,,,,,,,,,,2,,,,,1.195
6.5767547,46.5414893,0,0,218,484.639,2020/07/27 20:09:01+00,,,,,,,,,,,,,,,,,2,,,,,1.207
6.5767499,46.5414666,0,0,219,484.67,2020/07/27 20:09:03+00,,,,,,,,,,,,,,,,,2,,,,,1.22
6.5767469,46.5414572,0,0,220,484.685,2020/07/27 20:09:04+00,,,,,,,,,,,,,,,,,2,,,,,1.223
6.5767409,46.5414379,0,0,221,484.712,2020/07/27 20:09:06+00,,,,,,,,,,,,,,,,,2,,,,,1.233
6.5767362,46.541418,0,0,222,484.736,2020/07/27 20:09:08+00,,,,,,,,,,,,,,,,,2,,,,,1.246
6.5767346,46.5414079,0,0,223,484.747,2020/07/27 20:09:09+00,,,,,,,,,,,,,,,,,2,,,,,1.241
6.5767305,46.5413977,0,0,224,484.758,2020/07/27 20:09:10+00,,,,,,,,,,,,,,,,,2,,,,,1.235
6.5767288,46.5413883,0,0,225,484.768,2020/07/27 20:09:11+00,,,,,,,,,,,,,,,,,2,,,,,1.228
6.57672,46.5413663,0,0,226,484.786,2020/07/27 20:09:13+00,,,,,,,,,,,,,,,,,2,,,,,1.22
6.5767165,46.5413562,0,0,227,484.794,2020/07/27 20:09:14+00,,,,,,,,,,,,,,,,,2,,,,,1.227
6.576706,46.5413371,0,0,228,484.809,2020/07/27 20:09:16+00,,,,,,,,,,,,,,,,,2,,,,,1.21
6.5766875,46.5413221,0,0,229,484.821,2020/07/27 20:09:18+00,,,,,,,,,,,,,,,,,2,,,,,1.193
6.5766624,46.5413184,0,0,230,484.834,2020/07/27 20:09:20+00,,,,,,,,,,,,,,,,,2,,,,,1.15
6.5766409,46.541318,0,0,231,484.847,2020/07/27 20:09:22+00,,,,,,,,,,,,,,,,,2,,,,,1.085
6.5766228,46.5413216,0,0,232,484.861,2020/07/27 20:09:24+00,,,,,,,,,,,,,,,,,2,,,,,1.033
6.5766056,46.5413233,0,0,233,484.868,2020/07/27 20:09:25+00,,,,,,,,,,,,,,,,,2,,,,,1.017
6.5765897,46.541326,0,0,234,484.875,2020/07/27 20:09:26+00,,,,,,,,,,,,,,,,,3,,,,,1.009
6.5765623,46.5413251,0,0,235,484.89,2020/07/27 20:09:28+00,,,,,,,,,,,,,,,,,3,,,,,0.992
6.5765295,46.5413269,0,0,236,484.902,2020/07/27 20:09:30+00,,,,,,,,,,,,,,,,,3,,,,,0.987
6.5765192,46.5413293,0,0,237,484.908,2020/07/27 20:09:31+00,,,,,,,,,,,,,,,,,3,,,,,0.967
6.5765091,46.5413304,0,0,238,484.914,2020/07/27 20:09:32+00,,,,,,,,,,,,,,,,,3,,,,,0.944
6.576478,46.5413327,0,0,239,484.925,2020/07/27 20:09:34+00,,,,,,,,,,,,,,,,,3,,,,,0.927
6.5764626,46.5413352,0,0,240,484.93,2020/07/27 20:09:35+00,,,,,,,,,,,,,,,,,3,,,,,0.946
6.5764261,46.5413397,0,0,241,484.938,2020/07/27 20:09:37+00,,,,,,,,,,,,,,,,,3,,,,,0.968
6.5763869,46.5413379,0,0,242,484.944,2020/07/27 20:09:39+00,,,,,,,,,,,,,,,,,3,,,,,0.953
6.5763656,46.5413323,0,0,243,484.948,2020/07/27 20:09:40+00,,,,,,,,,,,,,,,,,3,,,,,0.948
6.5763442,46.5413311,0,0,244,484.951,2020/07/27 20:09:41+00,,,,,,,,,,,,,,,,,3,,,,,0.947
6.5763234,46.5413328,0,0,245,484.954,2020/07/27 20:09:42+00,,,,,,,,,,,,,,,,,3,,,,,0.954
6.5763023,46.5413342,0,0,246,484.957,2020/07/27 20:09:43+00,,,,,,,,,,,,,,,,,3,,,,,0.979
6.5762683,46.5413457,0,0,247,484.963,2020/07/27 20:09:45+00,,,,,,,,,,,,,,,,,3,,,,,1.003
6.5762493,46.5413497,0,0,248,484.965,2020/07/27 20:09:46+00,,,,,,,,,,,,,,,,,3,,,,,1.018
6.5762184,46.5413621,0,0,249,484.971,2020/07/27 20:09:48+00,,,,,,,,,,,,,,,,,3,,,,,1.018
6.5762072,46.5413708,0,0,250,484.974,2020/07/27 20:09:49+00,,,,,,,,,,,,,,,,,3,,,,,1.004
6.5761952,46.5413778,0,0,251,484.978,2020/07/27 20:09:50+00,,,,,,,,,,,,,,,,,3,,,,,0.991
6.5761838,46.5413861,0,0,252,484.981,2020/07/27 20:09:51+00,,,,,,,,,,,,,,,,,3,,,,,0.987
6.5761546,46.5414019,0,0,253,484.987,2020/07/27 20:09:53+00,,,,,,,,,,,,,,,,,3,,,,,1.013
6.5761253,46.5414238,0,0,254,484.994,2020/07/27 20:09:55+00,,,,,,,,,,,,,,,,,2,,,,,1.067
6.5760991,46.5414379,0,0,255,485,2020/07/27 20:09:57+00,,,,,,,,,,,,,,,,,2,,,,,1.097
6.5760719,46.5414499,0,0,256,485.005,2020/07/27 20:09:59+00,,,,,,,,,,,,,,,,,2,,,,,1.122
6.5760487,46.541462,0,0,257,485.009,2020/07/27 20:10:01+00,,,,,,,,,,,,,,,,,2,,,,,1.127
6.5760358,46.5414661,0,0,258,485.01,2020/07/27 20:10:02+00,,,,,,,,,,,,,,,,,3,,,,,1.121
6.5760219,46.54147,0,0,259,485.012,2020/07/27 20:10:03+00,,,,,,,,,,,,,,,,,3,,,,,1.112
6.5759896,46.5414795,0,0,260,485.015,2020/07/27 20:10:05+00,,,,,,,,,,,,,,,,,3,,,,,1.118
6.5759538,46.5414903,0,0,261,485.016,2020/07/27 20:10:07+00,,,,,,,,,,,,,,,,,3,,,,,1.138
6.5759386,46.5414955,0,0,262,485.016,2020/07/27 20:10:08+00,,,,,,,,,,,,,,,,,3,,,,,1.14
6.5759249,46.5415004,0,0,263,485.016,2020/07/27 20:10:09+00,,,,,,,,,,,,,,,,,3,,,,,1.14
6.5758922,46.5415098,0,0,264,485.015,2020/07/27 20:10:11+00,,,,,,,,,,,,,,,,,3,,,,,1.168
6.5758601,46.5415213,0,0,265,485.014,2020/07/27 20:10:13+00,,,,,,,,,,,,,,,,,3,,,,,1.194
6.5758419,46.5415254,0,0,266,485.013,2020/07/27 20:10:14+00,,,,,,,,,,,,,,,,,3,,,,,1.2
6.5758246,46.5415289,0,0,267,485.013,2020/07/27 20:10:15+00,,,,,,,,,,,,,,,,,3,,,,,1.201
6.5758078,46.5415336,0,0,268,485.012,2020/07/27 20:10:16+00,,,,,,,,,,,,,,,,,3,,,,,1.207
6.5757902,46.5415386,0,0,269,485.011,2020/07/27 20:10:17+00,,,,,,,,,,,,,,,,,3,,,,,1.228
6.5757603,46.54155,0,0,270,485.008,2020/07/27 20:10:19+00,,,,,,,,,,,,,,,,,3,,,,,1.24
6.5757373,46.5415608,0,0,271,485.005,2020/07/27 20:10:21+00,,,,,,,,,,,,,,,,,3,,,,,1.227
6.5757236,46.5415646,0,0,272,485.003,2020/07/27 20:10:22+00,,,,,,,,,,,,,,,,,3,,,,,1.222
6.5756882,46.5415762,0,0,273,484.999,2020/07/27 20:10:24+00,,,,,,,,,,,,,,,,,3,,,,,1.233
6.5756683,46.5415807,0,0,274,484.997,2020/07/27 20:10:25+00,,,,,,,,,,,,,,,,,3,,,,,1.242
6.5756507,46.5415828,0,0,275,484.994,2020/07/27 20:10:26+00,,,,,,,,,,,,,,,,,3,,,,,1.241
6.5756217,46.5415885,0,0,276,484.988,2020/07/27 20:10:28+00,,,,,,,,,,,,,,,,,3,,,,,1.225
6.5756093,46.5415921,0,0,277,484.985,2020/07/27 20:10:29+00,,,,,,,,,,,,,,,,,3,,,,,1.219
6.5755844,46.5416013,0,0,278,484.978,2020/07/27 20:10:31+00,,,,,,,,,,,,,,,,,2,,,,,1.215
6.5755679,46.5416076,0,0,279,484.975,2020/07/27 20:10:32+00,,,,,,,,,,,,,,,,,2,,,,,1.21
6.5755561,46.5416121,0,0,280,484.971,2020/07/27 20:10:33+00,,,,,,,,,,,,,,,,,2,,,,,1.205
6.5755259,46.54162,0,0,281,484.964,2020/07/27 20:10:35+00,,,,,,,,,,,,,,,,,2,,,,,1.194
6.5754953,46.5416255,0,0,282,484.955,2020/07/27 20:10:37+00,,,,,,,,,,,,,,,,,2,,,,,1.201
6.57548,46.5416277,0,0,283,484.95,2020/07/27 20:10:38+00,,,,,,,,,,,,,,,,,2,,,,,1.196
6.575456,46.5416356,0,0,284,484.941,2020/07/27 20:10:40+00,,,,,,,,,,,,,,,,,2,,,,,1.162
6.5754325,46.5416449,0,0,285,484.932,2020/07/27 20:10:42+00,,,,,,,,,,,,,,,,,2,,,,,1.126
6.5753998,46.5416546,0,0,286,484.921,2020/07/27 20:10:44+00,,,,,,,,,,,,,,,,,2,,,,,1.126
6.5753701,46.5416664,0,0,287,484.91,2020/07/27 20:10:46+00,,,,,,,,,,,,,,,,,2,,,,,1.133
6.5753583,46.5416725,0,0,288,484.904,2020/07/27 20:10:47+00,,,,,,,,,,,,,,,,,2,,,,,1.121
6.575331,46.5416807,0,0,289,484.892,2020/07/27 20:10:49+00,,,,,,,,,,,,,,,,,2,,,,,1.103
6.5753015,46.5416881,0,0,290,484.878,2020/07/27 20:10:51+00,,,,,,,,,,,,,,,,,3,,,,,1.109
6.5752837,46.5416915,0,0,291,484.871,2020/07/27 20:10:52+00,,,,,,,,,,,,,,,,,3,,,,,1.108
6.5752483,46.5416999,0,0,292,484.857,2020/07/27 20:10:54+00,,,,,,,,,,,,,,,,,2,,,,,1.108
6.57521,46.54171,0,0,293,484.843,2020/07/27 20:10:56+00,,,,,,,,,,,,,,,,,2,,,,,1.118
6.5751816,46.5417192,0,0,294,484.83,2020/07/27 20:10:58+00,,,,,,,,,,,,,,,,,3,,,,,1.125
6.5751671,46.5417234,0,0,295,484.824,2020/07/27 20:10:59+00,,,,,,,,,,,,,,,,,3,,,,,1.126
6.5751421,46.5417314,0,0,296,484.811,2020/07/27 20:11:01+00,,,,,,,,,,,,,,,,,3,,,,,1.098
6.5751158,46.5417384,0,0,297,484.798,2020/07/27 20:11:03+00,,,,,,,,,,,,,,,,,3,,,,,1.1
6.5750906,46.5417499,0,0,298,484.786,2020/07/27 20:11:05+00,,,,,,,,,,,,,,,,,3,,,,,1.134
6.575082,46.5417562,0,0,299,484.779,2020/07/27 20:11:06+00,,,,,,,,,,,,,,,,,3,,,,,1.138
6.5750527,46.5417605,0,0,300,484.767,2020/07/27 20:11:08+00,,,,,,,,,,,,,,,,,3,,,,,1.148
6.5750166,46.5417647,0,0,301,484.754,2020/07/27 20:11:10+00,,,,,,,,,,,,,,,,,3,,,,,1.166
6.5749963,46.5417677,0,0,302,484.748,2020/07/27 20:11:11+00,,,,,,,,,,,,,,,,,3,,,,,1.161
6.5749636,46.5417747,0,0,303,484.736,2020/07/27 20:11:13+00,,,,,,,,,,,,,,,,,3,,,,,1.141
6.5749363,46.541787,0,0,304,484.724,2020/07/27 20:11:15+00,,,,,,,,,,,,,,,,,3,,,,,1.118
6.5749039,46.5417954,0,0,305,484.713,2020/07/27 20:11:17+00,,,,,,,,,,,,,,,,,3,,,,,1.124
6.5748759,46.5418067,0,0,306,484.703,2020/07/27 20:11:19+00,,,,,,,,,,,,,,,,,3,,,,,1.114
6.5748638,46.5418125,0,0,307,484.697,2020/07/27 20:11:20+00,,,,,,,,,,,,,,,,,3,,,,,1.111
6.574837,46.541821,0,0,308,484.688,2020/07/27 20:11:22+00,,,,,,,,,,,,,,,,,3,,,,,1.115
6.5748051,46.5418347,0,0,309,484.679,2020/07/27 20:11:24+00,,,,,,,,,,,,,,,,,3,,,,,1.17
6.5747733,46.5418451,0,0,310,484.668,2020/07/27 20:11:26+00,,,,,,,,,,,,,,,,,3,,,,,1.199
6.5747562,46.5418508,0,0,311,484.663,2020/07/27 20:11:27+00,,,,,,,,,,,,,,,,,3,,,,,1.202
6.5747146,46.5418578,0,0,312,484.651,2020/07/27 20:11:29+00,,,,,,,,,,,,,,,,,3,,,,,1.199
6.5746905,46.5418618,0,0,313,484.646,2020/07/27 20:11:30+00,,,,,,,,,,,,,,,,,3,,,,,1.207
6.5746701,46.5418656,0,0,314,484.64,2020/07/27 20:11:31+00,,,,,,,,,,,,,,,,,3,,,,,1.205
6.5746371,46.5418748,0,0,315,484.627,2020/07/27 20:11:33+00,,,,,,,,,,,,,,,,,3,,,,,1.192
6.574624,46.5418808,0,0,316,484.62,2020/07/27 20:11:34+00,,,,,,,,,,,,,,,,,3,,,,,1.184
6.5746109,46.5418882,0,0,317,484.613,2020/07/27 20:11:35+00,,,,,,,,,,,,,,,,,3,,,,,1.172
6.5745796,46.5419001,0,0,318,484.6,2020/07/27 20:11:37+00,,,,,,,,,,,,,,,,,3,,,,,1.161
6.5745498,46.5419121,0,0,319,484.587,2020/07/27 20:11:39+00,,,,,,,,,,,,,,,,,3,,,,,1.168
6.5745229,46.5419238,0,0,320,484.574,2020/07/27 20:11:41+00,,,,,,,,,,,,,,,,,3,,,,,1.165
6.5744894,46.5419325,0,0,321,484.561,2020/07/27 20:11:43+00,,,,,,,,,,,,,,,,,3,,,,,1.153
6.5744595,46.5419412,0,0,322,484.548,2020/07/27 20:11:45+00,,,,,,,,,,,,,,,,,3,,,,,1.14
6.5744275,46.5419496,0,0,323,484.534,2020/07/27 20:11:47+00,,,,,,,,,,,,,,,,,2,,,,,1.114
6.5743959,46.5419582,0,0,324,484.521,2020/07/27 20:11:49+00,,,,,,,,,,,,,,,,,2,,,,,1.076
6.5743907,46.5419602,0,0,325,484.514,2020/07/27 20:11:50+00,,,,,,,,,,,,,,,,,2,,,,,1.036
6.5743786,46.5419618,0,0,326,484.5,2020/07/27 20:11:52+00,,,,,,,,,,,,,,,,,2,,,,,0.584
6.5743709,46.5419596,0,0,327,484.493,2020/07/27 20:11:53+00,,,,,,,,,,,,,,,,,2,,,,,0.499
6.5743534,46.5419439,0,0,328,484.477,2020/07/27 20:11:55+00,,,,,,,,,,,,,,,,,2,,,,,0.396
6.5743436,46.5419253,0,0,329,484.463,2020/07/27 20:11:57+00,,,,,,,,,,,,,,,,,2,,,,,0.734
6.5743375,46.541911,0,0,330,484.456,2020/07/27 20:11:58+00,,,,,,,,,,,,,,,,,3,,,,,0.969
6.5743251,46.5418813,0,0,331,484.442,2020/07/27 20:12:00+00,,,,,,,,,,,,,,,,,3,,,,,1.116
6.5743171,46.541867,0,0,332,484.434,2020/07/27 20:12:01+00,,,,,,,,,,,,,,,,,3,,,,,1.093
6.5742963,46.5418443,0,0,333,484.416,2020/07/27 20:12:03+00,,,,,,,,,,,,,,,,,3,,,,,1.052
6.5742766,46.5418172,0,0,334,484.394,2020/07/27 20:12:05+00,,,,,,,,,,,,,,,,,3,,,,,1.043
6.5742584,46.5417928,0,0,335,484.37,2020/07/27 20:12:07+00,,,,,,,,,,,,,,,,,3,,,,,1.017
6.5742531,46.5417826,0,0,336,484.358,2020/07/27 20:12:08+00,,,,,,,,,,,,,,,,,3,,,,,1.023
6.5742313,46.541755,0,0,337,484.334,2020/07/27 20:12:10+00,,,,,,,,,,,,,,,,,3,,,,,1.055
6.5742219,46.5417445,0,0,338,484.322,2020/07/27 20:12:11+00,,,,,,,,,,,,,,,,,3,,,,,1.048
6.5742064,46.54173,0,0,339,484.298,2020/07/27 20:12:13+00,,,,,,,,,,,,,,,,,3,,,,,1.008
6.5741956,46.5417242,0,0,340,484.286,2020/07/27 20:12:14+00,,,,,,,,,,,,,,,,,4,,,,,0.977
6.5741861,46.5417198,0,0,341,484.275,2020/07/27 20:12:15+00,,,,,,,,,,,,,,,,,4,,,,,0.946
6.5741628,46.5417067,0,0,342,484.252,2020/07/27 20:12:17+00,,,,,,,,,,,,,,,,,4,,,,,0.919
6.5741489,46.5416962,0,0,343,484.24,2020/07/27 20:12:18+00,,,,,,,,,,,,,,,,,4,,,,,0.928
6.5741263,46.5416738,0,0,344,484.217,2020/07/27 20:12:20+00,,,,,,,,,,,,,,,,,4,,,,,0.947
6.5741144,46.5416642,0,0,345,484.206,2020/07/27 20:12:21+00,,,,,,,,,,,,,,,,,4,,,,,0.933
6.5740927,46.541642,0,0,346,484.184,2020/07/27 20:12:23+00,,,,,,,,,,,,,,,,,4,,,,,0.951
6.5740799,46.5416246,0,0,347,484.162,2020/07/27 20:12:25+00,,,,,,,,,,,,,,,,,4,,,,,0.972
6.5740754,46.5416141,0,0,348,484.152,2020/07/27 20:12:26+00,,,,,,,,,,,,,,,,,4,,,,,0.966
6.5740716,46.5416055,0,0,349,484.132,2020/07/27 20:12:28+00,,,,,,,,,,,,,,,,,4,,,,,0.693
6.5740717,46.541604,0,0,350,484.123,2020/07/27 20:12:29+00,,,,,,,,,,,,,,,,,4,,,,,0.51
6.5740795,46.5416036,0,0,351,484.104,2020/07/27 20:12:31+00,,,,,,,,,,,,,,,,,4,,,,,0.331
6.5740893,46.5416035,0,0,352,484.094,2020/07/27 20:12:32+00,,,,,,,,,,,,,,,,,4,,,,,0.387
6.5741251,46.5416039,0,0,353,484.072,2020/07/27 20:12:34+00,,,,,,,,,,,,,,,,,4,,,,,1.041
6.5741691,46.5416048,0,0,354,484.051,2020/07/27 20:12:36+00,,,,,,,,,,,,,,,,,4,,,,,1.306
6.5742169,46.5416155,0,0,355,484.03,2020/07/27 20:12:38+00,,,,,,,,,,,,,,,,,3,,,,,1.337
6.5742358,46.5416196,0,0,356,484.02,2020/07/27 20:12:39+00,,,,,,,,,,,,,,,,,3,,,,,1.337
6.5742513,46.5416236,0,0,357,484.01,2020/07/27 20:12:40+00,,,,,,,,,,,,,,,,,3,,,,,1.311
6.5742722,46.5416327,0,0,358,483.991,2020/07/27 20:12:42+00,,,,,,,,,,,,,,,,,3,,,,,1.229
6.5742815,46.5416368,0,0,359,483.981,2020/07/27 20:12:43+00,,,,,,,,,,,,,,,,,3,,,,,1.187
6.5742883,46.5416396,0,0,360,483.972,2020/07/27 20:12:44+00,,,,,,,,,,,,,,,,,3,,,,,1.155
6.5743014,46.5416455,0,0,361,483.953,2020/07/27 20:12:46+00,,,,,,,,,,,,,,,,,3,,,,,1.078
6.5743085,46.5416531,0,0,362,483.934,2020/07/27 20:12:48+00,,,,,,,,,,,,,,,,,3,,,,,1.022
6.574312,46.5416631,0,0,363,483.925,2020/07/27 20:12:49+00,,,,,,,,,,,,,,,,,3,,,,,1.017
6.5743189,46.5416831,0,0,364,483.914,2020/07/27 20:12:51+00,,,,,,,,,,,,,,,,,3,,,,,0.068
6.5743129,46.5416957,0,0,365,483.893,2020/07/27 20:12:53+00,,,,,,,,,,,,,,,,,4,,,,,0.49
6.5743126,46.5417098,0,0,366,483.883,2020/07/27 20:12:54+00,,,,,,,,,,,,,,,,,4,,,,,0.635
6.5743091,46.5417327,0,0,367,483.861,2020/07/27 20:12:56+00,,,,,,,,,,,,,,,,,4,,,,,0.787
6.5742991,46.5417636,0,0,368,483.839,2020/07/27 20:12:58+00,,,,,,,,,,,,,,,,,4,,,,,0.837
6.5743006,46.5417847,0,0,369,483.817,2020/07/27 20:13:00+00,,,,,,,,,,,,,,,,,4,,,,,0.869
6.5743025,46.5418067,0,0,370,483.794,2020/07/27 20:13:02+00,,,,,,,,,,,,,,,,,4,,,,,0.86
6.5743132,46.5418332,0,0,371,483.77,2020/07/27 20:13:04+00,,,,,,,,,,,,,,,,,4,,,,,0.856
6.5743181,46.5418457,0,0,372,483.758,2020/07/27 20:13:05+00,,,,,,,,,,,,,,,,,4,,,,,0.876
6.5743305,46.5418789,0,0,373,483.735,2020/07/27 20:13:07+00,,,,,,,,,,,,,,,,,4,,,,,0.912
6.5743357,46.5419072,0,0,374,483.712,2020/07/27 20:13:09+00,,,,,,,,,,,,,,,,,3,,,,,0.944
6.5743373,46.5419255,0,0,375,483.7,2020/07/27 20:13:10+00,,,,,,,,,,,,,,,,,3,,,,,0.955
6.57434,46.5419561,0,0,376,483.677,2020/07/27 20:13:12+00,,,,,,,,,,,,,,,,,3,,,,,1.021
6.574349,46.5419878,0,0,377,483.655,2020/07/27 20:13:14+00,,,,,,,,,,,,,,,,,3,,,,,1.055
6.5743528,46.5420161,0,0,378,483.631,2020/07/27 20:13:16+00,,,,,,,,,,,,,,,,,3,,,,,1.087
6.5743548,46.542031,0,0,379,483.62,2020/07/27 20:13:17+00,,,,,,,,,,,,,,,,,3,,,,,1.116
6.5743687,46.5420562,0,0,380,483.597,2020/07/27 20:13:19+00,,,,,,,,,,,,,,,,,3,,,,,1.116
6.5743659,46.5420829,0,0,381,483.574,2020/07/27 20:13:21+00,,,,,,,,,,,,,,,,,3,,,,,1.16
6.5743643,46.5420975,0,0,382,483.562,2020/07/27 20:13:22+00,,,,,,,,,,,,,,,,,3,,,,,1.162
6.5743659,46.5421193,0,0,383,483.537,2020/07/27 20:13:24+00,,,,,,,,,,,,,,,,,3,,,,,1.163
6.5743688,46.5421322,0,0,384,483.525,2020/07/27 20:13:25+00,,,,,,,,,,,,,,,,,3,,,,,1.151
6.5743762,46.542155,0,0,385,483.5,2020/07/27 20:13:27+00,,,,,,,,,,,,,,,,,3,,,,,1.166
6.5743809,46.5421847,0,0,386,483.474,2020/07/27 20:13:29+00,,,,,,,,,,,,,,,,,3,,,,,1.211
6.5743912,46.5422149,0,0,387,483.447,2020/07/27 20:13:31+00,,,,,,,,,,,,,,,,,3,,,,,1.246
6.5743967,46.5422343,0,0,388,483.42,2020/07/27 20:13:33+00,,,,,,,,,,,,,,,,,3,,,,,1.206
6.5744016,46.5422385,0,0,389,483.406,2020/07/27 20:13:34+00,,,,,,,,,,,,,,,,,3,,,,,1.187
6.5744148,46.5422492,0,0,390,483.38,2020/07/27 20:13:36+00,,,,,,,,,,,,,,,,,3,,,,,0.816
6.574444,46.5422565,0,0,391,483.356,2020/07/27 20:13:38+00,,,,,,,,,,,,,,,,,3,,,,,0.81
6.574465,46.5422594,0,0,392,483.345,2020/07/27 20:13:39+00,,,,,,,,,,,,,,,,,3,,,,,0.9
6.574506,46.5422601,0,0,393,483.325,2020/07/27 20:13:41+00,,,,,,,,,,,,,,,,,3,,,,,1.023
6.5745231,46.5422581,0,0,394,483.316,2020/07/27 20:13:42+00,,,,,,,,,,,,,,,,,3,,,,,1.086
6.5745413,46.5422559,0,0,395,483.307,2020/07/27 20:13:43+00,,,,,,,,,,,,,,,,,3,,,,,1.067
6.5745582,46.5422514,0,0,396,483.289,2020/07/27 20:13:45+00,,,,,,,,,,,,,,,,,3,,,,,1.046
6.5745838,46.5422431,0,0,397,483.271,2020/07/27 20:13:47+00,,,,,,,,,,,,,,,,,3,,,,,1.096
6.5746169,46.5422298,0,0,398,483.254,2020/07/27 20:13:49+00,,,,,,,,,,,,,,,,,3,,,,,1.138
6.5746341,46.5422227,0,0,399,483.245,2020/07/27 20:13:50+00,,,,,,,,,,,,,,,,,3,,,,,1.161
6.5746699,46.5422099,0,0,400,483.228,2020/07/27 20:13:52+00,,,,,,,,,,,,,,,,,3,,,,,1.174
6.5747075,46.5422033,0,0,401,483.211,2020/07/27 20:13:54+00,,,,,,,,,,,,,,,,,3,,,,,1.161
6.5747353,46.5422001,0,0,402,483.194,2020/07/27 20:13:56+00,,,,,,,,,,,,,,,,,3,,,,,1.141
6.57475,46.5421955,0,0,403,483.187,2020/07/27 20:13:57+00,,,,,,,,,,,,,,,,,3,,,,,1.13
6.5747754,46.5421874,0,0,404,483.172,2020/07/27 20:13:59+00,,,,,,,,,,,,,,,,,3,,,,,1.085
6.5747895,46.5421848,0,0,405,483.166,2020/07/27 20:14:00+00,,,,,,,,,,,,,,,,,3,,,,,1.058
6.5748189,46.5421769,0,0,406,483.152,2020/07/27 20:14:02+00,,,,,,,,,,,,,,,,,3,,,,,1.041
6.5748547,46.5421612,0,0,407,483.14,2020/07/27 20:14:04+00,,,,,,,,,,,,,,,,,3,,,,,1.076
6.5748894,46.5421484,0,0,408,483.129,2020/07/27 20:14:06+00,,,,,,,,,,,,,,,,,3,,,,,1.116
6.5749099,46.5421378,0,0,409,483.119,2020/07/27 20:14:08+00,,,,,,,,,,,,,,,,,3,,,,,1.113
6.574933,46.5421275,0,0,410,483.11,2020/07/27 20:14:10+00,,,,,,,,,,,,,,,,,3,,,,,1.098
6.5749442,46.5421242,0,0,411,483.106,2020/07/27 20:14:11+00,,,,,,,,,,,,,,,,,3,,,,,1.083
6.5749614,46.5421194,0,0,412,483.1,2020/07/27 20:14:13+00,,,,,,,,,,,,,,,,,3,,,,,1.04
6.5749862,46.542114,0,0,413,483.094,2020/07/27 20:14:15+00,,,,,,,,,,,,,,,,,3,,,,,0.612
6.5750002,46.542111,0,0,414,483.094,2020/07/27 20:14:17+00,,,,,,,,,,,,,,,,,3,,,,,0.373
6.5750015,46.542111,0,0,415,483.093,2020/07/27 20:14:18+00,,,,,,,,,,,,,,,,,3,,,,,0.023
6.5750038,46.5421123,0,0,416,483.093,2020/07/27 20:14:20+00,,,,,,,,,,,,,,,,,3,,,,,0.239
6.5750072,46.5421179,0,0,417,483.088,2020/07/27 20:14:22+00,,,,,,,,,,,,,,,,,3,,,,,0.236
6.575009,46.5421425,0,0,418,483.081,2020/07/27 20:14:24+00,,,,,,,,,,,,,,,,,3,,,,,0.465
6.5750065,46.542167,0,0,419,483.071,2020/07/27 20:14:26+00,,,,,,,,,,,,,,,,,3,,,,,0.608
6.5750088,46.5421826,0,0,420,483.06,2020/07/27 20:14:28+00,,,,,,,,,,,,,,,,,3,,,,,0.56
6.5750019,46.5421904,0,0,421,483.054,2020/07/27 20:14:29+00,,,,,,,,,,,,,,,,,3,,,,,0.518
6.574996,46.5421947,0,0,422,483.048,2020/07/27 20:14:30+00,,,,,,,,,,,,,,,,,3,,,,,0.453
6.5749833,46.5421975,0,0,423,483.04,2020/07/27 20:14:32+00,,,,,,,,,,,,,,,,,3,,,,,0.274
6.5749775,46.5422,0,0,424,483.032,2020/07/27 20:14:33+00,,,,,,,,,,,,,,,,,3,,,,,0.321
6.5749726,46.5422017,0,0,425,483.023,2020/07/27 20:14:35+00,,,,,,,,,,,,,,,,,3,,,,,0.308
6.5749678,46.5422005,0,0,426,483.02,2020/07/27 20:14:37+00,,,,,,,,,,,,,,,,,3,,,,,0.007
6.5749675,46.5422002,0,0,427,483.019,2020/07/27 20:14:38+00,,,,,,,,,,,,,,,,,3,,,,,0.011
6.5749669,46.5421996,0,0,428,483.017,2020/07/27 20:14:40+00,,,,,,,,,,,,,,,,,3,,,,,0.035
6.5749653,46.5421981,0,0,429,483.016,2020/07/27 20:14:41+00,,,,,,,,,,,,,,,,,3,,,,,0.052
6.5749626,46.5421975,0,0,430,483.013,2020/07/27 20:14:43+00,,,,,,,,,,,,,,,,,3,,,,,0.051
6.5749616,46.5421975,0,0,431,483.001,2020/07/27 20:14:44+00,,,,,,,,,,,,,,,,,3,,,,,0.188
6.5749604,46.542198,0,0,432,482.999,2020/07/27 20:14:46+00,,,,,,,,,,,,,,,,,3,,,,,0.039
6.5749599,46.5421983,0,0,433,482.996,2020/07/27 20:14:48+00,,,,,,,,,,,,,,,,,3,,,,,0.015
6.5749598,46.5421981,0,0,434,482.995,2020/07/27 20:14:49+00,,,,,,,,,,,,,,,,,3,,,,,0.036
6.5749594,46.5421982,0,0,435,482.994,2020/07/27 20:14:50+00,,,,,,,,,,,,,,,,,3,,,,,0.032
6.5749591,46.542198,0,0,436,482.992,2020/07/27 20:14:51+00,,,,,,,,,,,,,,,,,3,,,,,0.03
6.5749584,46.5421978,0,0,437,482.989,2020/07/27 20:14:53+00,,,,,,,,,,,,,,,,,3,,,,,0.027
1 X Y track_fid track_seg_id track_seg_point_id ele time magvar geoidheight name cmt desc src link1_href link1_text link1_type link2_href link2_text link2_type sym type fix sat hdop vdop pdop ageofdgpsdata dgpsid speed
2 6.5749532 46.5421696 0 0 0 469.284 2020/07/27 20:03:27+00 6
3 6.5749481 46.542168 0 0 1 470.263 2020/07/27 20:03:28+00 6
4 6.5749432 46.5421667 0 0 2 470.876 2020/07/27 20:03:29+00 6
5 6.5749391 46.5421651 0 0 3 471.714 2020/07/27 20:03:30+00 6
6 6.5749339 46.5421646 0 0 4 472.729 2020/07/27 20:03:31+00 6
7 6.5749303 46.5421691 0 0 5 474.259 2020/07/27 20:03:33+00 4
8 6.5749319 46.5421729 0 0 6 475.056 2020/07/27 20:03:34+00 4
9 6.5749337 46.5421804 0 0 7 476.765 2020/07/27 20:03:36+00 4
10 6.574935 46.5421826 0 0 8 476.974 2020/07/27 20:03:37+00 6
11 6.5749267 46.5421837 0 0 9 477.749 2020/07/27 20:03:38+00 6
12 6.5749192 46.5421869 0 0 10 478.193 2020/07/27 20:03:40+00 6
13 6.5749149 46.5421879 0 0 11 478.808 2020/07/27 20:03:41+00 6
14 6.5749085 46.5421868 0 0 12 479.567 2020/07/27 20:03:43+00 6
15 6.5749067 46.5421885 0 0 13 480.043 2020/07/27 20:03:45+00 4
16 6.5749067 46.5421885 0 0 14 480.335 2020/07/27 20:03:46+00 4
17 6.5749067 46.5421885 0 0 15 480.763 2020/07/27 20:03:48+00 6
18 6.5749067 46.5421885 0 0 16 480.957 2020/07/27 20:03:50+00 6
19 6.5749067 46.5421885 0 0 17 480.958 2020/07/27 20:03:51+00 6
20 6.5749067 46.5421885 0 0 18 480.962 2020/07/27 20:03:53+00 4
21 6.5749067 46.5421885 0 0 19 480.964 2020/07/27 20:03:54+00 6
22 6.5749067 46.5421885 0 0 20 480.967 2020/07/27 20:03:55+00 6
23 6.5749067 46.5421885 0 0 21 480.973 2020/07/27 20:03:57+00 6
24 6.5749067 46.5421885 0 0 22 480.977 2020/07/27 20:03:58+00 4
25 6.5749067 46.5421885 0 0 23 480.986 2020/07/27 20:04:00+00 4
26 6.5749067 46.5421885 0 0 24 480.996 2020/07/27 20:04:02+00 4
27 6.5749067 46.5421885 0 0 25 481.006 2020/07/27 20:04:04+00 4
28 6.5749067 46.5421885 0 0 26 481.011 2020/07/27 20:04:05+00 4
29 6.5749067 46.5421885 0 0 27 481.023 2020/07/27 20:04:07+00 4
30 6.5749067 46.5421885 0 0 28 481.034 2020/07/27 20:04:09+00 4
31 6.5749067 46.5421885 0 0 29 481.04 2020/07/27 20:04:10+00 4
32 6.5749067 46.5421885 0 0 30 481.046 2020/07/27 20:04:11+00 4
33 6.5749067 46.5421885 0 0 31 481.058 2020/07/27 20:04:13+00 4
34 6.5749067 46.5421885 0 0 32 481.064 2020/07/27 20:04:14+00 4
35 6.5749067 46.5421885 0 0 33 481.076 2020/07/27 20:04:16+00 4
36 6.5749067 46.5421885 0 0 34 481.089 2020/07/27 20:04:18+00 4
37 6.5749067 46.5421885 0 0 35 481.095 2020/07/27 20:04:19+00 4
38 6.5749067 46.5421885 0 0 36 481.108 2020/07/27 20:04:21+00 4
39 6.5749067 46.5421885 0 0 37 481.12 2020/07/27 20:04:23+00 6
40 6.5749067 46.5421885 0 0 38 481.126 2020/07/27 20:04:24+00 6
41 6.5749067 46.5421885 0 0 39 481.189 2020/07/27 20:04:26+00 4
42 6.574916 46.5421767 0 0 40 481.33 2020/07/27 20:04:28+00 3 0.172
43 6.5749242 46.5421726 0 0 41 481.495 2020/07/27 20:04:30+00 3 0.165
44 6.5749221 46.5421721 0 0 42 481.505 2020/07/27 20:04:31+00 3 0.045
45 6.5749117 46.5421737 0 0 43 481.687 2020/07/27 20:04:33+00 3 0.357
46 6.5749114 46.5421823 0 0 44 481.781 2020/07/27 20:04:34+00 3 0.481
47 6.5749065 46.5421877 0 0 45 481.874 2020/07/27 20:04:35+00 3 0.4
48 6.5749145 46.5422018 0 0 46 481.959 2020/07/27 20:04:37+00 3 0.288
49 6.5749111 46.5422034 0 0 47 482.034 2020/07/27 20:04:38+00 4 0.256
50 6.5749135 46.5422054 0 0 48 482.098 2020/07/27 20:04:39+00 4 0.279
51 6.574909 46.5422101 0 0 49 482.183 2020/07/27 20:04:41+00 4 0.172
52 6.5749098 46.5422149 0 0 50 482.232 2020/07/27 20:04:42+00 4 0.207
53 6.5749176 46.5422284 0 0 51 482.307 2020/07/27 20:04:44+00 4 0.464
54 6.5749288 46.5422366 0 0 52 482.332 2020/07/27 20:04:45+00 4 0.498
55 6.5749392 46.5422407 0 0 53 482.355 2020/07/27 20:04:46+00 4 0.576
56 6.5749569 46.5422483 0 0 54 482.41 2020/07/27 20:04:48+00 4 0.737
57 6.5749707 46.5422585 0 0 55 482.457 2020/07/27 20:04:50+00 4 0.771
58 6.5749705 46.5422652 0 0 56 482.478 2020/07/27 20:04:51+00 4 0.759
59 6.5749714 46.5422775 0 0 57 482.507 2020/07/27 20:04:53+00 4 0.74
60 6.5749897 46.5422961 0 0 58 482.514 2020/07/27 20:04:55+00 4 0.717
61 6.5749984 46.5423042 0 0 59 482.512 2020/07/27 20:04:56+00 4 0.713
62 6.5750234 46.5423218 0 0 60 482.466 2020/07/27 20:04:58+00 4 0.543
63 6.5750307 46.5423296 0 0 61 482.432 2020/07/27 20:04:59+00 4 0.715
64 6.5750373 46.5423404 0 0 62 482.4 2020/07/27 20:05:00+00 4 0.835
65 6.5750542 46.5423605 0 0 63 482.325 2020/07/27 20:05:02+00 4 0.812
66 6.5750594 46.5423682 0 0 64 482.286 2020/07/27 20:05:03+00 4 0.602
67 6.5750679 46.5423802 0 0 65 482.222 2020/07/27 20:05:05+00 4 0.287
68 6.5750749 46.5423858 0 0 66 482.202 2020/07/27 20:05:07+00 4 0.048
69 6.5750737 46.5423861 0 0 67 482.197 2020/07/27 20:05:09+00 4 0.012
70 6.575073 46.5423865 0 0 68 482.159 2020/07/27 20:05:10+00 4 0.216
71 6.5750743 46.5423905 0 0 69 482.072 2020/07/27 20:05:12+00 4 0.235
72 6.5750874 46.5423988 0 0 70 481.971 2020/07/27 20:05:14+00 4 0.471
73 6.575094 46.5424028 0 0 71 481.918 2020/07/27 20:05:15+00 4 0.363
74 6.5750948 46.5424035 0 0 72 481.913 2020/07/27 20:05:16+00 4 0.237
75 6.5750952 46.542404 0 0 73 481.907 2020/07/27 20:05:17+00 4 0.014
76 6.5751046 46.5424101 0 0 74 481.817 2020/07/27 20:05:19+00 4 0.497
77 6.5751268 46.5424119 0 0 75 481.757 2020/07/27 20:05:21+00 4 0.426
78 6.5751428 46.5424095 0 0 76 481.755 2020/07/27 20:05:22+00 4 0.036
79 6.5751537 46.5424076 0 0 77 481.72 2020/07/27 20:05:23+00 4 0.306
80 6.5751596 46.5424059 0 0 78 481.713 2020/07/27 20:05:25+00 4 0.036
81 6.575171 46.5423998 0 0 79 481.672 2020/07/27 20:05:27+00 3 0.357
82 6.5751812 46.5423694 0 0 80 481.533 2020/07/27 20:05:29+00 3 0.629
83 6.5751855 46.5423521 0 0 81 481.432 2020/07/27 20:05:30+00 3 0.697
84 6.5751883 46.5423409 0 0 82 481.335 2020/07/27 20:05:31+00 3 0.717
85 6.5751812 46.5423194 0 0 83 481.126 2020/07/27 20:05:33+00 3 0.782
86 6.5751726 46.5423096 0 0 84 481.01 2020/07/27 20:05:34+00 3 0.837
87 6.5751536 46.5422885 0 0 85 480.795 2020/07/27 20:05:36+00 3 0.897
88 6.5751449 46.5422761 0 0 86 480.7 2020/07/27 20:05:37+00 3 0.953
89 6.5751249 46.5422476 0 0 87 480.494 2020/07/27 20:05:39+00 3 1.024
90 6.575112 46.5422243 0 0 88 480.279 2020/07/27 20:05:41+00 3 1.022
91 6.5751048 46.5422131 0 0 89 480.179 2020/07/27 20:05:42+00 3 1.018
92 6.5750959 46.5422021 0 0 90 480.082 2020/07/27 20:05:43+00 3 1.008
93 6.5750828 46.5421898 0 0 91 479.915 2020/07/27 20:05:45+00 3 0.994
94 6.5750674 46.542173 0 0 92 479.782 2020/07/27 20:05:47+00 3 0.974
95 6.5750494 46.5421607 0 0 93 479.671 2020/07/27 20:05:49+00 3 0.965
96 6.5750463 46.5421444 0 0 94 479.571 2020/07/27 20:05:51+00 3 0.952
97 6.5750456 46.5421381 0 0 95 479.521 2020/07/27 20:05:52+00 3 0.942
98 6.5750461 46.5421294 0 0 96 479.472 2020/07/27 20:05:53+00 3 0.915
99 6.5750462 46.5421185 0 0 97 479.387 2020/07/27 20:05:55+00 3 0.462
100 6.5750439 46.5421168 0 0 98 479.343 2020/07/27 20:05:57+00 3 0.329
101 6.5750478 46.5421143 0 0 99 479.305 2020/07/27 20:05:58+00 3 0.576
102 6.5750776 46.5420962 0 0 100 479.224 2020/07/27 20:06:00+00 3 0.869
103 6.5750897 46.5420893 0 0 101 479.183 2020/07/27 20:06:01+00 3 0.901
104 6.5751249 46.5420782 0 0 102 479.107 2020/07/27 20:06:03+00 3 0.947
105 6.5751623 46.5420666 0 0 103 479.042 2020/07/27 20:06:05+00 3 0.948
106 6.5751603 46.5420646 0 0 104 479.024 2020/07/27 20:06:06+00 3 0.947
107 6.5751752 46.5420588 0 0 105 479.006 2020/07/27 20:06:07+00 3 0.943
108 6.5752029 46.5420469 0 0 106 478.972 2020/07/27 20:06:09+00 3 0.943
109 6.5752302 46.5420342 0 0 107 478.937 2020/07/27 20:06:11+00 3 0.969
110 6.5752448 46.5420272 0 0 108 478.921 2020/07/27 20:06:12+00 3 0.974
111 6.5752707 46.5420156 0 0 109 478.89 2020/07/27 20:06:14+00 3 0.987
112 6.5752969 46.542007 0 0 110 478.87 2020/07/27 20:06:16+00 3 0.988
113 6.5753153 46.5420008 0 0 111 478.868 2020/07/27 20:06:17+00 3 0.985
114 6.5753459 46.5419882 0 0 112 478.877 2020/07/27 20:06:19+00 3 1
115 6.5753763 46.5419749 0 0 113 478.894 2020/07/27 20:06:21+00 3 1.024
116 6.5753859 46.5419703 0 0 114 478.907 2020/07/27 20:06:22+00 3 1.022
117 6.5753935 46.5419656 0 0 115 478.948 2020/07/27 20:06:24+00 3 1.013
118 6.5754183 46.541961 0 0 116 478.995 2020/07/27 20:06:26+00 3 1.002
119 6.5754218 46.5419607 0 0 117 479.022 2020/07/27 20:06:27+00 3 0.996
120 6.5754373 46.5419567 0 0 118 479.048 2020/07/27 20:06:28+00 3 0.997
121 6.5754661 46.541951 0 0 119 479.1 2020/07/27 20:06:30+00 3 0.995
122 6.5754803 46.5419483 0 0 120 479.126 2020/07/27 20:06:31+00 3 0.987
123 6.5755003 46.5419436 0 0 121 479.176 2020/07/27 20:06:33+00 3 0.987
124 6.5755325 46.5419363 0 0 122 479.224 2020/07/27 20:06:35+00 3 0.97
125 6.5755497 46.5419312 0 0 123 479.249 2020/07/27 20:06:36+00 3 0.958
126 6.5755635 46.5419256 0 0 124 479.274 2020/07/27 20:06:37+00 3 0.95
127 6.5755952 46.5419135 0 0 125 479.323 2020/07/27 20:06:39+00 3 0.94
128 6.575626 46.5418982 0 0 126 479.367 2020/07/27 20:06:41+00 3 0.921
129 6.5756447 46.5418882 0 0 127 479.39 2020/07/27 20:06:42+00 3 0.917
130 6.5756669 46.5418818 0 0 128 479.411 2020/07/27 20:06:43+00 3 0.919
131 6.5756998 46.5418766 0 0 129 479.454 2020/07/27 20:06:45+00 3 0.909
132 6.5757271 46.5418649 0 0 130 479.499 2020/07/27 20:06:47+00 3 0.934
133 6.5757443 46.5418589 0 0 131 479.521 2020/07/27 20:06:48+00 3 0.948
134 6.5757621 46.5418521 0 0 132 479.543 2020/07/27 20:06:49+00 3 0.962
135 6.5757808 46.5418412 0 0 133 479.598 2020/07/27 20:06:51+00 3 0.999
136 6.5757894 46.5418371 0 0 134 479.63 2020/07/27 20:06:52+00 3 1.017
137 6.5758225 46.5418298 0 0 135 479.692 2020/07/27 20:06:54+00 3 1.026
138 6.5758426 46.5418241 0 0 136 479.723 2020/07/27 20:06:55+00 3 1.038
139 6.575879 46.5418085 0 0 137 479.782 2020/07/27 20:06:57+00 3 1.058
140 6.5759017 46.5417965 0 0 138 479.836 2020/07/27 20:06:59+00 3 1.029
141 6.575912 46.5417925 0 0 139 479.862 2020/07/27 20:07:00+00 3 1.028
142 6.5759405 46.5417833 0 0 140 479.912 2020/07/27 20:07:02+00 3 1.043
143 6.5759555 46.541779 0 0 141 479.937 2020/07/27 20:07:03+00 3 1.058
144 6.575987 46.541769 0 0 142 479.988 2020/07/27 20:07:05+00 3 1.083
145 6.5760025 46.5417624 0 0 143 480.014 2020/07/27 20:07:06+00 3 1.096
146 6.5760331 46.5417482 0 0 144 480.066 2020/07/27 20:07:08+00 3 1.107
147 6.5760572 46.5417393 0 0 145 480.116 2020/07/27 20:07:10+00 3 1.117
148 6.5760726 46.5417338 0 0 146 480.14 2020/07/27 20:07:11+00 3 1.103
149 6.5760968 46.5417264 0 0 147 480.191 2020/07/27 20:07:13+00 3 1.072
150 6.5761247 46.5417203 0 0 148 480.245 2020/07/27 20:07:15+00 3 1.066
151 6.5761438 46.5417147 0 0 149 480.308 2020/07/27 20:07:17+00 3 1.048
152 6.5761512 46.5417121 0 0 150 480.347 2020/07/27 20:07:18+00 3 1.043
153 6.5761852 46.5417016 0 0 151 480.427 2020/07/27 20:07:20+00 3 1.056
154 6.5762019 46.5416976 0 0 152 480.468 2020/07/27 20:07:21+00 3 1.076
155 6.5762192 46.541692 0 0 153 480.51 2020/07/27 20:07:22+00 3 1.096
156 6.5762527 46.5416828 0 0 154 480.595 2020/07/27 20:07:24+00 3 1.115
157 6.5762825 46.5416745 0 0 155 480.684 2020/07/27 20:07:26+00 3 1.157
158 6.5763008 46.5416691 0 0 156 480.729 2020/07/27 20:07:27+00 3 1.173
159 6.5763308 46.5416596 0 0 157 480.824 2020/07/27 20:07:29+00 3 1.177
160 6.5763452 46.5416556 0 0 158 480.873 2020/07/27 20:07:30+00 3 1.179
161 6.5763749 46.5416468 0 0 159 480.971 2020/07/27 20:07:32+00 3 1.17
162 6.5763789 46.5416447 0 0 160 481.022 2020/07/27 20:07:33+00 3 1.166
163 6.5764162 46.541632 0 0 161 481.124 2020/07/27 20:07:35+00 3 1.179
164 6.5764197 46.5416298 0 0 162 481.179 2020/07/27 20:07:36+00 3 1.183
165 6.5764367 46.5416236 0 0 163 481.299 2020/07/27 20:07:38+00 3 1.192
166 6.5764547 46.5416181 0 0 164 481.361 2020/07/27 20:07:39+00 3 1.196
167 6.576472 46.5416128 0 0 165 481.422 2020/07/27 20:07:40+00 3 1.204
168 6.5764815 46.5416091 0 0 166 481.549 2020/07/27 20:07:42+00 3 1.213
169 6.5764987 46.5416042 0 0 167 481.612 2020/07/27 20:07:43+00 3 1.208
170 6.5765152 46.5415999 0 0 168 481.675 2020/07/27 20:07:44+00 3 1.208
171 6.5765211 46.5415982 0 0 169 481.739 2020/07/27 20:07:45+00 3 1.212
172 6.5765414 46.5415926 0 0 170 481.802 2020/07/27 20:07:46+00 3 1.211
173 6.5765503 46.5415906 0 0 171 481.934 2020/07/27 20:07:48+00 3 1.192
174 6.5765667 46.5415872 0 0 172 482.068 2020/07/27 20:07:50+00 3 1.188
175 6.5765768 46.5415853 0 0 173 482.136 2020/07/27 20:07:51+00 3 1.183
176 6.5765956 46.5415817 0 0 174 482.202 2020/07/27 20:07:52+00 3 1.172
177 6.5766304 46.5415742 0 0 175 482.333 2020/07/27 20:07:54+00 3 1.161
178 6.5766593 46.5415669 0 0 176 482.464 2020/07/27 20:07:56+00 3 1.176
179 6.5766926 46.5415629 0 0 177 482.596 2020/07/27 20:07:58+00 3 1.174
180 6.5767151 46.5415735 0 0 178 482.724 2020/07/27 20:08:00+00 3 1.137
181 6.576727 46.5415842 0 0 179 482.788 2020/07/27 20:08:01+00 3 1.133
182 6.576738 46.5416106 0 0 180 482.912 2020/07/27 20:08:03+00 3 1.176
183 6.5767424 46.5416224 0 0 181 482.972 2020/07/27 20:08:04+00 3 1.209
184 6.5767478 46.5416455 0 0 182 483.091 2020/07/27 20:08:06+00 3 1.235
185 6.5767496 46.5416541 0 0 183 483.148 2020/07/27 20:08:07+00 3 1.231
186 6.5767514 46.5416768 0 0 184 483.259 2020/07/27 20:08:09+00 3 1.237
187 6.5767525 46.5416977 0 0 185 483.363 2020/07/27 20:08:11+00 3 1.232
188 6.5767526 46.5417091 0 0 186 483.413 2020/07/27 20:08:12+00 3 1.221
189 6.5767529 46.5417195 0 0 187 483.461 2020/07/27 20:08:13+00 3 1.21
190 6.576753 46.5417426 0 0 188 483.554 2020/07/27 20:08:15+00 3 1.211
191 6.5767529 46.5417548 0 0 189 483.599 2020/07/27 20:08:16+00 3 1.217
192 6.5767508 46.5417781 0 0 190 483.685 2020/07/27 20:08:18+00 3 1.215
193 6.5767445 46.54179 0 0 191 483.768 2020/07/27 20:08:20+00 3 0.727
194 6.5767427 46.5417883 0 0 192 483.808 2020/07/27 20:08:21+00 3 0.457
195 6.5767429 46.5417843 0 0 193 483.811 2020/07/27 20:08:22+00 3 0.283
196 6.5767427 46.5417846 0 0 194 483.819 2020/07/27 20:08:24+00 3 0.01
197 6.5767428 46.5417846 0 0 195 483.823 2020/07/27 20:08:25+00 3 0.012
198 6.5767428 46.5417845 0 0 196 483.831 2020/07/27 20:08:27+00 2 0.004
199 6.5767429 46.5417844 0 0 197 483.834 2020/07/27 20:08:28+00 2 0.019
200 6.5767425 46.5417842 0 0 198 483.874 2020/07/27 20:08:30+00 2 0.218
201 6.5767383 46.5417898 0 0 199 483.943 2020/07/27 20:08:32+00 2 0.525
202 6.5767433 46.541795 0 0 200 483.975 2020/07/27 20:08:33+00 2 0.609
203 6.5767536 46.5417975 0 0 201 484.007 2020/07/27 20:08:34+00 3 0.641
204 6.5767602 46.5417906 0 0 202 484.068 2020/07/27 20:08:36+00 3 0.813
205 6.5767593 46.5417717 0 0 203 484.125 2020/07/27 20:08:38+00 3 0.933
206 6.5767648 46.541751 0 0 204 484.18 2020/07/27 20:08:40+00 3 0.992
207 6.5767665 46.5417371 0 0 205 484.207 2020/07/27 20:08:41+00 3 1.014
208 6.5767648 46.5417275 0 0 206 484.234 2020/07/27 20:08:42+00 2 1.031
209 6.5767629 46.5417159 0 0 207 484.26 2020/07/27 20:08:43+00 2 1.045
210 6.5767638 46.5416916 0 0 208 484.311 2020/07/27 20:08:45+00 2 1.073
211 6.5767653 46.5416799 0 0 209 484.335 2020/07/27 20:08:46+00 2 1.078
212 6.5767651 46.5416575 0 0 210 484.382 2020/07/27 20:08:48+00 2 1.095
213 6.5767627 46.5416445 0 0 211 484.404 2020/07/27 20:08:49+00 2 1.107
214 6.5767603 46.5416302 0 0 212 484.426 2020/07/27 20:08:50+00 2 1.118
215 6.5767536 46.541606 0 0 213 484.469 2020/07/27 20:08:52+00 2 1.146
216 6.5767512 46.5415813 0 0 214 484.51 2020/07/27 20:08:54+00 2 1.161
217 6.576754 46.5415525 0 0 215 484.55 2020/07/27 20:08:56+00 2 1.181
218 6.5767524 46.541525 0 0 216 484.588 2020/07/27 20:08:58+00 2 1.194
219 6.5767498 46.5415141 0 0 217 484.606 2020/07/27 20:08:59+00 2 1.195
220 6.5767547 46.5414893 0 0 218 484.639 2020/07/27 20:09:01+00 2 1.207
221 6.5767499 46.5414666 0 0 219 484.67 2020/07/27 20:09:03+00 2 1.22
222 6.5767469 46.5414572 0 0 220 484.685 2020/07/27 20:09:04+00 2 1.223
223 6.5767409 46.5414379 0 0 221 484.712 2020/07/27 20:09:06+00 2 1.233
224 6.5767362 46.541418 0 0 222 484.736 2020/07/27 20:09:08+00 2 1.246
225 6.5767346 46.5414079 0 0 223 484.747 2020/07/27 20:09:09+00 2 1.241
226 6.5767305 46.5413977 0 0 224 484.758 2020/07/27 20:09:10+00 2 1.235
227 6.5767288 46.5413883 0 0 225 484.768 2020/07/27 20:09:11+00 2 1.228
228 6.57672 46.5413663 0 0 226 484.786 2020/07/27 20:09:13+00 2 1.22
229 6.5767165 46.5413562 0 0 227 484.794 2020/07/27 20:09:14+00 2 1.227
230 6.576706 46.5413371 0 0 228 484.809 2020/07/27 20:09:16+00 2 1.21
231 6.5766875 46.5413221 0 0 229 484.821 2020/07/27 20:09:18+00 2 1.193
232 6.5766624 46.5413184 0 0 230 484.834 2020/07/27 20:09:20+00 2 1.15
233 6.5766409 46.541318 0 0 231 484.847 2020/07/27 20:09:22+00 2 1.085
234 6.5766228 46.5413216 0 0 232 484.861 2020/07/27 20:09:24+00 2 1.033
235 6.5766056 46.5413233 0 0 233 484.868 2020/07/27 20:09:25+00 2 1.017
236 6.5765897 46.541326 0 0 234 484.875 2020/07/27 20:09:26+00 3 1.009
237 6.5765623 46.5413251 0 0 235 484.89 2020/07/27 20:09:28+00 3 0.992
238 6.5765295 46.5413269 0 0 236 484.902 2020/07/27 20:09:30+00 3 0.987
239 6.5765192 46.5413293 0 0 237 484.908 2020/07/27 20:09:31+00 3 0.967
240 6.5765091 46.5413304 0 0 238 484.914 2020/07/27 20:09:32+00 3 0.944
241 6.576478 46.5413327 0 0 239 484.925 2020/07/27 20:09:34+00 3 0.927
242 6.5764626 46.5413352 0 0 240 484.93 2020/07/27 20:09:35+00 3 0.946
243 6.5764261 46.5413397 0 0 241 484.938 2020/07/27 20:09:37+00 3 0.968
244 6.5763869 46.5413379 0 0 242 484.944 2020/07/27 20:09:39+00 3 0.953
245 6.5763656 46.5413323 0 0 243 484.948 2020/07/27 20:09:40+00 3 0.948
246 6.5763442 46.5413311 0 0 244 484.951 2020/07/27 20:09:41+00 3 0.947
247 6.5763234 46.5413328 0 0 245 484.954 2020/07/27 20:09:42+00 3 0.954
248 6.5763023 46.5413342 0 0 246 484.957 2020/07/27 20:09:43+00 3 0.979
249 6.5762683 46.5413457 0 0 247 484.963 2020/07/27 20:09:45+00 3 1.003
250 6.5762493 46.5413497 0 0 248 484.965 2020/07/27 20:09:46+00 3 1.018
251 6.5762184 46.5413621 0 0 249 484.971 2020/07/27 20:09:48+00 3 1.018
252 6.5762072 46.5413708 0 0 250 484.974 2020/07/27 20:09:49+00 3 1.004
253 6.5761952 46.5413778 0 0 251 484.978 2020/07/27 20:09:50+00 3 0.991
254 6.5761838 46.5413861 0 0 252 484.981 2020/07/27 20:09:51+00 3 0.987
255 6.5761546 46.5414019 0 0 253 484.987 2020/07/27 20:09:53+00 3 1.013
256 6.5761253 46.5414238 0 0 254 484.994 2020/07/27 20:09:55+00 2 1.067
257 6.5760991 46.5414379 0 0 255 485 2020/07/27 20:09:57+00 2 1.097
258 6.5760719 46.5414499 0 0 256 485.005 2020/07/27 20:09:59+00 2 1.122
259 6.5760487 46.541462 0 0 257 485.009 2020/07/27 20:10:01+00 2 1.127
260 6.5760358 46.5414661 0 0 258 485.01 2020/07/27 20:10:02+00 3 1.121
261 6.5760219 46.54147 0 0 259 485.012 2020/07/27 20:10:03+00 3 1.112
262 6.5759896 46.5414795 0 0 260 485.015 2020/07/27 20:10:05+00 3 1.118
263 6.5759538 46.5414903 0 0 261 485.016 2020/07/27 20:10:07+00 3 1.138
264 6.5759386 46.5414955 0 0 262 485.016 2020/07/27 20:10:08+00 3 1.14
265 6.5759249 46.5415004 0 0 263 485.016 2020/07/27 20:10:09+00 3 1.14
266 6.5758922 46.5415098 0 0 264 485.015 2020/07/27 20:10:11+00 3 1.168
267 6.5758601 46.5415213 0 0 265 485.014 2020/07/27 20:10:13+00 3 1.194
268 6.5758419 46.5415254 0 0 266 485.013 2020/07/27 20:10:14+00 3 1.2
269 6.5758246 46.5415289 0 0 267 485.013 2020/07/27 20:10:15+00 3 1.201
270 6.5758078 46.5415336 0 0 268 485.012 2020/07/27 20:10:16+00 3 1.207
271 6.5757902 46.5415386 0 0 269 485.011 2020/07/27 20:10:17+00 3 1.228
272 6.5757603 46.54155 0 0 270 485.008 2020/07/27 20:10:19+00 3 1.24
273 6.5757373 46.5415608 0 0 271 485.005 2020/07/27 20:10:21+00 3 1.227
274 6.5757236 46.5415646 0 0 272 485.003 2020/07/27 20:10:22+00 3 1.222
275 6.5756882 46.5415762 0 0 273 484.999 2020/07/27 20:10:24+00 3 1.233
276 6.5756683 46.5415807 0 0 274 484.997 2020/07/27 20:10:25+00 3 1.242
277 6.5756507 46.5415828 0 0 275 484.994 2020/07/27 20:10:26+00 3 1.241
278 6.5756217 46.5415885 0 0 276 484.988 2020/07/27 20:10:28+00 3 1.225
279 6.5756093 46.5415921 0 0 277 484.985 2020/07/27 20:10:29+00 3 1.219
280 6.5755844 46.5416013 0 0 278 484.978 2020/07/27 20:10:31+00 2 1.215
281 6.5755679 46.5416076 0 0 279 484.975 2020/07/27 20:10:32+00 2 1.21
282 6.5755561 46.5416121 0 0 280 484.971 2020/07/27 20:10:33+00 2 1.205
283 6.5755259 46.54162 0 0 281 484.964 2020/07/27 20:10:35+00 2 1.194
284 6.5754953 46.5416255 0 0 282 484.955 2020/07/27 20:10:37+00 2 1.201
285 6.57548 46.5416277 0 0 283 484.95 2020/07/27 20:10:38+00 2 1.196
286 6.575456 46.5416356 0 0 284 484.941 2020/07/27 20:10:40+00 2 1.162
287 6.5754325 46.5416449 0 0 285 484.932 2020/07/27 20:10:42+00 2 1.126
288 6.5753998 46.5416546 0 0 286 484.921 2020/07/27 20:10:44+00 2 1.126
289 6.5753701 46.5416664 0 0 287 484.91 2020/07/27 20:10:46+00 2 1.133
290 6.5753583 46.5416725 0 0 288 484.904 2020/07/27 20:10:47+00 2 1.121
291 6.575331 46.5416807 0 0 289 484.892 2020/07/27 20:10:49+00 2 1.103
292 6.5753015 46.5416881 0 0 290 484.878 2020/07/27 20:10:51+00 3 1.109
293 6.5752837 46.5416915 0 0 291 484.871 2020/07/27 20:10:52+00 3 1.108
294 6.5752483 46.5416999 0 0 292 484.857 2020/07/27 20:10:54+00 2 1.108
295 6.57521 46.54171 0 0 293 484.843 2020/07/27 20:10:56+00 2 1.118
296 6.5751816 46.5417192 0 0 294 484.83 2020/07/27 20:10:58+00 3 1.125
297 6.5751671 46.5417234 0 0 295 484.824 2020/07/27 20:10:59+00 3 1.126
298 6.5751421 46.5417314 0 0 296 484.811 2020/07/27 20:11:01+00 3 1.098
299 6.5751158 46.5417384 0 0 297 484.798 2020/07/27 20:11:03+00 3 1.1
300 6.5750906 46.5417499 0 0 298 484.786 2020/07/27 20:11:05+00 3 1.134
301 6.575082 46.5417562 0 0 299 484.779 2020/07/27 20:11:06+00 3 1.138
302 6.5750527 46.5417605 0 0 300 484.767 2020/07/27 20:11:08+00 3 1.148
303 6.5750166 46.5417647 0 0 301 484.754 2020/07/27 20:11:10+00 3 1.166
304 6.5749963 46.5417677 0 0 302 484.748 2020/07/27 20:11:11+00 3 1.161
305 6.5749636 46.5417747 0 0 303 484.736 2020/07/27 20:11:13+00 3 1.141
306 6.5749363 46.541787 0 0 304 484.724 2020/07/27 20:11:15+00 3 1.118
307 6.5749039 46.5417954 0 0 305 484.713 2020/07/27 20:11:17+00 3 1.124
308 6.5748759 46.5418067 0 0 306 484.703 2020/07/27 20:11:19+00 3 1.114
309 6.5748638 46.5418125 0 0 307 484.697 2020/07/27 20:11:20+00 3 1.111
310 6.574837 46.541821 0 0 308 484.688 2020/07/27 20:11:22+00 3 1.115
311 6.5748051 46.5418347 0 0 309 484.679 2020/07/27 20:11:24+00 3 1.17
312 6.5747733 46.5418451 0 0 310 484.668 2020/07/27 20:11:26+00 3 1.199
313 6.5747562 46.5418508 0 0 311 484.663 2020/07/27 20:11:27+00 3 1.202
314 6.5747146 46.5418578 0 0 312 484.651 2020/07/27 20:11:29+00 3 1.199
315 6.5746905 46.5418618 0 0 313 484.646 2020/07/27 20:11:30+00 3 1.207
316 6.5746701 46.5418656 0 0 314 484.64 2020/07/27 20:11:31+00 3 1.205
317 6.5746371 46.5418748 0 0 315 484.627 2020/07/27 20:11:33+00 3 1.192
318 6.574624 46.5418808 0 0 316 484.62 2020/07/27 20:11:34+00 3 1.184
319 6.5746109 46.5418882 0 0 317 484.613 2020/07/27 20:11:35+00 3 1.172
320 6.5745796 46.5419001 0 0 318 484.6 2020/07/27 20:11:37+00 3 1.161
321 6.5745498 46.5419121 0 0 319 484.587 2020/07/27 20:11:39+00 3 1.168
322 6.5745229 46.5419238 0 0 320 484.574 2020/07/27 20:11:41+00 3 1.165
323 6.5744894 46.5419325 0 0 321 484.561 2020/07/27 20:11:43+00 3 1.153
324 6.5744595 46.5419412 0 0 322 484.548 2020/07/27 20:11:45+00 3 1.14
325 6.5744275 46.5419496 0 0 323 484.534 2020/07/27 20:11:47+00 2 1.114
326 6.5743959 46.5419582 0 0 324 484.521 2020/07/27 20:11:49+00 2 1.076
327 6.5743907 46.5419602 0 0 325 484.514 2020/07/27 20:11:50+00 2 1.036
328 6.5743786 46.5419618 0 0 326 484.5 2020/07/27 20:11:52+00 2 0.584
329 6.5743709 46.5419596 0 0 327 484.493 2020/07/27 20:11:53+00 2 0.499
330 6.5743534 46.5419439 0 0 328 484.477 2020/07/27 20:11:55+00 2 0.396
331 6.5743436 46.5419253 0 0 329 484.463 2020/07/27 20:11:57+00 2 0.734
332 6.5743375 46.541911 0 0 330 484.456 2020/07/27 20:11:58+00 3 0.969
333 6.5743251 46.5418813 0 0 331 484.442 2020/07/27 20:12:00+00 3 1.116
334 6.5743171 46.541867 0 0 332 484.434 2020/07/27 20:12:01+00 3 1.093
335 6.5742963 46.5418443 0 0 333 484.416 2020/07/27 20:12:03+00 3 1.052
336 6.5742766 46.5418172 0 0 334 484.394 2020/07/27 20:12:05+00 3 1.043
337 6.5742584 46.5417928 0 0 335 484.37 2020/07/27 20:12:07+00 3 1.017
338 6.5742531 46.5417826 0 0 336 484.358 2020/07/27 20:12:08+00 3 1.023
339 6.5742313 46.541755 0 0 337 484.334 2020/07/27 20:12:10+00 3 1.055
340 6.5742219 46.5417445 0 0 338 484.322 2020/07/27 20:12:11+00 3 1.048
341 6.5742064 46.54173 0 0 339 484.298 2020/07/27 20:12:13+00 3 1.008
342 6.5741956 46.5417242 0 0 340 484.286 2020/07/27 20:12:14+00 4 0.977
343 6.5741861 46.5417198 0 0 341 484.275 2020/07/27 20:12:15+00 4 0.946
344 6.5741628 46.5417067 0 0 342 484.252 2020/07/27 20:12:17+00 4 0.919
345 6.5741489 46.5416962 0 0 343 484.24 2020/07/27 20:12:18+00 4 0.928
346 6.5741263 46.5416738 0 0 344 484.217 2020/07/27 20:12:20+00 4 0.947
347 6.5741144 46.5416642 0 0 345 484.206 2020/07/27 20:12:21+00 4 0.933
348 6.5740927 46.541642 0 0 346 484.184 2020/07/27 20:12:23+00 4 0.951
349 6.5740799 46.5416246 0 0 347 484.162 2020/07/27 20:12:25+00 4 0.972
350 6.5740754 46.5416141 0 0 348 484.152 2020/07/27 20:12:26+00 4 0.966
351 6.5740716 46.5416055 0 0 349 484.132 2020/07/27 20:12:28+00 4 0.693
352 6.5740717 46.541604 0 0 350 484.123 2020/07/27 20:12:29+00 4 0.51
353 6.5740795 46.5416036 0 0 351 484.104 2020/07/27 20:12:31+00 4 0.331
354 6.5740893 46.5416035 0 0 352 484.094 2020/07/27 20:12:32+00 4 0.387
355 6.5741251 46.5416039 0 0 353 484.072 2020/07/27 20:12:34+00 4 1.041
356 6.5741691 46.5416048 0 0 354 484.051 2020/07/27 20:12:36+00 4 1.306
357 6.5742169 46.5416155 0 0 355 484.03 2020/07/27 20:12:38+00 3 1.337
358 6.5742358 46.5416196 0 0 356 484.02 2020/07/27 20:12:39+00 3 1.337
359 6.5742513 46.5416236 0 0 357 484.01 2020/07/27 20:12:40+00 3 1.311
360 6.5742722 46.5416327 0 0 358 483.991 2020/07/27 20:12:42+00 3 1.229
361 6.5742815 46.5416368 0 0 359 483.981 2020/07/27 20:12:43+00 3 1.187
362 6.5742883 46.5416396 0 0 360 483.972 2020/07/27 20:12:44+00 3 1.155
363 6.5743014 46.5416455 0 0 361 483.953 2020/07/27 20:12:46+00 3 1.078
364 6.5743085 46.5416531 0 0 362 483.934 2020/07/27 20:12:48+00 3 1.022
365 6.574312 46.5416631 0 0 363 483.925 2020/07/27 20:12:49+00 3 1.017
366 6.5743189 46.5416831 0 0 364 483.914 2020/07/27 20:12:51+00 3 0.068
367 6.5743129 46.5416957 0 0 365 483.893 2020/07/27 20:12:53+00 4 0.49
368 6.5743126 46.5417098 0 0 366 483.883 2020/07/27 20:12:54+00 4 0.635
369 6.5743091 46.5417327 0 0 367 483.861 2020/07/27 20:12:56+00 4 0.787
370 6.5742991 46.5417636 0 0 368 483.839 2020/07/27 20:12:58+00 4 0.837
371 6.5743006 46.5417847 0 0 369 483.817 2020/07/27 20:13:00+00 4 0.869
372 6.5743025 46.5418067 0 0 370 483.794 2020/07/27 20:13:02+00 4 0.86
373 6.5743132 46.5418332 0 0 371 483.77 2020/07/27 20:13:04+00 4 0.856
374 6.5743181 46.5418457 0 0 372 483.758 2020/07/27 20:13:05+00 4 0.876
375 6.5743305 46.5418789 0 0 373 483.735 2020/07/27 20:13:07+00 4 0.912
376 6.5743357 46.5419072 0 0 374 483.712 2020/07/27 20:13:09+00 3 0.944
377 6.5743373 46.5419255 0 0 375 483.7 2020/07/27 20:13:10+00 3 0.955
378 6.57434 46.5419561 0 0 376 483.677 2020/07/27 20:13:12+00 3 1.021
379 6.574349 46.5419878 0 0 377 483.655 2020/07/27 20:13:14+00 3 1.055
380 6.5743528 46.5420161 0 0 378 483.631 2020/07/27 20:13:16+00 3 1.087
381 6.5743548 46.542031 0 0 379 483.62 2020/07/27 20:13:17+00 3 1.116
382 6.5743687 46.5420562 0 0 380 483.597 2020/07/27 20:13:19+00 3 1.116
383 6.5743659 46.5420829 0 0 381 483.574 2020/07/27 20:13:21+00 3 1.16
384 6.5743643 46.5420975 0 0 382 483.562 2020/07/27 20:13:22+00 3 1.162
385 6.5743659 46.5421193 0 0 383 483.537 2020/07/27 20:13:24+00 3 1.163
386 6.5743688 46.5421322 0 0 384 483.525 2020/07/27 20:13:25+00 3 1.151
387 6.5743762 46.542155 0 0 385 483.5 2020/07/27 20:13:27+00 3 1.166
388 6.5743809 46.5421847 0 0 386 483.474 2020/07/27 20:13:29+00 3 1.211
389 6.5743912 46.5422149 0 0 387 483.447 2020/07/27 20:13:31+00 3 1.246
390 6.5743967 46.5422343 0 0 388 483.42 2020/07/27 20:13:33+00 3 1.206
391 6.5744016 46.5422385 0 0 389 483.406 2020/07/27 20:13:34+00 3 1.187
392 6.5744148 46.5422492 0 0 390 483.38 2020/07/27 20:13:36+00 3 0.816
393 6.574444 46.5422565 0 0 391 483.356 2020/07/27 20:13:38+00 3 0.81
394 6.574465 46.5422594 0 0 392 483.345 2020/07/27 20:13:39+00 3 0.9
395 6.574506 46.5422601 0 0 393 483.325 2020/07/27 20:13:41+00 3 1.023
396 6.5745231 46.5422581 0 0 394 483.316 2020/07/27 20:13:42+00 3 1.086
397 6.5745413 46.5422559 0 0 395 483.307 2020/07/27 20:13:43+00 3 1.067
398 6.5745582 46.5422514 0 0 396 483.289 2020/07/27 20:13:45+00 3 1.046
399 6.5745838 46.5422431 0 0 397 483.271 2020/07/27 20:13:47+00 3 1.096
400 6.5746169 46.5422298 0 0 398 483.254 2020/07/27 20:13:49+00 3 1.138
401 6.5746341 46.5422227 0 0 399 483.245 2020/07/27 20:13:50+00 3 1.161
402 6.5746699 46.5422099 0 0 400 483.228 2020/07/27 20:13:52+00 3 1.174
403 6.5747075 46.5422033 0 0 401 483.211 2020/07/27 20:13:54+00 3 1.161
404 6.5747353 46.5422001 0 0 402 483.194 2020/07/27 20:13:56+00 3 1.141
405 6.57475 46.5421955 0 0 403 483.187 2020/07/27 20:13:57+00 3 1.13
406 6.5747754 46.5421874 0 0 404 483.172 2020/07/27 20:13:59+00 3 1.085
407 6.5747895 46.5421848 0 0 405 483.166 2020/07/27 20:14:00+00 3 1.058
408 6.5748189 46.5421769 0 0 406 483.152 2020/07/27 20:14:02+00 3 1.041
409 6.5748547 46.5421612 0 0 407 483.14 2020/07/27 20:14:04+00 3 1.076
410 6.5748894 46.5421484 0 0 408 483.129 2020/07/27 20:14:06+00 3 1.116
411 6.5749099 46.5421378 0 0 409 483.119 2020/07/27 20:14:08+00 3 1.113
412 6.574933 46.5421275 0 0 410 483.11 2020/07/27 20:14:10+00 3 1.098
413 6.5749442 46.5421242 0 0 411 483.106 2020/07/27 20:14:11+00 3 1.083
414 6.5749614 46.5421194 0 0 412 483.1 2020/07/27 20:14:13+00 3 1.04
415 6.5749862 46.542114 0 0 413 483.094 2020/07/27 20:14:15+00 3 0.612
416 6.5750002 46.542111 0 0 414 483.094 2020/07/27 20:14:17+00 3 0.373
417 6.5750015 46.542111 0 0 415 483.093 2020/07/27 20:14:18+00 3 0.023
418 6.5750038 46.5421123 0 0 416 483.093 2020/07/27 20:14:20+00 3 0.239
419 6.5750072 46.5421179 0 0 417 483.088 2020/07/27 20:14:22+00 3 0.236
420 6.575009 46.5421425 0 0 418 483.081 2020/07/27 20:14:24+00 3 0.465
421 6.5750065 46.542167 0 0 419 483.071 2020/07/27 20:14:26+00 3 0.608
422 6.5750088 46.5421826 0 0 420 483.06 2020/07/27 20:14:28+00 3 0.56
423 6.5750019 46.5421904 0 0 421 483.054 2020/07/27 20:14:29+00 3 0.518
424 6.574996 46.5421947 0 0 422 483.048 2020/07/27 20:14:30+00 3 0.453
425 6.5749833 46.5421975 0 0 423 483.04 2020/07/27 20:14:32+00 3 0.274
426 6.5749775 46.5422 0 0 424 483.032 2020/07/27 20:14:33+00 3 0.321
427 6.5749726 46.5422017 0 0 425 483.023 2020/07/27 20:14:35+00 3 0.308
428 6.5749678 46.5422005 0 0 426 483.02 2020/07/27 20:14:37+00 3 0.007
429 6.5749675 46.5422002 0 0 427 483.019 2020/07/27 20:14:38+00 3 0.011
430 6.5749669 46.5421996 0 0 428 483.017 2020/07/27 20:14:40+00 3 0.035
431 6.5749653 46.5421981 0 0 429 483.016 2020/07/27 20:14:41+00 3 0.052
432 6.5749626 46.5421975 0 0 430 483.013 2020/07/27 20:14:43+00 3 0.051
433 6.5749616 46.5421975 0 0 431 483.001 2020/07/27 20:14:44+00 3 0.188
434 6.5749604 46.542198 0 0 432 482.999 2020/07/27 20:14:46+00 3 0.039
435 6.5749599 46.5421983 0 0 433 482.996 2020/07/27 20:14:48+00 3 0.015
436 6.5749598 46.5421981 0 0 434 482.995 2020/07/27 20:14:49+00 3 0.036
437 6.5749594 46.5421982 0 0 435 482.994 2020/07/27 20:14:50+00 3 0.032
438 6.5749591 46.542198 0 0 436 482.992 2020/07/27 20:14:51+00 3 0.03
439 6.5749584 46.5421978 0 0 437 482.989 2020/07/27 20:14:53+00 3 0.027

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,300 @@
gpx2gpsapwifi.lua zfzf200810.2017
#####################################################
pour 1 nombre de votes 13, déviation : 1.0
pour 11 nombre de votes 12, déviation : 0.735
pour 4 nombre de votes 11, déviation : 0.828
pour 15 nombre de votes 11, déviation : 0.828
pour 10 nombre de votes 11, déviation : 0.713
et la gagnante est 1
nombre de paternes: 13
avec comme longitude: 6.5749067
et comme latitude: 46.5421885
#####################################################
pour 2 nombre de votes 11, déviation : 1.0
pour 4 nombre de votes 11, déviation : 0.783
pour 3 nombre de votes 10, déviation : 0.875
pour 16 nombre de votes 10, déviation : 0.785
pour 9 nombre de votes 10, déviation : 0.782
et la gagnante est 2
nombre de paternes: 11
avec comme longitude: 6.5749067
et comme latitude: 46.5421885
#####################################################
pour 3 nombre de votes 12, déviation : 1.0
pour 9 nombre de votes 11, déviation : 0.796
pour 15 nombre de votes 11, déviation : 0.776
pour 4 nombre de votes 11, déviation : 0.757
pour 11 nombre de votes 11, déviation : 0.75
et la gagnante est 3
nombre de paternes: 12
avec comme longitude: 6.5749067
et comme latitude: 46.5421885
#####################################################
pour 4 nombre de votes 16, déviation : 1.0
pour 15 nombre de votes 15, déviation : 0.777
pour 11 nombre de votes 15, déviation : 0.705
pour 16 nombre de votes 12, déviation : 0.714
pour 17 nombre de votes 12, déviation : 0.64
et la gagnante est 4
nombre de paternes: 16
avec comme longitude: 6.5749067
et comme latitude: 46.5421885
#####################################################
pour 5 nombre de votes 12, déviation : 1.0
pour 4 nombre de votes 11, déviation : 0.814
pour 15 nombre de votes 11, déviation : 0.729
pour 11 nombre de votes 10, déviation : 0.629
pour 16 nombre de votes 9, déviation : 0.63
et la gagnante est 5
nombre de paternes: 12
avec comme longitude: 6.5749067
et comme latitude: 46.5421885
#####################################################
pour 6 nombre de votes 3, déviation : 1.0
pour 15 nombre de votes 3, déviation : 0.866
pour 11 nombre de votes 3, déviation : 0.798
pour 1 nombre de votes 3, déviation : 0.766
pour 236 nombre de votes 3, déviation : 0.465
et la gagnante est 6
nombre de paternes: 3
avec comme longitude: 6.5749067
et comme latitude: 46.5421885
#####################################################
pour 9 nombre de votes 2, déviation : 1.0
pour 7 nombre de votes 2, déviation : 1.0
pour 1 nombre de votes 2, déviation : 0.946
pour 4 nombre de votes 2, déviation : 0.897
pour 10 nombre de votes 2, déviation : 0.854
et la gagnante est 9
nombre de paternes: 14
avec comme longitude: 6.5749067
et comme latitude: 46.5421885
#####################################################
pour 8 nombre de votes 12, déviation : 1.0
pour 9 nombre de votes 11, déviation : 0.83
pour 11 nombre de votes 11, déviation : 0.767
pour 4 nombre de votes 9, déviation : 0.736
pour 10 nombre de votes 9, déviation : 0.706
et la gagnante est 8
nombre de paternes: 12
avec comme longitude: 6.5749067
et comme latitude: 46.5421885
#####################################################
pour 9 nombre de votes 14, déviation : 1.0
pour 11 nombre de votes 13, déviation : 0.738
pour 8 nombre de votes 11, déviation : 0.83
pour 3 nombre de votes 11, déviation : 0.796
pour 4 nombre de votes 11, déviation : 0.768
et la gagnante est 9
nombre de paternes: 14
avec comme longitude: 6.5749067
et comme latitude: 46.5421885
#####################################################
pour 10 nombre de votes 13, déviation : 1.0
pour 11 nombre de votes 12, déviation : 0.805
pour 15 nombre de votes 11, déviation : 0.716
pour 1 nombre de votes 11, déviation : 0.713
pour 4 nombre de votes 11, déviation : 0.683
et la gagnante est 10
nombre de paternes: 13
avec comme longitude: 6.5749067
et comme latitude: 46.5421885
#####################################################
pour 11 nombre de votes 19, déviation : 1.0
pour 15 nombre de votes 15, déviation : 0.74
pour 4 nombre de votes 15, déviation : 0.705
pour 9 nombre de votes 13, déviation : 0.738
pour 10 nombre de votes 12, déviation : 0.805
et la gagnante est 11
nombre de paternes: 19
avec comme longitude: 6.5749067
et comme latitude: 46.5421885
#####################################################
pour 12 nombre de votes 1, déviation : 1.0
pour 31 nombre de votes 1, déviation : 0.631
et la gagnante est 12
nombre de paternes: 1
avec comme longitude: 6.5749067
et comme latitude: 46.5421885
#####################################################
pour 13 nombre de votes 5, déviation : 1.0
pour 11 nombre de votes 5, déviation : 0.683
pour 4 nombre de votes 5, déviation : 0.675
pour 232 nombre de votes 5, déviation : 0.652
pour 5 nombre de votes 5, déviation : 0.649
et la gagnante est 13
nombre de paternes: 5
avec comme longitude: 6.5749067
et comme latitude: 46.5421885
#####################################################
pour 14 nombre de votes 7, déviation : 1.0
pour 11 nombre de votes 7, déviation : 0.817
pour 4 nombre de votes 7, déviation : 0.767
pour 15 nombre de votes 7, déviation : 0.749
pour 3 nombre de votes 7, déviation : 0.724
et la gagnante est 14
nombre de paternes: 7
avec comme longitude: 6.5749067
et comme latitude: 46.5421885
#####################################################
pour 15 nombre de votes 18, déviation : 1.0
pour 4 nombre de votes 15, déviation : 0.777
pour 11 nombre de votes 15, déviation : 0.74
pour 225 nombre de votes 13, déviation : 0.475
pour 16 nombre de votes 12, déviation : 0.721
et la gagnante est 15
nombre de paternes: 18
avec comme longitude: 6.5749067
et comme latitude: 46.5421885
#####################################################
pour 16 nombre de votes 14, déviation : 1.0
pour 15 nombre de votes 12, déviation : 0.721
pour 4 nombre de votes 12, déviation : 0.714
pour 17 nombre de votes 12, déviation : 0.663
pour 225 nombre de votes 12, déviation : 0.539
et la gagnante est 16
nombre de paternes: 14
avec comme longitude: 6.5749242
et comme latitude: 46.5421726
#####################################################
pour 17 nombre de votes 14, déviation : 1.0
pour 16 nombre de votes 12, déviation : 0.663
pour 4 nombre de votes 12, déviation : 0.64
pour 15 nombre de votes 12, déviation : 0.609
pour 10 nombre de votes 11, déviation : 0.674
et la gagnante est 17
nombre de paternes: 14
avec comme longitude: 6.5749114
et comme latitude: 46.5421823
#####################################################
pour 18 nombre de votes 8, déviation : 1.0
pour 21 nombre de votes 7, déviation : 0.542
pour 236 nombre de votes 6, déviation : 0.655
pour 22 nombre de votes 6, déviation : 0.55
pour 25 nombre de votes 6, déviation : 0.358
et la gagnante est 18
nombre de paternes: 8
avec comme longitude: 6.5749111
et comme latitude: 46.5422034
#####################################################
pour 19 nombre de votes 8, déviation : 1.0
pour 21 nombre de votes 8, déviation : 0.643
pour 28 nombre de votes 8, déviation : 0.588
pour 225 nombre de votes 7, déviation : 0.524
pour 22 nombre de votes 7, déviation : 0.489
et la gagnante est 19
nombre de paternes: 8
avec comme longitude: 6.5749098
et comme latitude: 46.5422149
#####################################################
pour 20 nombre de votes 7, déviation : 1.0
pour 21 nombre de votes 5, déviation : 0.649
pour 42 nombre de votes 5, déviation : 0.622
pour 236 nombre de votes 4, déviation : 0.771
pour 231 nombre de votes 4, déviation : 0.641
et la gagnante est 20
nombre de paternes: 7
avec comme longitude: 6.5749176
et comme latitude: 46.5422284
groupe: 1 -----------------
time: 2020/07/27 22:03:44
lon: 6.5749067
lat: 46.5421885
nombre de paternes: 13x
groupe: 2 -----------------
time: 2020/07/27 22:03:48
lon: 6.5749067
lat: 46.5421885
nombre de paternes: 11x
groupe: 3 -----------------
time: 2020/07/27 22:03:52
lon: 6.5749067
lat: 46.5421885
nombre de paternes: 12x
groupe: 4 -----------------
time: 2020/07/27 22:03:56
lon: 6.5749067
lat: 46.5421885
nombre de paternes: 16x
groupe: 5 -----------------
time: 2020/07/27 22:04:00
lon: 6.5749067
lat: 46.5421885
nombre de paternes: 12x
groupe: 6 -----------------
time: 2020/07/27 22:04:01
lon: 6.5749067
lat: 46.5421885
nombre de paternes: 3x
groupe: 7 -----------------
time: 2020/07/27 22:04:04
lon: 0
lat: 0
nombre de paternes: 2x
groupe: 8 -----------------
time: 2020/07/27 22:04:05
lon: 6.5749067
lat: 46.5421885
nombre de paternes: 12x
groupe: 9 -----------------
time: 2020/07/27 22:04:09
lon: 6.5749067
lat: 46.5421885
nombre de paternes: 14x
groupe: 10 -----------------
time: 2020/07/27 22:04:13
lon: 6.5749067
lat: 46.5421885
nombre de paternes: 13x
groupe: 11 -----------------
time: 2020/07/27 22:04:17
lon: 6.5749067
lat: 46.5421885
nombre de paternes: 19x
groupe: 12 -----------------
time: 2020/07/27 22:04:18
lon: 6.5749067
lat: 46.5421885
nombre de paternes: 1x
groupe: 13 -----------------
time: 2020/07/27 22:04:21
lon: 6.5749067
lat: 46.5421885
nombre de paternes: 5x
groupe: 14 -----------------
time: 2020/07/27 22:04:22
lon: 6.5749067
lat: 46.5421885
nombre de paternes: 7x
groupe: 15 -----------------
time: 2020/07/27 22:04:26
lon: 6.5749067
lat: 46.5421885
nombre de paternes: 18x
groupe: 16 -----------------
time: 2020/07/27 22:04:30
lon: 6.5749242
lat: 46.5421726
nombre de paternes: 14x
groupe: 17 -----------------
time: 2020/07/27 22:04:34
lon: 6.5749114
lat: 46.5421823
nombre de paternes: 14x
groupe: 18 -----------------
time: 2020/07/27 22:04:38
lon: 6.5749111
lat: 46.5422034
nombre de paternes: 8x
groupe: 19 -----------------
time: 2020/07/27 22:04:42
lon: 6.5749098
lat: 46.5422149
nombre de paternes: 8x
groupe: 20 -----------------
time: 2020/07/27 22:04:43
lon: 6.5749176
lat: 46.5422284
nombre de paternes: 7x

Binary file not shown.

View File

@@ -0,0 +1,34 @@
-- Scripts pour régler l'horloge quand on est connecté en WIFI
-- et la sauve dans un fichier pour si jamais on n'a pas d'Internet
-- au power boot
-- https://www.unixtimestamp.com/index.php
print("\n set_time2.lua zf200815.1426 \n")
function set_time()
sntp.sync(nil, nil, nil, 1)
end
-- function ztime()
-- tm = rtctime.epoch2cal(rtctime.get()+2*3600)
-- print(string.format("%04d/%02d/%02d %02d:%02d:%02d", tm["year"], tm["mon"], tm["day"], tm["hour"], tm["min"], tm["sec"]))
-- end
function zget_time()
zrtc_time = rtctime.get()
if zrtc_time > 0 then
ztmr_set_time:alarm(60*1000, tmr.ALARM_SINGLE , zget_time)
print("j'ai trouvé l'heure: "..zrtc_time)
file.putcontents("_ztime_", zrtc_time)
-- print(file.getcontents("_ztime_"))
else
ztmr_set_time:alarm(1*1000, tmr.ALARM_SINGLE , zget_time)
print("je cherche l'heure: "..zrtc_time)
end
end
ztmr_set_time = tmr.create()
ztmr_set_time:alarm(1*1000, tmr.ALARM_SINGLE , zget_time)
set_time()

View File

@@ -0,0 +1,48 @@
#!/bin/bash
# Petit script pour télécharger facilement tout le binz via le port série
#zf191228.2313
# S'il y a des erreurs lors d'un téléchargement, il faut simplement augmenter un peu le délai !
# Il est préférable de télécharger en premier les *gros* fichiers .lua !
# ATTENTION: cela efface tout le NodeMCU !
luatool_tty="/dev/cu.wchusbserial1410"
echo ""
read -p "ATTENTION, cela va effacer tout le NodeMCU !"
read -p "Etes-vous vraiment certain ?"
chmod +x luatool.py
./luatool.py --port $luatool_tty -w
./luatool.py --port $luatool_tty -l
read -p "Est-ce bien vide ?"
./luatool.py --port $luatool_tty --bar -f z_index.html
./luatool.py --port $luatool_tty --bar -f wifi_init.lua
./luatool.py --port $luatool_tty --bar -f wifi_info.lua
./luatool.py --port $luatool_tty --bar -f wifi_clear.html
./luatool.py --port $luatool_tty --bar -f web_srv2.lua
./luatool.py --port $luatool_tty --bar -f web_ide2.lua
./luatool.py --port $luatool_tty --bar -f telnet_srv2.lua
./luatool.py --port $luatool_tty --bar -f set_time.lua
./luatool.py --port $luatool_tty --bar -f secrets_wifi.lua
./luatool.py --port $luatool_tty --bar -f secrets_project.lua
./luatool.py --port $luatool_tty --bar -f head.lua
./luatool.py --port $luatool_tty --bar -f eus_params.lua
./luatool.py --port $luatool_tty --bar -f disp_temp.html
./luatool.py --port $luatool_tty --bar -f dir2.lua
./luatool.py --port $luatool_tty --bar -f cat.lua
./luatool.py --port $luatool_tty --bar -f boot2.lua
./luatool.py --port $luatool_tty --bar -f boot.lua
./luatool.py --port $luatool_tty --bar -f 0_send_data.lua
#./luatool.py --port $luatool_tty --bar -f 0_htu21d.lua
./luatool.py --port $luatool_tty --bar -f 0_cron.lua
./luatool.py --port $luatool_tty -l
read -p "Pas eu d'erreur, on part à fond avec le init.lua ?"
./luatool.py --port $luatool_tty --bar -f initz.lua -t init.lua
./luatool.py --port $luatool_tty -l
echo -e "\nC'est tout bon ;-)"

View File

@@ -0,0 +1,45 @@
-- Petit script pour afficher les infos actuel du WIFI
print("\n wifi_info.lua zf200106.1803 \n")
function wifi_info()
local zmodewifi=wifi.getmode()
--wifi.NULLMODE, wifi.STATION, wifi.SOFTAP, wifi.STATIONAP
if zmodewifi == wifi.NULLMODE then
print("WIFI OFF")
elseif zmodewifi == wifi.STATION then
print("WIFI mode CLI")
print("Connected IP:\n",wifi.sta.getip())
local sta_config=wifi.sta.getconfig(true)
print("Current client config:")
print("\tssid:", sta_config.ssid)
print("\tpassword:", sta_config.pwd)
print("\tbssid:", sta_config.bssid)
elseif zmodewifi == wifi.SOFTAP then
print("WIFI mode AP\n")
print("AP IP: ", wifi.ap.getip())
print("Current AP config:")
local ap_config=wifi.ap.getconfig(true)
print("\tssid:", ap_config.ssid)
print("\tpassword:", ap_config.pwd)
print("\tbssid:", wifi.ap.getmac())
elseif zmodewifi == wifi.STATIONAP then
print("WIFI mode CLI+AP\n")
print("CLIENT IP:\n",wifi.sta.getip())
local sta_config=wifi.sta.getconfig(true)
print("Current CLIENT config:")
print("\tssid:", sta_config.ssid)
print("\tpassword:", sta_config.pwd)
print("\tbssid:", sta_config.bssid.."\n")
print("AP IP: ", wifi.ap.getip())
print("Current AP config:")
local ap_config=wifi.ap.getconfig(true)
print("\tssid:", ap_config.ssid)
print("\tpassword:", ap_config.pwd)
print("\tbssid:", wifi.ap.getmac())
end
wifi_info=nil
end
wifi_info()

View File

@@ -0,0 +1,99 @@
-- Petit script pour initaliser la couche WIFI
function wifi_init()
print("\n wifi_init.lua zf200816.1435 \n")
-- f= "secrets_wifi.lua" if file.exists(f) then dofile(f) end
-- f= "secrets_project.lua" if file.exists(f) then dofile(f) end
function wifi_init_end()
tmr_wifi_init1:unregister() i=nil
f= "wifi_info.lua" if file.exists(f) then dofile(f) end
f=nil secrets_wifi=nil cli_pwd=nil cli_ssid=nil
tmr_wifi_init1=nil wifi_init=nil
print(node.heap()) collectgarbage() print(node.heap())
-- f= "telnet_srv2.lua" if file.exists(f) then dofile(f) end
f="0_tst5_socat.lua" if file.exists(f) then dofile(f) end
-- f= "web_srv2.lua" if file.exists(f) then dofile(f) end
print(node.heap()) collectgarbage() print(node.heap())
zdelay=1 if reset_reason=="seconde_chance" then zdelay=20 end
tmr_wifi_init3=tmr.create()
tmr_wifi_init3:alarm(zdelay*1000, tmr.ALARM_SINGLE, function()
gpio.write(zLED, gpio.LOW)
f= "boot.lua" if file.exists(f) then dofile(f) end
tmr_wifi_init3:unregister() tmr_wifi_init3=nil wifi_init_end=nil
reset_reason=nil zdelay=nil
end)
end
if file.exists("_setup_wifi_") then
-- print("dsleep wake up")
-- file.remove("_setup_wifi_")
-- f = "0_dsleep2.lua" if file.exists(f) then dofile(f) end
print("setup wifi...")
file.remove("_setup_wifi_")
wifi.sta.config{ssid="", pwd=""} wifi.sta.connect()
if zLED == nil then zLED = 4 end
gpio.write(zLED, gpio.HIGH) gpio.mode(zLED, gpio.OUTPUT)
tmr_wifi_init4=tmr.create()
tmr_wifi_init4:alarm(0.1*1000, tmr.ALARM_AUTO , function()
gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH)
end)
tmr.create():alarm(90*1000, tmr.ALARM_SINGLE, function()
node.restart()
end)
enduser_setup.start(function()
print("on est sortit du setup wifi et on restart !")
node.restart()
end)
print("setup gadget lancé...")
else
wifi.setmode(wifi.STATION,true)
wifi.sta.config{ssid=cli_ssid, pwd=cli_pwd} wifi.sta.connect()
-- wifi.setmode(wifi.STATIONAP,true)
-- if node_id == nil then node_id = "generic" ap_pwd = "12345678" end
-- wifi.ap.config({ ssid = ap_ssid.."_"..node_id, pwd = ap_pwd, save=true })
-- ap_ssid=nil ap_pwd=nil
-- tmr_wifi_init2=tmr.create()
-- tmr_wifi_init2:alarm(60*1000, tmr.ALARM_SINGLE, function()
-- print("BOOOOUM, y'a plus de AP WIFI !")
-- wifi.setmode(wifi.STATION,true) tmr_wifi_init2=nil
-- print(node.heap()) collectgarbage() print(node.heap())
-- end)
gpio.write(zLED, gpio.HIGH) gpio.mode(zLED, gpio.OUTPUT) i=1
tmr_wifi_init1=tmr.create()
tmr_wifi_init1:alarm(1*1000, tmr.ALARM_AUTO , function()
gpio.write(zLED, gpio.LOW) tmr.delay(10000) gpio.write(zLED, gpio.HIGH)
if wifi.sta.getip() == nil then
print(i,"Connecting to AP...")
i=i+1
if i > 10 then
print("pas de wifi :-(")
file.putcontents("_setup_wifi_", "toto")
print("on restart pour le setup wifi")
node.restart()
--tmr_wifi_init2:unregister() tmr_wifi_init2=nil
--wifi.setmode(wifi.SOFTAP,true)
--wifi_init_end()
end
else
wifi_init_end()
end
end)
end
end
wifi_init()
--[[
file.putcontents("_setup_wifi_", "toto")
file.remove("eus_params.lua")
]]

Some files were not shown because too many files have changed in this diff Show More