========= IoT Input ========= .. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! This file is generated by oca-gen-addon-readme !! !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !! source digest: sha256:4027dfc83e42e31e5a186fd4a2fd0d7e1bb0829ed30f9395c9053177d9b13140 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! .. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png :target: https://odoo-community.org/page/development-status :alt: Beta .. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 .. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fiot-lightgray.png?logo=github :target: https://github.com/OCA/iot/tree/16.0/iot_input_oca :alt: OCA/iot .. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png :target: https://translation.odoo-community.org/projects/iot-16-0/iot-16-0-iot_input_oca :alt: Translate me on Weblate .. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png :target: https://runboat.odoo-community.org/builds?repo=OCA/iot&target_branch=16.0 :alt: Try me on Runboat |badge1| |badge2| |badge3| |badge4| |badge5| This addon allows to use a device in order to input data to odoo automatically. It opens a URL that a device can use to connect (with a password) that can only execute an specific action. Inputs are useful when a device wants to communicate to odoo for a single and simple action. This way, the device does not need to be configured with a odoo user and password, it is handled by odoo devices. Examples: * Sending the temperature every three minutes. * Sending the RFID that the device has received in order to perform some action **Table of contents** .. contents:: :local: Usage ===== There are two endpoints you can use: Endpoint 1: /iot//action Takes `application/x-www-form-urlencoded` parameters: passphase, value (where value is a JSON object) 1. Create a Device on `IoT > Config Devices` 2. Access the Inputs section of the device 3. Create an input. You must define a serial, passphrase, function and model The function that the system will call must be of the following kind:: @api.model def call_function(self, key): return {} Where `key` is the input string send by the device and the result must be a dictionary that will be responded to the device as a JSON. Endpoint 2: /iot//multi_input It can be used to send values with multiple data in one POST request such as: - Values for inputs of the same device with different address (multi input) - Values for inputs of the same device with same address, different values (multi event) - Mix of the above (multi input, multi event) Takes `application/x-www-form-urlencoded` parameters: passphase, values (a JSON array of JSON objects) It is called using device_identification and passing two POST parameters: device passphrase and a JSON string containing an array of values for input - The value for the `address` key can be a string or a numeric (to conserve bytes in memory restricted devices when creating the JSON object) and is converted to string when parsing. - The value for the `value` key can either be string, number or boolean according to JSON specs. You can see an example of a valid JSON input object in the examples folder, using a few combinations. It requires the function that the system will call must be of the following kind:: @api.model def call_function(self, key): 'do something if err: return {'status': 'error', 'message': 'The error message you want to send to the device'} return {'status': 'ok', 'message': 'Optional success message'} Where `key` is a dict send by the device having at least value for keys: 'address', 'value' The function must always return a JSON with status and message. If value contains a value with 'uuid' as key, it is returned along with the object for the IoT device to identify success/failure per record. It has full error reporting and the return value is a JSON array of dicts containing at least status and message. Error message respose is at some points generic, though extended logging is done in Odoo server logs. Bug Tracker =========== Bugs are tracked on `GitHub Issues `_. In case of trouble, please check there if your issue has already been reported. If you spotted it first, help us to smash it by providing a detailed and welcomed `feedback `_. Do not contact contributors directly about support or help with technical issues. Credits ======= Authors ~~~~~~~ * Creu Blanca Contributors ~~~~~~~~~~~~ * Enric Tobella * Dimitrios Tanis Maintainers ~~~~~~~~~~~ This module is maintained by the OCA. .. image:: https://odoo-community.org/logo.png :alt: Odoo Community Association :target: https://odoo-community.org OCA, or the Odoo Community Association, is a nonprofit organization whose mission is to support the collaborative development of Odoo features and promote its widespread use. .. |maintainer-etobella| image:: https://github.com/etobella.png?size=40px :target: https://github.com/etobella :alt: etobella Current `maintainer `__: |maintainer-etobella| This module is part of the `OCA/iot `_ project on GitHub. You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.