je possede une imprimante ENDER 3 KE qui tourne sous klipper et sur laquelle j’ai installé Mainsail
Avec une prise connectée, je souhaite arreter l’imprimante apres qu’elle est finie l’impression et refroidie.
J’ai installé le plugin OCTOPRINT qui m’indique que mon systeme n’est peut-etre pas compatible (utilisation de jeedom avec un RPI4). Cela semble fonctionner, mais je n’est que le statut et les T° qui remonte comme infos.
Le pourcentage d’avancement reste à zéro. je ne peux donc pas arreter mon imprimante une fois fini
Alors, à l’époque j’utilisais le plugin PSU Control pour Octoprint
et 3 scripts : alim_[on|off|status].sh pour allumer, éteindre ou connaitre l’état de la prise connectée par call API sur Jeedom.
Ca fait quelques années que j’ai arrêté l’impression 3D et délègue toutes mes impressions à un pote (passionné), à qui j’ai donné mon imprimante.
L’idée des scripts est simplement de faire appel aux URLs des commandes On/Off/Etat dans Jeedom :
J’ai une Ender 3D Pro largement customisée (CM BigTreeTech SKR mini E3 v3, affichage BIGTREETECH TFT35 E3 V3.0.1,…) qui tourne sous Marlin 2.1.2.1, et octoprint 1.9.3.
J’ai installé pour contrôler les arrêt/marche :
Une prise connectée Trädfri d’Ikéa,
Le plugin PSU Control, qui permet entre autre de provoquer l’arrêt de l’imprimante sous condition de T° de la buse (50°C ici) et après un timeout (10’)
Par contre, la notation « !== » ou « === » n’est pas très conforme, mais ca marche…
Autre problème :
[2024-03-02 11:35:24][SCENARIO] Evaluation de la condition : ["Operational" !== '"Printing" && ""==1] = "Operational" !== '"Printing" && ""==1
[2024-03-02 11:35:24][SCENARIO] Expression non valide : "Operational" !== '"Printing" && ""==1
Je dirai à priori que la variable ‹ Impression_en_cours › n’a pas été créée au préalable, du coup Jeedom ne la trouve pas…
Ben là pour le coup, si la T° de la buse ne remonte pas via le plugin Octoprint, il n’y a rien à faire d’autre que d’estimer un temps de refroidissement suffisante de celle-ci. Dans le scénario, entre 3’ et 5’ me semble pas mal.
J’ai retapé la condition du SINON…et me demander pas pourquoi, cela fonctionne
Plus d’erreur dans le LOG. Par contre j’aimerai rajouter la temperature du BED. Si je le met comme condition, le script va verifier la 1er fois au changement d"etat qui est le déclencheur , si le BED n’est pas trop chaud…mais il ne va pas refaire le test car la condition de déclenchement qui est ETAT n’a pas bougé.
Bonjour,
Je n’ai pas vraiment saisi l’objectif, dites moi si je me trompe dans ma compréhension :
Dans une boucle interne SI…ALORS ?
L’idée serait donc :
sur un changement d’état de la variable « Impression_en cours », je démarre le scénario.
SI le bed est > à tant de degrés, ALORS je ne fait rien.
Effectivement, l’utilisation de ce déclencheur n’est donc pas bon…
Si l’objectif est de stopper l’imprimante dès que la T° du bed passe en dessous d’une certaine valeur, perso je ferai plutôt comme ça :
Déclencheurs : variable(Impression_en cours) et [Bureau][Ender][Actuelle bed]
Donc le scénario se déclenchera soit sur un changement d’état, soit sur un changement de T° du bed.
Dans le scénario, ajouter une boucle SI…ALORS :
SI variable(Impression_en cours)==0 && [Bureau][Ender][Actuelle bed] < xx && [Bureau][Ender][Satut] != « Printing »
ALORS stopper l’imprimante.
Je précise ces conditions qui doivent être toutes réunies pour stopper l’imprimante :
Variable(Impression_en cours)==0 → L’imprimante n’est pas en cours d’impression
[Bureau][Ender][Actuelle bed] < xx → La température du bed est en dessous du seuil fixé xx
[Bureau][Ender][Satut] != « Printing » → cette dernière condition pour traiter le cas d’un démarrage d’une impression 3D où celle-ci ne doit pas être stoppée, c’est à dire lorsque le statut est à « Printing » dans le délai de 3’ avant que la variable « Impression_en cours » ne change d’état, et tant que la température du bed qui va augmenter progressivement (et donc déclencher ce scénario) reste en dessous du seuil.
Bonsoir,
Tel quel, cette variable ne sert à rien et n’est pas prise en compte en effet.
Il faudrait l’initialiser (la créer directement dans le tableau des variables) pour que cela puisse fonctionner. Elle sert à indiquer l’état de l’imprimante 3’ après un changement d’état réel de celle-ci, et de stopper celle-ci à ce moment là, et pas au moment où l’imprimante fini son impression pour passer en cool-down…