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

Publish details configurable, coding fixes

parent 2384ad4c
Branches
Tags
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