Automation API

Communication

Normal communication with the device is done using MQTT through a broker. But controlling programs may need to figure out which infrared protocols the device supports. For this type of information the program can communicate directly with the device via HTTP.

MQTT

The MQTT message payload is a JSON object. Details of different methods for publishing an MQTT message to control an espirp can be found here.

Events

topic/address
The device address that can be used to send HTTP requests. The device transmits this message when it connects to the MQTT broker. It has the retain flag set, so the broker will store the message and send it to any client that subscribes to the topic.
Parameters: url
Retained: yes
topic/receive
Report a received infrared signal. Depending on the selected receive mode (see below), different parameters are reported when an infrared signal is received.
basic
Report recognized IR signals. Only one report per key press is generated.
Parameters: family, device, function, (toggle, ...)
Retained: no
full
Similar to basic mode, except that every repetition of the signal is reported seperately. An additional boolean parameter "start" is set to true on the first transmission, and false on subsequent repetitions.
Parameters: family, device, function, start, (toggle, ...)
Retained: no
capture
An array of on- and off times of the received signal is reported.
Parameters: times
Retained: no
topic/define
An infrared family definition has been added or updated. A controlling program can use this as a trigger to update the list of families that it presents to a user. If details of the protocol are needed, those can be obtained via an HTTP call.
Parameters: family
Retained: no
topic/delete
An infrared family definition has been deleted. A controlling program can use this as a trigger to update the list of families that it presents to a user.
Parameters: family
Retained: no

Actions

actions/hostname/transmit
Instruct the device to transmit one or more infrared signals. Different methods are chosen depending on the provided parameters.
  • If a family parameter is provided, the IRP definition for that family is used as the specification of the IR signal. If any parameters defining integer values for IRP variables are provided, the variables are initialized to the specified values. IRP variables names are a sequence of one or more uppercase letters and digits, starting with a letter. The F parameter must always be present. It specifies which function code(s) should be transmitted. The F parameter value may be specified as an integer, or an array of integers. An optional repeat parameter may be included to specify how many times the repeat part of the signal will be transmitted. Without this parameter, the minimum number of repeat counts is used (0 for *, 1 for +).
    Parameters: family, D, F, (repeat, interval, S, ...)
    Example: {"family":"RC5","D":0,"F":17,"repeat":3}
  • If a pronto parameter is specified, the signal defined by that pronto code is transmitted. The pronto parameter value may be specified as a string, an array of strings, or an array of integers. An optional repeat parameter may be included to specify how many times the repeat part of the signal will be transmitted. Without this parameter, the repeat part is transmitted once.
    Parameters: pronto, (repeat, interval)
    Example: {"pronto":["5000","0000","0000","0001","0000","0011"],"repeat":3}
When an interval parameter is specified, the device will make sure the specified amount of time (in ms) elapses after the infrared signal before the next infrared signal will be transmitted. This value defaults to 200ms. It is allowed for a message to only contain the interval parameter. In that case it defines a minimum amount of time since the last transmitted infrared signal. Note that repeating messages with just an interval parameter will not add up the values. The highest value determines the length of time between the infrared signals, as that will also have satisfied the interval for the lower values.
actions/hostname/receive
Select the receive mode. Supported modes are:
disabled
The IR receiver is switched off.
basic
Report recognized received IR signals.
full
Report every repetition of recognized received IR signals.
capture
Report timing details for every received IR signal.
Parameters: mode
Example: {"mode":"basic"}
actions/hostname/decode
Configure which IR families to consider for reporting received IR signals. The payload should be an array of up to eight objects, specifying at least a family, and optionally one or more variables of the IRP definition. Any variable that is provided will limit the reported signals to those that match the specified value.
Example: [{"family":"NEC1","D":4},{"family":"RC5"}]
actions/hostname/define
Define the IRP string for an infrared protocol family. This is used to correct the definition for an existing infrared protocol family, or to add a new infrared protocol family.
Parameters: family, irp
Example: {"family":"RC5","irp":"{36k,msb,889}<1,-1|-1,1>(1,~F:1:6,T:1,D:5,F:6,^114m)+"}
actions/hostname/upgrade
When the action parameter is specified with a value of "upgrade", the device checks for a firmware update and, if found, installs it.
Parameters: action
Example: {"action":"upgrade"}

HTML

http://address/irplist.txt
A list of all currently defined IR families and their IRP string. Each line in the returned document contains a family name, a tab, and the IRP string. The families are returned in an undetermined order.
http://address/family.irp
The IRP string for family. This call is normally used after a device reports via MQTT that a definition has been updated. See the topic/define MQTT event.