odoo-addon-web-widget-remote-measure 15.0.1.0.0.6__py3-none-any.whl → 15.0.1.0.0.8__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@ Remote Measure Devices Input
7
7
  !! This file is generated by oca-gen-addon-readme !!
8
8
  !! changes will be overwritten. !!
9
9
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10
- !! source digest: sha256:21bff9cec19c28e304b5f4553dff7661daddd2a1e87947a72b621a9eeeade61b
10
+ !! source digest: sha256:044f11b0ae08030a422670bc0684b5bb977f5f91298ed1c79fdd184ec2f59bf5
11
11
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12
12
 
13
13
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -16,14 +16,14 @@ Remote Measure Devices Input
16
16
  .. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
17
17
  :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
18
18
  :alt: License: AGPL-3
19
- .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
20
- :target: https://github.com/OCA/web/tree/15.0/web_widget_remote_measure
21
- :alt: OCA/web
19
+ .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstock--weighing-lightgray.png?logo=github
20
+ :target: https://github.com/OCA/stock-weighing/tree/15.0/web_widget_remote_measure
21
+ :alt: OCA/stock-weighing
22
22
  .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
23
- :target: https://translation.odoo-community.org/projects/web-15-0/web-15-0-web_widget_remote_measure
23
+ :target: https://translation.odoo-community.org/projects/stock-weighing-15-0/stock-weighing-15-0-web_widget_remote_measure
24
24
  :alt: Translate me on Weblate
25
25
  .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
26
- :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=15.0
26
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/stock-weighing&target_branch=15.0
27
27
  :alt: Try me on Runboat
28
28
 
29
29
  |badge1| |badge2| |badge3| |badge4| |badge5|
@@ -85,10 +85,10 @@ But this is a commonground to add:
85
85
  Bug Tracker
86
86
  ===========
87
87
 
88
- Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
88
+ Bugs are tracked on `GitHub Issues <https://github.com/OCA/stock-weighing/issues>`_.
89
89
  In case of trouble, please check there if your issue has already been reported.
90
90
  If you spotted it first, help us to smash it by providing a detailed and welcomed
91
- `feedback <https://github.com/OCA/web/issues/new?body=module:%20web_widget_remote_measure%0Aversion:%2015.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
91
+ `feedback <https://github.com/OCA/stock-weighing/issues/new?body=module:%20web_widget_remote_measure%0Aversion:%2015.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
92
92
 
93
93
  Do not contact contributors directly about support or help with technical issues.
94
94
 
@@ -128,6 +128,6 @@ Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
128
128
 
129
129
  |maintainer-chienandalu|
130
130
 
131
- This module is part of the `OCA/web <https://github.com/OCA/web/tree/15.0/web_widget_remote_measure>`_ project on GitHub.
131
+ This module is part of the `OCA/stock-weighing <https://github.com/OCA/stock-weighing/tree/15.0/web_widget_remote_measure>`_ project on GitHub.
132
132
 
133
133
  You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
@@ -1 +1,2 @@
1
+ from . import controllers
1
2
  from . import models
@@ -5,7 +5,7 @@
5
5
  "summary": "Allows to connect to remote devices to record measures",
6
6
  "version": "15.0.1.0.0",
7
7
  "author": "Tecnativa, Odoo Community Association (OCA)",
8
- "website": "https://github.com/OCA/web",
8
+ "website": "https://github.com/OCA/stock-weighing",
9
9
  "maintainers": ["chienandalu"],
10
10
  "license": "AGPL-3",
11
11
  "category": "Stock",
@@ -0,0 +1 @@
1
+ from . import main
@@ -0,0 +1,44 @@
1
+ # Copyright 2023 Tecnativa - David Vidal
2
+ # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
3
+ import socket
4
+
5
+ from odoo.http import Controller, request, route
6
+
7
+
8
+ class RemoteDeviceTcpConnection(Controller):
9
+ """Connect directly to a remote device"""
10
+
11
+ def _get_weight(self, data, host, port, time_out=1):
12
+ """Direct tcp connection to the remote device"""
13
+ response = None
14
+ with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as device:
15
+ device.settimeout(time_out)
16
+ device.connect((host, port))
17
+ try:
18
+ if data:
19
+ if isinstance(data, str):
20
+ data = data.encode("utf-8")
21
+ device.sendall(data)
22
+ # Get in one shot. The info won't be longer than a few bytes
23
+ response = device.recv(64)
24
+ except Exception as e:
25
+ raise (e)
26
+ finally:
27
+ device.close()
28
+ return response
29
+
30
+ @route(
31
+ "/remote_measure_device/<int:device>", type="json", auth="user", sitemap=False
32
+ )
33
+ def request_weight(self, device=None, command=None, **kw):
34
+ """Meant be called from the remote scale widget js code"""
35
+ device = request.env["remote.measure.device"].browse(device)
36
+ command = command or b""
37
+ kw.get("timeout", 1)
38
+ response = b""
39
+ host, port = device.host.split(":")
40
+ try:
41
+ response = self._get_weight(command, host, int(port))
42
+ except socket.timeout:
43
+ response = b"timeout"
44
+ return response
@@ -16,6 +16,11 @@ msgstr ""
16
16
  "Plural-Forms: nplurals=2; plural=n != 1;\n"
17
17
  "X-Generator: Weblate 4.17\n"
18
18
 
19
+ #. module: web_widget_remote_measure
20
+ #: model:ir.model.fields,help:web_widget_remote_measure.field_remote_measure_device__read_interval
21
+ msgid "(0 for no sleep between reads) Miliseconds to wait between device reads"
22
+ msgstr ""
23
+
19
24
  #. module: web_widget_remote_measure
20
25
  #: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__active
21
26
  msgid "Active"
@@ -68,15 +73,26 @@ msgstr "Nombre del Dispositivo"
68
73
 
69
74
  #. module: web_widget_remote_measure
70
75
  #: model:ir.ui.menu,name:web_widget_remote_measure.menu_device_config
76
+ #: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.res_users_form_view
71
77
  #: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.view_users_form
72
78
  msgid "Devices"
73
79
  msgstr "Dispositivos"
74
80
 
81
+ #. module: web_widget_remote_measure
82
+ #: model:ir.model.fields.selection,name:web_widget_remote_measure.selection__remote_measure_device__connection_mode__tcp
83
+ msgid "Direct connection"
84
+ msgstr ""
85
+
75
86
  #. module: web_widget_remote_measure
76
87
  #: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__display_name
77
88
  msgid "Display Name"
78
89
  msgstr "Mostrar Nombre"
79
90
 
91
+ #. module: web_widget_remote_measure
92
+ #: model:ir.model.fields,help:web_widget_remote_measure.field_remote_measure_device__non_stop_read
93
+ msgid "Don't stop reading until the widget is disposed"
94
+ msgstr ""
95
+
80
96
  #. module: web_widget_remote_measure
81
97
  #: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__host
82
98
  msgid "Host"
@@ -104,6 +120,11 @@ msgstr ""
104
120
  msgid "ID"
105
121
  msgstr "ID (identificación)"
106
122
 
123
+ #. module: web_widget_remote_measure
124
+ #: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__instant_read
125
+ msgid "Instant Read"
126
+ msgstr ""
127
+
107
128
  #. module: web_widget_remote_measure
108
129
  #: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device____last_update
109
130
  msgid "Last Modified on"
@@ -124,12 +145,18 @@ msgstr "Última Actualización el"
124
145
  msgid "Name"
125
146
  msgstr "Nombre"
126
147
 
148
+ #. module: web_widget_remote_measure
149
+ #: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__non_stop_read
150
+ msgid "Non Stop Read"
151
+ msgstr ""
152
+
127
153
  #. module: web_widget_remote_measure
128
154
  #: model:ir.model.fields,help:web_widget_remote_measure.field_remote_measure_device__protocol
129
155
  msgid "Operating protocol"
130
156
  msgstr "Protocolo operativo"
131
157
 
132
158
  #. module: web_widget_remote_measure
159
+ #: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.res_users_form_view
133
160
  #: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.view_users_form
134
161
  msgid "Preferred remote device"
135
162
  msgstr "Dispositivo remoto preferido"
@@ -144,6 +171,21 @@ msgstr "Protocolo"
144
171
  msgid "Ratio"
145
172
  msgstr "Proporción"
146
173
 
174
+ #. module: web_widget_remote_measure
175
+ #: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__read_interval
176
+ msgid "Read Interval"
177
+ msgstr ""
178
+
179
+ #. module: web_widget_remote_measure
180
+ #: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.measure_device_form
181
+ msgid "Read behavior"
182
+ msgstr ""
183
+
184
+ #. module: web_widget_remote_measure
185
+ #: model:ir.model.fields,help:web_widget_remote_measure.field_remote_measure_device__instant_read
186
+ msgid "Read right on as the widget gets rendered"
187
+ msgstr ""
188
+
147
189
  #. module: web_widget_remote_measure
148
190
  #: model:ir.actions.act_window,name:web_widget_remote_measure.action_measure_device
149
191
  #: model:ir.ui.menu,name:web_widget_remote_measure.menu_measure_device
@@ -13,6 +13,12 @@ msgstr ""
13
13
  "Content-Transfer-Encoding: \n"
14
14
  "Plural-Forms: \n"
15
15
 
16
+ #. module: web_widget_remote_measure
17
+ #: model:ir.model.fields,help:web_widget_remote_measure.field_remote_measure_device__read_interval
18
+ msgid ""
19
+ "(0 for no sleep between reads) Miliseconds to wait between device reads"
20
+ msgstr ""
21
+
16
22
  #. module: web_widget_remote_measure
17
23
  #: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__active
18
24
  msgid "Active"
@@ -62,15 +68,26 @@ msgstr ""
62
68
 
63
69
  #. module: web_widget_remote_measure
64
70
  #: model:ir.ui.menu,name:web_widget_remote_measure.menu_device_config
71
+ #: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.res_users_form_view
65
72
  #: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.view_users_form
66
73
  msgid "Devices"
67
74
  msgstr ""
68
75
 
76
+ #. module: web_widget_remote_measure
77
+ #: model:ir.model.fields.selection,name:web_widget_remote_measure.selection__remote_measure_device__connection_mode__tcp
78
+ msgid "Direct connection"
79
+ msgstr ""
80
+
69
81
  #. module: web_widget_remote_measure
70
82
  #: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__display_name
71
83
  msgid "Display Name"
72
84
  msgstr ""
73
85
 
86
+ #. module: web_widget_remote_measure
87
+ #: model:ir.model.fields,help:web_widget_remote_measure.field_remote_measure_device__non_stop_read
88
+ msgid "Don't stop reading until the widget is disposed"
89
+ msgstr ""
90
+
74
91
  #. module: web_widget_remote_measure
75
92
  #: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__host
76
93
  msgid "Host"
@@ -95,6 +112,11 @@ msgstr ""
95
112
  msgid "ID"
96
113
  msgstr ""
97
114
 
115
+ #. module: web_widget_remote_measure
116
+ #: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__instant_read
117
+ msgid "Instant Read"
118
+ msgstr ""
119
+
98
120
  #. module: web_widget_remote_measure
99
121
  #: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device____last_update
100
122
  msgid "Last Modified on"
@@ -115,12 +137,18 @@ msgstr ""
115
137
  msgid "Name"
116
138
  msgstr ""
117
139
 
140
+ #. module: web_widget_remote_measure
141
+ #: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__non_stop_read
142
+ msgid "Non Stop Read"
143
+ msgstr ""
144
+
118
145
  #. module: web_widget_remote_measure
119
146
  #: model:ir.model.fields,help:web_widget_remote_measure.field_remote_measure_device__protocol
120
147
  msgid "Operating protocol"
121
148
  msgstr ""
122
149
 
123
150
  #. module: web_widget_remote_measure
151
+ #: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.res_users_form_view
124
152
  #: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.view_users_form
125
153
  msgid "Preferred remote device"
126
154
  msgstr ""
@@ -135,6 +163,21 @@ msgstr ""
135
163
  msgid "Ratio"
136
164
  msgstr ""
137
165
 
166
+ #. module: web_widget_remote_measure
167
+ #: model:ir.model.fields,field_description:web_widget_remote_measure.field_remote_measure_device__read_interval
168
+ msgid "Read Interval"
169
+ msgstr ""
170
+
171
+ #. module: web_widget_remote_measure
172
+ #: model_terms:ir.ui.view,arch_db:web_widget_remote_measure.measure_device_form
173
+ msgid "Read behavior"
174
+ msgstr ""
175
+
176
+ #. module: web_widget_remote_measure
177
+ #: model:ir.model.fields,help:web_widget_remote_measure.field_remote_measure_device__instant_read
178
+ msgid "Read right on as the widget gets rendered"
179
+ msgstr ""
180
+
138
181
  #. module: web_widget_remote_measure
139
182
  #: model:ir.actions.act_window,name:web_widget_remote_measure.action_measure_device
140
183
  #: model:ir.ui.menu,name:web_widget_remote_measure.menu_measure_device
@@ -25,8 +25,16 @@ class RemoteMeasureDevice(models.Model):
25
25
  selection=[
26
26
  ("websockets", "Web Sockets"),
27
27
  ("webservices", "Web Services"),
28
+ ("tcp", "Direct connection"),
28
29
  ],
29
30
  required=True,
30
31
  )
31
32
  host = fields.Char(required=True)
33
+ instant_read = fields.Boolean(help="Read right on as the widget gets rendered")
34
+ non_stop_read = fields.Boolean(
35
+ help="Don't stop reading until the widget is disposed"
36
+ )
37
+ read_interval = fields.Integer(
38
+ help="(0 for no sleep between reads) Miliseconds to wait between device reads"
39
+ )
32
40
  test_measure = fields.Float(default=0.0)
@@ -1,4 +1,3 @@
1
- <?xml version="1.0" encoding="utf-8"?>
2
1
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3
2
  <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
4
3
  <head>
@@ -367,9 +366,9 @@ ul.auto-toc {
367
366
  !! This file is generated by oca-gen-addon-readme !!
368
367
  !! changes will be overwritten. !!
369
368
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
370
- !! source digest: sha256:21bff9cec19c28e304b5f4553dff7661daddd2a1e87947a72b621a9eeeade61b
369
+ !! source digest: sha256:044f11b0ae08030a422670bc0684b5bb977f5f91298ed1c79fdd184ec2f59bf5
371
370
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
372
- <p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/web/tree/15.0/web_widget_remote_measure"><img alt="OCA/web" src="https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/web-15-0/web-15-0-web_widget_remote_measure"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/web&amp;target_branch=15.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
371
+ <p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/stock-weighing/tree/15.0/web_widget_remote_measure"><img alt="OCA/stock-weighing" src="https://img.shields.io/badge/github-OCA%2Fstock--weighing-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/stock-weighing-15-0/stock-weighing-15-0-web_widget_remote_measure"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/stock-weighing&amp;target_branch=15.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
373
372
  <p>This module allows to input data from remote devices in your network. Currently, only
374
373
  websockets devices are supported, but it can be extended for any protocol like
375
374
  Webservices.</p>
@@ -431,10 +430,10 @@ provide an uom field so records that aren’t in that UoM don’t measure from t
431
430
  </div>
432
431
  <div class="section" id="bug-tracker">
433
432
  <h1><a class="toc-backref" href="#toc-entry-4">Bug Tracker</a></h1>
434
- <p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/web/issues">GitHub Issues</a>.
433
+ <p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/stock-weighing/issues">GitHub Issues</a>.
435
434
  In case of trouble, please check there if your issue has already been reported.
436
435
  If you spotted it first, help us to smash it by providing a detailed and welcomed
437
- <a class="reference external" href="https://github.com/OCA/web/issues/new?body=module:%20web_widget_remote_measure%0Aversion:%2015.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
436
+ <a class="reference external" href="https://github.com/OCA/stock-weighing/issues/new?body=module:%20web_widget_remote_measure%0Aversion:%2015.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
438
437
  <p>Do not contact contributors directly about support or help with technical issues.</p>
439
438
  </div>
440
439
  <div class="section" id="credits">
@@ -463,7 +462,7 @@ mission is to support the collaborative development of Odoo features and
463
462
  promote its widespread use.</p>
464
463
  <p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
465
464
  <p><a class="reference external image-reference" href="https://github.com/chienandalu"><img alt="chienandalu" src="https://github.com/chienandalu.png?size=40px" /></a></p>
466
- <p>This module is part of the <a class="reference external" href="https://github.com/OCA/web/tree/15.0/web_widget_remote_measure">OCA/web</a> project on GitHub.</p>
465
+ <p>This module is part of the <a class="reference external" href="https://github.com/OCA/stock-weighing/tree/15.0/web_widget_remote_measure">OCA/stock-weighing</a> project on GitHub.</p>
467
466
  <p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
468
467
  </div>
469
468
  </div>
@@ -81,6 +81,82 @@ export const RemoteMeasureMixin = {
81
81
  _connect_to_webservices() {
82
82
  return;
83
83
  },
84
+ /**
85
+ * Send read params to the remote device
86
+ * @returns {Object}
87
+ */
88
+ _read_from_device_tcp_params() {
89
+ return {command: false};
90
+ },
91
+ /**
92
+ * Process call
93
+ * @returns {Number}
94
+ */
95
+ async _read_from_device_tcp() {
96
+ const data = await this._rpc({
97
+ route: `/remote_measure_device/${this.remote_device_data.id}` || [],
98
+ params: this._read_from_device_tcp_params(),
99
+ });
100
+ if (!data) {
101
+ return null;
102
+ }
103
+ const processed_data = this[`_proccess_msg_${this.protocol}`](data);
104
+ if (isNaN(processed_data.value)) {
105
+ processed_data.value = 0;
106
+ }
107
+ return processed_data;
108
+ },
109
+ /**
110
+ * Connect to the local controller, which makes the direct connection to the
111
+ * scale.
112
+ */
113
+ async _connect_to_tcp() {
114
+ var icon = "fa-thermometer-empty";
115
+ var stream_success_counter = 20;
116
+ this._unstableMeasure();
117
+ // Used to set the read interval if any
118
+ const timer = (ms) => new Promise((res) => setTimeout(res, ms));
119
+ // Don't keep going forever unless non stop reading
120
+ for (
121
+ let attemps_left = this.remote_device_data.non_stop_read ? Infinity : 1000;
122
+ attemps_left > 0;
123
+ attemps_left--
124
+ ) {
125
+ // Allow to break the loop manually
126
+ if (this.stop) {
127
+ break;
128
+ }
129
+ const processed_data = await this._read_from_device_tcp();
130
+ if (!processed_data) {
131
+ continue;
132
+ }
133
+ if (processed_data.stable) {
134
+ this._stableMeasure();
135
+ } else {
136
+ this._unstableMeasure();
137
+ stream_success_counter = 20;
138
+ }
139
+ if (processed_data.stable && stream_success_counter <= 0) {
140
+ this._stableMeasure();
141
+ this._awaitingMeasure();
142
+ this._recordMeasure();
143
+ break;
144
+ } else if (this.remote_device_data.non_stop_read) {
145
+ stream_success_counter = 20;
146
+ this._recordMeasure();
147
+ }
148
+ if (stream_success_counter) {
149
+ --stream_success_counter;
150
+ }
151
+ icon = this._nextStateIcon(icon);
152
+ this.amount = processed_data.value;
153
+ this._setMeasure();
154
+ // Set sleep interval
155
+ if (this.remote_device_data.read_interval) {
156
+ await timer(this.remote_device_data.read_interval);
157
+ }
158
+ }
159
+ },
84
160
  /**
85
161
  * Convert the measured units to the units expecte by the record if different
86
162
  * @param {Number} amount
@@ -162,16 +238,32 @@ export const RemoteMeasureMixin = {
162
238
  this.start_add = false;
163
239
  },
164
240
  /**
165
- * Start requesting measures from the remote device
166
- * @param {MouseEvent} ev
241
+ * Request measure to remote device
167
242
  */
168
- _onMeasure(ev) {
169
- ev.preventDefault();
243
+ measure() {
244
+ this.stop = false;
170
245
  this.$start_measure.addClass("d-none");
171
246
  this.$stop_measure.removeClass("d-none");
172
247
  this.$icon = this.$stop_measure.find("i");
173
248
  this[`_connect_to_${this.connection_mode}`]();
174
249
  },
250
+ /**
251
+ * Stop requesting measures from device
252
+ */
253
+ measure_stop() {
254
+ this._closeSocket();
255
+ this.stop = true;
256
+ this._awaitingMeasure();
257
+ this._recordMeasure();
258
+ },
259
+ /**
260
+ * Start requesting measures from the remote device
261
+ * @param {MouseEvent} ev
262
+ */
263
+ _onMeasure(ev) {
264
+ ev.preventDefault();
265
+ this.measure();
266
+ },
175
267
  _onMeasureAdd(ev) {
176
268
  ev.preventDefault();
177
269
  this.start_add = true;
@@ -187,9 +279,7 @@ export const RemoteMeasureMixin = {
187
279
  */
188
280
  _onValidateMeasure(ev) {
189
281
  ev.preventDefault();
190
- this._closeSocket();
191
- this._awaitingMeasure();
192
- this._recordMeasure();
282
+ this.measure_stop();
193
283
  },
194
284
  /**
195
285
  * Remote measure handle to start measuring
@@ -339,6 +429,17 @@ export const RemoteMeasure = FieldFloat.extend(RemoteMeasureMixin, {
339
429
  this.$el.prepend(this.$start_measure, this.$stop_measure);
340
430
  return def;
341
431
  },
432
+ /**
433
+ * Read right on if configured
434
+ * @override
435
+ */
436
+ start() {
437
+ this._super(...arguments).then(() => {
438
+ if (this.remote_device_data.instant_read) {
439
+ this.measure();
440
+ }
441
+ });
442
+ },
342
443
  /**
343
444
  * Ensure that the socket is allways closed
344
445
  */
@@ -25,6 +25,13 @@
25
25
  <field name="connection_mode" />
26
26
  </group>
27
27
  </group>
28
+ <group>
29
+ <group string="Read behavior">
30
+ <field name="instant_read" />
31
+ <field name="non_stop_read" />
32
+ <field name="read_interval" />
33
+ </group>
34
+ </group>
28
35
  </sheet>
29
36
  </form>
30
37
  </field>
@@ -14,4 +14,18 @@
14
14
  </page>
15
15
  </field>
16
16
  </record>
17
+ <record id="res_users_form_view" model="ir.ui.view">
18
+ <field name="model">res.users</field>
19
+ <field name="inherit_id" ref="base.view_users_form_simple_modif" />
20
+ <field name="arch" type="xml">
21
+ <group name="preferences" position="inside">
22
+ <group name="devices" string="Devices">
23
+ <field
24
+ name="remote_measure_device_id"
25
+ string="Preferred remote device"
26
+ />
27
+ </group>
28
+ </group>
29
+ </field>
30
+ </record>
17
31
  </odoo>
@@ -1,8 +1,8 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-web-widget-remote-measure
3
- Version: 15.0.1.0.0.6
3
+ Version: 15.0.1.0.0.8
4
4
  Summary: Allows to connect to remote devices to record measures
5
- Home-page: https://github.com/OCA/web
5
+ Home-page: https://github.com/OCA/stock-weighing
6
6
  Author: Tecnativa, Odoo Community Association (OCA)
7
7
  Author-email: support@odoo-community.org
8
8
  License: AGPL-3
@@ -23,7 +23,7 @@ Remote Measure Devices Input
23
23
  !! This file is generated by oca-gen-addon-readme !!
24
24
  !! changes will be overwritten. !!
25
25
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
26
- !! source digest: sha256:21bff9cec19c28e304b5f4553dff7661daddd2a1e87947a72b621a9eeeade61b
26
+ !! source digest: sha256:044f11b0ae08030a422670bc0684b5bb977f5f91298ed1c79fdd184ec2f59bf5
27
27
  !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28
28
 
29
29
  .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
@@ -32,14 +32,14 @@ Remote Measure Devices Input
32
32
  .. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
33
33
  :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
34
34
  :alt: License: AGPL-3
35
- .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fweb-lightgray.png?logo=github
36
- :target: https://github.com/OCA/web/tree/15.0/web_widget_remote_measure
37
- :alt: OCA/web
35
+ .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fstock--weighing-lightgray.png?logo=github
36
+ :target: https://github.com/OCA/stock-weighing/tree/15.0/web_widget_remote_measure
37
+ :alt: OCA/stock-weighing
38
38
  .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
39
- :target: https://translation.odoo-community.org/projects/web-15-0/web-15-0-web_widget_remote_measure
39
+ :target: https://translation.odoo-community.org/projects/stock-weighing-15-0/stock-weighing-15-0-web_widget_remote_measure
40
40
  :alt: Translate me on Weblate
41
41
  .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
42
- :target: https://runboat.odoo-community.org/builds?repo=OCA/web&target_branch=15.0
42
+ :target: https://runboat.odoo-community.org/builds?repo=OCA/stock-weighing&target_branch=15.0
43
43
  :alt: Try me on Runboat
44
44
 
45
45
  |badge1| |badge2| |badge3| |badge4| |badge5|
@@ -101,10 +101,10 @@ But this is a commonground to add:
101
101
  Bug Tracker
102
102
  ===========
103
103
 
104
- Bugs are tracked on `GitHub Issues <https://github.com/OCA/web/issues>`_.
104
+ Bugs are tracked on `GitHub Issues <https://github.com/OCA/stock-weighing/issues>`_.
105
105
  In case of trouble, please check there if your issue has already been reported.
106
106
  If you spotted it first, help us to smash it by providing a detailed and welcomed
107
- `feedback <https://github.com/OCA/web/issues/new?body=module:%20web_widget_remote_measure%0Aversion:%2015.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
107
+ `feedback <https://github.com/OCA/stock-weighing/issues/new?body=module:%20web_widget_remote_measure%0Aversion:%2015.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
108
108
 
109
109
  Do not contact contributors directly about support or help with technical issues.
110
110
 
@@ -144,7 +144,7 @@ Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
144
144
 
145
145
  |maintainer-chienandalu|
146
146
 
147
- This module is part of the `OCA/web <https://github.com/OCA/web/tree/15.0/web_widget_remote_measure>`_ project on GitHub.
147
+ This module is part of the `OCA/stock-weighing <https://github.com/OCA/stock-weighing/tree/15.0/web_widget_remote_measure>`_ project on GitHub.
148
148
 
149
149
  You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
150
150
 
@@ -1,10 +1,12 @@
1
- odoo/addons/web_widget_remote_measure/README.rst,sha256=OKNg3fNK8FE1Cq3me7JWAaWmZi66zs6T6h8z_hSJSX0,4553
2
- odoo/addons/web_widget_remote_measure/__init__.py,sha256=X9EJGOE2GtZbS0G82PtSXmWSZ_R8jEM0rlJTDliQjp4,21
3
- odoo/addons/web_widget_remote_measure/__manifest__.py,sha256=tGJz_j_G4ouF3eYQOah2xZWKy5SRzBIAg0LUB_ew4yc,891
4
- odoo/addons/web_widget_remote_measure/i18n/es.po,sha256=1g5UC_KF8TBb1Dc-kRaGeQUapEhfAfyF45Xty1HGNdk,7881
5
- odoo/addons/web_widget_remote_measure/i18n/web_widget_remote_measure.pot,sha256=S-Q-Xkw6FcsrkUwX75_bae3vrrWWgstsfzLCGdTtWVc,6791
1
+ odoo/addons/web_widget_remote_measure/README.rst,sha256=AsyTvZtu09aJP4GDBv9EewMB7d7JlmYtruT8UgHILx0,4664
2
+ odoo/addons/web_widget_remote_measure/__init__.py,sha256=jQ-fltIs1ohXt7udDkkJwzh7ckauQW2rbmv1Wtg3SjQ,47
3
+ odoo/addons/web_widget_remote_measure/__manifest__.py,sha256=cr-GOHEAo4aNOJb0F6cfMW5uEW0os41lB456pdNXq6U,902
4
+ odoo/addons/web_widget_remote_measure/controllers/__init__.py,sha256=4KFqEP2QHFbPN66eQJMdGsmNz2v7ywWv_FR1pW_kkLk,19
5
+ odoo/addons/web_widget_remote_measure/controllers/main.py,sha256=Y7-KWYAzJUsFOUXp8pYb6gubSRPjYaMMTK-EwPvf-FM,1596
6
+ odoo/addons/web_widget_remote_measure/i18n/es.po,sha256=tBibgxH962Oq4YU4sTGdwXDsM7dhcGpm6Z6geEqvTK8,9556
7
+ odoo/addons/web_widget_remote_measure/i18n/web_widget_remote_measure.pot,sha256=gMfuMXTwF6iVJIXbJO0mxo5I8SFs_qL1iiMj0xm-QdQ,8469
6
8
  odoo/addons/web_widget_remote_measure/models/__init__.py,sha256=J_ouBD3wdPWoRA5-ZLkwygexPIblJEq2FymqQkO9ez8,60
7
- odoo/addons/web_widget_remote_measure/models/remote_measure_device.py,sha256=xxpwABcnZe_FbEKUVmdmHBF3M5CZI4vYC41M3cmIiGI,1000
9
+ odoo/addons/web_widget_remote_measure/models/remote_measure_device.py,sha256=qnO86qhgE9Z0yJy0zxs0AxWLZ6ZMSAf7T60iUC_Wtyo,1360
8
10
  odoo/addons/web_widget_remote_measure/models/res_users.py,sha256=ozlPc7v3ZJwAZ7aEyNh0ZTaUpYcVziCVFnYgLwWNX0g,357
9
11
  odoo/addons/web_widget_remote_measure/readme/CONFIGURE.rst,sha256=xZ0VdKMKYkumd_UG1NjCj5hl_HjPfKoxHCdUj12vk30,232
10
12
  odoo/addons/web_widget_remote_measure/readme/CONTRIBUTORS.rst,sha256=1v8RVohEtpFYYq_juSbiR8NvH3IRmZqsZE3Jx3_Y31I,61
@@ -13,14 +15,14 @@ odoo/addons/web_widget_remote_measure/readme/ROADMAP.rst,sha256=Z0aICtUk3GUOPY5N
13
15
  odoo/addons/web_widget_remote_measure/readme/USAGE.rst,sha256=dWWMqNmAvPjk2v1qlEP0F_lxEt1XfMUR-CT81JWgV8c,726
14
16
  odoo/addons/web_widget_remote_measure/security/ir.model.access.csv,sha256=3bwXFcGN-56-3-aR-RYGH8G6sVnuYkirAzpY4dDu8IA,426
15
17
  odoo/addons/web_widget_remote_measure/static/description/icon.png,sha256=O9NGHv3egMV4Z7wp_y1yxXS9BmUi7AiGAleQTwMkuRo,9652
16
- odoo/addons/web_widget_remote_measure/static/description/index.html,sha256=1X9pkUrahFGxY39LLtT-9dSK6NSxERBMd3DAa3OiU8M,15016
18
+ odoo/addons/web_widget_remote_measure/static/description/index.html,sha256=eG76yrTei_sTpDI4JhB92NC7w-mIiOfNdpEV9Ubj088,15088
17
19
  odoo/addons/web_widget_remote_measure/static/src/js/remote_measure_device_kanban_widget.esm.js,sha256=vw2rHAKmv8F7V3AKVydkN01yNW4_b_uhO0O-GgUWlzI,1119
18
- odoo/addons/web_widget_remote_measure/static/src/js/remote_measure_widget.esm.js,sha256=1ZQKp2mlxqyYJSLq8BewHNVmcE1CWmxUdGT4THPV5co,12267
20
+ odoo/addons/web_widget_remote_measure/static/src/js/remote_measure_widget.esm.js,sha256=pX5utejQ1_7tT4OjsmHuSyKnRuAGGNXmFcYPhi2XXlM,15362
19
21
  odoo/addons/web_widget_remote_measure/static/src/scss/remote_measure_widget.scss,sha256=khdgvWe-uCaz6mXOTrO3-3sMhU8AJkCNA-8-EqaHhqM,643
20
22
  odoo/addons/web_widget_remote_measure/static/src/xml/measure_device_status.xml,sha256=ZiDIjjUC_6OmMCt5CuZjivQQ5GbXw9k63eNlYmCez7E,461
21
- odoo/addons/web_widget_remote_measure/views/remote_measure_device_views.xml,sha256=gCjnVntEvzfCdPTef4PmDLYGWT8CKGBpgYaAgIBEUm4,3891
22
- odoo/addons/web_widget_remote_measure/views/res_users_views.xml,sha256=27Q2ZcLCS9b34NFGUMJMaZNMbeb2_v3J1hEUXTpTvBY,607
23
- odoo_addon_web_widget_remote_measure-15.0.1.0.0.6.dist-info/METADATA,sha256=qX9RvysDJDjPwK5MJ-2PGwDQcU97igCUabwC_NHU4Io,5119
24
- odoo_addon_web_widget_remote_measure-15.0.1.0.0.6.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
25
- odoo_addon_web_widget_remote_measure-15.0.1.0.0.6.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
26
- odoo_addon_web_widget_remote_measure-15.0.1.0.0.6.dist-info/RECORD,,
23
+ odoo/addons/web_widget_remote_measure/views/remote_measure_device_views.xml,sha256=TjVLvhedTtSub_UCSmTeZEkxFksRXcUBA7lh2pQf72k,4212
24
+ odoo/addons/web_widget_remote_measure/views/res_users_views.xml,sha256=hTncZ9RfMn9nHlDe72msIUP8cnRAt2j1-7-bDkwKIek,1178
25
+ odoo_addon_web_widget_remote_measure-15.0.1.0.0.8.dist-info/METADATA,sha256=FTbilNVqUjTszp3whT1iZy-DUpE7bWMh1vi5_maJqe4,5241
26
+ odoo_addon_web_widget_remote_measure-15.0.1.0.0.8.dist-info/WHEEL,sha256=GJ7t_kWBFywbagK5eo9IoUwLW6oyOeTKmQ-9iHFVNxQ,92
27
+ odoo_addon_web_widget_remote_measure-15.0.1.0.0.8.dist-info/top_level.txt,sha256=qBj40grFkGOfDZ2WDSw3y1RnDlgG0u8rP8pvGNdbz4w,5
28
+ odoo_addon_web_widget_remote_measure-15.0.1.0.0.8.dist-info/RECORD,,