Open TV Channel in XBMC/Kodi

Hi,

I have added the Kodi binding but I am not sure how I can use it … :frowning:

I see the kodi, I can send commands as mute and volume. Now I am trying to play TV. The thing is that the TV channels are coming from videos and not from the pvr (Videos -> Video add-ons -> add on …).

How can I select item from Videos? SHould I use the playuri and give it the path to the video?

Thx

Hi,

I’m afraid that is not possible right now.

It depends. If you don’t use PVR the binding cannot play a file from your Kodi database directly. It’s “stupid” and doesn’t know anything about it. You can use the playuri channel for your purpose but you have to know the exact path to the file or add-on you want to play.

E.g. playing a YouTube video is possible - requires YouTube add-on installed.

myKodi_playuri.sendCommand("plugin://plugin.video.youtube/?action=play_video&videoid=YOUTUBE_VIDEO_ID")

If it helps I can implement a new feature to play a favorite.

@cweitkamp

Thx for your reply!

I found out that the in the end that actually the add-on plays a stream and not a file. I was able to find out the stream path (http://…m3u8) so using that URL I was able to send playUri command to Kodi via OpenHab and it worked.

My issue is that it is very difficult (at least I don’t know easy way to do it) to extract the streaming url. I have 4 channels and until now I was able only to find 2. So maybe favorites can help here. If I can add the channel to favorite, give it s simple short name and just use this name for playing, it will be great.

Thx

Sounds good. You’re welcome.

I will put the implementation of the feature to handle favorites with the Kodi binding onto my To-do list.

In the meantime you can try the following steps to find out the stream URLs. I don’t know how you control your Kodi, but there is a very good APP called Yatse: Kodi Remote. You can add your TV channels to your favorites and sync them with the APP. Inside the APP the full path to every favorite link is shown underneath its name. Most of the time these paths can be opened with the playuri channel.

@cweitkamp

Thx, will try today and update

I submitted a first try.

Hi Team,

Any ides how can I start the Plex addon from openhab kodi or http binding?

It’s openning fine from yatse remote, but not showing the URI for it.
Even tried to sniff with Wireshark but no proper result…

Would be very grateful for help!

The Kodi binding may be able to do this, but I call the Kodi API directly to launch addons, Here is a rule where I am calling the Kodi API to launch a custom addon that I use for multiline notifications. Buried in there you may find a hint for how to launch the Plex addon. This rule also is used for smaller Kodi notifications, which the binding can do but I like to add the icon.

import java.lang.StringBuilder
import java.util.List

rule "Alert: Kodi Notification"
when
    Item Kodi_Notification received command
then
    if ((Outlet6.state == ON && DS_FamilyRoom_Kodi_SystemState.state == ON) || (Outlet2.state == ON && US_MasterBedroom_Kodi_SystemState.state == ON)) {
        //logDebug("Rules", "Alert: Kodi notification: starting")
        if (receivedCommand.toString.contains("Time: ")) {
            val List<String> statusAlertListOriginal = receivedCommand.toString.replace(".","").replace(",","%2C").split("\n")
            var List<String> statusAlertList = newArrayList
            for (var index = 0 ; index < statusAlertListOriginal.size ; index++) {
                val String item = statusAlertListOriginal.get(index)
                if (item != "") {
                    statusAlertList.add(item)
                }
                else {
                    statusAlertList.add("%20")
                }
            }
            //logDebug("Rules", "Alert: Kodi notification statusAlertList.size=[{}]",statusAlertList.size)
            while (statusAlertList.size < 23) {
                //logDebug("Rules", "Alert: Kodi notification: finding blanks")
                statusAlertList.add("%20")
            }
            //logDebug("Rules", "Alert: Kodi notification statusAlertList.size=[{}]",statusAlertList.size)
            val StringBuilder kodiAlertString = new StringBuilder
            kodiAlertString.append("{\\\"jsonrpc\\\":\\\"2.0\\\",\\\"id\\\":1,\\\"method\\\":\\\"Addons.ExecuteAddon\\\",\\\"params\\\":{\\\"addonid\\\":\\\"script.module.extendednotifications\\\",\\\"params\\\":{\\\"title\\\":\\\"openHAB\\\",")
            for (var index = 0 ; index < statusAlertList.size ; index++) {
                kodiAlertString.append("\\\"line")
                kodiAlertString.append(index + 1)
                kodiAlertString.append("\\\":\\\"")
                kodiAlertString.append(statusAlertList.get(index))
                kodiAlertString.append("\\\"")
                if (index != statusAlertList.size - 1) {
                    kodiAlertString.append(",")
                }
            }
            kodiAlertString.append("}}}")
            if (Outlet6.state == ON && DS_FamilyRoom_Kodi_SystemState.state == ON) {
                executeCommandLine("/bin/sh@@-c@@/usr/bin/curl -s -X POST -H \"Content-Type: application/json\" -d \"" + kodiAlertString.toString + "\" \"http://<familyroomkodiip>:8080/jsonrpc?request=\"",5000)
            }
            if (Outlet2.state == ON && US_MasterBedroom_Kodi_SystemState.state == ON) {
                executeCommandLine("/bin/sh@@-c@@/usr/bin/curl -s -X POST -H \"Content-Type: application/json\" -d \"" + kodiAlertString.toString + "\" \"http://<bedroomkodiip>:8080/jsonrpc?request=\"",5000)
            }
        }
        else {
            if (Outlet6.state == ON && DS_FamilyRoom_Kodi_SystemState.state == ON) {
                executeCommandLine("/bin/sh@@-c@@/usr/bin/curl -s -X POST -H \"Content-Type: application/json\" -d \"{\\\"id\\\":1,\\\"jsonrpc\\\":\\\"2.0\\\",\\\"method\\\":\\\"GUI.ShowNotification\\\",\\\"params\\\":{\\\"image\\\":\\\"http://<ohserverip>:8080/static/favicon.ico\\\",\\\"title\\\":\\\"openHAB\\\",\\\"message\\\":\\\"" + receivedCommand.toString + "\\\"}}\" \"http://<familyroomkodiip>:8080/jsonrpc?request=\"",5000)
            }
            if (Outlet2.state == ON && US_MasterBedroom_Kodi_SystemState.state == ON) {
                executeCommandLine("/bin/sh@@-c@@/usr/bin/curl -s -X POST -H \"Content-Type: application/json\" -d \"{\\\"id\\\":1,\\\"jsonrpc\\\":\\\"2.0\\\",\\\"method\\\":\\\"GUI.ShowNotification\\\",\\\"params\\\":{\\\"image\\\":\\\"http://<ohserverip>:8080/static/favicon.ico\\\",\\\"title\\\":\\\"openHAB\\\",\\\"message\\\":\\\"" + receivedCommand.toString + "\\\"}}\" \"http://<bedroomkodiip>:8080/jsonrpc?request=\"",5000)
            }
        }
    }
end
1 Like

Got it working with a help of wireshark.

Here is a rule, in case someone needs it

rule "Start Plex addon on Kodi"
	when Item VT_kodi_start_plex received command ON
    then
		val String MY_URL = 'http://server-ip-address/jsonrpc?'
		var String myData = '{"jsonrpc":"2.0","method":"Files.GetDirectory","id":"1524370391046","params":{"directory":"plugin://script.plex/","media":"video","properties":["title","file","mimetype","thumbnail","dateadded"],"sort":{"method":"none","order":"ascending"}}}'

		sendHttpPostRequest(MY_URL, "application/json", myData)
end
1 Like

After updating to OH 2.4 can’t use open channel -

    2019-01-22 23:37:17.815 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method 'ThingHandler.handleCommand()' on 'org.openhab.binding.kodi.internal.handler.KodiHandler@2d6bc211': null
java.lang.NullPointerException: null
	at org.openhab.binding.kodi.internal.protocol.KodiConnection.getPVRChannels(KodiConnection.java:921) ~[?:?]
	at org.openhab.binding.kodi.internal.protocol.KodiConnection.getPVRChannelId(KodiConnection.java:933) ~[?:?]
	at org.openhab.binding.kodi.internal.handler.KodiHandler.playPVRChannel(KodiHandler.java:319) ~[?:?]
	at org.openhab.binding.kodi.internal.handler.KodiHandler.handleCommand(KodiHandler.java:202) ~[?:?]
	at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
	at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [102:org.eclipse.smarthome.core:0.10.0.oh240]
	at org.eclipse.smarthome.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [102:org.eclipse.smarthome.core:0.10.0.oh240]
	at com.sun.proxy.$Proxy132.handleCommand(Unknown Source) [263:org.openhab.binding.kodi:2.4.0]
	at org.eclipse.smarthome.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:75) [109:org.eclipse.smarthome.core.thing:0.10.0.oh240]
	at org.eclipse.smarthome.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:49) [109:org.eclipse.smarthome.core.thing:0.10.0.oh240]
	at sun.reflect.GeneratedMethodAccessor84.invoke(Unknown Source) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
	at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [102:org.eclipse.smarthome.core:0.10.0.oh240]
	at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:53) [102:org.eclipse.smarthome.core:0.10.0.oh240]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]

Could you please clarify: What is the “open channel” for you? pvr-open-tv? Or something else.

May I ask you to provide some DEBUG logs?

Correct, pvr-open-tv. I’ll try to upload logs later today. Problem started after update from 2.3 to 2.4. I did recreate Kodi items and reinstalled addon. Everything else from Kodi addon works fine. Thank you.

Okay. One question in advance. Which PVR add-on do you use in your Kodi setup?

IPTV simple. And it works fine with api/JSON requests.
I did write my own script to control PVR-channels long time ago, before “pvr-open-tv” channel was implemented in this addon, but stopped using it when addon was updated. So I tested script yesterday and it still works fine. I guess problem is on OH side. I’ll get logs for you. Thank you

Here is debug:

2019-01-23 11:06:19.610 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:19.611 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:19.612 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanStarted
2019-01-23 11:06:19.929 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:19.930 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:19.930 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanFinished




2019-01-23 11:06:24.792 [DEBUG] [i.internal.protocol.KodiClientSocket] - send message: {"jsonrpc":"2.0","id":3873,"method":"Application.GetProperties","params":{"properties":["version"]}}
2019-01-23 11:06:24.793 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"id":3873,"jsonrpc":"2.0","result":{"version":{"major":17,"minor":6,"revision":"20171114-a9a7a20","tag":"stable"}}}
2019-01-23 11:06:24.794 [DEBUG] [i.internal.protocol.KodiClientSocket] - callMethod returns {"id":3873,"jsonrpc":"2.0","result":{"version":{"major":17,"minor":6,"revision":"20171114-a9a7a20","tag":"stable"}}}

2019-01-23 11:06:25.575 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:25.576 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:25.576 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanStarted
2019-01-23 11:06:25.587 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:25.588 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:25.588 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanFinished
2019-01-23 11:06:31.950 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:31.951 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:31.951 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanStarted
2019-01-23 11:06:31.966 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:31.967 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:31.967 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanFinished
2019-01-23 11:06:34.795 [DEBUG] [i.internal.protocol.KodiClientSocket] - send message: {"jsonrpc":"2.0","id":3874,"method":"Application.GetProperties","params":{"properties":["version"]}}
2019-01-23 11:06:34.796 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"id":3874,"jsonrpc":"2.0","result":{"version":{"major":17,"minor":6,"revision":"20171114-a9a7a20","tag":"stable"}}}
2019-01-23 11:06:34.797 [DEBUG] [i.internal.protocol.KodiClientSocket] - callMethod returns {"id":3874,"jsonrpc":"2.0","result":{"version":{"major":17,"minor":6,"revision":"20171114-a9a7a20","tag":"stable"}}}
2019-01-23 11:06:37.770 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:37.773 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:37.773 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanStarted
2019-01-23 11:06:37.789 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:37.790 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:37.790 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanFinished
2019-01-23 11:06:40.389 [ERROR] [nal.common.AbstractInvocationHandler] - An error occurred while calling method 'ThingHandler.handleCommand()' on 'org.openhab.binding.kodi.internal.handler.KodiHandler@68523fe0': null
java.lang.NullPointerException: null
	at org.openhab.binding.kodi.internal.protocol.KodiConnection.getPVRChannels(KodiConnection.java:921) ~[?:?]
	at org.openhab.binding.kodi.internal.protocol.KodiConnection.getPVRChannelId(KodiConnection.java:933) ~[?:?]
	at org.openhab.binding.kodi.internal.handler.KodiHandler.playPVRChannel(KodiHandler.java:319) ~[?:?]
	at org.openhab.binding.kodi.internal.handler.KodiHandler.handleCommand(KodiHandler.java:202) ~[?:?]
	at sun.reflect.GeneratedMethodAccessor91.invoke(Unknown Source) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
	at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [102:org.eclipse.smarthome.core:0.10.0.oh240]
	at org.eclipse.smarthome.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59) [102:org.eclipse.smarthome.core:0.10.0.oh240]
	at com.sun.proxy.$Proxy130.handleCommand(Unknown Source) [263:org.openhab.binding.kodi:2.4.0]
	at org.eclipse.smarthome.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:75) [109:org.eclipse.smarthome.core.thing:0.10.0.oh240]
	at org.eclipse.smarthome.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:49) [109:org.eclipse.smarthome.core.thing:0.10.0.oh240]
	at sun.reflect.GeneratedMethodAccessor85.invoke(Unknown Source) ~[?:?]
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
	at java.lang.reflect.Method.invoke(Method.java:498) ~[?:?]
	at org.eclipse.smarthome.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:153) [102:org.eclipse.smarthome.core:0.10.0.oh240]
	at org.eclipse.smarthome.core.internal.common.Invocation.call(Invocation.java:53) [102:org.eclipse.smarthome.core:0.10.0.oh240]
	at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:?]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:?]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:?]
	at java.lang.Thread.run(Thread.java:748) [?:?]
2019-01-23 11:06:43.943 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:43.944 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:43.944 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanStarted
2019-01-23 11:06:43.956 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:43.956 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:43.957 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanFinished
2019-01-23 11:06:44.797 [DEBUG] [i.internal.protocol.KodiClientSocket] - send message: {"jsonrpc":"2.0","id":3875,"method":"Application.GetProperties","params":{"properties":["version"]}}
2019-01-23 11:06:44.799 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"id":3875,"jsonrpc":"2.0","result":{"version":{"major":17,"minor":6,"revision":"20171114-a9a7a20","tag":"stable"}}}
2019-01-23 11:06:44.799 [DEBUG] [i.internal.protocol.KodiClientSocket] - callMethod returns {"id":3875,"jsonrpc":"2.0","result":{"version":{"major":17,"minor":6,"revision":"20171114-a9a7a20","tag":"stable"}}}
2019-01-23 11:06:49.733 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:49.734 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:49.734 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanStarted
2019-01-23 11:06:49.750 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:49.750 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:49.751 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanFinished
2019-01-23 11:06:54.800 [DEBUG] [i.internal.protocol.KodiClientSocket] - send message: {"jsonrpc":"2.0","id":3876,"method":"Application.GetProperties","params":{"properties":["version"]}}
2019-01-23 11:06:54.804 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"id":3876,"jsonrpc":"2.0","result":{"version":{"major":17,"minor":6,"revision":"20171114-a9a7a20","tag":"stable"}}}
2019-01-23 11:06:54.805 [DEBUG] [i.internal.protocol.KodiClientSocket] - callMethod returns {"id":3876,"jsonrpc":"2.0","result":{"version":{"major":17,"minor":6,"revision":"20171114-a9a7a20","tag":"stable"}}}
2019-01-23 11:06:55.742 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:55.743 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:55.743 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanStarted
2019-01-23 11:06:55.753 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:55.754 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:06:55.755 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanFinished
2019-01-23 11:07:03.579 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:07:03.580 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanStarted","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:07:03.581 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanStarted
2019-01-23 11:07:03.592 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:07:03.593 [DEBUG] [i.internal.protocol.KodiClientSocket] - Event received from server: {"jsonrpc":"2.0","method":"VideoLibrary.OnScanFinished","params":{"data":null,"sender":"xbmc"}}
2019-01-23 11:07:03.593 [DEBUG] [odi.internal.protocol.KodiConnection] - Received unknown method: VideoLibrary.OnScanFinished
2019-01-23 11:07:04.806 [DEBUG] [i.internal.protocol.KodiClientSocket] - send message: {"jsonrpc":"2.0","id":3877,"method":"Application.GetProperties","params":{"properties":["version"]}}
2019-01-23 11:07:04.807 [DEBUG] [i.internal.protocol.KodiClientSocket] - Message received from server: {"id":3877,"jsonrpc":"2.0","result":{"version":{"major":17,"minor":6,"revision":"20171114-a9a7a20","tag":"stable"}}}
2019-01-23 11:07:04.808 [DEBUG] [i.internal.protocol.KodiClientSocket] - callMethod returns {"id":3877,"jsonrpc":"2.0","result":{"version":{"major":17,"minor":6,"revision":"20171114-a9a7a20","tag":"stable"}}}

Okay, thanks. That helps and I have a guess. But to prove it, I need a log of a “send message” of “method:PVR.GetChannels”. This request only occurs every five minutes. Can you watch out for that and post a log file from a few seconds before and a few seconds afterwards?

Sorry, for the delay. I found problem. One of the kodi boxes has modified version of IPTV Simple PVR addon. It works with my script, but doesnt work with OH, when unmodified version of this PVR addon works fine. I just noticed this after updating OH.
So I dont think, that you need to waste time trying to fix this. It is not a big deal and it is not 100% OH issue.

Thank you!

Alright. You are welcome.