All Projects → paxapos → Fiscalberry

paxapos / Fiscalberry

Licence: apache-2.0
[JSON ↔ HW] Connect things using JSON API with the fiscalberry websocket server interact easily with any kind of Hardware. Another IoT solution...

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Fiscalberry

Iotwifi
Raspberry Pi (arm) wifi configuration container. Configure and control wifi connectivity with a JSON based REST api.
Stars: ✭ 236 (+436.36%)
Mutual labels:  json, raspberry-pi, raspberry-pi-3, iot
Lib Python
Blynk IoT library for Python and Micropython
Stars: ✭ 140 (+218.18%)
Mutual labels:  raspberry-pi, raspberry-pi-3, iot
Wall.e
A javaScript robot which looks like WALL.E
Stars: ✭ 201 (+356.82%)
Mutual labels:  raspberry-pi, raspberry-pi-3, iot
Repo 2018
Deep Learning Summer School + Tensorflow + OpenCV cascade training + YOLO + COCO + CycleGAN + AWS EC2 Setup + AWS IoT Project + AWS SageMaker + AWS API Gateway + Raspberry Pi3 Ubuntu Core
Stars: ✭ 163 (+270.45%)
Mutual labels:  raspberry-pi, raspberry-pi-3, iot
Live Stream Radio
24/7 live stream video radio station CLI / API 📹 📻
Stars: ✭ 175 (+297.73%)
Mutual labels:  json, raspberry-pi, raspberry-pi-3
Pigpio
Fast GPIO, PWM, servo control, state change notification and interrupt handling with Node.js on the Raspberry Pi
Stars: ✭ 747 (+1597.73%)
Mutual labels:  raspberry-pi, iot
Raylib
A simple and easy-to-use library to enjoy videogames programming
Stars: ✭ 8,169 (+18465.91%)
Mutual labels:  raspberry-pi, iot
Sitewhere
SiteWhere is an industrial strength open-source application enablement platform for the Internet of Things (IoT). It provides a multi-tenant microservice-based infrastructure that includes device/asset management, data ingestion, big-data storage, and integration through a modern, scalable architecture. SiteWhere provides REST APIs for all system functionality. SiteWhere provides SDKs for many common device platforms including Android, iOS, Arduino, and any Java-capable platform such as Raspberry Pi rapidly accelerating the speed of innovation.
Stars: ✭ 788 (+1690.91%)
Mutual labels:  raspberry-pi, iot
Swiftyoled
A Swift library for OLED displays based on SSD1306 and SSD1305 drivers.
Stars: ✭ 25 (-43.18%)
Mutual labels:  raspberry-pi, iot
Raspberryio
The Raspberry Pi's IO Functionality in an easy-to-use API for Mono/.NET/C#
Stars: ✭ 593 (+1247.73%)
Mutual labels:  raspberry-pi, raspberry-pi-3
Ulnoiot Upy
retired version of ulnoiot based on micropython
Stars: ✭ 17 (-61.36%)
Mutual labels:  raspberry-pi, iot
Woa Installer Rpi
This repository was deprecated, use:
Stars: ✭ 865 (+1865.91%)
Mutual labels:  raspberry-pi, raspberry-pi-3
Zxing
ZXing ("Zebra Crossing") barcode scanning library for Java, Android
Stars: ✭ 28,795 (+65343.18%)
Mutual labels:  barcode-scanner, barcode
Ubuntu64 Rpi
适用于树莓派3b/3b+的64位系统.
Stars: ✭ 652 (+1381.82%)
Mutual labels:  raspberry-pi, raspberry-pi-3
Pytradfri
IKEA Trådfri/Tradfri API. Control and observe your lights from Python. Examples available. On pypi. Sans-io.
Stars: ✭ 778 (+1668.18%)
Mutual labels:  raspberry-pi, iot
Enclosure Picroft
Mycroft interface for Raspberry Pi environment
Stars: ✭ 649 (+1375%)
Mutual labels:  raspberry-pi, raspberry-pi-3
Fotobox
Python based photo-booth script for Raspberry Pi and RPi Camera
Stars: ✭ 22 (-50%)
Mutual labels:  raspberry-pi, raspberry-pi-3
Ngx Barcode Scanner
An angular barcode reader
Stars: ✭ 29 (-34.09%)
Mutual labels:  barcode-scanner, barcode
Gassistpi
Google Assistant for Single Board Computers
Stars: ✭ 911 (+1970.45%)
Mutual labels:  raspberry-pi, raspberry-pi-3
Mlkit
A collection of sample apps to demonstrate how to use Google's ML Kit APIs on Android and iOS
Stars: ✭ 949 (+2056.82%)
Mutual labels:  barcode-scanner, barcode

¿Para qué sirve?

Para enviar un JSON (mediante websocket), que fiscalberry lo reciba, lo transforme en un conjunto de comandos compatible con la impresora instalada, conecte con la impresora y responda al websocket con la respuesta que nos envió la impresora.

¿Qué es?

Fiscalberry es un servidor de websockets desarrollado en Python pensado para que corra en una raspberry-pi (de ahí viene el nombre de este proyecto). Pero funciona perfectamente en otros sistemas operativos. fiscalberry JSON

¿Qué impresoras son compatibles?

Fiscalberry tiene drivers desarrollados para conectarse con 2 tipos de impresoras: Fiscales y Receipt.

Impresoras Fiscales compatibles: Hasar y Epson

Nueva versión con soporte para las últimas impresoras Fiscales de segunda generación (2gen) HASAR y EPSON
Modelos compatibles (HASAR: SMH/PT-250F, EPSON: TM-T900FA)

Impresoras Receipt (de comandas) compatibles: las que soportan ESC/P

Fiscalberry como servidor de impresión (print-server) de impresoras receipt (comanderas) y fiscales

Fiscalberry es un 3x1, actúa como: protocolo, servidor y driver facilitando al programador la impresión de tickets, facturas o comprobantes fiscales.

  • PROTOCOLO: Siguiendo la estructura del JSON indicado, se podrá imprimir independientemente de la impresora conectada. Fiscalberry se encargará de conectarse y pelear con los códigos y comandos especiales de cada marca/modelo.
  • SERVIDOR: gracias al servidor de websockets es posible conectar tu aplicación para que ésta fácilmente pueda enviar JSON's y recibir las respuestas de manera asíncrona.
  • DRIVER: Es el encargado de transformar el JSON genérico en un conjunto de comandos especiales según marca y modelo de la impresora. Aquí es donde se adaptó el código del proyecto de Reingart (https://github.com/reingart/pyfiscalprinter) para impresoras Hasar y Epson.

Funciona en cualquier PC con cualquier sistema operativo que soporte Python.

La idea original fue pensada para que funcione en una raspberry pi, cuyo fin es integrar las fiscales al mundo de la Internet de las Cosas (IOT).

¿Para quienes está pensado?

Para los desarrolladores que desean enviar a imprimir mediante JSON (es decir, desde algún lugar de la red, internet, intranet, etc, etc) de una forma "estándar" y que funcione en cualquier impresora, marca y modelo.

PROBALO

Descargar

usando git

git clone https://github.com/paxapos/fiscalberry.git

o directamente el ZIP: https://github.com/paxapos/fiscalberry/archive/master.zip

Instalar Dependencias

ATENCIÓN: Funciona con Python 2.7.* NO en Python 3!

probado bajo python 2.7.6 en Linux, Raspian, Ubuntu, Open Suse y Windows

Se necesitan varias dependencias:

sudo pip install -r requirements.txt

Si te encontras con el error "socket.gaierror: Name or service not known"

A veces, en Linux (Open Suse), ser necesario poner el nombre del equipo (hostname) en el archivo /etc/hosts, si es que aún no lo tenías. Generalmente el archivo hosts viene solo con la dirección "127.0.0.1 localhost",

para solucionarlo debés ejecutar el comando

hostname

y ver cuál es el nombre de la máquina para agregarlo al archivo /etc/hosts 127.0.0.1 nombre-PC localhost

Iniciar el programa

sudo python server.py

# o iniciar como demonio linux
sudo python rundaemon.py

Ahora ya puedes conectarte en el puerto 12000 entrando a un browser y la dirección http://localhost:12000

Conceptos básicos ¿Cómo funciona?

Supongamos que tenemos este JSON genérico:

{
    "ACCION_A_EJECUTAR": {
        PARAMETROS_DE_LA_ACCION
        ...
    }
}

Lo enviamos usando websockets a un host y puerto determinado (el servidor fiscalberry), éste lo procesa, envía a imprimir, y responde al cliente con la respuesta de la impresora. Por ejemplo, devolviendo el número del último comprobante impreso.

Otro ejemplo más concreto: queremos imprimir un ticket, esta acción en el protocolo fiscalberry se lo llama como acción "printTicket" y está compuesta de 2 parámetros obligatorios: "encabezado" e "items".

El "encabezado" indica el tipo de comprobante a imprimir (y también podría agregarle datos del cliente, que son opcionales). Los ítems son una lista de productos a imprimir donde, en este ejemplo, tenemos una coca cola, con impuesto de 21%, importe $10, descripción del producto "COCA COLA" y la cantidad vendida es 2.

{
    "printTicket": {
        "encabezado": {
            "tipo_cbte": "T",      // tipo tiquet *obligatorio
        },
        "items": [
            {
                "alic_iva": 21.0,  // impuesto
                "importe": 10,     // importe
                "ds": "COCA COLA", // descripcion producto
                "qty": 2.0         // cantidad
            }
        ]
    }
}

JSON RESPUESTA

Existen 2 tipos de respuesta y siempre vienen con la forma de un JSON.

Aquellos que son una respuesta a un comando enviado, comienzan con "ret" {"ret": ......}

Aquellos que son un mensaje directo de algun dispositivo conectado, vienen con "msg"

{"msg": ......}

// ejemplo retorno de un mensaje cuando no hay papel
{"msg": ["Poco papel para comprobantes o tickets"]}

NOTA:

Deberás enviar JSON válidos al servidor. Recomendamos usar la pagina http://jsonlint.com/ para verificar como tu programa esta generando los JSON.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].