IoT Templates

iot_template_oca
REPOSITORY
REPOSITORYOCA/iot
GIT
GIThttps://github.com/OCA/iot.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/iot/tree/17.0/iot_template_oca
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYIoT
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Creu Blanca
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Creu Blanca
COMMITTERS
COMMITTERSOCA-git-bot, oca-ci, FernandoRomera
WEBSITE
WEBSITEhttps://github.com/OCA/iot
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:11
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/iot:
    - iot_input_oca
    - iot_oca
    - iot_output_oca
odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Create a system of templates for IoT devices.

When we are using a template we can configure a device with a simple URL
configuration. The device will contact odoo and send the template name.
Odoo will create the device and respond with all the expected data.

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
configure_form iot.device.configure iot.device.configure form New
iot_template_form iot.template.form iot.template form New
iot_template_tree iot.template.form iot.template tree New
Models touched (8)

New fields (0)

No new fields.

Public methods (1)
  • get_iot_configuration(self)

New fields (2)
  • serial Char
    default=<expr> readonly=True required=True
  • url Char
    compute='_compute_url'
Public methods (1)
  • configure(self, serial, template_id, ip=False, **kwargs)
    @api.model

New fields (1)
  • template_input_id Many2one → iot.template.input
    readonly=True args: 'iot.template.input'
Public methods (1)
  • get_configuration(self)

New fields (1)
  • template_output_id Many2one → iot.template.output
    readonly=True args: 'iot.template.output'
Public methods (1)
  • get_configuration(self)

New fields (9)
  • group_id Many2one → iot.device.group
    args: 'iot.device.group'
  • icon Selection
    selection=<expr>
  • input_ids One2many → iot.template.input
    inverse_name='template_id' args: 'iot.template.input'
  • key_ids One2many → iot.template.key
    inverse_name='template_id' args: 'iot.template.key'
  • name Char
    required=True
  • output_ids One2many → iot.template.output
    inverse_name='template_id' args: 'iot.template.output'
  • parent_id Many2one → iot.template
    ondelete='restrict' args: 'iot.template'
  • parent_path Char
    index=True
  • tag_ids Many2many → iot.device.tag
    args: 'iot.device.tag'
Public methods (1)
  • apply_template(self, device, keys)

New fields (5)
  • call_function Char
    required=True
  • call_model_id Many2one → ir.model
    args: 'ir.model'
  • name Char
    required=True
  • params Text
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

New fields (2)
  • key Char
    required=True
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

New fields (4)
  • communication_system_id Many2one → iot.communication.system
    required=True args: 'iot.communication.system'
  • name Char
    required=True
  • params Text
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/iot
GIT
GIThttps://github.com/OCA/iot.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/iot/tree/16.0/iot_template_oca
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYIoT
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Creu Blanca
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Creu Blanca
COMMITTERS
COMMITTERSAaronHForgeFlow, Weblate, OCA-git-bot, oca-ci, Kevin Luna
WEBSITE
WEBSITEhttps://github.com/OCA/iot
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:54:00
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/iot:
    - iot_input_oca
    - iot_oca
    - iot_output_oca
odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
configure_form iot.device.configure iot.device.configure form New
iot_template_form iot.template.form iot.template form New
iot_template_tree iot.template.form iot.template tree New
Models touched (8)

New fields (0)

No new fields.

Public methods (1)
  • get_iot_configuration(self)

New fields (2)
  • serial Char
    default=<expr> readonly=True required=True
  • url Char
    compute='_compute_url'
Public methods (1)
  • configure(self, serial, template_id, ip=False, **kwargs)
    @api.model

New fields (1)
  • template_input_id Many2one → iot.template.input
    readonly=True args: 'iot.template.input'
Public methods (1)
  • get_configuration(self)

New fields (1)
  • template_output_id Many2one → iot.template.output
    readonly=True args: 'iot.template.output'
Public methods (1)
  • get_configuration(self)

New fields (9)
  • group_id Many2one → iot.device.group
    args: 'iot.device.group'
  • icon Selection
    selection=<expr>
  • input_ids One2many → iot.template.input
    inverse_name='template_id' args: 'iot.template.input'
  • key_ids One2many → iot.template.key
    inverse_name='template_id' args: 'iot.template.key'
  • name Char
    required=True
  • output_ids One2many → iot.template.output
    inverse_name='template_id' args: 'iot.template.output'
  • parent_id Many2one → iot.template
    ondelete='restrict' args: 'iot.template'
  • parent_path Char
    index=True unaccent=False
  • tag_ids Many2many → iot.device.tag
    args: 'iot.device.tag'
Public methods (1)
  • apply_template(self, device, keys)

New fields (5)
  • call_function Char
    required=True
  • call_model_id Many2one → ir.model
    args: 'ir.model'
  • name Char
    required=True
  • params Text
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

New fields (2)
  • key Char
    required=True
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

New fields (4)
  • communication_system_id Many2one → iot.communication.system
    required=True args: 'iot.communication.system'
  • name Char
    required=True
  • params Text
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/iot
GIT
GIThttps://github.com/OCA/iot.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/iot/tree/15.0/iot_template_oca
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYIoT
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Creu Blanca
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Creu Blanca
COMMITTERS
COMMITTERSsergio-teruel, Weblate, OCA-git-bot, oca-ci, Olga Marco
WEBSITE
WEBSITEhttps://github.com/OCA/iot
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:44
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/iot:
    - iot_input_oca
    - iot_oca
    - iot_output_oca
odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
configure_form iot.device.configure iot.device.configure form New
iot_template_form iot.template.form iot.template form New
iot_template_tree iot.template.form iot.template tree New
Models touched (8)

New fields (0)

No new fields.

Public methods (1)
  • get_iot_configuration(self)

New fields (2)
  • serial Char
    default=<expr> readonly=True required=True
  • url Char
    compute='_compute_url'
Public methods (1)
  • configure(self, serial, template_id, ip=False, **kwargs)
    @api.model

New fields (1)
  • template_input_id Many2one → iot.template.input
    readonly=True args: 'iot.template.input'
Public methods (1)
  • get_configuration(self)

New fields (1)
  • template_output_id Many2one → iot.template.output
    readonly=True args: 'iot.template.output'
Public methods (1)
  • get_configuration(self)

New fields (9)
  • group_id Many2one → iot.device.group
    args: 'iot.device.group'
  • icon Selection
    selection=<expr>
  • input_ids One2many → iot.template.input
    inverse_name='template_id' args: 'iot.template.input'
  • key_ids One2many → iot.template.key
    inverse_name='template_id' args: 'iot.template.key'
  • name Char
    required=True
  • output_ids One2many → iot.template.output
    inverse_name='template_id' args: 'iot.template.output'
  • parent_id Many2one → iot.template
    ondelete='restrict' args: 'iot.template'
  • parent_path Char
    index=True
  • tag_ids Many2many → iot.device.tag
    args: 'iot.device.tag'
Public methods (1)
  • apply_template(self, device, keys)

New fields (5)
  • call_function Char
    required=True
  • call_model_id Many2one → ir.model
    args: 'ir.model'
  • name Char
    required=True
  • params Text
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

New fields (2)
  • key Char
    required=True
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

New fields (4)
  • communication_system_id Many2one → iot.communication.system
    required=True args: 'iot.communication.system'
  • name Char
    required=True
  • params Text
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/iot
GIT
GIThttps://github.com/OCA/iot.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/iot/tree/14.0/iot_template_oca
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYIoT
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Creu Blanca
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Creu Blanca
COMMITTERS
COMMITTERSEnric Tobella, Weblate, OCA-git-bot, oca-ci, Olga Marco
WEBSITE
WEBSITEhttps://github.com/OCA/iot
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/iot:
    - iot_input_oca
    - iot_oca
    - iot_output_oca
odoo/odoo:
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
configure_form iot.device.configure iot.device.configure form New
iot_template_form iot.template.form iot.template form New
iot_template_tree iot.template.form iot.template tree New
Models touched (8)

New fields (0)

No new fields.

Public methods (1)
  • get_iot_configuration(self)

New fields (2)
  • serial Char
    default=<expr> readonly=True required=True
  • url Char
    compute='_compute_url'
Public methods (1)
  • configure(self, serial, template_id, ip=False, **kwargs)
    @api.model

New fields (1)
  • template_input_id Many2one → iot.template.input
    readonly=True args: 'iot.template.input'
Public methods (1)
  • get_configuration(self)

New fields (1)
  • template_output_id Many2one → iot.template.output
    readonly=True args: 'iot.template.output'
Public methods (1)
  • get_configuration(self)

New fields (9)
  • group_id Many2one → iot.device.group
    args: 'iot.device.group'
  • icon Selection
    selection=<expr>
  • input_ids One2many → iot.template.input
    inverse_name='template_id' args: 'iot.template.input'
  • key_ids One2many → iot.template.key
    inverse_name='template_id' args: 'iot.template.key'
  • name Char
    required=True
  • output_ids One2many → iot.template.output
    inverse_name='template_id' args: 'iot.template.output'
  • parent_id Many2one → iot.template
    ondelete='restrict' args: 'iot.template'
  • parent_path Char
    index=True
  • tag_ids Many2many → iot.device.tag
    args: 'iot.device.tag'
Public methods (1)
  • apply_template(self, device, keys)

New fields (5)
  • call_function Char
    required=True
  • call_model_id Many2one → ir.model
    args: 'ir.model'
  • name Char
    required=True
  • params Text
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

New fields (2)
  • key Char
    required=True
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

New fields (4)
  • communication_system_id Many2one → iot.communication.system
    required=True args: 'iot.communication.system'
  • name Char
    required=True
  • params Text
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/iot
GIT
GIThttps://github.com/OCA/iot.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/iot/tree/13.0/iot_template_oca
VERSION
VERSION 1.2.1
CATEGORY
CATEGORYIoT
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Creu Blanca
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Creu Blanca
COMMITTERS
COMMITTERSEnric Tobella, AaronHForgeFlow, oca-travis, Weblate, OCA-git-bot, oca-ci, Olga Marco
WEBSITE
WEBSITEhttps://github.com/OCA/iot
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:21
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/iot:
    - iot_input_oca
    - iot_output_oca
    - iot_oca
odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
configure_form iot.device.configure iot.device.configure form New
iot_template_form iot.template.form iot.template form New
iot_template_tree iot.template.form iot.template tree New
Models touched (8)

New fields (0)

No new fields.

Public methods (1)
  • get_iot_configuration(self)

New fields (2)
  • serial Char
    default=<expr> readonly=True required=True
  • url Char
    compute='_compute_url'
Public methods (1)
  • configure(self, serial, template_id, ip=False, **kwargs)
    @api.model

New fields (1)
  • template_input_id Many2one → iot.template.input
    readonly=True args: 'iot.template.input'
Public methods (1)
  • get_configuration(self)

New fields (1)
  • template_output_id Many2one → iot.template.output
    readonly=True args: 'iot.template.output'
Public methods (1)
  • get_configuration(self)

New fields (9)
  • group_id Many2one → iot.device.group
    args: 'iot.device.group'
  • icon Selection
    selection=<expr>
  • input_ids One2many → iot.template.input
    inverse_name='template_id' args: 'iot.template.input'
  • key_ids One2many → iot.template.key
    inverse_name='template_id' args: 'iot.template.key'
  • name Char
    required=True
  • output_ids One2many → iot.template.output
    inverse_name='template_id' args: 'iot.template.output'
  • parent_id Many2one → iot.template
    ondelete='restrict' args: 'iot.template'
  • parent_path Char
    index=True
  • tag_ids Many2many → iot.device.tag
    args: 'iot.device.tag'
Public methods (1)
  • apply_template(self, device, keys)

New fields (5)
  • call_function Char
    required=True
  • call_model_id Many2one → ir.model
    args: 'ir.model'
  • name Char
    required=True
  • params Text
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

New fields (2)
  • key Char
    required=True
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

New fields (4)
  • name Char
    required=True
  • params Text
  • system_id Many2one → iot.system
    required=True args: 'iot.system'
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/iot
GIT
GIThttps://github.com/OCA/iot.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/iot/tree/12.0/iot_template_oca
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYIoT
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Creu Blanca
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Creu Blanca
COMMITTERS
COMMITTERSAaronHForgeFlow, oca-travis, Weblate, OCA-git-bot
WEBSITE
WEBSITEhttps://github.com/OCA/iot
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:26
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/iot:
    - iot_input
    - iot_output
    - iot
odoo/odoo:
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
configure_form iot.device.configure iot.device.configure form New
iot_template_form iot.template.form iot.template form New
iot_template_tree iot.template.form iot.template tree New
Models touched (8)

New fields (0)

No new fields.

Public methods (1)
  • get_iot_configuration(self)

New fields (2)
  • serial Char
    default=<expr> readonly=True required=True
  • url Char
    compute='_compute_url'
Public methods (1)
  • configure(self, serial, template_id, ip=False, **kwargs)
    @api.model

New fields (1)
  • template_input_id Many2one → iot.template.input
    readonly=True args: 'iot.template.input'
Public methods (1)
  • get_configuration(self)

New fields (1)
  • template_output_id Many2one → iot.template.output
    readonly=True args: 'iot.template.output'
Public methods (1)
  • get_configuration(self)

New fields (12)
  • group_id Many2one → iot.device.group
    args: 'iot.device.group'
  • icon Selection
    selection=<expr>
  • image Binary
    attachment=True help='This field holds the image used as image for the equipment, limited to 1024x1024px.'
  • image_medium Binary
    attachment=True help='Medium-sized image of the equipment. It is automatically resized as a 128x128px image, with aspect ratio preserved, only when the image exceeds one of those sizes. Use this field in form views or some kanban views.' string='Medium-sized image'
  • image_small Binary
    attachment=True help='Small-sized image of the equipment. It is automatically resized as a 64x64px image, with aspect ratio preserved. Use this field anywhere a small image is required.' string='Small-sized image'
  • input_ids One2many → iot.template.input
    inverse_name='template_id' args: 'iot.template.input'
  • key_ids One2many → iot.template.key
    inverse_name='template_id' args: 'iot.template.key'
  • name Char
    required=True
  • output_ids One2many → iot.template.output
    inverse_name='template_id' args: 'iot.template.output'
  • parent_id Many2one → iot.template
    ondelete='restrict' args: 'iot.template'
  • parent_path Char
    index=True
  • tag_ids Many2many → iot.device.tag
    args: 'iot.device.tag'
Public methods (3)
  • apply_template(self, device, keys)
  • create(self, values)
    @api.model_create_multi
  • write(self, vals)
    @api.multi

New fields (5)
  • call_function Char
    required=True
  • call_model_id Many2one → ir.model
    args: 'ir.model'
  • name Char
    required=True
  • params Text
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

New fields (2)
  • key Char
    required=True
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

New fields (4)
  • name Char
    required=True
  • params Text
  • system_id Many2one → iot.system
    required=True args: 'iot.system'
  • template_id Many2one → iot.template
    required=True args: 'iot.template'
Public methods (0)

No public methods.

STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/iot
PULL REQUEST
PULL REQUEST[18.0][mig] iot_template_oca (#112)