Skip to content
Snippets Groups Projects
Commit f3eaf088 authored by Oliver Wagner's avatar Oliver Wagner
Browse files

Merge pull request #14 from jvandenbroek/master

Settings reloaded on change, fixed progress floating point decimal
parents f0ccdf3b f866f7ec
No related branches found
No related tags found
No related merge requests found
......@@ -77,21 +77,17 @@ msgid "Advanced"
msgstr ""
msgctxt "#30201"
msgid "Reconnect retries"
msgstr ""
msgctxt "#30202"
msgid "Publish progress"
msgstr ""
msgctxt "#30203"
msgctxt "#30202"
msgid "Progress interval (in seconds)"
msgstr ""
msgctxt "#30204"
msgctxt "#30203"
msgid "Publish details"
msgstr ""
msgctxt "#30205"
msgctxt "#30204"
msgid "Ignore words (comma separated)"
msgstr ""
......@@ -17,10 +17,9 @@
<setting label="30108" type="file" id="mqtttlsclientkey" value="" default="" visible="eq(-4,true) + eq(-2,true)" subsetting="true" />
</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)"/>
<setting label="30201" type="bool" id="mqttprogress" default="true"/>
<setting label="30202" type="text" id="mqttinterval" default="20" visible="eq(-1,true)"/>
<setting label="30203" type="bool" id="mqttdetails" default="true"/>
<setting label="30204" type="text" id="mqttignore" default="" visible="eq(-1,true)"/>
</category>
</settings>
......@@ -14,11 +14,15 @@ __version__ = __addon__.getAddonInfo('version')
def getSetting(setting):
return __addon__.getSetting(setting).strip()
mqttretry = int(getSetting("mqttretry"))
def load_settings():
global mqttprogress,mqttinterval,mqttdetails,mqttignore
mqttprogress = getSetting('mqttprogress').lower() == "true"
mqttinterval = int(getSetting('mqttinterval'))
mqttdetails = getSetting('mqttdetails').lower() == "true"
mqttignore = getSetting('mqttignore').lower().split(',')
mqttignore = getSetting('mqttignore')
if mqttignore:
mqttignore = mqttignore.lower().split(',')
activeplayerid=-1
activeplayertype=""
lasttitle=""
......@@ -95,7 +99,7 @@ def publishprogress():
else:
progress=0
state={"kodi_time":convtime(pt),"kodi_totaltime":convtime(tt)}
publish("progress",round(progress,1),state)
publish("progress","%.1f" % progress,state)
#
# Publish more details about the currently playing item
......@@ -127,6 +131,7 @@ class MQTTMonitor(xbmc.Monitor):
global mqc
mqttlogging("MQTT: Settings changed, reconnecting broker")
mqc.loop_stop(True)
load_settings()
startmqtt()
class MQTTPlayer(xbmc.Player):
......@@ -238,42 +243,51 @@ def startmqtt():
mqc.on_disconnect=disconnecthandler
if __addon__.getSetting("mqttanonymousconnection")=='false':
mqc.username_pw_set(__addon__.getSetting("mqttusername"), __addon__.getSetting("mqttpassword"))
xbmc.log("MQTT: Anonymous disabled, connecting as user: %s" % __addon__.getSetting("mqttusername"))
mqttlogging("MQTT: Anonymous disabled, connecting as user: %s" % __addon__.getSetting("mqttusername"))
if __addon__.getSetting("mqtttlsconnection")=='true' and __addon__.getSetting("mqtttlsconnectioncrt")!='' and __addon__.getSetting("mqtttlsclient")=='false':
mqc.tls_set(__addon__.getSetting("mqtttlsconnectioncrt"))
xbmc.log("MQTT: TLS enabled, connecting using CA certificate: %s" % __addon__.getSetting("mqtttlsconnectioncrt"))
mqttlogging("MQTT: TLS enabled, connecting using CA certificate: %s" % __addon__.getSetting("mqtttlsconnectioncrt"))
elif __addon__.getSetting("mqtttlsconnection")=='true' and __addon__.getSetting("mqtttlsclient")=='true' and __addon__.getSetting("mqtttlsclientcrt")!='' and __addon__.getSetting("mqtttlsclientkey")!='':
mqc.tls_set(__addon__.getSetting("mqtttlsconnectioncrt"), __addon__.getSetting("mqtttlsclientcrt"), __addon__.getSetting("mqtttlsclientkey"))
xbmc.log("MQTT: TLS with client certificates enabled, connecting using certificates CA: %s, client %s and key: %s" % (__addon__.getSetting("mqttusername"), __addon__.getSetting("mqtttlsclientcrt"), __addon__.getSetting("mqtttlsclientkey")))
mqttlogging("MQTT: TLS with client certificates enabled, connecting using certificates CA: %s, client %s and key: %s" % (__addon__.getSetting("mqttusername"), __addon__.getSetting("mqtttlsclientcrt"), __addon__.getSetting("mqtttlsclientkey")))
topic=__addon__.getSetting("mqtttopic")
if not topic.endswith("/"):
topic+="/"
mqc.will_set(topic+"connected",0,qos=2,retain=True)
sleep=2
for attempt in range(10):
try:
mqttlogging("MQTT: Connecting to MQTT broker at %s:%s" % (__addon__.getSetting("mqtthost"),__addon__.getSetting("mqttport")))
mqc.connect(__addon__.getSetting("mqtthost"),__addon__.getSetting("mqttport"),60)
except socket.error:
mqttlogging("MQTT: Socket error raised, retry in %d seconds" % sleep)
monitor.waitForAbort(sleep)
sleep=sleep*2
else:
break
else:
mqttlogging("MQTT: No connection possible, giving up")
return(False)
mqc.publish(topic+"connected",2,qos=1,retain=True)
mqc.loop_start()
return(True)
#
# Addon initialization and shutdown
#
if (__name__ == "__main__"):
global monitor,player
xbmc.log('MQTT: MQTT Adapter Version %s started' % __version__)
mqttlogging('MQTT: MQTT Adapter Version %s started' % __version__)
load_settings()
monitor=MQTTMonitor()
if startmqtt():
player=MQTTPlayer()
for attempt in range(mqttretry):
try:
startmqtt()
except socket.error:
xbmc.log("MQTT: Socket error raised, retrying..")
time.sleep(5)
else:
break
else:
xbmc.log("MQTT: No connection possible, giving up.")
mqc.loop_stop(True)
while not monitor.waitForAbort(mqttinterval):
if mqttprogress:
mqttlogging("MQTT: Progress Publishing enabled, interval is set to %d seconds" % mqttinterval)
while not monitor.waitForAbort(mqttinterval):
publishprogress()
else:
mqttlogging("MQTT: Progress Publishing disabled, waiting for abort")
monitor.waitForAbort()
mqc.loop_stop(True)
mqttlogging("MQTT: Shutting down")
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment