Intégration de Octoprint

Bonjour,

je viens d’intégrer Octoprint à Home Assistant grâce à ces 2 plugins:

En gros ça me donne ça :

Je n’ai pas en revanche pas trouvé comment ajouter un bouton pour faire un set sur les valeurs target pour le bed et le nozzle.
Je précise que je suis vraiment nouveau sur Home Assistant, j’ai du mal à comprendre tout les aspects, ça vient petit à petit.

Si j’ai bien compris la doc, il me faudrait quelque chose comme ça :

type: entity-button
name: Set_Temp
tap_action:
  action: call-service
  service: mqtt.publish
  service_data:
    topic: octoPrint/hassControl/home
    payload: ???

Mon problème est que je ne sais pas ou chercher le bon topic et que je n’ai aucune idée de quoi mettre dans le payload.

Un gourou pourrai m’aider ou au moins me guider ?
Merci.

Salut. Je vais essayer l’intégration aussi et je verrai ce que je trouve sur mqtt par la.meme.occasion je mettrai à jour les.infos ici si j’abouti a quelque chose

1 « J'aime »

Bon je remonte le sujet juste pour coller le code que j’ai fait pour le contrôle de la temp Bed et Nozzle.

En faite je partais dans la mauvaise direction à vouloir changer le topic « octoPrint/temperature/tool0 ».

Ce qu’il fallait faire c’est d’envoyer la commande directement sur le topic « octoPrint/hassControl/commands » qui est le topic pour envoyer du GCode.

Le YAML :

type: conditional
conditions:
  - entity: switch.imprimante3donoff
    state: 'on'
card:
  type: vertical-stack
  cards:
    - type: horizontal-stack
      cards:
        - type: button
          name: Nozzle Off
          tap_action:
            action: call-service
            service: mqtt.publish
            service_data:
              topic: octoPrint/hassControl/commands
              payload: M104 S0
        - type: button
          name: Nozzle 220°C
          tap_action:
            action: call-service
            service: mqtt.publish
            service_data:
              topic: octoPrint/hassControl/commands
              payload: M104 S220
        - type: button
          name: Nozzle 245°C
          tap_action:
            action: call-service
            service: mqtt.publish
            service_data:
              topic: octoPrint/hassControl/commands
              payload: M104 S245
    - type: horizontal-stack
      cards:
        - type: button
          name: Bed Off
          tap_action:
            action: call-service
            service: mqtt.publish
            service_data:
              topic: octoPrint/hassControl/commands
              payload: M140 S0
        - type: button
          name: Bed 65°C
          tap_action:
            action: call-service
            service: mqtt.publish
            service_data:
              topic: octoPrint/hassControl/commands
              payload: M140 S65
        - type: button
          name: Bed 90°C
          tap_action:
            action: call-service
            service: mqtt.publish
            service_data:
              topic: octoPrint/hassControl/commands
              payload: M140 S90

3 « J'aime »

c’est top ce que tu as fait, j’ai recu ma ender il y a peu, integration de base pour commencer, et tu m’as donné envie d’allez plus loin, donc jee viens de mettre en place pour la ender et octoprint, le mqtt, cela ne se passe pas comme prévu :

la plus part des entités sont indisponibles :

donc forcement

tu aurais une idée par hasard?

@DcJona je sais que tu es plutôt à l’aise aussi avec mqtt, au cas ou tu passerais par là :wink:

De souvenir j’avais ça à l’installe.
Si tu lance un print ça devrait tourner.
Ou alors un petit reboot ?

merci pour ta réponse ^^

déjà reboot, plutot 2 fois qu’une :wink: octoprint, le RPI hebergeant octoprint, HA et meme l’imprimante lol

meme résultat malheureusement.

les conditions sont bien requisent, en effet lorsque je lance une impression, les cards apparaissent, le soucis reste les entités qui viennent de mqtt visiblement qui ont bien été créée mais reste indisponibles :confused:

Bon trouvé !

en faite il ne suffit pas d’installer et confirguer les plugins HomeAssistant Discovery et Octoprint-MQTT (ou alors j’ai mal lu la doc); j’ai attendue la fin de l’impression et installé ce matin MQTT Publish et MQTT subscribe, et tout fonctionne

Bizarre, moi pas eu besoin …

informatique rime avec magique…

Lol. D’où ma préférence pour les automates, en informatique, il y a toujours un truc qui ne fonctionne pas parce que le matos est trop différent/drivers qui manque/etc.

Bon un petit résultat de ce que ça donne quand c’est éteint :

Quand c’est allumé :

Avec les petites automatisations qui vont bien :

  • Une au démarrage pour allumer la lumière avec une petite tempo puisque le switch principal alimente imprimante, switch lumière et raspi 3B avec octopi.
  • Une à la fin d’un print, activable quand on veut, qui éteint le switch principal à la fin d’un print quand la tête est descendu en dessous de 40°C et après avoir correctement éteint l’octopi et la lumière. Très utile pour l’économie d’énergie et que ton print ce fini en pleine nuit / pas chez toi.

Je veux bien coller les yaml des automatisations ou des tuiles lovelace si ça intéresse quelqu’un.

1 « J'aime »

c’est cool ca!
j’ai quasi pareil avec node red ^^

  • allumage des led de la ender quand je fais un timelaps ou quand je rentre dans la piece.
  • extinction des led 10 minutes apres la fin de l’impression (pendant les 10 mn de fin de l’impression les led clignotent genre « on a réussi » lol )
  • une notif telegram + une photo sur sur telegram du resultat de l’impression :slight_smile:
  • Les led gérées par un weemos D1 mini avec le plugin WLED d’HA et alimentées par le rpi d’octoprint.
  • Caméra C270 de logitech alimenté aussi par le rpi et fixée sur une vis du plateau :wink:

Me reste à faire, comme tu le disais, la partie ecolonomie (ecologie + economie) avec une prise tplink qui gère également la consommation ++ influxdb et grafana :slight_smile:
et je cherche un truc pour gerer ma consommation de filament, mais là…je sens que ca va etre galere lol, si cela t’interesse on pourra pencher dessus ensemble.

image

J’ai enlevé les conditions de la carte pour ma part :wink:

Ah ! et un onduleur aussi je viens d’avoir une micropure… :confused:

1 « J'aime »

salut @Babidi ! re moi :slight_smile:

je ne trouve pas de octoPrint/hassControl/commands dans mon explorer mqtt, serait ce dû au fait que je sois avec le firmware d’origine ?
regarde :
image

je cherche à envoyer un gcode avec une entity button afin de faire la rétractation du filament « automatiquement » en appuyant sur un bouton dans lovelace (biensure il y aura un preheat de l’extrudeur avant ^^ :

type: entity-button
name: Level Bed
tap_action:
  action: call-service
  service: mqtt.publish
  service_data:
    topic: octoPrint/hassControl/commands
    payload: 'G1 Z+3 E-50{travel_speed}'

qu’en penses tu?

J’aurais plutôt mis ça :

type: entity-button
name: Level Bed
tap_action:
  action: call-service
  service: mqtt.publish
  service_data:
    topic: octoPrint/hassControl/commands
    payload: 'G1 Z+3 E-50 F{travel_speed}'

En gros il manque un espace et un F pour lui définir que c’est la vitesse.
Au pire, je tenterai déjà en brute :

type: entity-button
name: Level Bed
tap_action:
  action: call-service
  service: mqtt.publish
  service_data:
    topic: octoPrint/hassControl/commands
    payload: G1 Z+3 E-50 F500

Il faut aussi voir s’il ne faudrait pas passer en positionement et/ou extrusion relative aussi en fonction de ce que tu veux faire. A la vu des valeurs, je dirais que tu veux du relatif.
Pour rappel : G91 positionnement relatif, G90 positionnement absolu, M83 extrusion relative, M82 extrusion absolu.

merci pour ces conseils :slight_smile:

l’objectif est d’avoir un bouton pour effectuer une rétractation du filament à la fin de l’impression, pas automatisé , mais juste un bouton.
Lorsque je recevrais ma notif de fin d’impression , j’actionnerai ainsi la rétractation du filament via ce bouton.

Pour la ligne : octoPrint/hassControl/commands je cherche toujours pourquoi je ne l’ai pas dans mon mqtt explorer … j’hesite à installer marlin ou peut etre réinstaller octoprint …

et puis je ne comprends pas pourquoi il me demande une entité … :

image

j’suis reparti en mode « chat noir » ces temps ci…

Pour le coup j’ai du ma à comprendre le but. Si c’est pour une fin d’impression, il suffit de le mettre dans ton g-code de fin du slicer ! Je peux t’aider pour Cura ou PrusaSlicer, les autres je connais pas mais le principe est le même, il suffit de trouver où le mettre. Sachant qu’en plus tu risque de cliquer dessus pour rien ou quand la tête n’est plus assez chaude.

Sinon mets un type button, pas entity-button. Idem, il y a un espace entre F et {travel_speed}. Et je pense que tu devrai pas te prendre la tête et la fixer donc « F500 ».

Je te mets ce que j’ai pour un bouton pour préchauffer le bed à 90°C.

type: button
name: Bed 90°C
tap_action:
	action: call-service
	service: mqtt.publish
	service_data:
		topic: octoPrint/hassControl/commands
		payload: M140 S90

Sinon pour la mise en place, je tente déjà ta commande sur octoprint dans l’onglet commande et quand je suis sur, la, je la passe en mqtt via HA.

PS : Je n’ai pas non plus de topic: octoPrint/hassControl/commands dans le mqtt info, mais ça ne change pas que ça fonctionne.

merci pour ta réponse rapide :slight_smile:

le but est d’avoir un bouton (donc type: button) qui envoie les gcode suivant :

  • chauffe du nozzle (avec un preheatPLA par exemple) puis :
  • rétractation du filament
    (bien entendu, il faudra que la température du nozzle soit atteinte avant la rétractation du filament :smiley: )

cela me permettrait, en cas de changement de .stl avec une autre couleur de filament de ne pas attendre devant l’imprimante pour changer de filament (j’ai des problèmes de motricités et l’imprimante est à l’étage, j’ai des difficultés à rester debout et à monter les marches :confused: ); quand j’appuierai sur ce bouton, je sais qu’au bout de 10-15 minutes environ je pourrais allez à l’imprimante changer le filament. Donc il ne s’agit pas de le mettre dans le gcode de fin du slicer du coup ^^

Toujours dans le meme esprit, je pourrais ensuite faire evoluer la solution en envoyant le fichier via HA dans octoprint et lancer l’impression, sans avoir besoin d’aller dans octoprint…via node red par exemple :slight_smile: mais ca c’est une autre histoire :smiley:

en effet ! :
image

Ok je comprend mieux. Mais justement, si c’est pour pouvoir changer la couleur de filament, met le dans ton slicer.
Perso, c’est ce que j’ai fait. Je ne me pose pas la question s’il faut changer de bobine ou si j’ai un autre filament déjà dedans.

Je fait un petit stl (ou le dl), j’allume mon imprimante, met la préchauffe bed et nozzle et je vais direct à mon imprimante si je dois changer mon filament, peu importe la température du nozzle de toute façon il c’est rétracté à la fin du dernier print. Je charge le nouveau, le temps de faire ça le nozzle est à température pour le pousser un peu.

Tu peux aussi faire un changement de bobine (ou rangement, pour ne pas le laisser à l’humidité) même imprimante éteinte. Ce qui est bien souvent le cas quand je lance un print et que j’ai programmé une extinction auto. Je me ramène le lendemain, l’imprimante et éteinte et froide depuis longtemps, je range ma bobine, le fil n’est pas bloqué puisque rétracté a la fin.

je te copie colle ce que j’ai pour contrôler mon imprimante:

type: conditional
conditions:
  - entity: switch.imprimante3donoff
    state: 'on'
card:
  type: vertical-stack
  cards:
    - type: horizontal-stack
      cards:
        - type: button
          name: Home all axes
          tap_action:
            action: call-service
            service: mqtt.publish
            service_data:
              topic: octoPrint/hassControl/home
              payload: '["x", "y", "z"]'
        - type: button
          name: Level Bed
          tap_action:
            action: call-service
            service: mqtt.publish
            service_data:
              topic: octoPrint/hassControl/commands
              payload: G29
    - type: vertical-stack
      cards:
        - type: button
          name: Jog Z 1.0
          tap_action:
            action: call-service
            service: mqtt.publish
            service_data:
              topic: octoPrint/hassControl/jog
              payload: '{"z": 10.0, "speed": 1.0 }'
    - type: horizontal-stack
      cards:
        - type: button
          name: Jog X -1.0
          tap_action:
            action: call-service
            service: mqtt.publish
            service_data:
              topic: octoPrint/hassControl/jog
              payload: '{"x": -10.0, "speed": 1.0 }'
        - type: vertical-stack
          cards:
            - type: button
              name: Jog Y 1.0
              tap_action:
                action: call-service
                service: mqtt.publish
                service_data:
                  topic: octoPrint/hassControl/jog
                  payload: '{"y": 10.0, "speed": 1.0 }'
            - type: button
              name: Jog Y -1.0
              tap_action:
                action: call-service
                service: mqtt.publish
                service_data:
                  topic: octoPrint/hassControl/jog
                  payload: '{"y": -10.0, "speed": 1.0 }'
        - type: button
          name: Jog X 1.0
          tap_action:
            action: call-service
            service: mqtt.publish
            service_data:
              topic: octoPrint/hassControl/jog
              payload: '{"x": 10.0, "speed": 1.0 }'
    - type: vertical-stack
      cards:
        - type: button
          name: Jog Z -1.0
          tap_action:
            action: call-service
            service: mqtt.publish
            service_data:
              topic: octoPrint/hassControl/jog
              payload: '{"z": -10.0, "speed": 1.0 }'
    - type: vertical-stack
      cards:
        - type: horizontal-stack
          cards:
            - type: button
              name: Nozzle Off
              tap_action:
                action: call-service
                service: mqtt.publish
                service_data:
                  topic: octoPrint/hassControl/commands
                  payload: M104 S0
            - type: button
              name: Nozzle 220°C
              tap_action:
                action: call-service
                service: mqtt.publish
                service_data:
                  topic: octoPrint/hassControl/commands
                  payload: M104 S220
            - type: button
              name: Nozzle 245°C
              tap_action:
                action: call-service
                service: mqtt.publish
                service_data:
                  topic: octoPrint/hassControl/commands
                  payload: M104 S245
        - type: horizontal-stack
          cards:
            - type: button
              name: Bed Off
              tap_action:
                action: call-service
                service: mqtt.publish
                service_data:
                  topic: octoPrint/hassControl/commands
                  payload: M140 S0
            - type: button
              name: Bed 65°C
              tap_action:
                action: call-service
                service: mqtt.publish
                service_data:
                  topic: octoPrint/hassControl/commands
                  payload: M140 S65
            - type: button
              name: Bed 90°C
              tap_action:
                action: call-service
                service: mqtt.publish
                service_data:
                  topic: octoPrint/hassControl/commands
                  payload: M140 S90

1 « J'aime »

Merci encore, ca avance, je commence à comprendre le fonctionnement ^^ surtout apres avoir perdu 2 jours à chercher un topic qui n’existe pas lol

image

bon, le gcode de retractation ne passe pas, je vais chercher encore.
je me tate à passer sur un autre firmware mais cela en vaut il la peine… ? je vais poursuivre sur jybi89 ! - Présentations - Forum pour les imprimantes 3D et l’impression 3D sinon je vais faire du hors sujet ici :slight_smile:
merci en tout cas pour tout tes bons conseils :slight_smile:

Pour moi ça n’en vaut pas la peine, en tout cas pour l’instant !

Si les commandes passent avec mqtt, déjà c’est bien.
Il faut juste voir plutôt avec l’interface de commande de Octoprint ce qui ne passe pas. Comme dit plus haut, test de passer par la :


Quand tu auras ta commande ou plusieurs… tu pourra la passer dans la payload.