Intercom-2N Plugin

Requirements

This plugin is designed to work with the 2N Intercom systems, the official distributor in Germany is Keil Telecom.

The plugin is tested to work with 2N Helios IP Verso but should be working with all device, which integrates the 2N Helio HTTP API.

Please use the support thread in the KNX-User-Forum for any questions and bug reports.

Most of the commands need the ‚Enhanced Integration‘ licence key. (Shop Keil Telecom). The event listening feature should be working without any extra license.

You must also add the required privileges to your user. This can be done in the web-interface of your 2N Intercom.

Command

Service

Privileges

License

system_info

System

System Control

No

system_status

System

System Control

Yes

system_restart

System

System Control

Yes

firmware_upload

System

System Control

Yes

firmware_apply

System

System Control

Yes

config_get

System

System Control

Yes

config_upload

System

System Control

Yes

factory_reset

System

System Control

Yes

switch_caps

Switch

Switch Monitoring

Yes

switch_status

Switch

Switch Monitoring

Yes

switch_control

Switch

Switch Control

Yes

io_caps

I/O

I/O Monitoring

Yes

io_status

I/O

I/O Monitoring

Yes

io_control

I/O

I/O Control

Yes

phone_status

Phone/Call

Call Monitoring

Yes

call_status

Phone/Call

Call Monitoring

Yes

call_dial

Phone/Call

Call Control

Yes

call_answer

Phone/Call

Call Control

Yes

call_hangup

Phone/Call

Call Control

Yes

camera_caps

Camera

Camera Monitoring

No

camera_snapshot

Camera

Camera Monitoring

No

display_caps

Display

Display Control

Yes

display_upload_image

Display

Display Control

Yes

log_caps

Logging

No

log_subscribe

Logging

No

log_unsubscribe

Logging

No

log_pull

Logging

No

audio_test

Audio

Audio Control

Yes

email_send

E-mail

E-mail Control

Yes

pcap

System

System Control

Yes

pcap_restart

System

System Control

Yes

pcap_stop

System

System Control

Yes

Plugin setup

Edit your plugin.yaml and add following lines:

intercom_2n:
    plugin_name: intercom_2n
    intercom_ip: 192.168.0.10
    ssl: 'True'
    auth_type: 2
    username: my_user
    password: my_pass

Change intercom_ip, ssl, auth_type, username and password to your needs.

The auth_type parameter must be set to one of the following values:

0: no authentication
1: Basic Authentication
2: Digest Authentication

This value must be the same as the value in web-interface of your 2N Intercom. Despite the fact that you can adjust different security settings for different APIs in your 2N Intercom, this plugin only supports a consistent setting for all APIs. So just set all security parameter in the web-interface to the same setting (under Services –> HTTP-API).

If you set the authentication methode to Digest (maybe the securest setting) you might wondering about some ‚401‘ logs of the underlying python requests class. This is a feature and can be ignored (they have to call the function twice, the first call is always an 401 unauthorized error).

Copy the 2n_intercom.yaml from the example directory of this plugin (usually under plugins/intercom_2n/example (or paste the example below) to the items directory. You can delete unwanted events or commands, but always the complete subtree. Don’t change the structure of an event or command, the internal processing depends on it.

Plugin usage

Events

The integrated event handling is working out of the box. You don’t have to care about event subscription and renewing of this subscription. If an 2N Intercom event occurs, the child items of an event will be set with the incoming value.

Example:

Intercom_2n:

    Events:

        DeviceState:
            # Signals the device state changes.
            event_2n: DeviceState

            device_state:
                # Signalled device state:
                # startup – generated one-time after device start (always the first event ever)
                type: str
                event_data_2n: state

If the 2N device state was changed (for example an reboot), the item Intercom_2n.Events.DeviceState.device_state will be set to ‚startup‘. An event can have more than one sub-item, all of them will be set to the appropriate event value.

Implemented events:

Event type

Description

Note

AudioLoopTest

Signals performance and result of an automatic audio loop test.

with a valid Enhanced Audio licence key only

CallStateChanged

Signals a setup/end/change of the active call state.

CardEntered

Signals tapping of an RFID card on the card reader.

for RFID card reader equipped models only

CodeEntered

Signals entering of a user code via the numeric keypad.

for numeric keypad equipped models only

DeviceState

Signals a system event generated at device state changes.

DoorOpenTooLong

Signals excessively long door opening, or door closing failure within the timeout.

for digital input equipped models only

InputChanged

Signals a change of the logic input state.

KeyPressed

Signals pressing of a speed dial/numeric keypad button.

KeyReleased

Signals releasing of a speed dial/numeric keypad button.

LoginBlocked

Signals temporary blocking of login to the web interface.

MotionDetected

Signals motion detection via a camera.

for camera-equipped models only

NoiseDetected

Signals an increased noise level detection.

for microphone/microphone input equipped models only

OutputChanged

Signals a change of the logic output state.

RegistrationStateChanged

Signals a change of the SIP server registration state.

SwitchStateChanged

Signals a switch 1–4 state change.

TamperSwitchActivated

Signals tamper switch activation.

for tamper switch equipped models only

UnauthorizedDoorOpen

Signals unauthorised door opening.

for digital input equipped models only

UserAuthenticated

Signals user authentication and subsequent door opening.

Commands

All commands consists of one or more sub-items. There is always an execute item. If you set this item to True, the command defined in the parent item (attribute command_2n) will be executed. The result value will be stored as the value of the parent item.

Example:

Intercom_2n:

    Commands:

        switch_caps:
            type: str
            command_2n: switch_caps
            enforce_updates: 'true'

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

If you set the item Intercom_2n.Commands.system_info.execute = 1, the item value of Intercom_2n.Commands.system_info should be something like this:

    {
        'success" : true,
         "result" : {
         "variant" : "2N Helios IP Vario",
         "serialNumber" : "08-1240-1138",
         "hwVersion" : "535v1",
         "swVersion" : "2.10.0.19.2",
         "buildType" : "beta",
         "deviceName" : "2N Helios IP Vario"
         }
    }

Most of the command have multiple options to set. All options are sub-items of a command. Some of them are mandatory, others are optional. All commands and command options are documented in the example below (and in the example item file) and should be self-explanatory.

Example item config

Intercom_2n:

    Events:

        DeviceState:
            # Signals the device state changes.
            event_2n: DeviceState

            device_state:
                # Signalled device state:
                # startup – generated one-time after device start (always the first event ever)
                type: str
                event_data_2n: state

        AudioLoopTest:
            # Signals performance and result of an automatic audio loop test. The AudioLoopTest event is only available in
            # selected models with a valid Enhanced Audio licence. The event is signalled whenever the automatic test has
            # been performed (either scheduled or manually started).
            event_2n: AudioLoopTest

            audio_test_result:
                # Result of an accomplished text:
                # passed – the test was carried out successfully, no problem has been detected.
                # failed – the test was carried out, a loudspeaker/microphone problem has been detected.
                type: str
                event_data_2n: result
                enforce_updates: 'true'

        MotionDetected:
            # Signals motion detection via a camera. The event is available in camera-equipped models only. The event is
            # generated only if the function is enabled in the intercom camera configuration.
            event_2n: MotionDetected

            state:
                # Motion detector state:
                # in – signals the beginning of the interval in which motion was detected.
                # out – signals the end of the interval in which motion was detected.
                type: str
                event_data_2n: state
                enforce_updates: 'true'

        NoiseDetected:
            # Signals an increased noise level detected via an integrated or external microphone. The event is generated only
            # if this function is enabled in the intercom configuration.
            event_2n: NoiseDetected

            state:
                # Noise detector state:
                # in – signals the beginning of the interval in which noise was detected.
                # out – signals the end of the interval in which noise was detected.
                type: str
                event_data_2n: state
                enforce_updates: 'true'

        KeyPressed:
            # Signals pressing (KeyPressed) of speed dial or numeric keypad buttons.
            event_2n: KeyPressed

            key_code:
                # Pressed button code:
                # 0 to 9 – numeric keypad buttons
                # %1–%150 – speed dialling buttons
                # * – button with a * or phone symbol
                # – button with a # or key symbol
                type: str
                event_data_2n: key
                enforce_updates: 'True'

        KeyReleased:
            # Signals releasing (KeyReleased) of speed dial or numeric keypad buttons.
            event_2n: KeyReleased

            key_code:
                # Released button code:
                # 0 to 9 – numeric keypad buttons
                # %1–%150 – speed dialling buttons
                # * – button with a * or phone symbol
                # – button with a # or key symbol
                type: str
                event_data_2n: key
                enforce_updates: 'True'

        CodeEntered:
            # Signals entering of a user code via the numeric keypad. The event is generated in numeric keypad equipped
            # devices only.
            event_2n: CodeEntered

            code:
                # User code, 1234, e.g.. The code includes 2 digits at least and 00 cannot be used.
                type: str
                event_data_2n: code
                enforce_updates: 'True'

            valid:
                # Code validity (i.e. if the code is defined as a valid user code or universal switch code in the intercom
                # configuration):
                # false – invalid code
                # true – valid code
                type: bool
                event_data_2n: valid
                enforce_updates: 'True'

        CardEntered:
            # Signals tapping an RFID card on the card reader. The event is generated in RFID card reader equipped devices
            # only.
            event_2n: CardEntered

            direction:
                # RFID direction:
                # in – arrival
                # out – departure
                # any – passage
                # Note: Set the card reader direction using the intercom configuration interface.
                type: str
                event_data_2n: direction
                enforce_updates: 'true'

            reader:
                # RFID card reader/Wiegand module name, or one of the following non-modular intercom model values:
                # internal – internal card reader (2N® Helios models)
                # external – external card reader connected via the Wiegand interface
                # Note: Set the card reader name using the intercom configuration interface.
                type: str
                event_data_2n: reader
                enforce_updates: 'true'

            uid:
                # Unique identifier of the applied card (hexadecimal format, 6 - 16 characters depending on the card type)
                type: str
                event_data_2n: uid
                enforce_updates: 'true'

            valid:
                # Validity of the applied RFID card (if the card uid is assigned to one of the intercom users listed in the phonebook)
                # false – invalid card
                # true – valid card
                type: bool
                event_data_2n: valid
                enforce_updates: 'true'

        InputChanged:
            # Signals a state change of the logic input. Use the /api/io/caps function to get the list of available inputs.
            event_2n: InputChanged

            port:
                # I/O port name
                type: str
                event_data_2n: port
                enforce_updates: 'true'

            state:
                # Current I/O port logic state:
                # false – inactive, log. 0
                # true – active, log. 1
                type: bool
                event_data_2n: port
                enforce_updates: 'true'

        OutputChanged:
            # Signals a state change of the logic output. Use the /api/io/caps function to get the list of available
            # outputs.
            event_2n: OutputChanged

            port:
                # I/O port name
                type: str
                event_data_2n: port
                enforce_updates: 'true'

            state:
                # Current I/O port logic state:
                # false – inactive, log. 0
                # true – active, log. 1
                type: bool
                event_data_2n: port
                enforce_updates: 'true'

        SwitchState:
            # Signals a switch state change (refer to the intercom configuration in Hardware | Switches).
            event_2n: SwitchStateChanged

            switch:
                # Switch number 1..4
                type: num
                event_data_2n: switch
                enforce_updates: 'true'

            state:
                # Current logic state of the switch:
                # false – inactive, log.0
                # true – active, log.1
                type: bool
                event_data_2n: state
                enforce_updates: 'true'

        CallState:
            # Signals a setup/end/change of the active call state.
            event_2n: CallStateChanged

            state:
                # Current call state:
                # connecting – call setup in progress (outgoing calls only)
                # ringing – ringing
                # connected – call connected
                # terminated – call terminated
                type: str
                event_data_2n: state
                enforce_updates: 'true'

            direction:
                # Call direction:
                # incoming – incoming call
                # outgoing – outgoing call
                type: str
                event_data_2n: direction
                enforce_updates: 'true'

            reason:
                # Call end reason. The parameter is available only if the call end state is signalled.
                # normal – normal call end
                # busy – called station busy
                # rejected – call rejected
                # noanswer – no answer from called user
                # noresponse – no response from called station (to SIP messages)
                # completed_elsewhere – call answered by another station (group calls) failure – call setup failure
                type: str
                event_data_2n: reason
                enforce_updates: 'true'

            peer:
                # SIP URI of the calling (incoming calls) or called (outgoing calls) subscriber
                type: str
                event_data_2n: peer
                enforce_updates: 'true'

            session:
                # Unique call identifier. Can also be used in the /api/call/answer, /api/call, /hangup and /api/call/status
                # functions.
                type: num
                event_data_2n: session
                enforce_updates: 'true'

            call:
                # TBD ??? (yes, this is the value described in the official documentation, don't know what this is)
                type: num
                event_data_2n: call
                enforce_updates: 'true'

        RegistrationStateChanged:
            # Signals a change of the SIP account registration state.
            event_2n: RegistrationStateChanged

            sipAccount:
                # SIP account number showing a state change:
                # 1 – SIP account 1
                # 2 – SIP account 2
                type: num
                event_data_2n: sipAccount
                enforce_updates: 'true'

            state:
                # New SIP account registration state:
                # registered – account successfully registered
                # unregistered – account unregistered
                # registering – registration in progress
                # unregistering – unregistration in progress
                type: str
                event_data_2n: state
                enforce_updates: 'true'

        TamperSwitchActivated:
            # Signals tamper switch activation - device cover opening. Make sure that the tamper switch function is
            # configured in the Digital Inputs | Tamper Switch menu.
            event_2n: TamperSwitchActivated

            state:
                # Tamper switch state:
                # in – signals tamper switch activation (i.e. device cover open).
                # out – signals tamper switch deactivation (device cover closed).
                type: str
                event_data_2n: state
                enforce_updates: 'true'

        UnauthorizedDoorOpen:
            # Signals unauthorised door opening. Make sure that a door-open switch is connected to one of the digital
            # inputs and the function is configured in the Digital Inputs | Door State menu.
            event_2n: UnauthorizedDoorOpen

            state:
                # Unauthorised door opening state:
                # in – signals the beginning of the unauthorised opening state.
                # out – signals the end of the unauthorised door opening state.
                type: str
                event_data_2n: state
                enforce_updates: 'true'

        DoorOpenTooLong:
            # Signals an excessively long door opening or failure to close the door within a timeout. Make sure that a
            # door-open switch is connected to one of the digital inputs and the function is configured in the
            # Digital Inputs | Door State menu.
            event_2n: DoorOpenTooLong

            state:
                # DoorOpenToo Long state:
                # in – signals the beginning of the DoorOpenTooLong state.
                # out – signals the end of the DoorOpenTooLong state.
                type: str
                event_data_2n: state
                enforce_updates: 'true'

        LoginBlocked:
            # Signals a temporary blocking of the web interface access due to repeated entering of an invalid login name
            # or password.
            event_2n: LoginBlocked

            address:
                # IP address from which invalid data were entered repeatedly.
                type: str
                event_data_2n: address
                enforce_updates: 'true'

    Commands:

        system_info:
            # The /api/system/info function provides basic information on the device: type, serial
            # number, firmware version, etc. The function is available in all device types regardless
            # of the set access rights.
            type: str
            command_2n: system_info
            enforce_updates: 'true'

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example:
        # {
        # \"success\" : true,
        # \"result\" : {
        # \"variant\" : \"2N Helios IP Vario\",
        # \"serialNumber\" : \"08-1860-0035\",
        # \"hwVersion\" : \"535v1\",
        # \"swVersion\" : \"2.10.0.19.2\",
        # \"buildType\" : \"beta\",
        # \"deviceName\" : \"2N Helios IP Vario\"
        # }
        # }
        system_status:
            # The /api/system/status function returns the current intercom status.
            # The function is part of the System service and the user must be assigned the System
            # Control privilege for authentication if required. The function is available with the
            # Enhanced Integration licence key only.
            type: str
            command_2n: system_status
            enforce_updates: 'true'

            execute:
                type: bool
                enforce_updates: 'true'
                command_2n: execute

        # item value example:
        # {
        # \"success\" : true,
        # \"result\" : {
        # \"systemTime\" : 1418225091,
        # \"upTime\" : 190524
        # }
        # }
        system_restart:
            # The /api/system/restart restarts the intercom.
            # The function is part of the System service and the user must be assigned the System
            # Control privilege for authentication if required. The function is available with the
            # Enhanced Integration licence key only.
            type: str
            command_2n: system_restart
            enforce_updates: 'true'

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true
        # }
        firmware_upload:
            # The /api/firmware function helps you upload a new firmware version to the device.
            # When the upload is complete, use /api/firmware/apply to confirm restart and FW change.
            # The function is part of the System service and the user must be assigned the System
            # Control privilege for authentication if required . The function is available with the
            # Enhanced Integration licence key only.
            type: str
            command_2n: firmware_upload
            enforce_updates: 'true'

            firmware_file:
                # file path to firmware file
                type: str

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example:
        # {
        # \"success\" : true,
        # \"result\" : {
        # \"version\" : \"2.10.0.19.2\",
        # \"downgrade\" : false
        # }
        # }
        firmware_apply:
            # The /api/firmware/apply function is used for earlier firmware upload ( PUT
            # /api/firmware ) confirmation and subsequent device restart.
            # The function is part of the System service and the user must be assigned the System
            # Control privilege for authentication if required. The function is available with the
            # Enhanced Integration licence key only.
            type: str
            commmand_2n: firmware_apply
            enforce_updates: 'true'

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true
        # }
        config_get:
            # The /api/config function helps you to download the device configuration.
            # The function is part of the System service and the user must be assigned the System
            # Control privilege for authentication if required . The function is available with the
            # Enhanced Integration licence key only.
            type: str
            enforce_updates: 'true'
            command_2n: config_get

            config_file:
                # save path  of config file
                type: str

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # value item example
        # {
        # \"success\" : true
        # }
        config_upload:
            # The /api/config function helps you to upload the device configuration.
            # The function is part of the System service and the user must be assigned the System
            # Control privilege for authentication if required . The function is available with the
            # Enhanced Integration licence key only.
            type: str
            enforce_updates: 'true'
            command_2n: config_upload

            config_file:
                # path to file which should be uploaded
                type: str

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        factory_reset:
            # The /api/config/factoryreset function resets the factory default values for all the
            # intercom parameters. This function is equivalent to the function of the same name in
            # the System / Maintenance / Default setting section of the configuration web interface .
            # The function is part of the System service and the user must be assigned the System
            # Control privilege for authentication if required. The function is available with the
            # Enhanced Integration licence key only.
            type: str
            command_2n: factory_reset
            enforce_updates: 'true'

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true
        # }
        switch_caps:
            # The /api/switch/caps function returns the current switch settings and control
            # options. Define the switch in the optional switch parameter. If the switch parameter
            # is not included, settings of all the switches are returned.
            # The function is part of the Switch service and the user must be assigned the Switch
            # Monitoring privilege for authentication if required . The function is available with the Enhanced
            # Integration licence key only.
            type: str
            command_2n: switch_caps
            enforce_updates: 'true'

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true,
        # \"result\" : {
        # \"switches\" : [
        # {
        # \"switch\" : 1,
        # \"enabled\" : true,
        # \"mode\" : \"monostable\",
        # \"switchOnDuration\" : 5,
        # \"type\" : \"normal\"
        # },
        # {
        # \"switch\" : 2,
        # \"enabled\" : true,
        # \"mode\" : \"monostable\",
        # \"switchOnDuration\" : 5,
        # \"type\" : \"normal\"
        # },
        # {
        # \"switch\" : 3,
        # \"enabled\" : false
        # },
        # {
        # \"switch\" : 4,
        # \"enabled\" : false
        # }]
        # }
        # }
        switch_status:
            # The /api/switch/status function returns the current switch statuses.
            # The function is part of the Switch service and the user must be assigned the Switch
            # Monitoring privilege for authentication if required. The function is available with the
            # Enhanced Integration licence key only.
            type: str
            command_2n: switch_status
            enforce_updates: 'true'

            switch:
                # (optional) number of switch
                # 0 for all switches
                type: num

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true,
        # \"result\" : {
        # \"switches\" : [
        # {
        # \"switch\" : 1,
        # \"active\" : false
        # },
        # {
        # \"switch\" : 2,
        # \"active\" : false
        # },
        # {
        # \"switch\" : 3,
        # \"active\" : false
        # },
        # {
        # \"switch\" : 4,
        # \"active\" : false
        # }]
        # }
        # }
        switch_control:
            # The /api/switch/ctrl function controls the switch statuses. The function has two
            # mandatory parameters: switch , which determines the switch to be controlled, and
            # action , defining the action to be executed over the switch (activation, deactivation, state change).
            # The function is part of the Switch service and the user must be assigned the Switch
            # Control privilege for authentication if required . The function is available with the
            # Enhanced Integration licence key only.
            type: str
            command_2n: switch_control
            enforce_updates: 'true'

            switch:
                # Mandatory switch identifier (typically, 1 to 4). Use also /api/switch/caps
                # to know the exact count of switches
                type: num

            action:
                # Mandatory action defining parameter ( on – activate switch, off – deactivate switch,
                # trigger – change switch state).
                type: str

            response:
                # Optional parameter modifying the intercom response to include the text
                # defined here instead of the JSON message.
                type: str

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example (differs if response parameter was used)
        # {
        # \"success\" : true
        # }
        io_caps:
            # The /api/io/caps function returns a list of available hardware inputs and outputs
            # (ports) of the device. Define the input/output in the optional port parameter. If the
            # port parameter is not included, settings of all the inputs and outputs are returned .
            # The function is part of the I/O service and the user must be assigned the I/O
            # Monitoring privilege for authentication if required . The function is available with the
            # Enhanced Integration licence key only.
            type: str
            command_2n: io_caps
            enforce_updates: 'true'

            port:
                # optional input/output identifier; if empty all ports will be listed
                type: str

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true,
        # \"result\" : {
        # \"ports\" : [
        # {
        # \"port\" : \"relay1\",
        # \"type\" : \"output\"
        # },
        # {
        # \"port\" : \"relay2\",
        # \"type\" : \"output\"
        # }]
        # }
        # }
        io_status:
            # The /api/io/status function returns the current statuses of logic inputs and outputs
            # (ports) of the device. Define the input/output in the optional port parameter. If the
            # port parameter is not included, statuses of all the inputs and outputs are returned.
            # The function is part of the I/O service and the user must be assigned the I/O
            # Monitoring privilege for authentication if required . The function is available with the
            type: str
            command_2n: io_status
            enforce_updates: 'true'

            port:
                # Optional input/output identifier. Use also /api/io/caps to get
                # identifiers of the available inputs and outputs.
                type: str

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true,
        # \"result\" : {
        # \"ports\" : [
        # {
        # \"port\" : \"relay1\",
        # \"state\" : 0
        # },
        # {
        # \"port\" : \"relay2\",
        # \"state\" : 0
        # }]
        # }
        # }
        io_control:
            # The /api/io/ctrl function controls the statuses of the device logic outputs. The
            # function has two mandatory parameters: port, which determines the output to be
            # controlled, and action, defining the action to be executed over the output (activation,
            # deactivation).
            # The function is part of the I/O service and the user must be assigned the I/O
            # Control privilege for authentication if required . The function is available with the
            # Enhanced Integration licence key only.
            type: str
            command_2n: io_control
            enforce_updates: 'true'

            port:
                # Mandatory I/O identifier. Use also /api/io/caps to get the identifiers of
                # the available inputs and outputs.
                type: str

            action:
                # Mandatory action defining parameter (on – activate output, log. 1, off –
                # deactivate output, log. 0)
                type: str

            response:
                # Optional parameter modifying the intercom response to include the text
                # defined here instead of the JSON message.
                type: str

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example (differs if response parameter was used)
        # {
        # \"success\" : true
        # }
        phone_status:
            # The /api/phone/status functions helps you get the current statuses of the device
            # SIP accounts.
            # The function is part of the Phone/Call service and the user must be assigned the
            # Phone/Call Monitoring privilege for authentication if required . The function is
            # available with the Enhanced Integration licence key only.
            type: str
            command_2n: phone_status
            enforce_updates: 'true'

            account:
                # Optional SIP account identifier (1 or 2). If the parameter is not included,
                # the function returns statuses of all the SIP accounts.
                type: num

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true,
        # \"result\" : {
        # \"accounts\" : [
        # {
        # \"account\" : 1,
        # \"sipNumber\" : \"5046\",
        # \"registered\" : true,
        # \"registerTime\" : 1418034578
        # },
        # {
        # \"account\" : 2,
        # \"sipNumber\" : \"\",
        # \"registered\" : false
        # }]
        # }
        # }
        call_status:
            # The /api/call/status function helps you get the current states of active telephone
            # calls. The function returns a list of active calls including parameters.
            # The function is part of the Phone/Call service and the user must be assigned the
            # Phone/Call Monitoring privilege for authentication if required . The function is
            # available with the Enhanced Integration licence key only.
            type: str
            command_2n: call_status
            enforce_updates: 'true'

            session:
                # Optional call identifier. If the parameter is not included, the function
                # returns statuses of all the active calls.
                type: num

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true,
        # \"result\" : {
        # \"sessions\" : [
        # {
        # \"session\" : 1,
        # \"direction\" : \"outgoing\",
        # \"state\" : \"ringing\"
        # }]
        # }
        call_dial:
            # The /api/call/dial function initiates a new outgoing call to a selected phone number
            # or sip uri. After some test with a Fritzbox, it seems you have to call '**your_number/1'
            # to call internal phones. '/2' seems to be necessary if you want to call number over sip account 2.
            # The function is part of the Phone/Call service and the user must be assigned the
            # Phone/Call Control privilege for authentication if required . The function is available
            # with the Enhanced Integration licence key only.
            type: str
            command_2n: call_dial
            enforce_updates: 'true'

            number:
                # Mandatory parameter specifying the destination phone number or sip uri
                type: str

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true,
        # \"result\" : {
        # \"session\" : 2
        # }
        # }
        call_answer:
            # The /api/call/answer function helps you answer an active incoming call (in the
            # ringing state).
            # The function is part of the Phone/Call service and the user must be assigned the
            # Phone/Call Control privilege for authentication if required . The function is available
            # with the Enhanced Integration licence key only.
            type: str
            command_2n: call_answer
            enforce_updates: 'true'

            session:
                # Active incoming call identifier
                type: num

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true
        # }
        call_hangup:
            # The /api/call/hangup helps you hang up an active incoming or outgoing call.
            # The function is part of the Phone/Call service and the user must be assigned the
            # Phone/Call Control privilege for authentication if required . The function is available
            # with the Enhanced Integration licence key only.
            type: str
            command_2n: call_hangup
            enforce_updates: 'true'

            session:
                # Active call identifier
                type: num

            reason:
                # End call reason:
                # normal - normal call end (default value) reason
                # rejected - call rejection signalling
                # busy - station busy signalling
                type: str

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true
        # }
        camera_caps:
            # The /api/camera/caps function returns a list of available video sources and
            # resolution options for JPEG snapshots to be downloaded via the
            # /api/camera/snapshot function.
            # The function is part of the Camera service and the user must be assigned the Camera
            # Monitoring privilege for authentication if required.
            type: str
            command_2n: camera_caps
            enforce_updates: 'true'

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true,
        # \"result\" : {
        # \"jpegResolution\" : [
        # {
        # \"width\" : 160,
        # \"height\" : 120
        # },
        # {
        # \"width\" : 176,
        # \"height\" : 144
        # },
        # {
        # \"width\" : 320,
        # \"height\" : 240
        # },
        # {
        # \"width\" : 352,
        # \"height\" : 272
        # },
        # {
        # \"width\" : 352,
        # \"height\" : 288
        # },
        # {
        # \"width\" : 640,
        # \"height\" : 480
        # }],
        # \"sources\" : [
        # {
        # \"source\" : \"internal\"
        # },
        # {
        # \"source\" : \"external\"
        # }]
        # }
        # }
        camera_snapshot:
            # The /api/camera/snapshot function helps you download images from an internal or
            # external IP camera connected to the intercom. Specify the video source, resolution and
            # other parameters.
            # The function is part of the Camera service and the user must be assigned the Camera
            # Monitoring privilege for authentication if required.
            type: str
            command_2n: camera_snapshot
            enforce_updates: 'true'

            width:
                # Mandatory parameter specifying the horizontal resolution of the JPEG image in pixels
                type: num

            height:
                # Mandatory parameter specifying the vertical resolution of the JPEG image in pixels.
                type: num

            snapshot_file:
                # File path where the snapshot is stored to.
                type: str

            source:
                # Optional parameter defining the video source ( internal – internal camera,
                # external – external IP camera). If the parameter is not included, the default video source included in
                # the Hardware / Camera / Common settings section of the configuration web interface is selected.
                type: str

            time:

            # Optional parameter defining the snapshot time in the intercom memory where time <= 0 … count of
            # seconds to the past, time > 0 … count of seconds from 1.1.1970 (Unix Time). The time values must be
            # within the intercom memory range: <-30, 0> seconds.
            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true
        # }
        display_caps:
            # The /api/display/caps function returns a list of device displays including their
            # properties. Use the function for display detection and resolution.
            # The function is part of the Display service and the user must be assigned the Display
            # Control privilege for authentication if required . The function is available with the
            # Enhanced Integration licence key only.
            type: str
            command_2n: display_caps
            enforce_updates: 'true'

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true,
        # \"result\" : {
        # \"displays\" : [
        # {
        # \"display\" : \"internal\",
        # \"resolution\" : {
        # \"width\" : 320,
        # \"height\" : 240
        # }
        # }]
        # }
        # }
        display_upload_image:
            # The /api/display/image function helps you upload content to be displayed.
            # Note: The function is available only if the standard display function is disabled in the Hardware / Display
            # section of the configuration web interface.
            # The function is part of the Display service and the user must be assigned the Display
            # Control privilege for authentication if required . The function is available with the
            # Enhanced Integration licence key only.
            type: str
            command_2n: display_upload_image
            enforce_updates: 'true'

            gif_file:
                # Mandatory parameter file path to a GIF image with display resolution
                type: str

            display:
                # Mandatory display identifier ( internal )
                type: str

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true
        # }
        display_delete_image:
            # The /api/display/image function helps you delete content from the display.
            # Note: The function is available only if the standard display function is disabled in the Hardware / Display
            # section of the configuration web interface.
            # The function is part of the Display service and the user must be assigned the Display
            # Control privilege for authentication if required . The function is available with the
            # Enhanced Integration licence key only.
            type: str
            command_2n: display_delete_image
            enforce_updates: 'true'

            display:
                # Mandatory display identifier ( internal )
                type: str

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true
        # }
        log_caps:
            # The /api/log/caps function returns a list of supported event types that are recorded
            # in the device. This list is a subset of the full event type list below:
            # The function is part of the Logging service and requires no special user privileges.
            type: str
            command_2n: log_caps
            enforce_updates: 'true'

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true,
        # \"result\" : {
        # \"events\" : [
        # \"KeyPressed\",
        # \"KeyReleased\",
        # \"InputChanged\",
        # \"OutputChanged\",
        # \"CardEntered\",
        # \"CallStateChanged\",
        # \"AudioLoopTest\",
        # \"CodeEntered\",
        # \"DeviceState\",
        # \"RegistrationStateChanged\",
        # ...
        # ]
        # }
        # }
        audio_test:
            # The /api/audio/test function launches an automatic test of the intecom built-in
            # microphone and speaker. The test result is logged as an AudioLoopTest event.
            # The function is part of the Audio service and the user must be assigned the
            # Audio Control privilege for authetication if required. The function is only available with
            # the Enhanced Integration and Enhanced Audio licence key.
            type: str
            command_2n: audio_test
            enforce_updates: 'true'

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true
        # }
        email_send:
            # The /api/email/send function sends an e-mail to the required address. Make sure
            # that the SMTP service is configured correctly for the device (i.e. correct SMTP server
            # address, login data etc.).
            # The function is part of the Email service and the user must be assigned the Email
            # Control privilege for authentication if required. The function is available with the
            # Enhanced Integration licence key only.
            type: str
            command_2n: email_send
            enforce_updates: 'true'

            to:
                # Mandatory parameter specifying the delivery address.
                type: str

            subject:
                # Mandatory parameter specifying the subject of the message.
                type: str

            body:
                # Optional parameter specifying the contents of the message (including html marks if necessary).
                # If not completed, the message will be delivered without any contents.
                type: str

            picture_count:
                # Optional parameter specifying the count of camera images to be enclosed.
                # If not completed, no images are enclosed. Parameter values: 0-5.
                type: num

            width:
                # Image width in pixel. Optional if picture_count = 0.
                type: num

            height:
                # Image height in pixel. Optional if picture_count = 0.
                type: num

            timespan:
                # Optional parameter specifying the timespan in seconds of the snapshots enclosed to the email.
                # Default value: 0.
                type: num

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true
        # }
        pcap:
            # The /api/pcap function helps download the network interface traffic records (pcap
            # file). You can also use the /api/pcap/restart a /api/pcap/stop functions for
            # network traffic control.
            # The function is part of the System service and the user must be assigned the System
            # Control privilege for authentication if required. The function is available with the
            # Enhanced Integration licence key only
            type: str
            command_2n: pcap
            enforce_updates: 'true'

            pcap_file:
                # Mandatory parameter file path where the pcap is saved to
                type: str

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true
        # }
        pcap_restart:
            # The /api/pcap/restart function deletes all records and restarts the network interface
            # traffic recording.
            # The function is part of the System service and the user must be assigned the System
            # Control privilege for authentication if required. The function is available with the
            # Enhanced Integration licence key only
            type: str
            command_2n: pcap_restart
            enforce_updates: 'true'

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'

        # item value example
        # {
        # \"success\" : true
        # }
        pcap_stop:
            # The /api/pcap/stop function stops the network interface traffic recording.
            # The function is part of the System service and the user must be assigned the System
            # Control privilege for authentication if required. The function is available with the
            # Enhanced Integration licence key only
            type: str
            command_2n: pcap_stop
            enforce_updates: 'true'

            execute:
                type: bool
                command_2n: execute
                enforce_updates: 'true'
                # item value example
                # {
                # \"success\" : true
                # }