Octoprint: Python Script mit Button ausführen

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von Ramset, 4. August 2019 .

  1. 4. August 2019
    Aloa,

    Ich nutze für meinen 3D Drucker Octoprint und habe eine LED Beleuchtung die ich mit dem Knopf in Octoprint Ein und Ausschalten will. Das Script funktioniert und sonst ist alles bereit.
    Mein Problem:
    Die LED Beleuchtung möchte ich mit einem Knopf schalten und dafür habe ich in der control.jinja2 Datei einen Knopf hinzugefügt über Copy&Paste und versucht mein Python Script damit irgendwie zu Starten.

    Der Button ganz oben soll das script ausführen allerdings habe ich keine Ahnung wie ich das hier machen soll. (Bin kein Programmierer oder sowas)

    Auszug:

    <h1>{{ _('General') }}</h1>
    <div>
    <button class="btn btn-block control-box" data-bind="enable: isOperational() && !isPrinting() && loginState.isUser(), click: function() { "/home/pi/OctoPrint/script/led.py"}) }">{{ _('Licht an /15 Sek') }}</button>
    <button class="btn btn-block control-box" data-bind="enable: isOperational() && !isPrinting() && loginState.isUser(), click: function() { $root.sendCustomCommand({type:'command',command:'M18'}) }">{{ _('Motors off') }}</button>
    <button class="btn btn-block control-box" data-bind="enable: isOperational() && loginState.isUser(), click: function() { $root.sendCustomCommand({type:'command',command:'M106 S255'}) }">{{ _('Fan on') }}</button>
    <button class="btn btn-block control-box" data-bind="enable: isOperational() && loginState.isUser(), click: function() { $root.sendCustomCommand({type:'command',command:'M106 S0'}) }">{{ _('Fan off') }}</button>
    </div>
    </div>

    Ich hoffe ich habe alle wichtigen Infos genannt, falls nicht fragt nur.

    LG
    Ramset
     
  2. 4. August 2019
    Den Pfad zum py angeben bringt da glaub nichts... du musst das eher analog machen wie die anderen Buttons:

    $root.sendCustomCommand({type:'command',command:'NAME unter der das Script integriert wird' } )

    Dein Python script könnte also wohl in irgend einer Config ebenfalls ein Kürzel haben? wie zb der FAN als M106 ?

    der zweite wert ist dann entweder S255 für 1 oder S0 für 0 damit wird der Ausgang wo die LED dran hängt gesteuert ebenso wie der FAN vermute ich mal. Du müsstest nur rausfinden unter welchem M123 kürzel sich die Ansteuerung zur LED befindet.

    das ganze ist wohl von octaprint vorgegeben also kein normales javascript.
     
  3. 4. August 2019
    Damit das ganze für euch mehr Sinn macht vll noch folgende Info:
    Das Python Script steuert einen GPIO Pin welcher dann für 15 Sekunden geschaltet wird. Dieser PIN schaltet dann ein Relai und das die LED

    Ich in meinem Leichtsinn hätte es eben schön gefunden irgendwie mit dem Knopf das Script ausführen zu können.
    Idealerweise irgendwie in Octoprint integriert wo alle anderen Steuerungen für den 3D Drucker auch drin sind.
    Diese M501 und andere M... sind Steuerkommandos für den Drucker um zb den Lüfter ein/aus oder irgendwelche Bewegungen auszuführen usw.
    Bezüglich Sicherheit: Das Teil ist nicht vom Internet erreichbar (Nur über mich über einen VPN)
     
  4. 14. März 2020
    Kurze Rückmeldung wie ich mein Problem nun gelöst habe (nicht elegant aber läuft).

    Webserver erstellt, Script wird beim Aufruf eines Links ausgeführt. In Octoprint einen HTML Button erstellt mit verweis auf den Webserver/Script und läuft. Direkt bei Octoprint hat man mir ein Plugin vorgeschlagen um Octoprint zu erweitern. (Genau für sowas soll das Plugin wohl sein).
    Allerdings führte das bei mir zum Abbruch des Drucks und zum Absturz von Octoprint. Deswegen nutze ich nun diese "Lösung"

    LG Ramset
     
    raid-rush gefällt das.
  5. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.