Aller au contenu

GO Print

API Octoprint


2cv001

Messages recommandés

Je me suis essayé aux API Octoprint. Comme j'ai pas mal galéré, je mets à disposition le résultats de mes "trouvailles"

Les API sont un moyen de piloter octoprint. Grâce aux API, on peut lui donne des ordres, et octopi s'exécute sans passer par son interface web. Il devient facile par exemple de déclencher une impression automatiquement à une certaine heure ou pourquoi pas, en y ajoutant un capteur de présence, lorsque vous rentrez chez vous. Vous pouvez aussi faire votre propre "poste de commande" en php ou autres (bon, pas beaucoup d'intérêt pour cette dernière idée vu la puissance de l'interface web d'octoprint, mais ça peut vous donner des idées.

Site de référence API Octoprint : https://docs.octoprint.org/en/master/api/index.html

Pour tester les API avec curl en ligne de commande:

- Ouvrez une session SSH avec votre octopi (pour l'instant, je ne détaille pas car il y a d'autres tuto sur le sujet, mais à votre dispo..)

- et tapez (ou copier coller puis modifiez les commandes suivantes dans la console SSH. Attention remplacez FD1....04 ou les ........ par votre propre clef API

Quel intérêt ?

C'est assez instructif, mais surtout cela est un point de départ pour, une fois les API bien compris et testées, pouvoir programmer en python, php, c pour automatiser les choses.

 

Pour connaitre l'état d'une connexion

curl -G "octopi/api/connection" --http1.1 -H "Host: octopi.local" -H "X-Api-Key: FD1....04" -H "Content-Type: application/json"

Et ça vous renvoie quelque chose comme ça :

{"current":{"baudrate":115200,"port":"/dev/ttyUSB0","printerProfile":"_default","state":"Printing"},"options":{"baudratePreference":115200,"baudrates":[250000,230400,115200,57600,38400,19200,9600],"portPreference":"/dev/ttyUSB0","ports":["/dev/ttyS0","/dev/ttyUSB0"],"printerProfilePreference":"_default","printerProfiles":[{"id":"_default","name":"CR10"}]}}

pour y voir plus clair, vous pouvez par exemple aller sur http://json.parser.online.fr/ et y recopier ce résultat. Vous obtenez

{

    "current":{
        "baudrate":115200,
        "port":"/dev/ttyUSB0",
        "printerProfile":"_default",
        "state":"Printing"
    },
    "options":{
        "baudratePreference":115200,
        "baudrates":[
            250000,
            230400,
            115200,
            57600,
            38400,
            19200,
            9600
        ],
        "portPreference":"/dev/ttyUSB0",
        "ports":[
            "/dev/ttyS0",
            "/dev/ttyUSB0"
        ],
        "printerProfilePreference":"_default",
        "printerProfiles":[
            {
                "id":"_default",
                "name":"CR10"
            }
        ]
    }

}

Vous pouvez faire pareil avec tous les autres API.

Connaitre l'état de l'imprimante (compris les températures)

curl -G "octopi/api/printer?history=true&limit=2" --http1.1 -H "Host: octopi.local" -H "X-Api-Key: ..............." -H "Content-Type: application/json"
{

    "sd":{
        "ready":true
    },
    "state":{
        "flags":{
            "cancelling":false,
            "closedOrError":false,
            "error":false,
            "finishing":false,
            "operational":true,
            "paused":false,
            "pausing":false,
            "printing":true,
            "ready":false,
            "resuming":false,
            "sdReady":true
        },
        "text":"Printing"
    },
    "temperature":{
        "bed":{
            "actual":65.2,
            "offset":0,
            "target":65.0
        },
        "history":[
            {
                "bed":{
                    "actual":65.5,
                    "target":65.0
                },
                "time":1586104453,
                "tool0":{
                    "actual":199.6,
                    "target":200.0
                }
            },
            {
                "bed":{
                    "actual":65.2,
                    "target":65.0
                },
                "time":1586104458,
                "tool0":{
                    "actual":199.6,
                    "target":200.0
                }
            }
        ],
        "tool0":{
            "actual":199.6,
            "offset":0,
            "target":200.0
        }
    }

}

Lancer une connexion

 

curl -H "Content-Type: application/json" -H "X-Api-Key: FD1....04" -X POST -d '{"command":"connect"}' http://octopi/api/connection

Lancer, annuler une impression

Pour lancer une impression
curl -H "Content-Type: application/json" -H "X-Api-Key: ..........." -X POST -d '{"command":"start"}' http://octopi/api/job

Pour annuler une impression : 
curl -H "Content-Type: application/json" -H "X-Api-Key: ........." -X POST -d '{"command":"cancel"}' http://octopi/api/job

Pour sélectionner le fichier à imprimer (remplacez le nom du fichier .gcode)

POur le sélectionner sans l'imprimer

curl -H "Content-Type: application/json" -H "X-Api-Key: ................" -X POST -d '{"command":"select"}' http://octopi/api/files/local/brideMaintienRoulementBoite.gcode

Pour sélectionner et l’imprimer : 
Testé ok 
curl -H "Content-Type: application/json" -H "X-Api-Key: ............" -X POST -d '{"command":"select","print":"true"}' http://octopi/api/files/local/brideMaintienRoulementBoite.gcode

Etc....

N'hésitez pas à tester d'autres API et à nous partager vos "curl" 😄

Modifié (le) par 2cv001
  • J'aime 1
Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...