NEWS
Mit Blockly Drucker (TSPL2 oder ZPL2) über telnet ansprechen
-
Hallo zusammen,
ich möchte einen Etikettendrucker über den iobroker ansprechen. Dazu möchte ich das TSPL2 Protokoll benutzen. Der Plan ist, das über telnet zu realisieren. Vom PC aus funktioniert das schon mal gut. Wenn ich mit über Putty über SSH auf den Pi schalte, kann ich mit den Befehlen:
telnet 192.168.0.47 9100
eine Verbindung aufbauen. Nach dem Befehl bestätige ich mit Enter.
der Pi meldet sich dann wie folgt:
Trying 192.168.0.47...
Connected to 192.168.0.47.
Escape character is '^]'.
Dann kann ich den Drucker mit den Informationen Zeile für Zeile füttern.
Zum Schluss dann "PRINT 1,1" und der Drucker macht seinen Job.Jetzt möchte ich das aber aus einem Blockly-Script heraus steuern. Ich habe da einen Ansatz, wie ich einen Konsolenbefehl absetzen kann. Dazu benutze ich den "exec-Befehl" Baustein. Mir ist aber nicht klar, wie ich das Zeile für Zeile, je mit einem Return, eingeben kann.
Vielleicht kann mir hier zeitnah jemand weiterhelfen.VG hgpiepel
-
@hgpiepel könnte das nicht in einer zeile im exec gemacht werden
z.b
ls- la && cp .....
oder du schreibst dr ein bashscript, dass du über exec aufrufst
-
@liv-in-sky said in Mit Blockly Drucker (TSPL2 oder ZPL2) über telnet ansprechen:
&&
Hallo liv-in-sky,
danke für deine rasche Antwort. Ich habe die Befehle einmal mit && getrennt hintereinander eingegeben.
zunächst habe ich das mal über putty versucht. Die telnet Verbindung wurde zwar aufgebaut aber den Print-Befehl in der gleichen Zeile übernimmt er nicht. Gebe ich nach dem Verbindungsaufbau den Print- Befehl ein, schiebt der Drucker sein Etikett vor.
Ich denke, dass die Verbindung abgewartet werden muss, bevor weitere Befehle kommen...??
In Blockly habe ich das auch einmal wie folgt aufgebaut:hierbei muckt sich der Drucker, wie ich es dann schon erwartet habe, nicht. Wenn ich es einmal aus dem Blockly raus versucht habe, muss ich anschließend auch den Drucker wieder einmal neu starten, damit es dann vom putty aus wieder funktioniert.
Ich habe bei meinen Versuchen etwa an folgendes gedacht:
Kann man die Verbindung evtl. abwarten und dann verzögert die weiteren Befehle absetzten Wie würde man das evtl. im Blockly realisieren? Mein Versuch hat leider nicht funktioniert...Für mich ist Pi, iobroker, Blockly ein neues Thema, deshalb sorry für evtl. blöde Fragen
-
@hgpiepel in blockly bekommst du so eine verzögerung
(beachte die zeiten in den timeouts!)
ich weiss nicht ob es mit einem befehl so auch gehen würde:
telnet .... && sleep 3 && PRINT ....
-
leider funktioniert das nicht. Das Script wird soweit ausgeführt aber er scheint auch zeitverzögert den PRINT Befehl nicht zu nehmen. Auch das Ganze in einer Zeile mit dem Sleep-Befehl geht erst einmal so nicht.
Er baut hierbei die telnet-Verbindung mit der Rückmeldung auf. Dann aber nichts. Wenn ich dann anschließend den PRINT-Befehl noch einmal eingebe und mit Enter bestätige, druckt er. Oder muss das CR (Enter) irgendwie mit eingebunden werden?VG hgpiepel
-
ich vermute mal, dass telnet eine eigener session ist , mit eigene umgebung. somit ist der folgende print befehl zwar in linux ausgeführt aber nicht in der telnet session
hier findest du ähnliches
https://stackoverrun.com/de/q/1777790
hier wird genau das thema beschrieben:
https://forum.fhem.de/index.php?topic=80371.0hier wird mit bash script gearbeitet:
https://www.apfeltalk.de/community/threads/telnet-befehle-per-shell-script-ausfuehren.316706/da findet sich sicher noch mehr
-
OK, danke schon einmal für die Links. Jetzt habe ich einige Variablen, die im iobroker über OPC erreichbar sind. Diese Informationen sollen den Druck füllen. Wenn ich das über ein sh-script löse, kann ich auf diese Variablen noch zugreifen? Ich denke, dass die nur innerhalb des iobrokers in den Scripten zur Verfügung stehen...