Skip to content
Snippets Groups Projects
Commit fefc0a92 authored by jvandenbroek's avatar jvandenbroek
Browse files

Publish details configurable, coding fixes

parent 2384ad4c
No related branches found
No related tags found
No related merge requests found
...@@ -25,27 +25,11 @@ msgid "Broker IP" ...@@ -25,27 +25,11 @@ msgid "Broker IP"
msgstr "" msgstr ""
msgctxt "#30012" msgctxt "#30012"
msgid "Broker Port" msgid "Broker port"
msgstr "" msgstr ""
msgctxt "#30013" msgctxt "#30013"
msgid "Topic Prefix" msgid "Topic prefix"
msgstr ""
msgctxt "#30014"
msgid "Reconnect Retries"
msgstr ""
msgctxt "#30015"
msgid "Publish progress"
msgstr ""
msgctxt "#30016"
msgid "Interval (in seconds)"
msgstr ""
msgctxt "#30017"
msgid "Ignore details for these words (comma separated)"
msgstr "" msgstr ""
msgctxt "#30100" msgctxt "#30100"
...@@ -63,3 +47,27 @@ msgstr "" ...@@ -63,3 +47,27 @@ msgstr ""
msgctxt "#30103" msgctxt "#30103"
msgid "Password" msgid "Password"
msgstr "" msgstr ""
msgctxt "#30200"
msgid "Advanced"
msgstr ""
msgctxt "#30201"
msgid "Reconnect retries"
msgstr ""
msgctxt "#30202"
msgid "Publish progress"
msgstr ""
msgctxt "#30203"
msgid "Progress interval (in seconds)"
msgstr ""
msgctxt "#30204"
msgid "Publish details"
msgstr ""
msgctxt "#30205"
msgid "Ignore words (comma separated)"
msgstr ""
...@@ -4,14 +4,17 @@ ...@@ -4,14 +4,17 @@
<setting label="30011" type="text" id="mqtthost" default="127.0.0.1"/> <setting label="30011" type="text" id="mqtthost" default="127.0.0.1"/>
<setting label="30012" type="number" id="mqttport" default="1883"/> <setting label="30012" type="number" id="mqttport" default="1883"/>
<setting label="30013" type="text" id="mqtttopic" default="kodi/"/> <setting label="30013" type="text" id="mqtttopic" default="kodi/"/>
<setting label="30014" type="number" id="mqttretry" default="5"/>
<setting label="30015" type="bool" id="mqttprogress" default="true"/>
<setting label="30016" type="text" id="mqttprogressinterval" default="20" visible="eq(-1,true)"/>
<setting label="30017" type="text" id="mqttignore" default=""/>
</category> </category>
<category label="30100"> <category label="30100">
<setting label="30101" type="bool" id="mqttanonymousconnection" default="true" /> <setting label="30101" type="bool" id="mqttanonymousconnection" default="true" />
<setting label="30102" type="text" id="mqttusername" default="" visible="eq(-1,false)" /> <setting label="30102" type="text" id="mqttusername" default="" visible="eq(-1,false)" />
<setting label="30103" type="text" id="mqttpassword" option="hidden" default="" visible="eq(-2,false)" /> <setting label="30103" type="text" id="mqttpassword" option="hidden" default="" visible="eq(-2,false)" />
</category> </category>
<category label="30200">
<setting label="30201" type="number" id="mqttretry" default="5"/>
<setting label="30202" type="bool" id="mqttprogress" default="true"/>
<setting label="30203" type="text" id="mqttinterval" default="20" visible="eq(-1,true)"/>
<setting label="30204" type="bool" id="mqttdetails" default="true"/>
<setting label="30205" type="text" id="mqttignore" default="" visible="eq(-1,true)"/>
</category>
</settings> </settings>
...@@ -11,8 +11,14 @@ from lib import client as mqtt ...@@ -11,8 +11,14 @@ from lib import client as mqtt
__addon__ = xbmcaddon.Addon() __addon__ = xbmcaddon.Addon()
__version__ = __addon__.getAddonInfo('version') __version__ = __addon__.getAddonInfo('version')
mqttignore = __addon__.getSetting('mqttignore').split(',') def getSetting(setting):
mqttinterval = int(__addon__.getSetting('mqttinterval')) return __addon__.getSetting(setting).replace(' ','')
mqttretry = int(getSetting("mqttretry"))
mqttprogress = getSetting('mqttprogress').lower() == "true"
mqttinterval = int(getSetting('mqttinterval'))
mqttdetails = getSetting('mqttdetails').lower() == "true"
mqttignore = getSetting('mqttignore').split(',')
activeplayerid=-1 activeplayerid=-1
activeplayertype="" activeplayertype=""
lasttitle="" lasttitle=""
...@@ -45,15 +51,18 @@ def publish(suffix,val,more): ...@@ -45,15 +51,18 @@ def publish(suffix,val,more):
# #
def setplaystate(state,detail): def setplaystate(state,detail):
global activeplayerid,activeplayertype global activeplayerid,activeplayertype
if state==1 and all(xbmc.Player().getPlayingFile().find (v) <= -1 for v in mqttignore): if state==1:
res=sendrpc("Player.GetActivePlayers",{}) res=sendrpc("Player.GetActivePlayers",{})
activeplayerid=res["result"][0]["playerid"] activeplayerid=res["result"][0]["playerid"]
activeplayertype=res["result"][0]["type"] activeplayertype=res["result"][0]["type"]
if mqttdetails and (all(xbmc.Player().getPlayingFile().find (v) <= -1 for v in mqttignore)):
res=sendrpc("Player.GetProperties",{"playerid":activeplayerid,"properties":["speed","currentsubtitle","currentaudiostream","repeat","subtitleenabled"]}) res=sendrpc("Player.GetProperties",{"playerid":activeplayerid,"properties":["speed","currentsubtitle","currentaudiostream","repeat","subtitleenabled"]})
publish("playbackstate",state,{"kodi_state":detail,"kodi_playbackdetails":res["result"],"kodi_playerid":activeplayerid,"kodi_playertype":activeplayertype,"kodi_timestamp":int(time.time())}) publish("playbackstate",state,{"kodi_state":detail,"kodi_playbackdetails":res["result"],"kodi_playerid":activeplayerid,"kodi_playertype":activeplayertype,"kodi_timestamp":int(time.time())})
publishdetails() publishdetails()
else: else:
publish("playbackstate",state,{"kodi_state":detail,"kodi_playerid":activeplayerid,"kodi_playertype":activeplayertype,"kodi_timestamp":int(time.time())}) publish("playbackstate",state,{"kodi_state":detail,"kodi_playerid":activeplayerid,"kodi_playertype":activeplayertype,"kodi_timestamp":int(time.time())})
else:
publish("playbackstate",state,{"kodi_state":detail,"kodi_playerid":activeplayerid,"kodi_playertype":activeplayertype,"kodi_timestamp":int(time.time())})
def convtime(ts): def convtime(ts):
return("%02d:%02d:%02d" % (ts/3600,(ts/60)%60,ts%60)) return("%02d:%02d:%02d" % (ts/3600,(ts/60)%60,ts%60))
...@@ -212,14 +221,14 @@ def startmqtt(): ...@@ -212,14 +221,14 @@ def startmqtt():
mqc.on_message=msghandler mqc.on_message=msghandler
mqc.on_connect=connecthandler mqc.on_connect=connecthandler
mqc.on_disconnect=disconnecthandler mqc.on_disconnect=disconnecthandler
if __addon__.getSetting("mqttanonymousconnection")=='false': if getSetting("mqttanonymousconnection")=='false':
mqc.username_pw_set(__addon__.getSetting("mqttusername"), __addon__.getSetting("mqttpassword")) mqc.username_pw_set(getSetting("mqttusername"), __addon__.getSetting("mqttpassword"))
topic=__addon__.getSetting("mqtttopic") topic=getSetting("mqtttopic")
if not topic.endswith("/"): if not topic.endswith("/"):
topic+="/" topic+="/"
mqc.will_set(topic+"connected",0,qos=2,retain=True) mqc.will_set(topic+"connected",0,qos=2,retain=True)
xbmc.log("MQTT: Connecting to MQTT broker at %s:%s" % (__addon__.getSetting("mqtthost"),__addon__.getSetting("mqttport"))) xbmc.log("MQTT: Connecting to MQTT broker at %s:%s" % (getSetting("mqtthost"),getSetting("mqttport")))
mqc.connect(__addon__.getSetting("mqtthost"),__addon__.getSetting("mqttport"),60) mqc.connect(getSetting("mqtthost"),getSetting("mqttport"),60)
mqc.publish(topic+"connected",2,qos=1,retain=True) mqc.publish(topic+"connected",2,qos=1,retain=True)
mqc.loop_start() mqc.loop_start()
...@@ -231,7 +240,7 @@ if (__name__ == "__main__"): ...@@ -231,7 +240,7 @@ if (__name__ == "__main__"):
xbmc.log('MQTT: MQTT Adapter Version %s started' % __version__) xbmc.log('MQTT: MQTT Adapter Version %s started' % __version__)
monitor=MQTTMonitor() monitor=MQTTMonitor()
player=MQTTPlayer() player=MQTTPlayer()
for attempt in range(int(__addon__.getSetting("mqttretry"))): for attempt in range(mqttretry):
try: try:
startmqtt() startmqtt()
except socket.error: except socket.error:
...@@ -243,6 +252,6 @@ if (__name__ == "__main__"): ...@@ -243,6 +252,6 @@ if (__name__ == "__main__"):
xbmc.log("MQTT: No connection possible, giving up.") xbmc.log("MQTT: No connection possible, giving up.")
mqc.loop_stop(True) mqc.loop_stop(True)
while not monitor.waitForAbort(mqttinterval): while not monitor.waitForAbort(mqttinterval):
if __addon__.getSetting('mqttprogress').lower() == "true": if mqttprogress:
publishdetails() publishdetails()
mqc.loop_stop(True) mqc.loop_stop(True)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment