paxapos / fiscalberry

[JSON ↔ HW] Connect things using JSON API with the fiscalberry websocket server interact easily with any kind of Hardware. Another IoT solution...
https://paxapos.github.io/fiscalberry/
Other
57 stars 40 forks source link

Soporte a Epson TM-T900F-A #27

Closed pwqw closed 4 years ago

pwqw commented 6 years ago

La nueva impresora fiscal TM-T900F Argentina no tiene ningun tipo de SDK

alevilar commented 6 years ago

Creo que la mayoria de los comandos te deberian funcionar bien. Pero quizas para este modelo tengas que agregar un par de IF´s (aunque lo dudo), el unico archivo que deberias tocar es el Comandos/EpsonComandos.py ahi tenes toda la lógica de cada modelo distinto para la marca de impresoras fiscales EPSON.

Te recomiendo comenzar con un comando simple, como por ejemplo enviar un dailyClose "X" (no el Zeta, dado que el X no es fiscal, mientras que el Zeta si lo es)

Yo no tengo esa impresora como para hacer pruebas, pero te puedo ayudar, andá describiendo acá los errores con los que te vas chocando y trataré ayudarte lo mas pronto que pueda.

pwqw commented 6 years ago

Ejecuté dailyClose, junto con otros..

Esto se ve en el navegador screenshot.

Y la consola del navegador:

START INICIANDO
No hay conexion con el Web Socket promise ERROR
***Connection Closed***
 reconectando en 3 segundos 
CLOSE
START INICIANDO
***Connection Opened***
OPEN CONECTADO
Sending Message: {"getAvaliablePrinters":""}
Vino algo del websocket %o
vino la respuesta %o
getAvaliablePrinters : IMPRESORA_FISCAL
Vino RTA DE  getAvaliablePrinters: %o
Sending Message: {"getStatus":{},"printerName":"IMPRESORA_FISCAL"}
Vino algo del websocket %o
AttributeError("TraductorFiscal instance has no attribute 'getStatus'",)- TraductorFiscal instance has no attribute 'getStatus'
Sending Message: {"getLastNumber":"T","printerName":"IMPRESORA_FISCAL"}
Vino algo del websocket %o
vino la respuesta %o
getLastNumber : 365
Sending Message: {"dailyClose":"X","printerName":"IMPRESORA_FISCAL"}
Vino algo del websocket %o
vino la respuesta %o
dailyClose : 9928,9928,9928,9928,9928,9928,9928,9928
Sending Message: {"dailyClose":"X","printerName":"IMPRESORA_FISCAL"}
Vino algo del websocket %o
vino la respuesta %o
dailyClose : 184,184,184,184,184,184,184,184

Y esto arroja el server.py

Iniciando Fiscalberry Server
La IP es 192.168.0.2
Impresora disponible:
  - IMPRESORA_FISCAL
      marca: Epson, driver: File

*** Websocket Server Started as HTTP at 127.0.1.1 port 12000***
new connection
----- - -- - - - ---
{"getAvaliablePrinters":""}
{u'getAvaliablePrinters': u''}
----- - -- - - - ---
{"getStatus":{},"printerName":"IMPRESORA_FISCAL"}
{u'getStatus': {}, u'printerName': u'IMPRESORA_FISCAL'}
inicializando ConectorDriverComando driver de File
ERROR:root:AttributeError("TraductorFiscal instance has no attribute 'getStatus'",)- TraductorFiscal instance has no attribute 'getStatus'
Traceback (most recent call last):
  File "~/fiscalberry/FiscalberryApp.py", line 59, in on_message
    response = traductor.json_to_comando(jsonMes)
  File "~/fiscalberry/Traductores/TraductoresHandler.py", line 64, in json_to_comando
    rta["rta"] = traductor.run(jsonTicket)
  File "~/fiscalberry/Traductores/TraductorInterface.py", line 13, in run
    fnAction = getattr(self, action)
AttributeError: TraductorFiscal instance has no attribute 'getStatus'
----- - -- - - - ---
{"getLastNumber":"T","printerName":"IMPRESORA_FISCAL"}
{u'getLastNumber': u'T', u'printerName': u'IMPRESORA_FISCAL'}
inicializando ConectorDriverComando driver de File
_sendCommand 42 ['A']
*** OUTPUT Command: 42, Parameters: ['A']

----- - -- - - - ---
{"dailyClose":"X","printerName":"IMPRESORA_FISCAL"}
{u'printerName': u'IMPRESORA_FISCAL', u'dailyClose': u'X'}
inicializando ConectorDriverComando driver de File
_sendCommand 68 ['Cancelar', '0', 'C']
*** OUTPUT Command: 68, Parameters: ['Cancelar', '0', 'C']

_sendCommand 57 [u'X', 'P']
*** OUTPUT Command: 57, Parameters: [u'X', 'P']

----- - -- - - - ---
{"dailyClose":"X","printerName":"IMPRESORA_FISCAL"}
{u'printerName': u'IMPRESORA_FISCAL', u'dailyClose': u'X'}
inicializando ConectorDriverComando driver de File
_sendCommand 68 ['Cancelar', '0', 'C']
*** OUTPUT Command: 68, Parameters: ['Cancelar', '0', 'C']

_sendCommand 57 [u'X', 'P']
*** OUTPUT Command: 57, Parameters: [u'X', 'P']

Pareciera que está todo bien. Preguntas:

  1. ¿La impresora debería moverse o algo? :laughing:
  2. ¿Cómo hago para imprimir un ticket sin validez fiscal o algo para testear?
pwqw commented 6 years ago

Acá el branch con los cambios epson-tmt900fa...

:smile: Perdón por las mil vueltas que le dí pero hice varios cambios:

gonzaabel commented 6 years ago
  1. ¿La impresora debería moverse o algo? :laughing:

Si esta bien configurada, debería imprimir al enviarle un comando si la impresora esta preparada y habilitada para emitir comprobantes. EDIT: tambien depende de los comandos, como se comunican con la impresora, si envian algo mal puede que tire error y no te la imprima. En tal caso, vas a tener que revisar la documentación de la impresora y tirar prints de los returns en EpsonComandos para ver los codigos de respuesta y de como van los datos (en el manual de desarrollo de Epson calculo que sería como Hasar, tendrá una tabla por comando de que tipo de dato es cada caracter, su longitud y tipo de dato y debajo la respuesta que deberias recibir de la impresora para saber si hay algun error o no).

  1. ¿Cómo hago para imprimir un ticket sin validez fiscal o algo para testear?

Podes tirar un informe X que al contrario del Z, podes tirar todos los que quieras y no va a pasar nada :smile:

gonzaabel commented 6 years ago

Si queres pasame por acá como tenes el archivo config.ini. Así veo si esta todo ok en la configuración

pwqw commented 6 years ago

config.ini :

[SERVIDOR]
puerto = 12000
ip_privada = 192.168.0.2

[IMPRESORA_FISCAL]
marca = Epson
modelo = tm-t900fa
path = /dev/ttyUSB0
driver = File

donde tm-t900fa es lo mismo que tm-220-af para el branch epson-tmt900fa por el momento

gonzaabel commented 6 years ago

El config esta bien. También añado por si acaso, que para imprimir no podrás usar el driver File, deberás usar el driver Epson. El driver File es también otra utilidad que hay para los casos de prueba el cual va escribiendo las salidas de los comandos en un txt (donde apunta el path, el cual en estos casos podría ir en /tmp/respuestas.txt).

gonzaabel commented 6 years ago

Hola Alexis: ¿Has logrado imprimir con tu impresora Epson?

pwqw commented 6 years ago

Hola Gonza, no.. :disappointed: Y ya no tenemos más esa impresora para testear..

diegopunk27 commented 6 years ago

Hola, alguien siguió desarrollando algo para esta impresora ( epson-tmt900fa )??

gonzaabel commented 6 years ago

Hola Diego, sobre este modelo de Epson haría falta probar configurándola en el archivo config.ini de fiscalberry, el cual debería quedar así:

[IMPRESORA_FISCAL] marca = Epson path = COMX (o /dev/ttySX si estas en Linux y va conectada por serial) o host = ip impresora (si la impresora tiene puerto ethernet y va conectada por red). driver = Epson

Y tirar un X desde la página de los websockets y ver que imprima. Para eso tienes que acceder al localhost:12000 (es un SV Tornado), hacer click en el botón "listar impresoras", luego click en el botón "Enviar", seleccionar en el select que aparecerá arriba la IMPRESORA_FISCAL (o el nombre que le hayas puesto). Y para mandar el X, haces click en el botón "Cierre X" y luego click en "Enviar" nuevamente y tu impresora debería imprimirlo.

(Caso contrario, copianos la salida que te da por consola y tu config.ini para que podamos ayudarte).

Saludos!

diegopunk27 commented 6 years ago

Hola gonzaabel, desde ya gracias por contestar... Te comento que con el servidor python de paxapos me tira un error cuando lo lanzo error... por lo tanto estuve probando el fork de AlexisCaffa, y si pude lanzar el servidor python...

Luego con cualquiera de los dos me tira error a la hora de imprimir (Utilizando windows 10), no me reconoce el puerto USB... Cómo configuras USB en el config para windows?? Probé con "USB0", "USB1", con el 0 también, porque se que es el codigo USB para estas impresoras.

alevilar commented 6 years ago

En Windows me parece que tenes que instalar un driver virtualizador de puerto usb para que te aparezca como un COM1,COM2, pero con el número que le corresponda.

En hasar se que te lo podes descargar desde la web. Con epson no se. Quizás el mismo funcione

El El mié, 28 mar. 2018 a las 10:33, diegopunk27 notifications@github.com escribió:

Hola gonzaabel, desde ya gracias por contestar... Te comento que con el servidor python de paxapos me tira un error cuando lo lanzo error https://snag.gy/yoGN3x.jpg... por lo tanto estuve probando el fork de AlexisCaffa, y si pude lanzar el servidor python...

Luego con cualquiera de los dos me tira error a la hora de imprimir (Utilizando windows 10), no me reconoce el puerto USB... Cómo configuras USB en el config para windows?? Probé con "USB0", "USB1", con el 0 también, porque se que es el codigo USB para estas impresoras.

— You are receiving this because you were assigned.

Reply to this email directly, view it on GitHub https://github.com/paxapos/fiscalberry/issues/27#issuecomment-376887965, or mute the thread https://github.com/notifications/unsubscribe-auth/AANj8U1UQ8vl0XCBSoK8xeIWTGwnxr1Oks5ti5EPgaJpZM4P3w9J .

diegopunk27 commented 6 years ago

Perdon, así estuve configurando el archivo config.ini. Luego este error me genera ("[ERR] SerialException("could not open port 'USB4': WindowsError(2, 'El sistema no puede encontrar el archivo especificado.')")....

@alevilar gracias lo pruebo y te aviso!

diegopunk27 commented 6 years ago

@alevilar estuve utilizando el "EPSON TM Virtual Port Driver Port Assignment Tool" y le asigne un puerto COM virtual, ya no da error... El tema es que no imprime, ni tampoco me genera una respuesta ante los comandos...

Aqui el log de los mensajes

gonzaabel commented 6 years ago

Hola Diego, para usar la versión master de Fiscalberry, por lo que nos muestra el primer error, es que te falta la dependencia jwt la cual se instala con pip install PyJWT. (Recién acabo de incluirla en la wiki). Así que ya con esa dependencia instalada, no tendrías que tener más problemas para usar la versión actual de Fiscalberry y no la de Alexis que ya quedo desactualizada.

gonzaabel commented 6 years ago

Lo que no genere una respuesta en los comandos puede ser por la versión desactualizada de Alexis o que sean errores en concreto que únicamente se visualicen por consola.

diegopunk27 commented 6 years ago

@gonzaabel , listo quedó funcionando el servidor así. Pero sigue sin imprimir nada... Vos probaste que funcionara para este modelo???

joseluisbossio commented 6 years ago

Le diste permisos al /dev/ttyUSBx de 666 y que sea del grupo dialout y que tú usuario pertenezca al grupo?

El mié., 28 de mar. de 2018 13:01, diegopunk27 notifications@github.com escribió:

@gonzaabel https://github.com/gonzaabel , listo quedó funcionando el servidor así https://snag.gy/5W1OKd.jpg. Pero sigue sin imprimir nada... Vos probaste que funcionara para este modelo???

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/paxapos/fiscalberry/issues/27#issuecomment-376940739, or mute the thread https://github.com/notifications/unsubscribe-auth/AFOdPbGXhof-1tbEHfxm-2FzGcHTheldks5ti7POgaJpZM4P3w9J .

gonzaabel commented 6 years ago

@diegopunk27 no tengo forma de testearla :cry: manda a imprimir un cierre X y muéstranos que te tira por consola. Hay dos cosas que puedan pasar: la 1ra es que no haya una correcta comunicación con la impresora (error con el puerto USBx) o que la impresora devuelva una respuesta con estado de error (que te lo debería mostrar por consola).

@joseluisbossio el no esta usando Fiscalberry en Linux, lo usa con Windows jeje.

diegopunk27 commented 6 years ago

@gonzaabel ésta mañana cuando estuve probando, escribía los comandos pero no imprimía, ni se visualizaba nada en pantalla... luego de varios intentos comenzaba a fallar mostrando este error... Ahora estoy lanzando pruebas de nuevo, y directamente me muestra ese error, me imagino que tiene que ver con el virtual port driver. Lo que es extraño es que sigo utilizando el virtualizador de puerto, y con la interfaz SATF (copia de pantalla) me imprime correctamente los tikets (Tengo a la impresora en modo de prueba)...

@joseluisbossio si sigo renegando así voy a probar con ubuntu

joseluisbossio commented 6 years ago

Instalate un Ubuntu desktop 16.04 para probar.

El mié., 28 de mar. de 2018 18:19, diegopunk27 notifications@github.com escribió:

@gonzaabel https://github.com/gonzaabel ésta mañana cuando estuve probando, escribía los comandos pero no imprimía, ni se visualizaba nada en pantalla... luego de varios intentos comenzaba a fallar mostrando este error https://snag.gy/SboXpD.jpg... Ahora estoy lanzando pruebas de nuevo, y directamente me muestra ese error, me imagino que tiene que ver con el virtual port driver. Lo que es extraño es que sigo utilizando el virtualizador de puerto, y con la interfaz SATF (copia de pantalla) https://snag.gy/Qbq7XR.jpg me imprime correctamente los tikets (Tengo a la impresora en modo de prueba)...

@joseluisbossio https://github.com/joseluisbossio si sigo renegando así voy a probar con ubuntu

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/paxapos/fiscalberry/issues/27#issuecomment-377040438, or mute the thread https://github.com/notifications/unsubscribe-auth/AFOdPUZENGKuOza63X7ZyK_JmXy7xIiPks5ti_5PgaJpZM4P3w9J .

gonzaabel commented 6 years ago

Estas ejecutando Fiscalberry con permisos de administrador?? acá encontre el manual de desarrollo de esta impresora, mañana en cuanto tenga tiempo le echaré un vistazo para ver si puedo sacar el porque no te funciona (aunque puede que te este fallando el virtualizador de puertos) Acá te dejo para que te descargues el com0com, virtualizador que use para la impresora Hasar de 2daGeneración. Es otra cosa que podes probar para ver si con eso llegase a funcionar jeje...

Descarga la versión según tu SO, si es 32 bits: https://mega.nz/#!bkIAGbLJ!f-xt9qFVSCgfpa_jrS24lbykw3CrdAqwA1o_1PN8LkI

Y si es 64bits: https://mega.nz/#!SgxlQIhJ!IgCnFoqEp3vmHd-tP5ErBNZ7w9LiWBmkRSAnpT1DtQY

Y si aún así no funciona... probaría como dice Jose, te instalas un linux y ahí lo tenes que sacar andando si o si jajaja. Porque el problema en Windows es que se manejan los dispositivos de distinta manera que con Linux, pero yo con ese virtualizador pude hacer andar el emulador de Hasar, ponele cuando vayas a crear el puerto virtual, un número 'alto' como COM30 por ejemplo.

Saludos!

joseluisbossio commented 5 years ago

Buenas, al final ¿que paso con la TM-T900FA? tengo que migrar de TM-U220AF a una de 2da generación en EPSON, pero no quiero ir a un camino sin salida. :)

nicociri commented 5 years ago

@diegopunk27 me engancho de este thread para preguntarte como conseguiste el satf para la t900? Podrias pasarmelo? Estoy rebuscando toda la web a ver si alguno lo postea pero no tengo suerte.

Tengo mi primer t900 aca y ni mi programa ni fiscalberry logro que conecten. Y me pregunto si no es este cablecito adaptador serial->usb

diegopunk27 commented 5 years ago

@nicociri disculpas por la tardanza, hace mucho no revisaba el mail. Te comento que por este hilo no pude resolver el problema... En su momento encontré una dll llamada EpsonFiscalInterface, ahí están todas las funciones necesarias para manejar la fiscal. A partir de ahí desarrollé una API en python (+Tornado) partiendo de un ejemplo que la misma gente de epson distribuye en "Epson Fiscal Interface". El ejemplo lo podes descargar desde aqui, entre otras cosas Link. La verdad que me hubiese gustado implementarlo sin un spooler, pero no tenía más tiempo para seguir investigando. Espero que te sirva la info, sino estamos en contacto....

alevilar commented 4 years ago

en la ultima version de fiscalberry ya esta funcionando la Epson TM900FA por medio de la libreria oficial de Epson llamada EpsonFiscalInterface que se descarga de la pagina oficial. Es de la release 0.9 https://github.com/paxapos/fiscalberry/releases/tag/0.9

No es la mejor solucion. pero es algo que nos permite usar esa impresora. En windows aun no esta del todo probado.

y el soporte es parcial, por ejemplo al momento no podemos imprimir descuentos ni retenciones.

Pero lo mas importante del ticket ya puede ser impreso.

noeliapinto commented 4 years ago

Hola! Alguno pudo lograr la impresión de DNFH con este modelo de impresora?

FerPortoFar commented 1 year ago

Hola tengo un problema quiero imprimir un ticket fiscal en una Epson tm900 y quiero colocar la descripción del producto en dos líneas y no me lo permite cuando coloco el carry return me da un error indicándome que el carácter de el ítems es invalido, que podría hacer??