diff --git a/_C002_DomoMQTT.py b/_C002_DomoMQTT.py index 41ea417..876ffb0 100644 --- a/_C002_DomoMQTT.py +++ b/_C002_DomoMQTT.py @@ -55,20 +55,23 @@ def controller_init(self,enablecontroller=None): ls = self.useping except: self.useping = True - self.mqttclient = DMQTTClient() - self.mqttclient.subscribechannel = self.outchannel - self.mqttclient.controllercb = self.on_message - self.mqttclient.connectcb = self.on_connect - self.mqttclient.disconnectcb = self.on_disconnect - if self.controllerpassword=="*****": - self.controllerpassword="" - self.initialized = True - if self.enabled: - if self.isconnected()==False: - misc.addLog(rpieGlobals.LOG_LEVEL_DEBUG,"MQTT: Try to connect") - self.connect() - else: - self.disconnect() + try: + self.mqttclient = DMQTTClient() + self.mqttclient.subscribechannel = self.outchannel + self.mqttclient.controllercb = self.on_message + self.mqttclient.connectcb = self.on_connect + self.mqttclient.disconnectcb = self.on_disconnect + if self.controllerpassword=="*****": + self.controllerpassword="" + self.initialized = True + if self.enabled: + if self.isconnected()==False: + misc.addLog(rpieGlobals.LOG_LEVEL_DEBUG,"MQTT: Try to connect") + self.connect() + else: + self.disconnect() + except Exception as e: + misc.addLog(rpieGlobals.LOG_LEVEL_DEBUG,"MQTT: "+str(e)) return True def connect(self): @@ -239,16 +242,22 @@ def webform_save(self,params): # process settings post reply else: self.useping = False if pchange and self.enabled: - self.disconnect() - time.sleep(0.1) - self.connect() + try: + self.disconnect() + time.sleep(0.1) + self.connect() + except: + pass return True def timer_thirty_second(self): if self.enabled: if self.isconnected()==False: misc.addLog(rpieGlobals.LOG_LEVEL_DEBUG,"MQTT: Try to reconnect") - self.connect() + try: + self.connect() + except: + pass return self.timer30s def on_message(self, msg): diff --git a/_P212_Dash.py b/_P212_Dash.py index 5b437b1..5ab814e 100644 --- a/_P212_Dash.py +++ b/_P212_Dash.py @@ -38,93 +38,97 @@ def plugin_init(self,enableplugin=None): self.initialized = False def webform_load(self): # create html page for settings - webserver.addFormCheckBox("Use standard HTML head","p212_head",self.taskdevicepluginconfig[2]) try: - sp = Settings.AdvSettings["startpage"] - except: - sp = "/" - webserver.addFormCheckBox("Set as startpage","p212_start",(sp=="/dash")) - webserver.addHtml("Columns:") - webserver.addSelector_Head("p212_cols",False) - for o in range(7): - webserver.addSelector_Item(str(o),o,(str(o)==str(self.taskdevicepluginconfig[0])),False) - webserver.addSelector_Foot() + webserver.addFormCheckBox("Use standard HTML head","p212_head",self.taskdevicepluginconfig[2]) + try: + sp = Settings.AdvSettings["startpage"] + except: + sp = "/" + webserver.addFormCheckBox("Set as startpage","p212_start",(sp=="/dash")) + webserver.addHtml("Columns:") + webserver.addSelector_Head("p212_cols",False) + for o in range(7): + webserver.addSelector_Item(str(o),o,(str(o)==str(self.taskdevicepluginconfig[0])),False) + webserver.addSelector_Foot() - webserver.addHtml("Rows:") - webserver.addSelector_Head("p212_rows",False) - for o in range(16): - webserver.addSelector_Item(str(o),o,(str(o)==str(self.taskdevicepluginconfig[1])),False) - webserver.addSelector_Foot() + webserver.addHtml("Rows:") + webserver.addSelector_Head("p212_rows",False) + for o in range(16): + webserver.addSelector_Item(str(o),o,(str(o)==str(self.taskdevicepluginconfig[1])),False) + webserver.addSelector_Foot() - if int(self.taskdevicepluginconfig[0])>0 and int(self.taskdevicepluginconfig[1])>0: - if self.enabled: - webserver.addHtml("Dashboard address:/dash") - options1 = ["None","Text","Binary input","Switch output","Meter","Gauge","Slider output","Select output"] - optionvalues1 = [-1,0,1,2,3,4,5,6] - options2 = ["None"] - optionvalues2 = ["_"] - for t in range(0,len(Settings.Tasks)): - if (Settings.Tasks[t] and (type(Settings.Tasks[t]) is not bool)): - for v in range(0,Settings.Tasks[t].valuecount): - options2.append("T"+str(t+1)+"-"+str(v+1)+" / "+str(Settings.Tasks[t].taskname)+"-"+str(Settings.Tasks[t].valuenames[v])) - optionvalues2.append(str(t)+"_"+str(v)) + if int(self.taskdevicepluginconfig[0])>0 and int(self.taskdevicepluginconfig[1])>0: + if self.enabled: + webserver.addHtml("Dashboard address:/dash") + options1 = ["None","Text","Binary input","Switch output","Meter","Gauge","Slider output","Select output"] + optionvalues1 = [-1,0,1,2,3,4,5,6] + options2 = ["None"] + optionvalues2 = ["_"] + for t in range(0,len(Settings.Tasks)): + if (Settings.Tasks[t] and (type(Settings.Tasks[t]) is not bool)): + for v in range(0,Settings.Tasks[t].valuecount): + options2.append("T"+str(t+1)+"-"+str(v+1)+" / "+str(Settings.Tasks[t].taskname)+"-"+str(Settings.Tasks[t].valuenames[v])) + optionvalues2.append(str(t)+"_"+str(v)) - for r in range(int(self.taskdevicepluginconfig[1])): - for c in range(int(self.taskdevicepluginconfig[0])): - offs = (r * int(self.taskdevicepluginconfig[0])) + c - try: - adata = self.celldata[offs] - except: - adata = {} - dtype = -1 - if "type" in adata: - dtype = int(adata["type"]) - webserver.addHtml("Cell"+str(offs)+" (y"+str(r)+"x"+str(c)+")") + for r in range(int(self.taskdevicepluginconfig[1])): + for c in range(int(self.taskdevicepluginconfig[0])): + offs = (r * int(self.taskdevicepluginconfig[0])) + c + try: + adata = self.celldata[offs] + except: + adata = {} + dtype = -1 + if "type" in adata: + dtype = int(adata["type"]) + webserver.addHtml("Cell"+str(offs)+" (y"+str(r)+"x"+str(c)+")") - dname = "" - if "name" in adata: - dname = str(adata["name"]) - webserver.addFormTextBox("Name overwrite","p212_names_"+str(offs),dname,64) + dname = "" + if "name" in adata: + dname = str(adata["name"]) + webserver.addFormTextBox("Name overwrite","p212_names_"+str(offs),dname,64) - webserver.addFormSelector("Type","p212_type_"+str(offs),len(options1),options1,optionvalues1,None,dtype) - webserver.addHtml("Data source:") - ddata = "_" - if "data" in adata: - ddata = str(adata["data"]) - webserver.addSelector_Head("p212_data_"+str(offs),False) - for o in range(len(options2)): - webserver.addSelector_Item(options2[o],optionvalues2[o],(str(optionvalues2[o])==str(ddata)),False) - webserver.addSelector_Foot() + webserver.addFormSelector("Type","p212_type_"+str(offs),len(options1),options1,optionvalues1,None,dtype) + webserver.addHtml("Data source:") + ddata = "_" + if "data" in adata: + ddata = str(adata["data"]) + webserver.addSelector_Head("p212_data_"+str(offs),False) + for o in range(len(options2)): + webserver.addSelector_Item(options2[o],optionvalues2[o],(str(optionvalues2[o])==str(ddata)),False) + webserver.addSelector_Foot() - if dtype in (0,4): - try: - udata = str(adata["unit"]) - except: - udata = "" - webserver.addFormTextBox("Unit","p212_unit_"+str(offs),udata,16) - if dtype in (3,4,5): - try: - umin = float(adata["min"]) - except: - umin = 0 - try: - umax = float(adata["max"]) - except: - umax = 100 - webserver.addFormFloatNumberBox("Min value","p212_min_"+str(offs),umin,-65535.0,65535.0) - webserver.addFormFloatNumberBox("Max value","p212_max_"+str(offs),umax,-65535.0,65535.0) - elif dtype == 6: - try: - uon = str(adata["optionnames"]) - except: - uon = "" - try: - uopt = str(adata["options"]) - except: - uopt = "" - webserver.addFormTextBox("Option name list","p212_optionnames_"+str(offs),uon,1024) - webserver.addFormTextBox("Option value list","p212_options_"+str(offs),uopt,1024) - webserver.addFormNote("Input comma separated values for selector boxes!") + if dtype in (0,4): + try: + udata = str(adata["unit"]) + except: + udata = "" + webserver.addFormTextBox("Unit","p212_unit_"+str(offs),udata,16) + if dtype in (3,4,5): + try: + umin = float(adata["min"]) + except: + umin = 0 + try: + umax = float(adata["max"]) + except: + umax = 100 + webserver.addFormFloatNumberBox("Min value","p212_min_"+str(offs),umin,-65535.0,65535.0) + webserver.addFormFloatNumberBox("Max value","p212_max_"+str(offs),umax,-65535.0,65535.0) + elif dtype == 6: + try: + uon = str(adata["optionnames"]) + except: + uon = "" + try: + uopt = str(adata["options"]) + except: + uopt = "" + webserver.addFormTextBox("Option name list","p212_optionnames_"+str(offs),uon,1024) + webserver.addFormTextBox("Option value list","p212_options_"+str(offs),uopt,1024) + webserver.addFormNote("Input comma separated values for selector boxes!") + except Exception as e: + print(e)#debug + return False return True def webform_save(self,params): # process settings post reply @@ -145,8 +149,11 @@ def webform_save(self,params): # process settings post reply Settings.AdvSettings["startpage"] = "/" except: pass - if spold != Settings.AdvSettings["startpage"]: - Settings.saveadvsettings() + try: + if spold != Settings.AdvSettings["startpage"]: + Settings.saveadvsettings() + except: + pass if (webserver.arg("p212_head",params)=="on"): self.taskdevicepluginconfig[2] = True else: @@ -162,39 +169,40 @@ def webform_save(self,params): # process settings post reply self.taskdevicepluginconfig[1] = int(par) except: self.taskdevicepluginconfig[1] = 1 - - for c in range(int(self.taskdevicepluginconfig[0])): - for r in range(int(self.taskdevicepluginconfig[1])): - offs = (r * int(self.taskdevicepluginconfig[0])) + c - mknew = True - try: - self.celldata[offs]["type"] = int(webserver.arg("p212_type_"+str(offs),params)) - self.celldata[offs]["data"] = str(webserver.arg("p212_data_"+str(offs),params)) - mknew = False - except: - pass - if mknew: + try: + for c in range(int(self.taskdevicepluginconfig[0])): + for r in range(int(self.taskdevicepluginconfig[1])): + offs = (r * int(self.taskdevicepluginconfig[0])) + c + mknew = True try: - adata = {"type":int(webserver.arg("p212_type_"+str(offs),params)), "data":str(webserver.arg("p212_data_"+str(offs),params))} + self.celldata[offs]["type"] = int(webserver.arg("p212_type_"+str(offs),params)) + self.celldata[offs]["data"] = str(webserver.arg("p212_data_"+str(offs),params)) + mknew = False except: - adata = {"type":-1, "data":"_"} - self.celldata.append(adata) - try: - self.celldata[offs]["unit"] = str(webserver.arg("p212_unit_"+str(offs),params)) - except: - pass - try: - self.celldata[offs]["min"] = float(webserver.arg("p212_min_"+str(offs),params)) - self.celldata[offs]["max"] = float(webserver.arg("p212_max_"+str(offs),params)) - except: - pass - try: - self.celldata[offs]["optionnames"] = str(webserver.arg("p212_optionnames_"+str(offs),params)) - self.celldata[offs]["options"] = str(webserver.arg("p212_options_"+str(offs),params)) - self.celldata[offs]["name"] = str(webserver.arg("p212_names_"+str(offs),params)) - except: - pass - + pass + if mknew: + try: + adata = {"type":int(webserver.arg("p212_type_"+str(offs),params)), "data":str(webserver.arg("p212_data_"+str(offs),params))} + except: + adata = {"type":-1, "data":"_"} + self.celldata.append(adata) + try: + self.celldata[offs]["unit"] = str(webserver.arg("p212_unit_"+str(offs),params)) + except: + pass + try: + self.celldata[offs]["min"] = float(webserver.arg("p212_min_"+str(offs),params)) + self.celldata[offs]["max"] = float(webserver.arg("p212_max_"+str(offs),params)) + except: + pass + try: + self.celldata[offs]["optionnames"] = str(webserver.arg("p212_optionnames_"+str(offs),params)) + self.celldata[offs]["options"] = str(webserver.arg("p212_options_"+str(offs),params)) + self.celldata[offs]["name"] = str(webserver.arg("p212_names_"+str(offs),params)) + except: + pass + except: + pass return True def plugin_read(self): # deal with data processing at specified time interval diff --git a/rpieGlobals.py b/rpieGlobals.py index e7cc20f..9224a2d 100644 --- a/rpieGlobals.py +++ b/rpieGlobals.py @@ -6,7 +6,7 @@ # Copyright (C) 2018-2020 by Alexander Nagy - https://bitekmindenhol.blog.hu/ # PROGNAME = "RPIEasy" -BUILD = 21048 +BUILD = 21049 PROGVER = str(BUILD)[:1]+"."+str(BUILD)[1:2]+"."+str(BUILD)[2:] gpMenu = []