Skript wird nicht ausgeführt ... Finde keinen Fehler

Hallo Community...
ich nutze einen Raspi 3B mit 3 Druckern und 3 Kameras.
Funktioniert tadellos.
Jetzt würde ich gerne das Licht der einzelnen Drucker im Dash Board AN und AUS Schalten können bei Bedarf (nicht via G-Code).

Die extcommand.xml habe ich bereits angepasst.
Die Einträge werden auch im jeweiligen Drucker Menü angezeigt (mit slug).
Aber beim Klicken passiert gar nichts.

Wenn ich die Python Skripte per SSH ausführe, funktioniert es problemlos.

Details ... in der extcommands.xml

        <command slug="Creality_CR6SE1">
                <name>CR6-SE Licht AN</name>
                <execute>sudo bash /home/pi/scripts/lightOnCR6.sh</execute>
        </command>
        <command slug="Creality_CR6SE1">
                <name>CR6-SE Licht AUS</name>
                <execute>sudo bash /home/pi/scripts/lightOffCR6.sh</execute>
        </command>
        <command slug="Creality_CR10v5">
                <name>CR10v2 Licht AN</name>
                <execute>sudo bash /home/pi/scripts/lightOnCR10.sh</execute>
        </command>
        <command slug="Creality_CR10v5">
                <name>CR10v2 Licht AUS</name>
                <execute>sudo bash /home/pi/scripts/lightOffCR10.sh</execute>
        </command>
        <command slug="Artiellery_Sidewinder_X1">
                <name>Sidewinder Licht AN</name>
                <execute>sudo /usr/bin/python /home/pi/on.py</execute>
        </command>
        <command slug="Artiellery_Sidewinder_X1">
                <name>Sidewinder Licht AUS</name>
                <execute>sudo /usr/bin/python /home/pi/off.py</execute>
        </command>

######
Details ... Skript Bash

local GPIO = periphery.GPIO

local gpioBlink = nil

function setup()
  gpioBlink = GPIO(22, "out")
end

function loop()
gpioBlink:write(true)
end


######
Details ... Skript Python

import RPi.GPIO as GPIO
import time

led = 22

GPIO.setmode(GPIO.BOARD)
GPIO.setup(led, GPIO.OUT)

GPIO.output(led, GPIO.HIGH)


Wo liegt mein Fehler? Leider kann ich auch keine passenden Beispiele finden.
Repetier Version 0.94

Danke Euch


Comments

  • Wenn du die Skripte manuell testest stelle immer ein
    sudo -u repetierserver <rest des befehls>

    voran. Dann werden sie als der User ausgeführt den auch der Server nutzt. Typische Fehler sind das geweisse Befehle nicht in der sudoer liste  für repetierserver liegen. Hier währen das bash und python. Besser zumindest bei bash ist wenn die erste Zeile
    #!/bin/bash
    ist dann setz noch x flag: chmod a+x datei
    Dann ist die Datei direkt ausführbar und aus
    sudo bash /home/pi/scripts/lightOnCR10.sh
    wird
    sudo /home/pi/scripts/lightOnCR10.sh

    Wobei das sudo sogar wegfallen kann wenn die Datei von repetierserver lesbar und ausführbar ist. Der user gehört auch der Gruppe gpio an und kann damit pins ändern. Gilt auch für die python skripte. Am besten Skripte unter /var/lib/Repetier-Server/scripts speichern. Da sind sie auch lesen. /home/pi ist normal nicht für repetierserver lesbar. 
  • Oh Super Danke für die Info.

    Habe es hinbekommen.

    Eine andere Frage noch.
    Im Dashboard werden unten die Netzwerk Schnittstellen angezeigt.
    Kann man die irgendwie ausblenden?

    Wüsste nicht für welchen Zweck ich diese ständig im Blick haben muss ;)

    Danke und Gruß
    Michael
  • Nein kann man nicht ausblenden, aber weil sie selten gebracht werden sind sie ja schon unten. Im repetier-server monitor fehlen sie sogar ganz.
  • Hat jemand noch eine Idee, wie ich einen Ausgang nach jobFinished schalten kann?

    Meine Herangehensweise wäre es über eine Websocket Abfrage in Node Red.

    Aber hier fehlen mir Beispiele.

    Wie nutze ich zB die in der API Description erwähnten "Events"

    Werde noch nicht ganz schlau aus der Sache.

    Eine normale Abfrage habe ich schon hinbekommen mit
    http://IP:3344/printer/api/?a=state&apikey= ;

    Aber wo füge ich den Event ein?

    Was will ich machen?
    Wenn Status = Druck beendet .... dann warten bis Druckbett kalt .... dann Ausgang an Node Red
  • Was versuchst du zu erreichen? Du kannst doch in dem job finsihed ereignis einfach ein skript ausführen. Einfach in extcommands.xml zusätzlich dein skript als execute anweisung wie 
    <execute name="shutdown" allowParams="false" sync="false">sudo /sbin/shutdown -h now</execute>

    Hier wird der server Befehler
    @execute shutdown
    den pi runterfahren. Genau so kannst du aber auch kein Lichtskript aufrufen im Job ende skript.
  • edited January 2021
    Ich habe einen kleinen Industrie Roboter, und will diesen antriggern, das er das Teil entnehmen kann, sobald Job Fertig + Zeit XX

    Wo kommt das @execute denn hin?

    Klingt verrückt, aber wir basteln ja gerne ;)

    Bin noch nicht ganz dahinter gestiegen, wie das mit den Events zu handlen ist.
    Es fehlen Beispiele in Text Form, oder bei YouTube.

    Habe die externen Trigger für die Lampen jetzt hinbekommen.
    Bin am überlegen ein YT Video darüber zu machen, wenn Ihr nichts dagegen habt.
  • Die event gcodes werden immer ausgeführt wenn der Drucker verbunden ist und das Ereignis getriggert wird. Ist der Druck fertig wird immer das Skript für Druck beendet getriggert und alle Befehle darin werden ausgeführt. Willst du also Bett abräumen wenn er fertig ist füg da einfach dein @execute ein.

    You tube videos haben wir noch nicht viele, da bauen wir erst eine Bibliothek auf. Aber so was sind echte Bastellösungen und unikate daher eher nichts worüber wir ein Video machen. Erst mal was viele machen:-)

    Natürlich kannst du gerne auch videos machen. Gibt ja auch von vielen anderen Anleitungen auf youtube. Muss ja nicht alles von uns kommen.
Sign In or Register to comment.