-
-
Save bragonznx/45df3f16c429271dbdfa658e83b2cd1b to your computer and use it in GitHub Desktop.
## azuru HPIS III api reflex V0.1 | |
IP = '127.0.0.2' | |
status = 'http://127.0.0.2/info' | |
# Format video | |
v1080 = 'http://127.0.0.2/ctrl/set?movfmt=1080P30' | |
v4000 = 'http://127.0.0.2/ctrl/set?movfmt=4KP30' | |
v0960 = 'http://127.0.0.2/ctrl/set?movfmt=0960P30' | |
# lance l'enregistrement | |
shutter = 'http://127.0.0.2/ctrl/rec?action=start' | |
isrec = 'http://127.0.0.2/ctrl/mode?action=query' | |
stop = 'http://127.0.0.2/ctrl/rec?action=stop' | |
## Changement des ISO | |
iso3200 = 'http://127.0.0.2/ctrl/set?iso=3200' | |
iso0400 = 'http://127.0.0.2/ctrl/set?iso=400' | |
iso0800 = 'http://127.0.0.2/ctrl/set?iso=800' | |
iso0200 = 'http://127.0.0.2/ctrl/set?iso=200' | |
iso1600 = 'http://127.0.0.2/ctrl/set?iso=1600' | |
iso6400 = 'http://127.0.0.2/ctrl/set?iso=6400' | |
isoauto = 'http://127.0.0.2/ctrl/set?iso=Auto' | |
## switch mode | |
videoMode = 'http://127.0.0.2/ctrl/mode?action=to_rec' | |
photoMode = 'http://127.0.0.2/ctrl/mode?action=to_cap' | |
resov = 'http://127.0.0.2/ctrl/get?k=movfmt' | |
iso = 'http://127.0.0.2/ctrl/get?k=iso' | |
## Eteinds l'appareil | |
off = 'http://127.0.0.2/ctrl/shutdown' | |
## Temperature | |
wb = 'http://127.0.0.2/ctrl/get?k=wb' | |
## Switch focus | |
af = 'http://127.0.0.2/ctrl/set?focus=AF' | |
mf = 'http://127.0.0.2/ctrl/set?focus=MF' | |
focus = 'http://127.0.0.2/ctrl/get?k=focus' |
implémentation OK :
Changement des ISO
iso3200 = 'http://127.0.0.2/ctrl/set?iso=3200'
iso0400 = 'http://127.0.0.2/ctrl/set?iso=400'
iso0800 = 'http://127.0.0.2/ctrl/set?iso=800'
iso0200 = 'http://127.0.0.2/ctrl/set?iso=200'
iso1600 = 'http://127.0.0.2/ctrl/set?iso=1600'
iso6400 = 'http://127.0.0.2/ctrl/set?iso=6400'
isoauto = 'http://127.0.0.2/ctrl/set?iso=Auto'
PS : sur D800, en mode vidéo, on est restreint par le mode d'exposition :
mode M : ISO manuel (pas auto possible)
mode P, A, S : ISO automatique obligatoirement
PS2 : des ISO intermédiaires sont possibles
PS3 : je trouve plus intéressant d'implémenter un service qui augmente / diminue la sensibilité de 1, 1/2 ou 1/3 diaph (en fonction du DSLR)
TODO : voir le comportement des autres DSLR pour les ISO auto / manuel en mode vidéo
TODO2 : prévoir un service qui liste la liste des ISO possibles
Implémentation OK 👍
switch mode
videoMode = 'http://127.0.0.2/ctrl/mode?action=to_rec'
photoMode = 'http://127.0.0.2/ctrl/mode?action=to_cap'
PS : par défaut le liveview est désactivé au lancement, il s'active lorsque l'on choisi to_rec ou to_cap
Pour le désactiver :
Eteinds l'appareil
off = 'http://127.0.0.2/ctrl/shutdown'
Ça renvoi le statut de l'appareil photo , valeurs courantes iso, aperture, shutterspeed ... et les valeurs possibles.
curl http://192.168.1.17:8080/ctrl/mode?action=query
{
"aperture": "f/2,8",
"apertures": [
"f/2,8",
"f/3,2",
"f/3,5",
"f/4",
"f/4,5",
"f/5",
"f/5,6",
"f/6,3",
"f/7,1",
"f/8",
"f/9",
"f/10",
"f/11",
"f/13",
"f/14",
"f/16",
"f/18",
"f/20",
"f/22"
],
"captureMode": 1,
"exposureMode": "A",
"exposureModes": [
"M",
"P",
"A",
"S"
],
"isInLiveView": false,
"isRecording": false,
"iso": "100",
"isos": [
"50",
"64",
"80",
"100",
"125",
"160",
"200",
"250",
"320",
"400",
"500",
"640",
"800",
"1000",
"1250",
"1600",
"2000",
"2500",
"3200",
"4000",
"5000",
"6400",
"8000",
"10000",
"12800",
"25600"
],
"shutterSpeed": "15,0000s",
"shutterSpeeds": [
"0,0001s",
"0,0002s",
"0,0003s",
"0,0004s",
"0,0005s",
"0,0006s",
"0,0008s",
"0,0010s",
"0,0012s",
"0,0015s",
"0,0020s",
"0,0025s",
"0,0031s",
"0,0040s",
"0,0050s",
"0,0062s",
"0,0080s",
"0,0100s",
"0,0125s",
"0,0166s",
"0,0200s",
"0,0250s",
"0,0333s",
"0,0400s",
"0,0500s",
"0,0666s",
"0,0769s",
"0,1000s",
"0,1250s",
"0,1666s",
"0,2000s",
"0,2500s",
"0,3333s",
"0,4000s",
"0,5000s",
"0,6250s",
"0,7692s",
"1,0000s",
"1,3000s",
"1,6000s",
"2,0000s",
"2,5000s",
"3,0000s",
"4,0000s",
"5,0000s",
"6,0000s",
"8,0000s",
"10,0000s",
"13,0000s",
"15,0000s",
"20,0000s",
"25,0000s",
"30,0000s"
]
}
romain@romain-ThinkPad-T550:/Projets/perso/azuru/commands$ curl http://192.168.1.17:8080/ctrl/get?k=iso/Projets/perso/azuru/commands$ curl http://192.168.1.17:8080/ctrl/get?k=aperture
{
"key": "iso",
"opts": [
"50",
"64",
"80",
"100",
"125",
"160",
"200",
"250",
"320",
"400",
"500",
"640",
"800",
"1000",
"1250",
"1600",
"2000",
"2500",
"3200",
"4000",
"5000",
"6400",
"8000",
"10000",
"12800",
"25600"
],
"value": "100"
}
romain@romain-ThinkPad-T550:
{
"key": "aperture",
"opts": [
"f/2,8",
"f/3,2",
"f/3,5",
"f/4",
"f/4,5",
"f/5",
"f/5,6",
"f/6,3",
"f/7,1",
"f/8",
"f/9",
"f/10",
"f/11",
"f/13",
"f/14",
"f/16",
"f/18",
"f/20",
"f/22"
],
"value": "f/2,8"
}
romain@romain-ThinkPad-T550:/Projets/perso/azuru/commands$ curl http://192.168.1.17:8080/ctrl/get?k=shutterSpeed/Projets/perso/azuru/commands$ curl http://192.168.1.17:8080/ctrl/get?k=exposureMode
{
"key": "shutterSpeed",
"opts": [
"0,0001s",
"0,0002s",
"0,0003s",
"0,0004s",
"0,0005s",
"0,0006s",
"0,0008s",
"0,0010s",
"0,0012s",
"0,0015s",
"0,0020s",
"0,0025s",
"0,0031s",
"0,0040s",
"0,0050s",
"0,0062s",
"0,0080s",
"0,0100s",
"0,0125s",
"0,0166s",
"0,0200s",
"0,0250s",
"0,0333s",
"0,0400s",
"0,0500s",
"0,0666s",
"0,0769s",
"0,1000s",
"0,1250s",
"0,1666s",
"0,2000s",
"0,2500s",
"0,3333s",
"0,4000s",
"0,5000s",
"0,6250s",
"0,7692s",
"1,0000s",
"1,3000s",
"1,6000s",
"2,0000s",
"2,5000s",
"3,0000s",
"4,0000s",
"5,0000s",
"6,0000s",
"8,0000s",
"10,0000s",
"13,0000s",
"15,0000s",
"20,0000s",
"25,0000s",
"30,0000s"
],
"value": "15,0000s"
}
romain@romain-ThinkPad-T550:
{
"key": "exposureMode",
"opts": [
"M",
"P",
"A",
"S"
],
"value": "A"
}
romain@romain-ThinkPad-T550:~/Projets/perso/azuru/commands$ curl http://192.168.1.17:8080/ctrl/get?k=invalid
{
"error": "Key does not (yet ?) exists",
"key": "invalid"
}
Contrôles implémentés :
curl http://192.168.1.17:8080/ctrl/set?exposureMode={P,A,S,M}
curl http://192.168.1.17:8080/ctrl/set?iso={100,200,...}
curl http://192.168.1.17:8080/ctrl/set?aperture={f/2,8,f/5,6,...}
curl http://192.168.1.17:8080/ctrl/set?shutterSpeed={25,30,50,60,100,...}
Evidemment les valeurs possibles dépendent de ton appareil photo, ton objectif, ton niveau de zoom et du mode activé.
Le refresh des options se fait toutes les 2 secondes pour l'instant. Voir au dessus pour obtenir les valeurs possibles.
La réponse est vide pour l'instant.
Pas besoin de faire un HTTP POST pour l'instant, mais ce sera le cas dans le futur, pour respecter les normes du REST
Pour lancer le programme, depuis le rasp :
cd /home/pi
QT_QPA_EGLFS_FORCE888=1 QT_QPA_EVDEV_KEYBOARD_PARAMETERS="keymap=/home/pi/fr.qmap" ./hpis
Au final le keymap est ignoré...
L'option QT_QPA_EGLFS_FORCE888=1 est obligatoire chez moi sur ma TV sinon les couleurs ne sont pas top
J'ai mis un overscan en dur dans le programme pour l'instant, donc si tu as des bords noir c'est normal.
Pour chopper le liveview en temps réel :
http://192.168.1.17:8080/liveView.mjpg
Pour chopper juste 1 frame :
http://192.168.1.17:8080/preview.jpg
Attention, pas de frame tant que tu as pas activé le liveview avec :
curl http://192.168.1.17:8080/ctrl/mode?action=to_rec : mode vidéo
curl http://192.168.1.17:8080/ctrl/mode?action=to_cap : mode photo
en mode vidéo, pour commencer à enregistrer :
curl http://192.168.1.17:8080/ctrl/rec?action=start
Pour stopper :
curl http://192.168.1.17:8080/ctrl/rec?action=stop
En mode photo, le start prend une photo .. attention c'est long.
Pour couper le liveview :
curl http://192.168.1.17:8080/ctrl/shutdown
Attention : quand un cable usb est branché, l'appareil photo ne se met jamais en veille, donc la batterie se vide assez vite. Pour pas "user" mes batteries, j'ai commandé cet alimentation externe : https://www.amazon.fr/gp/product/B00MUJ1UM6/ref=oh_aui_detailpage_o01_s00?ie=UTF8&psc=1 (moi il m'a couté 30 €, le prix semble avoir augmenté)
Pour quitter, échap ou killall hpis
J'ai mis des exemples d'autres commandes au dessus.
Pour activer l'autofocus :
curl http://192.168.1.17:8080/ctrl/focus
Dans le futur ce sera un post aussi.
J'ai pas encore implémenté le focus manuel, mais il fonctionne en envoyant le nombre d'impulsions qu'on veut dans un sens ou un autre de -32768 à 32768
Bons tests !
pi@raspberrypi:~/zcam/api $ curl -v http://127.0.0.2/ctrl/get?k=focus
< Content-Length: 88
< Cache-Control: no-cache
< Content-Type: application/json; charset=utf-8
< Connection: keep-alive
<
{"code":0,"desc":"string","key":"focus","type":1,"ro":1,"value":"MF","opts":["MF","AF"]}