@execute, wo/wann wird rauf reagiert

Kurzer hintergrund:
Ich nutze ein Duet2Wifi mit DWC was von Repetier-Server via USB befeuert wird.
Jetzt möchte ich ein Macro im DWC ausführen welches z.B. eine Nachricht absendet und der Repetier Server drauf reagiert.

Bisheriger Umsetzungsversuch:
im Macro habe ich sowohl mit dem M118 als auch M117 rumgespielt, und ich sehe auch an der Konsole vom Repetier Server mein "@execute switchto...."
Die Frage:
Reagiert Repetier "nur" auf Zeilen die im GCode sind welche selbst verarbeitet werden, oder reagiert Repetier auch auf Meldungen die vom Drucker zurückkommen?
Oder muss ich eher versuchen mit Action-Commands zu arbeiten?

Aufbau meiner extcommands.xml
<config>
        <!--
       If you want to run external commands, enter them in this configuration with
       full path. You will see them in the main menu. Copy this file into the
       <storage>/database directory.

       Security consideration: The reason there is no online editor for this is simply
       security. The commands you enter here are executed with the privileges of the
       daemon running the server. If you would allow online configuration, a hacker could
       simply add any command he needs to hack your system.
    -->
        <command>
                <name>Shutdown Server</name>
                <execute>sudo /sbin/shutdown -h now</execute>
                <confirm>Really shut down the server?</confirm>
        </command>
        <command>
                <name>Reboot Server</name>
                <execute>sudo /sbin/shutdown -r now</execute>
                <confirm>Really reboot the server?</confirm>
        </command>

        <command>
                <name>Switch to DWC</name>
                <execute>sudo /usr/local/bin/switchtoduet.sh</execute>
        </command>
        <command>
                <name>Switch to Repetier</name>
                <execute>sudo /usr/local/bin/switchtorepetier.sh</execute>
        </command>

        <!--
        G-code files can contain
        @execute cmd param1 param2
        commands. To prevent external users from executing unwanted or dangerous commands,
        only commands defined here are allowed to execute. More over, only the shortcuts
        defined here are to be used as cmd in @execute. Prevent parameter where ever possible.
    -->
        <execute name="switchtoduet" allowParams="true">sudo /usr/local/bin/switchtoduet.sh</execute><!-- switch from repetier touchscreen to duet web control -->
        <execute name="switchtorepetier" allowParams="true">sudo /usr/local/bin/switchtorepetier.sh</execute><!-- switch from duet web control to repetier touchscreen >
</config>


Die Scripte werden über die Commands ohne Probleme ausgeführt, nur die executes habe ich noch nicht ausgelöst bekommen, jedenfalls nicht vom Duet aus.

Comments

  • Es werden nur Befehle im eigene gesendeten G-Code ausgeführt,alles andere sieht er ja nicht. Antworten werden nicht ausgeführt, aber ausgewertet. Wenn du also switchtoduet aus einem DWC Skript aus ausführen willst schreibst du z.b.
    M118 P1 S"switchtoduet"
    Denke P1 ist für deine Verbindung richtig so das server es sieht.
    In Druckereinstellungen->G-Codes->Ersetzungen fügst dann eine Regel ein die den String erkennt und dann den Befehl serverseitig ausführt. Also regulärer Ausdruck
    ^switchtoduet"

    und dann
    @execute ;switchtoduet
    als skript.

    Aber es gibt eigentlich keinen Grund das als Wechsel so extern zu machen wenn du nur mal den duet web screen sehen willst. Den kannst du leicht im Repetier-Touchscreen als frame einbauen. Gehe zu Global Einstellungen->Externe Links und füg einen hinzu. Wichtig ist "Auf dem Touchscreen des Druckers" anzeigen. Da weiterhin links der home button bleibt kommst du damit wieder zurück in die normale gui.
  • Ja Supi, danke für die Hinweise, werde ich gleich mal probieren.
    Und zwar beide Varianten.
    Weiß noch nicht was ich permanent will, 100% DWC Oberfläche, 100% Repetier Oberfläche, Oder beides, Oder ...
  • edited January 2022
    mit M118 P1 hast auf jeden Fall schon mal recht
    mit M118 P0 klappt es auch, dort wird es an alle Schnittstellen ausgegeben

    Du lagst aber etwas daneben, es muss nicht über Druckereinstellungen -> G-Codes -> Ersetzungen laufen sondern über "Antwort auf Ereignis"

    Klappt 1A, so habe ich nun doch den Weg des hin und herschaltens, und das ohne mein GPIO Board ;)

    Mal schauen was Praktikabler ist.

    Also zusammenfassung für jemand der was ähnliches nachbauen will:

    Auf dem Duet Web Control (DWC):
    Macro erstellen mit folgendem Inhalt:
    M118 P1 S"switchtorepetier"

      Im Repetier-Server unter "Druckereinstellungen" -> "G-Codes" -> "Antwort auf Ereignis" ein "Neuen Ereignisgenerator erstellen"
    Ereignis:
        Switch to Repetier Touchscreen
    
    Regulärer Ausdruck:
        ^switchtorepetier$
    
    Auszuführender G-Code:
        @execute switchtorepetier
    Das ^ am Anfang vom Ausdruck bestimmt das der Ausdruck nur am Zeilenanfang gesucht wird und das $ das Ende vom Ausdruck.

    Auf dem Repetier-Server selbst muss dann in der extcommands.xml folgendes vorhanden sein:
    <config>
            <execute name="switchtorepetier" allowParams="true">sudo /usr/local/bin/switchtorepetier.sh</execute><!-- switch from duet web control to repetier touchscreen >
    </config>
Sign In or Register to comment.