dimanche 30 août 2020

Garmin 360

Voici quelques points d'entrée qui j'espère pourront aider quelques souhaitant hacker la caméra virb 360. C'est la caméra 360 que j'utilise pour mes vidéos de kiteboat, ou par cerf-volant.

 

Une fois connecté sur le même réseau que la caméra

sudo apt-get install avahi-discover

avahi-discover

Found service '7390' of type '_garmin-virb._tcp' in domain 'local' on 2.0.

ping 7390.local

64 bytes from Garmin-WiFi (192.168.1.58): icmp_seq=2 ttl=64 time=6.34 ms


J'ai maintenant le nom de ma caméra Garmin-WiFi

A partir du document Camera_network_services_API.pdf

curl --data "{\"command\":\"status\"}" http://Garmin-Wifi/virb

{"apiMin":3,"apiMax":3,"batteryLevel":34.000000,"batteryChargingState":0,"totalSpace":7763124,"availableSpace":6008732,"gpsLatitude":47.214432,"gpsLongitude":-1.540702,"antSensor":0,"btSensor":0,"btHeadset":0,"wifiSensor":0,"recordingTimeRemaining":527,"photosRemaining":1543,"photoCount":0,"recordingTime":0,"wifiSignalStrength":40,"wifiMode":"STA","state":"idle","lastMediaEventTime":3359,"result":1}

curl --data "{\"command\":\"sensors\"}" http://Garmin-Wifi/virb

{"sensors":[
{"name":"InternalGyroX","type":"LOCAL","has_data":"1","units":"Degrees/Second","data_type":"double","data":"4.329268"},
{"name":"InternalGyroY","type":"LOCAL","has_data":"1","units":"Degrees/Second","data_type":"double","data":"0.000000"},
{"name":"InternalGyroZ","type":"LOCAL","has_data":"1","units":"Degrees/Second","data_type":"double","data":"-13.780488"},
{"name":"InternalAccelX","type":"LOCAL","has_data":"1","units":"InstG's","data_type":"double","data":"0.018066"},
{"name":"InternalAccelY","type":"LOCAL","has_data":"1","units":"InstG's","data_type":"double","data":"-0.098633"},
{"name":"InternalAccelZ","type":"LOCAL","has_data":"1","units":"InstG's","data_type":"double","data":"-1.012207"},
{"name":"InternalAccelG","type":"LOCAL","has_data":"1","units":"InstG's","data_type":"double","data":"1.017162"},
{"name":"Altitude","type":"LOCAL","has_data":"1","units":"Meters","data_type":"double","data":"215.007126"}],"result":1}

https://github.com/JanKlopper/garmin-virb/blob/master/virb.py

curl --data "{\"command\":\"livePreview\",\"streamType\":\"rtp\",\"maxResolutionVertical\":\"100\",\"liveStreamActive\":\"1\"}" http://Garmin-Wifi/virb

{"result":1,"url":"rtsp://192.168.1.58/livePreviewStream?maxResolutionVertical=2160&liveStreamActive=1"}

L'url peut-ensuite être mise dans un navigateur qui proposera d'ouvrir le flux avec vlc. La résultion minimale est 360, maximale 2160

J'ai aussi trouvé une appli html permettant de contrôler depuis un pc sans windows, mais je n'ai pas réussi à la faire marcher

https://github.com/skaterlui/VIRBControlUI5

Les données du magnétomètre sont manquantes dans les données json.

Pourtant les données sont bien présentes dans les fichiers .fit. J'ai pu les lire soit à partir de la bibliothèque python fitparse, soit en convertissant les fichiers .fit grâce au SDK ant

sudo java -jar FitCSVTool.jar 2018-03-17-19-38-56.fit


Les données obtenues sont toutefois un peu brutes car elles correspondent aux valeurs des registres (par exemple 32935 est probablement proche de la moitié de 2^16). Les données sont enregistrées toutes les 4ms pour gyro, accéléro et magnéto et toutes les 40ms pour le baromètre dont la résolution en sortie semble limitée à 20cm

Le bruit sur l'accéléro est de l'ordre de 0.01g, celui sur le gyro de l'ordre de 0.3°/s pour une résolution de 0.05°/s. Le signal du capteur d'altitude est régulièrement plat. Cela peut-être lié à un bruit inférieur à la résolution, qui semble cependant variable...

Aucun commentaire:

Enregistrer un commentaire