
* 🔥 Removes octopress.js * 🔥 Removes use of root_url var * 🔥 Removes Octopress generator reference from feed * 🔥 Removes delicious support * 🔥 Removes support for Pinboard * 🔥 Removes support for Disqus * 🔥 Removes support for Google Plus * ↩️ Migrate custom after_footer to default template * ↩️ Migrate custom footer to default template * ↩️ Migrate custom header to default template * 🔥 Removes unused template files * 🚀 Places time to read directly in post template * 🚀 Removes unneeded capture from archive_post.html template * 🔥 🚀 Removes unused, but heaving sorting call in component page * 🚀 Merged javascripts into a single file * 🔥 Removes more uses of root_url * 🚀 Removal of unneeded captures from head * 🔥 🚀 Removal of expensive liquid HTML compressor * 🔥 Removes unneeded templates * 🚀 Replaces kramdown with GitHub's CommonMark 🚀 * 💄 Adds Prism code syntax highlighting * ✨ Adds support for redirect in Netlify * ↩️ 🔥 Let Netlify handle all developer doc redirects * ✏️ Fixes typo in redirects file: Netify -> Netlify * 🔥 Removes unused .themes folder * 🔥 Removes unused aside.html template * 🔥 Removes Disqus config leftover * 🔥 Removes rouge highlighter config * 🔥 Removes Octopress 🎉 * 💄 Adjust code block font size and adds soft wraps * 💄 Adds styling for inline code blocks * 💄 Improve styling of note/warning/info boxes + div support * 🔨 Rewrites all note/warning/info boxes
12 KiB
title | description | logo | ha_category | ha_release | ha_iot_class | redirect_from | ||||
---|---|---|---|---|---|---|---|---|---|---|
Kodi | Instructions on how to integrate Kodi into Home Assistant. | kodi.png |
|
pre 0.7 | Local Push |
|
The kodi
platform allows you to control a Kodi multimedia system from Home Assistant.
The preferred way to set up the Kodi platform is by enabling the discovery component which requires enabled web interface on your Kodi installation.
There is currently support for the following device types within Home Assistant:
Configuration
In case the discovery does not work, or you need specific configuration variables, you can add the following to your configuration.yaml
file:
# Example configuration.yaml entry
media_player:
- platform: kodi
host: IP_ADDRESS
{% configuration %}
host:
description: The host name or address of the device that is running XBMC/Kodi.
required: true
type: string
port:
description: The HTTP port number.
required: false
type: integer
default: 8080
tcp_port:
description: The TCP port number. Used for WebSocket connections to Kodi.
required: false
type: integer
default: 9090
name:
description: The name of the device used in the frontend.
required: false
type: string
proxy_ssl:
description: Connect to Kodi with HTTPS and WSS. Useful if Kodi is behind an SSL proxy.
required: false
type: boolean
default: false
username:
description: The XBMC/Kodi HTTP username.
required: false
type: string
password:
description: The XBMC/Kodi HTTP password.
required: false
type: string
turn_on_action:
description: Home Assistant script sequence to call when turning on.
required: false
type: list
turn_off_action:
description: Home Assistant script sequence to call when turning off.
required: false
type: list
enable_websocket:
description: Enable websocket connections to Kodi via the TCP port. The WebSocket connection allows Kodi to push updates to Home Assistant and removes the need for Home Assistant to poll. If websockets don't work on your installation this can be set to false
.
required: false
type: boolean
default: true
timeout:
description: Set timeout for connections to Kodi. Defaults to 5 seconds.
required: false
type: integer
default: 5
{% endconfiguration %}
Services
Service kodi_add_to_playlist
Add music to the default playlist (i.e. playlistid=0).
Service data attribute | Optional | Description |
---|---|---|
entity_id |
no | Name(s) of the Kodi entities where to add the media. |
media_type |
yes | Media type identifier. It must be one of SONG or ALBUM. |
media_id |
no | Unique Id of the media entry to add (songid or albumid ). If not defined, media_name and artist_name are needed to search the Kodi music library. |
media_name |
no | Optional media name for filtering media. Can be 'ALL' when media_type is 'ALBUM' and artist_name is specified, to add all songs from one artist. |
artist_name |
no | Optional artist name for filtering media. |
Service media_player/kodi_set_shuffle
Service data attribute | Optional | Description |
---|---|---|
entity_id |
yes | Target a specific media player. It must be of type kodi. |
shuffle_on |
no | True/false for shuffle on/off. |
Service kodi_call_method
Call a Kodi JSONRPC API method with optional parameters. Results of the Kodi API call will be redirected in a Home Assistant event: kodi_call_method_result
.
Service data attribute | Optional | Description |
---|---|---|
entity_id |
no | Name(s) of the Kodi entities where to run the API method. |
method |
yes | Name of the Kodi JSONRPC API method to be called. |
any other parameter | no | Optional parameters for the Kodi API call. |
Event triggering
When calling the kodi_call_method
service, if the Kodi JSONRPC API returns data, when received by Home Assistant it will fire a kodi_call_method_result
event on the event bus with the following event_data
:
entity_id: "<Kodi media_player entity_id>"
result_ok: <boolean>
input: <input parameters of the service call>
result: <data received from the Kodi API>
Kodi turn on/off samples
With the turn_on_action
and turn_off_action
parameters you can run any combination of Home Assistant actions to turn on/off your Kodi instance. Here are a few examples of this usage, including the migration instructions for the old turn_off_action
list of options.
Turn on Kodi with Wake on LAN
With this configuration, when calling media_player/turn_on
on the Kodi device, a magic packet will be sent to the specified MAC address. To use this service, first you need to config the wake_on_lan
integration in Home Assistant, which is achieved simply by adding wake_on_lan:
to your configuration.yaml
.
media_player:
- platform: kodi
host: 192.168.0.123
turn_on_action:
- service: wake_on_lan.send_magic_packet
data:
mac: aa:bb:cc:dd:ee:ff
broadcast_address: 192.168.255.255
Turn off Kodi with API calls
Here are the equivalent ways to configure each of the old options to turn off Kodi (quit
, hibernate
, suspend
, reboot
, or shutdown
):
- Quit method (before was
turn_off_action: quit
)
media_player:
- platform: kodi
host: 192.168.0.123
turn_off_action:
service: media_player.kodi_call_method
data:
entity_id: media_player.kodi
method: Application.Quit
- Hibernate method (before was
turn_off_action: hibernate
)
media_player:
- platform: kodi
host: 192.168.0.123
turn_off_action:
service: media_player.kodi_call_method
data:
entity_id: media_player.kodi
method: System.Hibernate
- Suspend method (before was
turn_off_action: suspend
)
media_player:
- platform: kodi
host: 192.168.0.123
turn_off_action:
service: media_player.kodi_call_method
data:
entity_id: media_player.kodi
method: System.Suspend
- Reboot method (before was
turn_off_action: reboot
)
media_player:
- platform: kodi
host: 192.168.0.123
turn_off_action:
service: media_player.kodi_call_method
data:
entity_id: media_player.kodi
method: System.Reboot
- Shutdown method (before was
turn_off_action: shutdown
)
media_player:
- platform: kodi
host: 192.168.0.123
turn_off_action:
service: media_player.kodi_call_method
data:
entity_id: media_player.kodi
method: System.Shutdown
Turn on and off the TV with the Kodi JSON-CEC Add-on
For Kodi devices running 24/7 attached to a CEC capable TV (OSMC / OpenElec and systems alike running in Rasperry Pi's, for example), this configuration enables the optimal way to turn on/off the attached TV from Home Assistant while Kodi is always active and ready:
media_player:
- platform: kodi
host: 192.168.0.123
turn_on_action:
service: media_player.kodi_call_method
data:
entity_id: media_player.kodi
method: Addons.ExecuteAddon
addonid: script.json-cec
params:
command: activate
turn_off_action:
- service: media_player.media_stop
data:
entity_id: media_player.kodi
- service: media_player.kodi_call_method
data:
entity_id: media_player.kodi
method: Addons.ExecuteAddon
addonid: script.json-cec
params:
command: standby
This example and the following requires to have the script.json-cec plugin installed on your kodi player. It'll also expose the endpoints standby, toggle and activate without authentication on your kodi player. Use this with caution.
Kodi services samples
Simple script to turn on the PVR in some channel as a time function
{% raw %}
script:
play_kodi_pvr:
alias: Turn on the silly box
sequence:
- alias: TV on
service: media_player.turn_on
data:
entity_id: media_player.kodi
- alias: Play TV channel
service: media_player.play_media
data_template:
entity_id: media_player.kodi
media_content_type: "CHANNEL"
media_content_id: >
{% if (now().hour < 14) or ((now().hour == 14) and (now().minute < 50)) %}
10
{% elif (now().hour < 16) %}
15
{% elif (now().hour < 20) %}
2
{% elif (now().hour == 20) and (now().minute < 50) %}
10
{% elif (now().hour == 20) or ((now().hour == 21) and (now().minute < 15)) %}
15
{% else %}
10
{% endif %}
{% endraw %}
Trigger a Kodi video library update
script:
update_library:
alias: Update Kodi Library
sequence:
- alias: Call Kodi update
service: media_player.kodi_call_method
data:
entity_id: media_player.kodi
method: VideoLibrary.Scan
For a more complex usage of the kodi_call_method
service, with event triggering of Kodi API results, you can have a look at this example
Notifications
The kodi
notifications platform allows you to send messages to your Kodi multimedia system from Home Assistant.
To add Kodi to your installation, add the following to your configuration.yaml
file:
# Example configuration.yaml entry
notify:
- platform: kodi
name: NOTIFIER_NAME
host: IP_ADDRESS
{% configuration %}
name:
description: Name displayed in the frontend. The notifier will bind to the service notify.NOTIFIER_NAME
.
required: false
type: string
host:
description: The host name or address of the device that is running Kodi.
required: true
type: string
port:
description: The HTTP port number.
required: false
default: 8080
type: integer
proxy_ssl:
description: Connect to kodi with HTTPS. Useful if Kodi is behind an SSL proxy.
required: false
default: "false
"
type: boolean
username:
description: The XBMC/Kodi HTTP username.
required: false
type: string
password:
description: The XBMC/Kodi HTTP password.
required: false
type: string
{% endconfiguration %}
Script example
kodi_notification:
sequence:
- service: notify.NOTIFIER_NAME
data:
title: "Home Assistant"
message: "Message to KODI from Home Assistant!"
data:
displaytime: 20000
icon: "warning"
Message variables
{% configuration %}
title:
description: Title that is displayed on the message.
required: false
type: string
message:
description: Message to be displayed.
required: true
type: string
data:
required: false
type: map
keys:
icon:
description: "Kodi comes with 3 default icons: info
, warning
and error
, an URL to an image is also valid."
required: false
default: "info
"
type: string
displaytime:
description: Length in milliseconds the message stays on screen.
required: false
default: "10000
ms"
type: integer
{% endconfiguration %}
To use notifications, please see the getting started with automation page.