OdooWiki OCA HUB
IoT License: AGPL-3

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

auto_awesome What this module does

AI-generated from the code · Odoo 12.0

Lets IoT devices send data into Odoo through a password-protected web address, without needing an Odoo user account. Each input is linked to a device and triggers a chosen function in Odoo.

This module adds a new kind of record called a device input, managed from the IoT device screen. On a device form you get an "Inputs" button showing how many inputs exist, and a kanban menu entry to open them.

Each input has a name, an address, a serial number and a passphrase, and points to a model and a function to run when data arrives. Inputs can be archived, and the search view filters active or inactive ones.

Devices call Odoo through web addresses such as /iot/<serial>/action, /iot/<serial>/check and /iot/<device_identification>/multi_input. The serial and passphrase are checked, the device must be active, and the multi-input route accepts a JSON list of values. Every call runs the configured function, updates the device's last contact date, and stores a log line with the arguments and the result. Errors are caught and logged instead of breaking the call.

Messages posted by the called function are automatically tagged as detected by the device. Access is granted to IoT users for reading and creating, and to IoT managers for full control.

Depends on

Models and fields (4)
  • iot.device · extends an existing modelinput_ids, input_count
  • mail.message · extends an existing model
  • iot.device.input · new modellang (Language), name, active, serial, address, device_id, action_ids, passphrase, action_count, call_function, call_model_id
  • iot.device.input.action · new modelres, args, kwargs, input_id

Text generated by AI (DeepSeek) from reading the Odoo 12.0 code on GitHub; it may contain mistakes, so check the code before deciding. View the code on GitHub

Availability by version

Reviewed: 2026-11-03
Confirmed (verified in repository and branch) Estimated (unverified) No information

Confirmation status: 1 confirmed, 8 with no information of 9 versions.

terminal Installation and usage

OCA documentation · Odoo 12.0

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)

  • Create a Device on IoT > Config Devices
  • Access the Inputs section of the device
  • 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.

No verified information in OCA: Installation, Configuration.

info

Data imported from GitHub: this sheet reflects the latest catalog review, not a live lookup. Always check the module documentation and staging before installing in production.