レシートプリンターを買った

レシートプリンターを買った。理由は秋の学祭で使うためだが、それはそうとあったら面白いので買った。

エプソン TM-T70Ⅱ

ReceiptLine

ちょうと知人からReceiptLineというものを聞いたところで、これをやってみる。 ReceiptLineっていうのはMarkdownみたいな軽量マークアップ言語のことで、SVG画像やプリンターのコマンドに 変換できるらしい。

github.com

できることは以下が詳しい。

www.ofsc.or.jp

機種選び

ReceiptLineに対応してたらいいやと思って機種を選ぶことにした。 とりあえずReceiptLineのリポジトリをDeepWikiに調べてもらって、対応している機種を教えてもらう。

DeepWikiの情報

deepwiki.com

これを見ながらメルカリでいろいろ見ていたところ、まだ生産終了していないTM-T70IIがよさそう。

調べている様子

結局ロール紙をおまけしてくれるということで6000円で買った。

やって来た・受難

エプソン TM-T70Ⅱ

1日後、まだ勢いも冷めぬまま家にレシートプリンターがやってきた。 箱を開けてコードをつないでみるも、思ってたEthernetポートがない...

どうやらTM-T70IIには数種類バリエーションがあるようで、このバリエーションにはEthernetポートもBluetoothも無線LANもないようだった。 LAN越しに制御することを目論んでいたので残念。

あきらめてUSB接続でMacやLinuxに接続してみるも、どうやら独自規格のデバイスとして認識されるようで使えそうもない。

プリンターにする

諦めて唯一デバイスドライバが提供されているWindowsに接続してみたところ、USBクラスを変更する設定があるじゃん、ってなった。

通信 I/F の設定

これをベンダークラスからプリンタークラスに変更することで、無事プリンターとして認識されるようになった。変更中はどうやらROMを弄っているようで、緊張感ある時間が3分くらいつづいた。

変更後、macに接続してプリンターキューにデータを積んでみたところ、

taiseiue@lily infra % sudo lpadmin -p tmt70ii -E \ -v 'usb://EPSON/TM-T70II-JPN?serial=544443460114230000' \ -m raw 
lpadmin: RAWキューはmacOSでは現在サポートされていません。

いつからかRAWキューは使えなくなったらしい。

RaspberryPiをプリントサーバーにする

家に転がってたRaspberryPiをプリントサーバーにすることにした。

まず接続を確認

taiseiue@recipt:~ $ lsusb | grep -i epson
`Bus 003 Device 002: ID 04b8:0e12 Seiko Epson Corp. TM-T70II`

うまく行ってそう。

試しにCLIから印刷をやってみたところうまくいった。

printf '\x1b@Hello TM-T70II\n\n\n\x1dV\x00' | sudo tee /dev/usb/lp0 > /dev/null

Hello TM-T70II

それからはとんとん拍子で、ブラウザ越しに印刷するための画面を用意して、Node.jsで印刷するようにした。 ReceiptLineがNodeで動いているのでそのまま使わせてもらった。

レシート印刷くん

ただ一点、私のレシートプリンターは横幅が58mmだったようで、AIが言うには30mm幅でレンダリングしないといけないようだった。

幅が違うとこうなる。水平線が折り返されてしまっている。

いろいろ遊んでみる

我輩は猫である

ほかにもいろいろ出してみたけど、遊ぶのに夢中で写真を撮り忘れてしまった。 さっきのレシート印刷くんは公開APIになっているので、ここにPOSTを投げればいつでも誰でもレシートを印刷できる。友達(AIも)とか、Webhookとか無限の活用方法があるのでいろいろ遊んでいきたいと思う。

学祭に使う用の用紙はその前に尽きてしまいそうなのでロール紙は追加で発注することにした。