Commit Graph
63 Commits
Author SHA1 Message Date
lejeune quentin 5caa5d7d2e [IMP] hw_drivers: Change IoT Box version
Change the version of the IoT Box.
From 19_10 to 19_12

closes odoo/odoo#41109

X-original-commit: 2b8779dc657a5a2b877ad2a552dd0dfda0071357
Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-11-29 10:23:15 +00:00
Antoine Prieels 6f645925a4 [IMP] hw_drivers: Clean MPD manager in driver.py
We clean the code for the MPDManager by removing useless lines and
simplifying the way we run the MPD server.

closes odoo/odoo#40892

Related: odoo/enterprise#6892
Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-11-28 14:04:33 +00:00
Antoine Prieels 2e34d456e8 [FIX] hw_drivers: Redirect exceptions to log file
Exceptions were logged to stderr so we couldn't see them when Odoo was
running as a service on the IoT Box. We now redirect stderr to the logger
to see track errors in the log file too.

closes odoo/odoo#41028

Taskid: 2146835
X-original-commit: 54a1919cbc37f5832ce110605c29b222c7a5bfe9
Signed-off-by: Antoine Prieëls <aprieels@users.noreply.github.com>
2019-11-28 08:32:28 +00:00
Antoine Prieels 738868a1db [IMP] hw_drivers: Dual customer display
Customer displays were all using the same URL and therefore could only
show the same products. We now use different URLs per screen.

Two screens connected to the same IoT Box can now display customer
displays from different POS.

closes odoo/odoo#41026

Taskid: 2123511
X-original-commit: 12569b0e7f7a9e447f8df908597131911c5cfef8
Signed-off-by: Antoine Prieëls <aprieels@users.noreply.github.com>
2019-11-27 14:15:18 +00:00
Antoine Prieels ad846fcee5 [IMP] iot: Dual screen support for RPI4
We now support the RPI4 which has 2 micro-HDMI outputs, while the
prvious driver only supported one display. We add support for a second
display.

Taskid: 2123511
X-original-commit: 5886c3a864c990fcd7b852baafab752e7da90494
2019-11-27 14:15:18 +00:00
Antoine Prieels 53bc9dcdc6 [FIX] hw_drivers: Print status ESC/POS printers
The status ticket contains ESC/POS commands but was printed on all
printers connected in USB. Plugging a printer that doesn't support
ESC/POS resulted in undefined behaviors.

We now only print this status ticket on ESC/POS printers.

closes odoo/odoo#40972

X-original-commit: c6a28b627cbe6f8bd1da4321c1329cbc1bde498d
Signed-off-by: Antoine Prieëls <aprieels@users.noreply.github.com>
2019-11-27 09:18:33 +00:00
lejeune quentin 52d4ada230 [IMP] point_of_sale: Add support of RPI 4
With this PR we can use the IoT Box with the new Raspberry Pi 4 B
using raspbian 'Buster'

With buster we remove the kiosk mode of firefox and
replace this mode with a fullscreen view of firefox.
To do that we adapt DisplayDriver to expend window with a 'call_xdotool(F11)'

We remove postgresql and patch 'odoo/odoo/http.py' for he does not return a DB.

Task id: 2089286

closes odoo/odoo#40292

X-original-commit: d20676b69f37905c7994b3c55cb1bb6dfda3460e
Signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
2019-11-14 15:59:36 +00:00
lejeune quentin 3942308bc4 [FIX] iot: Fix support of device with protocol 0
The self don't contain 'interface_protocol'.
The 'interface_protocol' is in self.dev because we add this in 'supported' function.

closes odoo/odoo#40132

X-original-commit: 6963a016385c4310dd547ae2d0d7e1d5cb4fab67
Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-11-12 14:09:07 +00:00
lejeune quentin daf42498d3 [IMP] iot: Add support for scanner without protocol
closes odoo/odoo#40044

X-original-commit: 98f48141419c81102c820929206299c80790dfc7
Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-11-08 14:45:11 +00:00
Antoine Prieels c2e645f45f [FIX] hw_drivers: Add manufacturer to scales
At the moment the weight is read from all scales automatically. The
problem is that Adam scales beep every time we read the weight, making
them almost unusable in a shop. We set the manufacturer on the IoT
Device to be able to identify those scales and get the weight manually
instead of reading it automatically.

closes odoo/odoo#39107

Taskid: 2089995
X-original-commit: 5bde93951b29c18d8361bd5ca759a8b2e190573a
Signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
2019-10-21 09:57:15 +00:00
Antoine Prieels 86ae57b479 [FIX] iot: DisplayDriver load_url error
We didn't check the status of the response of the server when getting
the url of the display. If the status was different from 200, we tried
to use the error response as URL.

closes odoo/odoo#38554

X-original-commit: 8854f910f5ac7ab5d2dfd0f51f3249a068d40885
Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-10-11 22:36:16 +00:00
lejeune quentin 5d7e0b3735 [IMP] hw_drivers: Change version of IoT Box
We update the version of the build for IoT Box

closes odoo/odoo#38328

X-original-commit: be464a3759a4fe395334a1b26b90f7395e031d1a
Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-10-10 06:31:41 +00:00
lejeune quentin 59173b6569 [FIX] hw_drivers: Fix for Customer display
When a box was unable to reach the Odoo server the customer display
show a white screen.

With this fix we show the default POS Client display with IP address

closes odoo/odoo#38315

X-original-commit: 290c2be72cd8305fbf8093d782604e8b0f4a80c4
Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-10-10 06:26:38 +00:00
Victor Feyens 07631a5185 [IMP] * : manifest module categories cleanup
closes odoo/odoo#35754

Signed-off-by: Damien Bouvy (dbo) <dbo@odoo.com>
2019-09-25 14:03:45 +00:00
Antoine Prieels d8a2cf04bd [FIX] hw_drivers: xlib encoding with keysyms
In KeyboardUSBDriver, we use xlib to translate keysyms. The encoding
of returned chars is now utf-8. We don't need to treat special
characters differently anymore.
2019-09-19 07:44:55 +00:00
Antoine Prieels 37bdade9a2 [IMP] hw_drivers: Add manufacturer on IoT Devices
Add the possibility to set a manufacturer on IoT Devices.

closes odoo/odoo#36748

Taskid: 2062227
Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-09-19 06:01:08 +00:00
Antoine Prieels 7cb540b485 [REM] hw_drivers: Remove printers list from status
The status returned bby PrinterDriver contained a list of connected
printers to be used in Enterprise, to determine if the printer that was
selected in POS Config was used in the POS. We now read this status
from the db and we therefore don't need this anymore.

In Community the user only needs to know if there's a printer connected
to the Box. We just have to know if any printer is present.

TaskID: 1970884
2019-09-17 08:31:32 +00:00
Antoine Prieels 79ad17a7ff [FIX] hw_drivers: No connected display
In the latest version of Raspbian, when no display is connected to the
HDMI port, "tvservice -n" finds a display named "Unk-Composite dis".
Therefore, the `distant_display` was not created.
2019-09-13 09:00:50 +00:00
Antoine Prieels 9fff495927 [FIX] hw_drivers: Fix get_wifi_essid helper
The `get_wifi_essid` function was moved to the helpers file, but the
`self` argument was not removed from the function's signature.

closes odoo/odoo#36710

Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-09-11 13:47:36 +00:00
Antoine Prieels 0bf6fb0519 [FIX] hw_drivers: Display slowed IoT Box down
In DisplayDriver, we setup a loop to refresh the display every minute
if the url shown is not the customer display. If the customer display
was used, the loop didn't wait a minute and looped indefinitely,
without sleeping. This slowed down the whole box and explains why
receipts took a long time to print with older versions of Odoo and why
the framerate of the curomer display was so low.

closes odoo/odoo#36670

Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-09-11 08:38:36 +00:00
lejeune quentin d4fa24c2bc [IMP] hw_drivers: Add possibility to choose a wifi network on IoT Box
Previously if you are wired connected we don't scan wifi network.

Now we scan the wifi network and add possibiliyt to select a network and use them.
2019-09-10 14:14:27 +00:00
lejeune quentin 9c10d7a28e [FIX] hw_drivers: Fix unmount of cups folder
To add or modify printer the /root_bypass_ramdisks/etc/cups/ need be writeable.
And /root_bypass_ramdisks/etc/cups/ = /etc/cups/
But when we make 'sudo mount -o remount,ro /' we put the /etc/cups/ and so
/root_bypass_ramdisks/etc/cups/ folder on read-only.

After all 'read-only' command we make another command to put cups folder writeable
2019-09-10 14:14:27 +00:00
lejeune quentin d098981b46 [FIX] hw_drivers: Use helper for Keyboard driver
We have implemented helpers that are not used in the KeyboardUSBDriver
2019-09-10 14:14:14 +00:00
Antoine Prieels dc4090a3b4 [FIX] hw_drivers: Status of network printers in POS
When selecting a network printer in the POS the status of the proxy
showed "Printer Disconnected" because the list returned by the driver
only contained USB printers.
2019-09-03 13:51:30 +00:00
Antoine Prieels 70006311d0 [IMP] hw_drivers, hw_posbox_homepage: get_ssid helper
Create a helper to get the ssid of the wifi to which the Box is
connected.
2019-09-04 13:10:03 +00:00
Antoine Prieels 98bebfbfa5 [IMP] point_of_sale: Per device screen_url
The screen URL is not linked to the Box anymore but to the Device.
We don't need to fetch a screen_url at the boot, it'll be done inside
each device.

TaskID: 1893493
2019-09-04 13:08:12 +00:00
Antoine Prieels f03026a3d7 [REF] hw_{drivers,screen}: Convert hw_screen into an IoT Driver
Move all the logic that was inside hw_screen into an IoT Driver
in order to have consistency between devices.

TaskID: 1933834
2019-09-04 13:08:10 +00:00
Antoine Prieels 16c32f0c25 [FIX] hw_drivers: Kill MPD server on start
The MPD server was not correctly killed when the IoTBox started without
six payment terminal configured. A warning was displayed.

closes odoo/odoo#36415

Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-09-04 11:58:48 +00:00
Antoine Prieels 2a7454ea6c [IMP] hw_{drivers, posbox_homepage}: Automatic load of drivers
Automatically load the IoT Drivers when Odoo starts on the IoT Box or
when the connection to the Odoo instance is done.

Allow to deactivate the automatic load to avoid overriding
modifications made on the Box.

TaskID: 2009683
2019-09-03 13:53:19 +00:00
Antoine Prieels 8449a7c607 [FIX] hw_drivers: Kill eftdvs w/o Six terminal
If no Six Payment terminal is configured, kill eftdvs if it is running.

When removing the configuration for a Six payment terminal, we just
removed the file with the configuration but we didn't stop eftdvs. The
terminal the nstayed connected to this Box even after removing the
configuration, blocking the connection to another terminal.
2019-08-29 14:09:24 +00:00
lejeune quentin 8373168bc5 [FIX] hw_drivers: Fix IoT Socket Manager
With this commit we catch OS Error when want use a new socket

closes odoo/odoo#36019

Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-08-23 11:42:00 +00:00
lejeune quentin 2af13429cf [ADD] iot: Load a true certificate on IoT Box
With this commit we add the possibility to save the db_uuid and enterprise_code on the IoT Box.
We check the current SSL certificate and if it is not authenticated or not up to date
we send a request to 'https://www.odoo.com/odoo-enterprise/iot/x509'
with the db_uuid and enterprise_code to get the certificate, key, and domain associated with the client.
The IoT Box will be accessible in HTTPS according to the following domain:

https://<ip-with-dashes>.<sub-hash>.odoo-iot.com

<ip-with-dashes> being the ip address with dashes
<sub-hash> being a subdomain assigned by Odoo to a customer

Task: 1931770
2019-08-23 12:21:03 +02:00
lejeune quentin 84de7cbcb6 [ADD] iot: Improve usage of helpers in IoT Box
With this commit we move the helpers to a separate file for
easier access from the IoT Box
2019-08-23 12:21:02 +02:00
Antoine Prieels f918003028 [FIX] hw_drivers: Setup IoT Box
The setup of IoT Boxes failed since the merge of the task about
barcode scanners: odoo/odoo#35084

We tried to get the list of available keyboard layouts from the IoT
Box. The request was sent from the server, which cannot reach the Box
because it's not located on the same server.

We now perform this task the other way around. When a device of type
printer is created on the Box, we send the list of available layouts
to the server.

TaskID: 1961025

closes odoo/odoo#35925

Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-08-21 14:43:03 +00:00
Robot Odoo e9dbf45b3b [IMP] pos, hw_drivers, hw_posbox_homepage: Six terminals
Add support for Six payment terminals.

TaskId: 1932416

Linked to odoo/enterprise#4435

--
I confirm I have signed the CLA and read the PR guidelines at www.odoo.com/submit-pr

closes odoo/odoo#33673

Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-08-14 11:27:10 +02:00
Antoine Prieels 26a5df9507 [IMP] hw_drivers: Save keyboard layout in config file
When a user selects a keyboard layout, we save it to a file. This is
needed to keep the selected layout after a reboot of the box.

TaskID: 1961025
2019-08-13 15:35:38 +02:00
Antoine Prieels e0b4adbc3b [FIX] iot: Kbd Close previous barcode request
In Community, we use a longpolling to get the scanned barcodes in
KeyboardUSBDriver. When refreshing a POS session, a new longpolling is
started but the read_next_barcode function is still waiting and will
still try to send a response to the previous longpolling, even if it is
closed.

If an old process is still waiting when we try to get a new barcode, we
stop it by sending a dummy barcode. We use a lock to be sure that the
new request doesn't read the dummy barcode that it just sent.
2019-08-13 15:35:38 +02:00
Antoine Prieels 728903bd20 [IMP] point_of_sale: KeyboardUSBDriver special characters
Add keysym mapping to the IoTBox config to be used in KeyboardUSBDriver.

The Keysym -> Character mapping provided by Xlib only supports latin-1
encoded characters. For keysyms corresponding to special characters, X11
won't return anything. We provide a Keysym to Unicode mapping for most
of the characters not supported by X11.
2019-08-13 15:35:38 +02:00
Antoine Prieels 4e649a8ca9 [REF] hw_{driver, scanner}: Barcode scanners as IoT Devices
Barcode scanners are now part of KeyboardUSBDriver. We also add
the possibility to change the keyboard/scanner layout from an
action. The list of available layout can be retrieved with a new
route.

`hw_scanner` has been removed. Backward compatibility is ensured
because the name of the route that is now used in community is the
same that was used previously.

TaskID: 1939455
2019-08-13 15:35:38 +02:00
Antoine Prieels 9790c81d5b [IMP] hw_drivers: Move Keyboard driver to Community
The KeyboardUSBDriver will be transformed to integrate barcode
scanners. The barcode scanners will be used in Community so we move the
driver in Community.

TaskID: 1961025
2019-08-13 15:35:38 +02:00
Antoine Prieels b62d98e9a8 [IMP] hw_drivers: Config file for eftdvs
Add a config file for eftdvs. This was requested during the
certification to allow user to change the config of the
terminal.

TaskID: 1932416
2019-08-12 08:16:04 +02:00
Antoine Prieels dc449a4ae5 [IMP] hw_drivers: support Six payment terminals
Add MPDManager to driver.py to keep a list of connected terminals
up to date.

Add the files needed to communicate with the payment terminals:
eftdvs --> MPD server that needs to run on the IoTBox
eftapi.so --> Library to connect Odoo to the MPD server

TaskId: 1932416
2019-08-12 08:16:04 +02:00
Antoine Prieels 7cb9518857 [IMP] hw_drivers: PrinterDriver get hotspot name for status ticket
When the IoT Box is not connected to the IoT Box, a hotspot would be
created to configure it. The name of this hotspot is printed on a
status receipt if a printer is connected. Previously, this ticket only
showed the default name of the hotspot, but this name will be different
if the user renamed the Box. We then read the name of the hotspot from
the config.

closes odoo/odoo#33095

Signed-off-by: pimodoo <pimodoo@users.noreply.github.com>
2019-08-08 11:53:37 +00:00
Antoine Prieels 463c0ff3a2 [IMP] hw_drivers: Print Star printers notice
We communicate with receipt printers using the ESCPOS drivers.
By default, Star printers use the Star mode. This can be changed by
modifying the position of the DIP-Switches at the bottom of the
printer.

We provide a link to the documentation to the user if its printer is
not correctly configured.
2019-08-08 11:53:37 +00:00
Antoine Prieels 03b2f7b77d [REF] pos: Replace hw_escpos by PrinterDriver
ESCPOS printers are now supported as IoT Devices, just like any other
printer. We now transform the receipts to JPGs, transform these JPGs
into ESCPOS commands and send them via Cups, adding support for network
printers. Since we now print images, we can now print special
characters and therefore add support for other languages such as
Arabic.

The JPG is generated in the browser, with the help of html2canvas.

`hw_escpos` is left untouched to allow backward compatibility and
should be removed when v12 is no longer supported.

In the PoS, all the code for printing has been moved from ProxyDevice
to a separated JS file.

TaskID: 1939455
2019-08-08 11:53:37 +00:00
Antoine Prieels dd7de1bcb6 [IMP] hw_drivers: Move PrinterDriver to Community
Printers should be usable by IoT Boxes connected to a community DB.

TaskID: 1939455
2019-08-08 05:47:03 +00:00
pha-odoo 28c2e642cb [FIX] iot: bluetooth work with serial
Using path such as '/dev/ttyUSB0' to connect to a serial port
makes it impossible to use the bluetooth.

We now use the locations in '/dev/serial/by-path' to connect to serial port,
which does not affect bluetooth connections

closes odoo/odoo#35302

Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-07-31 10:54:46 +00:00
pha-odoo 947715b046 [FIX] iot: pass dict to scale action
Scale action took a string as argument.
It now takes a dict so parameters can be passed to action methods.

closes odoo/odoo#35136

Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-07-24 09:42:44 +00:00
pha-odoo 120f890ecf [FIX] iot: remove check for abstract classes
The check for abstract driver classes results in some errors being logged on the iot box.
Since this check is not essential at this point, it was removed and will be reintroduced later
if needed.

closes odoo/odoo#35014

Signed-off-by: Quentin Lejeune (qle) <qle@odoo.com>
2019-07-19 11:55:01 +00:00
pha-odoo c4aade63fd [IMP] iot: add iot serial drivers
This commit adds a base serial and a base serial scale iot drivers,
as well as drivers extending them for the two previously supported scales
(ADAM EQUIPMENT AZEXTRA and TOLEDO 8217).

Since just adding the new drivers creates a race condition
between the old drivers and the new, the old drivers need to be removed.

The IoT scale drivers need to be backward compatible and compatible with the community version,
so client using an IoT box with those versions can still connect a scale to the PoS.

Task: 1892412
2019-07-17 08:02:13 +02:00