Fork me on GitHub

pimatic-kodi by Fjux | github | npm

Pimatic-Kodi plugin

Kodi Setup

To be able to use this plugin, the JSON-RPC remote control service via TCP (port 9090 by default) must be enabled. This can be enabled by navigating to Settings / Services / Control and turning on the option "Allow remote control from applications on other systems". Note, if pimatic is run on the kodi host and the option "Allow remote control from applications on this system" is used instead, this may cause an error if the pimatic KodiPlayer device is setup using the IPv4 loop-back address or "localhost". This is, as kodi only listens on the IPv6 loop-back address in this mode. On Raspbian you can try to use hostname "ip6-localhost or use "Allow remote control from applications on other systems" instead.

Device Config Example

{
  "id": "kodi-player",
  "name": "Kodi",
  "class": "KodiPlayer",
  "host": "192.168.1.2",
  "port": 9090
}

Device Rules Examples

Play music

WHEN smartphone is present THEN play Kodi

Pause music

WHEN smartphone is absent THEN pause Kodi

Next song

WHEN buttonNext is pressed THEN play next song on Kodi

Previous song

WHEN buttonPrev is pressed THEN play previous song on Kodi

Save yourself!

WHEN currentArtist of Kodi = "Justin Bieber" THEN play next song on Kodi

Predicates examples

WHEN Kodi is playing THEN switch speakers on and dim lights to 30
WHEN Kodi is not playing THEN switch speakers off and dim lights to 100

To make sure lights only dim if you are watching a movies/series:

WHEN Kodi is playing and kodi.type != "song" THEN dim lights to 30

Custom Commands

You can add custom Player.Open commands to the plugin. Player.Open can execute almost anything. From opening Youtube movies, Soundcloud streams to simple opening a file.

Example configuration for a custom command:

{
  "plugin": "kodi",
  "customOpenCommands": [
    {
      "name": "nyan",
      "command": "plugin://plugin.video.youtube/?action=play_video&videoid=QH2-TGUlwu4"
    }
  ]
}

Execute the custom command

WHEN <condition> THEN execute Open Command nyan on Kodi

This is just one of the examples you can do with the Player.Open command to Kodi, This can also execute scripts in Kodi.

You only need to find out what the script/plugin path is, and what parameter to give.

Show Toasts

You can show toast messages on a Kodi player. Example rules:

WHEN doorbell reports present
THEN show Toast "Doorbell" on kodiplayer and pause kodiplayer

WHEN doorbell reports present
THEN show Toast "Some Notification" with icon "error" on kodiplayer

WHEN doorbell reports present
THEN show Toast "You have been informated" with icon "http://url.to/some_icon.png" on kodiplayer

WHEN doorbell reports present
THEN show Toast "Short notice" with icon "info" for 1 second on kodiplayer

WHEN doorbell reports present
THEN show Toast "Long notice" for 10 seconds on kodiplayer

Notes

Big thanks to the code of Pimatic. I used the pimatic-mpd plugin as a base for this project.

TO DO

  • Add volume controls
  • Create new device (template)
  • Better support for multimedia (now focused on music player)

Plugin Config Options

Kodi plugin config options
OptionDescriptionDefault
debug
boolean
Log information for debugging, including received messages
false
customOpenCommands
array of objects
Custom Player.Open commands
[]
Elements

Device Config Options

pimatic-Kodi device config schemas

KodiPlayer

KodiPlayer config options
OptionDescriptionDefault
port
integer
The port for Kodi RPC (Default: 9090)
9090
host
string
The address of the Kodi host
"localhost"
pimatic-kodi is written by Fjux