Aller au contenu

Chercher dans la communauté

Résultats des étiquettes.

  • Recherche par étiquettes

    Saisir les étiquettes en les séparant par une virgule. Merci de privilégier l'auto-complétion plutôt que de créer des tonnes de tags inutiles.
  • Recherche par auteur

Type du contenu


Forums

  • La vie du forum
    • Présentations
    • Blabla
  • Sur le site
    • Les news du blog
  • Les imprimantes 3D
    • Discussions sur les imprimantes 3D
    • Bien choisir son imprimante 3D
    • Les constructeurs
    • Les RepRap et autres modèles DIY
    • Les imprimantes 3D SLA
    • Consommables (filaments, résines...)
    • Électronique
    • Entraide : Questions/Réponses sur l'impression 3D
    • Tutoriels
  • Logiciels 3D
    • Discussions sur les logiciels 3D
    • Dessiner / modéliser en 3D
    • Paramétrer et contrôler son imprimante 3D
    • Tutoriels
  • Gravure et découpe laser, CNC et usinage
    • Discussions sur les graveurs laser, les CNC et l'usinage
    • Les constructeurs
    • Entraide : Questions/Réponses sur les CNC et Lasers
  • Les scanners 3D
    • Discussions sur les scanners 3D
    • Kinect
  • Le coin des makers
    • Projets et impressions 3D
    • La post-production
    • Les cavernes des makers
    • Evénements et rassemblements
    • Arduino
    • Domotique
    • Modélisme
    • Airsoft
    • Vapotage
  • Petites annonces
    • Achats
    • Ventes
    • Dons
    • Bons plans et crowdfunding
    • Commandes groupées
    • Emplois et services
  • Fonctionnement et news du forum
    • On vous écoute
    • Actualité et nouveautés du forum

Chercher dans...

Résultats qui...


Date de création

  • Début

    End


Dernière mise à jour

  • Début

    End


Filtrer par nombre de...

Inscrit

  • Début

    End


Groupe


Website URL


Skype


Twitter


Facebook


Youtube


Instagram


Lieu


Intérêts


Imprimantes

2 résultats trouvés

  1. Introduction Il y a au moins deux façon de communiquer avec une imprimante en klipper. En effet, klipper/moonraker met à disposition des API qui peuvent être utilisées soit via des requêtes "http" POST ou GET ou soit via MQTT. La première solution via des GET et POST est évoquée ici : Dans l'idéal, il faudrait que lorsqu'un évènement se produise, on puisse obtenir en "temps réel", enfin en quelques millisecondes, la nouvelle valeur. Ainsi, on serait averti en temps réel du fait qu'une impression s'arrête, ou on pourrait connaitre en temps réel la température de l'extrudeur ou du bed. C'est ce que va nous permettre MQTT. On verra plus loin que comme déjà évoqué, MQTT peut non seulement récupérer des évènements, mais aussi, à l'image des GET, interroger l'imprimante pour qu'en retour elle nous renvoie un certain nombre d'infos. Enfin, à l'image des POST, MQTT permet également le déclenchement d'actions (lancement d'impression, exécution d'un Gcode etc...) Exemple de ce que peut on récupérer via MQTT (ou via des GET) comme renseignements "en temps réel" ? Voici ce que j'ai réussi ,jusqu'à présent comme renseignement en temps réel : -L'état (printing standby...) -La durée d'impression -La durée total d'impression (je ne sais pas encore complètement la différence avec la durée d'impression) -Le nom du fichier en cours d'impression -La température du Bed -La température de l'extrudeur -Le temps d'impression de l'extrudeur. J'ai l'impression que c'est le temps cumulé depuis quand vous avez reçu l'imprimante. Ca reste à confirmer. Ce sont les principaux, mais il y en a d'autres que vous allez retrouvé plus bas dans un tableau. Installation et configuration de MQTT -Si vous n’êtes pas familiarisés avec MQTT, en particulier coté serveur, suivez un tuto sur internet ou demandez des précisions sur ce fil de discussion. -vous devez pouvoir vous connecter avec putty ou équivalent à votre imprimante. Avec certaines imprimantes, ce n'est pas possible. le firmware est trop bridé. -Vous devez avoir un serveur MQTT accessible. Chez moi, un pi qui contient ce serveur (mosquitto) sur internet, il y a plein de tutos qui montrent comment ça s'installe. -Vous devez avoir installé la partie client de mosquitto dans votre imprimante (via putty par exemple). Attention en théorie, cela peut vous faire perdre la garantie ! (voir le message qui s'affiche lorsque vous vous connectez avec putty). Pour savoir si il a déjà été installé : dpkg -l | grep mosquitto-clients doit vous répondre quelque chose comme cela : ii mosquitto-clients 1.5.7-1+deb10u1 arm64 Mosquitto command line MQTT clients Pour l'installer (si apt n'est pas adapté à votre distribution, il faut chercher ce qui peut le remplacer) : sudo apt install mosquitto-clients Puis, on va compléter le fichier moonraker.conf en lui ajoutant une section [mqtt] Chez moi, le fichier moonraker.conf se trouve dans /homme/mks/klipper_config si ce n'est pas le cas pour vous, vous pouvez lancer une recherche : find / -name moonraker.conf Chez moi, j'ai cette réponse : Message from syslogd@mkspi at Jan 27 11:37:04 ... kernel:[ 53.228014] Disabling IRQ #58 /home/mks/kiauh-backups/klipper_config/220725-0302/klipper_config/moonraker.conf /home/mks/kiauh-backups/klipper_config/220725-0259/klipper_config/moonraker.conf /home/mks/kiauh-backups/klipper_config/220725-0304/klipper_config/moonraker.conf /home/mks/moonraker/docs/moonraker.conf /home/mks/klipper_config/moonraker.conf /home/mks/kiauh/resources/moonraker.conf Les backups sont des sauvegardes, on ne s'en occupe pas Les dossier doc non plus Pour moi, c'est celui qui est dans klipper_config qui est est le bon et donc /home/mks/klipper_config/moonraker.conf Commencez par faire une copie de sauvegarde de ce fichier (si votre fichier /home/mks/klipper_config/moonraker.conf se trouve dans un autre répertoire, à vous de remplacer le répertoire dans lla commande suivante et dans les autres commandes) sudo cp /home/mks/klipper_config/moonraker.conf /home/mks/klipper_config/moonraker.conf.old -Puis vous allez le compléter via nano (ou autre). Si besoin en modifiant le répertoire. sudo nano /home/mks/klipper_config/moonraker.conf Vous pouvez aussi y accéder par fluidd, enfin, chez moi.. A la fin du fichier, ajouter [mqtt] address: 192.168.1.... # l'IP de votre serveur MQTT. Pas son nom réseau, seulement une IP port: 1883 username: votreNomUtilisateurQuiAEteDeclareDansVotreServeurMQTT password: SonMotDePasse; status_objects: webhooks toolhead=position,print_time,homed_axes,speeds,acceleration extruder=temperature,target,pressure_advance,smooth_time printer=state,extruder,target,position,virtual_sdcard heater_bed=temperature,target,power print_stats=filename,total_duration,print_duration,filament_used job_last=filename,print_duration Pour address, comme de base, sur mon imprimante q1pro il n'y a pas de DNS déclaré correctement dans l'imprimante, seul une adresse IP (192.168.1....) fonctionne. C'est l'IP de votre serveur MQTT. Dans un premier temps rentrez l'IP, et dans un second temps, si vous le souhaitez, essayez de remplacer l'IP par son nom réseau. Le username et le password sont des identifiants de connexion qui doivent être déclarés dans le serveur MQTT -Sortez de "nano" (Ctrl X et validez) -relancez moonraker (attention attendez si besoin la fin d'une impression en cours pour le faire) sudo systemctl restart moonraker Configuration du fichier moonraker.conf pour indiquer les évènements que l'on veut recevoir lors d'un changement (notion d'évènement) Dans la section MQTTque vous venez d'ajouter dans le fichier de configuration moonraker.conf , il y a une partie status_objects dot le rôle est d'indiquer à moonraker les évènements que vous souhaitez avoir via MQTT La ligne print_stats=state,filename,total_duration,print_duration va par exemple nous permettre de récupérer en temps réel l'état de l'imprimante (standby, printing...) le nom du fichier en train de s'imprimer, les durées d'impression prévu ... à chaque fois qu'ils changent, un message MQTT est envoyé Vous pouvez voir ces messages défiler par exemple à l'aide du logiciel MQTT Explorer Ces messages sont envoyés par l'imprimante avec comme topic quelque chose sous la forme (chez vous il est possible que "mkspi" soit remplacé par autre chose) : mkspi/klipper/status et des payload (messages) au format JSON. Par exemple : { "eventtime": 10149.499403589, "status": { "toolhead": { "print_time": 10164.745453851414, "position": [ 123.4, 121.858, 28.906922455714884, 1829.6180900007298 ] }, "extruder": { "temperature": 209.75, "power": 0.9052395424853155 }, "heater_bed": { "power": 0.4082908609993894 }, "print_stats": { "total_duration": 1802.585450651999, "print_duration": 1603.111610140999, "filament_used": 1210.5352800007333 } } } A noter que si par exemple pour print_stats vous ne spécifiez que print_stats=state au lieu de print_stats=state,filename,total_duration,print_duration L'imprimante ne retournera en MQTT que state lorsque ce dernier changera. Il ne vous enverra pas par exemple, de message lorsque "filename" change De même si cous mettez print_stats sans le "=" et ce qui est derrière, il renverra tout ce qui concerne print_stats. C'est un moyen d'explorer, de tester ce que peut renvoyer l'imprimante, mais cela va la faire envoyer des messages inutiles. Concrètement : ligne dans moonraker.conf Topic Filtre JSON print_stats mkspi/klipper/status [status][print_stats][state] Etat : printing, standby… print_stats mkspi/klipper/status [status][print_stats][print_duration] temps d'impression print_stats mkspi/klipper/status [status][print_stats][total_duration] Temps total d'impression print_stats mkspi/klipper/status [status][print_stats][filename] Nom du fichier en cours d'impression heater_bed mkspi/klipper/status [status][heater_bed][temperature] Température du bed heater_bed mkspi/klipper/status [status][heater_bed][target] Cible température bed heater_bed mkspi/klipper/status [status][heater_bed][power] Puissance en % pour le Bed extruder mkspi/klipper/status [status][extruder][temperature] Température de l'extruder extruder mkspi/klipper/status [status][extruder][target] Cible température extrudeur extruder mkspi/klipper/status [status][extruder][power] Puissance en % pour l'extrudeur toolhead mkspi/klipper/status [status][toolhead][position] position de la tête. Je pense [x,y,z] toolhead mkspi/klipper/status [status][toolhead][position][0] Position de la tête (x?) toolhead mkspi/klipper/status [status][toolhead][position][0] Position de la tête (y?) toolhead mkspi/klipper/status [status][toolhead][position][0] Position de la tête (z?) toolhead mkspi/klipper/status [status][toolhead][print_time] Temps de travail depuis alumage imp? Utilisation de MQTT pour déclencher des API : demande d'infos Trouver le nom d'hote (hostname) de votre imprimante. Vous devez connaitre votre hostname pour connaitre le premier élément des topics. Sous fluidd vous l'avez ici Sinon, la commande hostname Vous le donnera. Chez moi la réponse est : mkspi Vous pouvez aussi l'imposer dans le fichier de configuration "moonraker.conf" en y ajoutant dans la section [server] la ligne hostname: mkspi Vous pouvez bien sûr remplacer mkspi par ce que vous voulez. Dans tous les exemples ci-dessous, si votre hostname n'est pas mkpsi ou si vous avez ajouté une ligne ligne hostname: mkspi dans la section [server] du fichier moonraker.conf, remplacé le premier terme des topic (mkspi" par ce que vous avez obtenu par la commande hostname ou par ce que vous avez imposé dans moonraker.conf Vous trouverez la liste des API ici : https://moonraker.readthedocs.io/en/latest/web_api/ Principe d'utilisation de ces API : On envoie un message MQTT ayant comme topic (toujours le même) (en remplaçant éventuellement "mkspi" par ce que vous avez chez vous) mkspi/moonraker/api/request et comme contenu (payload) une chaine JSON indiquant ce que vous vous obtenir et que vous pouvez trouver dans ce lien https://moonraker.readthedocs.io/en/latest/web_api/ Moonraker vous renvoie alors une réponse via un message MQTT avec comme topic mkspi/moonraker/api/response Prenons par exemple cette API (extrait du document en question) : On va pouvoir interroger l'imprimante via un message MQTT avec comme topic mkspi/moonraker/api/request et comme payload au format JSON { "jsonrpc": "2.0", "method": "printer.info", "id": 5153 } Vous pouvez utiliser MQTT explorer ( https://mqtt-explorer.com/) pour lancer ce message MQTT : Vous allez y récupérer ce message en réponse : la réponse complète dans mon cas : { "jsonrpc": "2.0", "result": { "state_message": "Printer is ready", "klipper_path": "/home/mks/klipper", "config_file": "/home/mks/klipper_config/printer.cfg", "software_version": "v0.10.0-530-g3387a9c2-dirty", "hostname": "mkspi", "cpu_info": "4 core ?", "state": "ready", "python_path": "/home/mks/klippy-env/bin/python", "log_file": "/home/mks/klipper_logs/klippy.log" }, "id": 1 } Utilisation de MQTT pour déclencher des API : demandes d'actions Avec le même principe, vous pouvez déclencher des actions. Toujours pareil, vous trouvez l'API qui convient dans https://moonraker.readthedocs.io/en/latest/web_api/ Par exemple pour mettre en pause une impression en cours Le topic est toujours le même : mkspi/moonraker/api/request le JSON est {"jsonrpc":"2.0","method":"printer.print.pause","id":4564} Moonraker vous renvoie une réponse (ok) avec un message MQTT ayant pour topic mkspi/moonraker/api/response Un autre exemple : demande d'exécution d'un GCODE Le topic, donc toujours mkspi/moonraker/api/request la payload (en remplaçant M104 S20 qui est un GCODE demandant de chauffer la buse à 20°, par le GCODE que vous souhaitez voir exécuté : {"jsonrpc":"2.0","method":"printer.gcode.script","params":{"script":"M104 S20"},"id":1} Utilisation avec Home assistant : Je ne pratique pas HA mais je sais qu'il y a pas mal de tuto sur le sujet sur internet. @fran6p l'utilise et nous a communiqué ce lien : https://github.com/marcolivierarsenault/moonraker-home-assistant Utilisation avec Jeedom Sous jeedom, j'utilise le plugin JMQTT qui permet d'une part d'avoir un serveur MQTT, mais aussi de facilement récupérer les messages MQTT pour des topic bien préçis. Dans JMQTT, vous créez autant d'infos que vous voulez, en vous servant du tableau plus haut pour le remplir. Exemple : Pour l'équipement (à noter que pour l'instant, j'ai choisi 1 pour le Qos pour être sûr de ne pas rater une info : Et comme commandes de type info (exemples) : Voir le tableau plus haut pour d'autres infos. Pour les actions : Exemple pour mettre en pause et relancer après pause : mkspi/moonraker/api/request {"jsonrpc":"2.0","method":"printer.print.pause","id":4564} et mkspi/moonraker/api/request {"jsonrpc":"2.0","method":"printer.print.resume","id":1465} Et pour demander l'exécution d'un GCODE : N'hésitez pas à me faire un retour sur votre utilisation en spécifiant le type d'imprimante...
  2. Bonjour à tous, toujours niveau débutant, à travers un publish MQTT on peut modifier les axes Y X et Z, modifier la valeur de la temperature du nozzle et du bed, je ne trouve pas en revanche la ligne MQTT concernant la rétractation du filament par l'extrudeur. Le but serait de commander par mon systeme domotique, via un bouton, le retrait du filament lors d'un changement de couleur de fil : une automation -> chauffe le nozzle + retractation du filament pendant x sec ou x mouvements) Cette ligne existe t'elle? ou dois je plutôt chercher du coté des codes (et là j'y connais rien du tout pour le moment dans les gcades) une aide ? une idée? travail déjà effectué jybi89 ! - Présentations - Forum pour les imprimantes 3D et l'impression 3D
×
×
  • Créer...