Aller au contenu

GO Print

Contrôler une prise connectée TPLink depuis Octoprint


Messages recommandés

Bonjour à tous,
Dans son excellent tuto sur la fabrication d'un caisson, @Baroudeur propose l'utilisation d'une prise connectée pour permettre d'éteindre et d'allumer à distance toute l'installation de notre imprimante.

Ce tuto reprends cette prise, et ajoute la possibilité de la contrôler depuis Octoprint (extinction automatique en fin de print, ou bien extinction manuelle depuis le menu d'Octoprint).
Cela permet notamment d'éviter que l'imprimante (et tout le reste : Alim, raspberry, webcam etc...) reste allumé toute la nuit après que l'impression a terminé à 4h du mat' par exemple.
Si vous n'avez jamais eu l'occasion d'utiliser un environnement type Unix, ou bien faire de la bidouille type scripting, ce tuto risque d'être assez déroutant, mais faisable :)

C'est parti !

Le nécessaire : 

  • Une prise connectée de marque TP-Link (HS100 ou HS110)
  • Un Octoprint fonctionnel tournant sous raspberry connecté au réseau

Depuis une connexion SSH sur notre Octoprint (possible avec PuTTY), on commence par mettre à jour les packages de notre Octoprint (cela peut mettre un certain temps) :

sudo apt-get update
sudo apt-get upgrade

Ensuite on installe Node.js :

curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash -
sudo apt-get install nodejs

On récupère ensuite l'API qui va nous servir pour communiquer avec notre prise connectée :

git clone https://github.com/plasticrake/tplink-smarthome-api.git
cd tplink-smarthome-api
sudo npm install -g tplink-smarthome-api

Et on donne se donne les droits d'accéder au package fraîchement installé :

sudo chown -R $USER /usr/local/
sudo chown -R $USER /usr/lib/
cd ~/

Il faut ensuite créer le script qui va permettre d'éteindre la prise. Il s'agit d'un script Node.js que l'on nommera "plug_power_off.js". Pour cela on peut le créer avec nano (je vous invite à aller lire cette doc pour son utilisation) :

const { Client } = require('/usr/lib/node_modules/tplink-smarthome-api');

const client = new Client();
const plug = client.getDevice({host: 'IP_DE_LA_PRISE'}).then((device)=>{
  device.getSysInfo().then(console.log);
  device.setPowerState(false);
});

Important dans ce script : Il faut remplacer "IP_DE_LA_PRISE" par l'adresse IP locale qu'utilise la prise sur votre réseau local.

 

A partir de maintenant, on doit être capable d'éteindre la prise avec la commande suivante :

node plug_power_off.js

Si ce n'est pas le cas, c'est qu'il y a eu un loupé quelque part (vérifier que tout est bien installé : NodeJs, l'API et le script bien écrit).

Ensuite, Octoprint donne la possibilité de déclencher des actions sur des types événements (du style "démarrage du print", "print terminé" etc...).
Pour cela il faut éditer le fichier "config.yaml" qui se trouve dans ".octoprint" :

cd .octoprint
sudo nano config.yaml

Et on y ajoute le texte suivant :

events:
  enabled: True
  subscriptions:
  - event: PrintDone
    command: node ~/plug_power_off.js
    type: system

11.png.faa744cec68f80e557cf00f4796e16d5.png

Comme vous l'aurez compris : ces quelques lignes permettent de déclencher notre script d’extinction de prise à la fin de chaque print.

Enfin, vous avez aussi la possibilité de rajouter un menu dans l'interface d'Octoprint à l'aide du plugin "System Command Editor", qui vous permettra d'éteindre manuellement.
Pour cela, après avoir installé le plugin (vous pouvez vous inspirer de ce tuto vidéo), on rajoute une nouvelle commande :

1.png.2c20c266322e89b18660cf2d09391352.png

Et on se retrouve avec un joli menu :
2.png.afe568e015a8de9bc70c457f374ec1e5.png

 

Vous pouvez bien entendu choisir l'une, l'autre ou les deux possibilités pour éteindre votre prise. Si vous ne voulez pas tout éteindre systématiquement après chaque print, alors l'option manuelle via le menu est peut-être plus adaptée pour vous.

J'espère avoir été clair dans le tuto, bon courage et bon bidouillage !

Modifié (le) par Dreaky
Lien vers le commentaire
Partager sur d’autres sites

En plus simple... mais plus compliqué car il faut installer l'ecran MKS TFT 3.2 il y a un module en option prévu pour mettre OFF l'imprimante en fin de print

Lien vers le commentaire
Partager sur d’autres sites

il y a 41 minutes, thsrp a dit :

En plus simple... mais plus compliqué car il faut installer l'ecran MKS TFT 3.2 il y a un module en option prévu pour mettre OFF l'imprimante en fin de print

L'imprimante oui, mais pas tout le reste (raspberry, alim externe, ventilation externe, cam etc...) :D

Modifié (le) par Dreaky
Lien vers le commentaire
Partager sur d’autres sites

Il y a 4 heures, thsrp a dit :

En plus simple... mais plus compliqué car il faut installer l'ecran MKS TFT 3.2 il y a un module en option prévu pour mettre OFF l'imprimante en fin de print

Bonjour,

As-tu un lien Aliexpress vers ce module prévu pour mettre en OFF qui est étudié pour travailler avec MKS32 ?

J'avais vu un module de détection de coupure de courant permettant de mettre dans ce cas l'imprimante si l'on utilise un onduleur.

Avoir une mise OFF automatique en fin d'impression peut être sécurisant.

As-tu un datasheet de ce module permettant de mettre en OFF après la fin de l'impression ?

Modifié (le) par Tfou57
Lien vers le commentaire
Partager sur d’autres sites

  • 3 weeks later...

Merci pour ce tuto !

Sachant que j'ai une HS110, le top serait de pouvoir récupérer les données de conso depuis le pré-heat jusqu'au moment de la coupure, histoire d'avoir une mesure relative a l'objet plus précise quoi.

Quelqu’un sait si c'est possible ?

Lien vers le commentaire
Partager sur d’autres sites

il y a 53 minutes, AMaX a dit :

Merci pour ce tuto !

Sachant que j'ai une HS110, le top serait de pouvoir récupérer les données de conso depuis le pré-heat jusqu'au moment de la coupure, histoire d'avoir une mesure relative a l'objet plus précise quoi.

Quelqu’un sait si c'est possible ?

De rien !

Rien n'est impossible, mais après rapide recherche, la mesure d'une consommation électrique sur une période n'est pas disponible avec cette API. Pour l'instant, la seule chose possible c'est de lire la consommation en temps réel (via la commande getRealtime).
Donc pour avoir une consommation sur la durée, il faudrait faire un script qu'on lance au démarrage de l'impression (via les events), et qui à intervalle régulier récupère la consommation en temps réel. A la fin de l'impression, il fait une moyenne de la conso et calcul l'énergie totale consommée sur toute la période.

Si tu es à l'aise avec le scripting, tu peux tenter :)

Lien vers le commentaire
Partager sur d’autres sites

Sinon plus simple : Il existe déjà un plugin octoprint qui fourni (entre autre, avec plusieurs autres stats) directement la consommation en kWh de l'imprimante : 

https://plugins.octoprint.org/plugins/stats/

Il faut pour cela lui indiquer la consommation électrique de chacun des éléments de l'imprimante :

img4.png

Donc pas besoin de se servir de la prise TP-Link.
Avantage : simple à mettre en place
Inconvénient : ne prends pas en compte la consommation des éléments en plus de l'imprimante qui serait plugués sur la prise (comme l'alim du raspberry, la webcam, l'éclairage etc...).

Lien vers le commentaire
Partager sur d’autres sites

  • 10 months later...

Bonsoir,

Je vois que le plugin pour le TP-Link est Blacklisté ?

https://plugins.octoprint.org/blacklist/

EDIT du 02/01/19 : 

Citation

jneilliii a commenté le 17 mars 2018

Je ne suis pas tout à fait sûr, mais d'après ce que je peux dire, la liste de la liste noire concerne des versions spécifiques du plug-in et une version spécifique d'OctoPrint. C'est pour empêcher les gens d'installer une version plus ancienne du plugin, je suppose.

 

Donc RAS. Le Plugin actuel "TP-Link Smartplug (0.9.10)" est parfaitement fonctionnel normalement.

Modifié (le) par fredondem
Lien vers le commentaire
Partager sur d’autres sites

  • 1 month later...

Au début j'ai fais comme Heliox le préconise dans sa vidéo.
Mais j'ai eu quelques déboires avec les réglages d’arrêt du TP-Link, quand j’incluais son arrêt dans le G-code du print. (Ou plus précisément, dans le "Gcode de fin" de la configuration de l'imprimante du slicer (Cura et Slic3R en l'occurrence)

Apparemment Octoprint n'appréciait pas du tout.
J'avais un message d'erreur à la fin (pas noté), et dans l'historique des print j'avais tout le temps le point d'exclamation rouge malgré que le print se soit bien terminé et que la prise s’éteignait correctement.

Voici le réglage que j'ai trouvé pour ne plus avoir de message d'erreur :

J'ai finalement opté par "sortir" la commande d’arrêt du TP-Link, dans les " Script GCode" d'Octoprint.
Ce qui peut être un inconvénient, car la machine s'éteint à chaque fin d'impression. Mais moi, ça me va bien comme ça.

1- Réglage du Plug-In TP-Link :

image.png.c1821966b380d967cda38ed3a70f0cf8.png

 

2- Et le réglage du Script GCode d'octoprint rubrique "Après l'impression"

image.thumb.png.9d855d82aeca13b5d23c519bbf590585.png

Vous aurez noté au passage la commande de levage du X quand j’annule un print raté (C'est plus pratique pour retirer le PLA du print avorté)

Si quelqu'un a une autre vision plus pragmatique ou qui marche mieux, je suis preneur.
> Je trouve quand même que les explications de réglage de ce plug-in sont quelques peu énigmatique.
 

Modifié (le) par fredondem
Lien vers le commentaire
Partager sur d’autres sites

  • 1 year later...

Bonjour à tous, j’ai pas mal cherché sur les forums comment utiliser la prise tp link avec OctoPrint mais je n’arrive pas à trouver comment faire ce que je voudrai: je souhaiterai que mon raspberry soit alimenté par la prise TP-Link comme l’imprimante mais qu’il puisse s’eteindre de manière correcte. À la fin de l’impression je voudrai qu’une commande soit envoyée à la prise pour qu’elle s'éteigne dans 5 mn, puis qu’octoprint s’envoi un shutdown now. Comme ça au bout de 5 mn tout s’éteint, mon imprimante a refroidi et le raspberry est éteint proprement. Avez-vous une idée ? 

Lien vers le commentaire
Partager sur d’autres sites

  • 2 months later...

salut, oui sans problème, il faut juste décocher l'option "déconnecté " si non quand tu vas éteindre ton éclairage octoprint va se déconnecter de l'imprimante et mettre fin à l'impression 

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...