diff --git a/domotika/domotika.py b/domotika/domotika.py
index bce15d43dd676b0d8c03da7a943d1a233ae8f474..73b4218b093778d00d60b0788bc1ad3f0cf28ca1 100644
--- a/domotika/domotika.py
+++ b/domotika/domotika.py
@@ -953,12 +953,12 @@ class domotikaService(service.Service):
          ret=defer.succeed(parseReturn(ret.communicate()[0], reverse))
       elif trigger.startswith("SQL ") or trigger.startswith("SQL:"):
          sqlstring = trigger[4:]
-         ret=doQuery(sqlstring)
+         ret=doQuery(sqlstring, reverse)
       elif trigger.startswith("TMPFLAG ") or trigger.startswith("TMPFLAG:"):
          fl=trigger[8:].split()
          if len(fl)>0:
             try:
-               ret=doQuery("SELECT COUNT(name) FROM flags WHERE name='"+str(fl[0])+"'")
+               ret=doQuery("SELECT COUNT(name) FROM flags WHERE name='"+str(fl[0])+"'", reverse)
             except:
                pass
       elif trigger.startswith("CRONSTATUS ") or trigger.startswith("CRONSTATUS:"):
@@ -972,7 +972,7 @@ class domotikaService(service.Service):
          bname=trigger[12:].split()
          if len(bname)>0:
             try:
-               ret=doQuery("SELECT online FROM dmboards WHERE name='"+str(bname[0])+"'")
+               ret=doQuery("SELECT online FROM dmboards WHERE name='"+str(bname[0])+"'", reverse)
             except:
                pass
       elif trigger.startswith("INPSTATUS ") or trigger.startswith("INPSTATUS:"):
@@ -1100,28 +1100,30 @@ class domotikaService(service.Service):
             st=trigger[7:].split(':')
          else:
             st=trigger[7:].split()
+         if restype in ['string','int']:
+            reverse=False
          if restype in ['bool','int'] and len(st)>2 and st[1] in ['<=','>=','=','!=','>','<','domain']:
             if st[1]=='domain':
                try:
                   ret=doQuery("""SELECT COUNT(value) FROM statusrealtime 
-                        WHERE DMDOMAIN(status_name, '"""+str(st[0])+"')=1 AND DMDOMAIN(value,'"+st['2']+"')=1", restype)
+                        WHERE DMDOMAIN(status_name, '"""+str(st[0])+"')=1 AND DMDOMAIN(value,'"+st[2]+"')=1", reverse)
                except:
                   pass
             elif genutils.is_number(st[2]):
                try:
                   ret=doQuery("""SELECT COUNT(value) FROM statusrealtime 
-                        WHERE DMDOMAIN(status_name, '"""+str(st[0])+"')=1 AND CONVERT(value, SIGNED)"+st['1']+st[2], restype)
+                        WHERE DMDOMAIN(status_name, '"""+str(st[0])+"')=1 AND CONVERT(value, SIGNED)="+st[1]+st[2], reverse)
                except:
                   pass
          elif restype in ['bool','int'] and len(st)==2 and genutils.is_number(st[1]):
             try:
                ret=doQuery("""SELECT COUNT(value) FROM statusrealtime 
-                  WHERE DMDOMAIN(status_name, '"""+str(st[0])+"')=1 AND CONVERT(value, SIGNED)="+st['1'], restype) 
+                  WHERE DMDOMAIN(status_name, '"""+str(st[0])+"')=1 AND CONVERT(value, SIGNED)="+st[1], reverse) 
             except:
                pass
          elif restype=='string' and len(st)>0:
             try:
-               ret=doQuery("SELECT value FROM statusrealtime WHERE DMDOMAIN(status_name,'"+str(st[0])+"')=1", restype=False)
+               ret=doQuery("SELECT value FROM statusrealtime WHERE DMDOMAIN(status_name,'"+str(st[0])+"')=1")
             except:
                pass
       elif trigger.startswith("UNIQUE ") or trigger.startswith("UNIQUE:"):
@@ -1129,23 +1131,26 @@ class domotikaService(service.Service):
             st=trigger[7:].split(':')
          else:
             st=trigger[7:].split()
+         if restype in ['string','int']:
+            reverse=False
+
          if restype in ['bool','int'] and len(st)>2 and st[1] in ['<=','>=','=','!=','>','<','domain']:
             if st[1]=='domain':
                try:
                   ret=doQuery("""SELECT COUNT(value) FROM uniques
-                        WHERE DMDOMAIN(name, '"""+str(st[0])+"')=1 AND DMDOMAIN(value,'"+st['2']+"')=1", restype)
+                        WHERE DMDOMAIN(name, '"""+str(st[0])+"')=1 AND DMDOMAIN(value,'"+st[2]+"')=1", reverse)
                except:
                   pass
             elif genutils.is_number(st[2]):
                try:
                   ret=doQuery("""SELECT COUNT(value) FROM uniques
-                        WHERE DMDOMAIN(name, '"""+str(st[0])+"')=1 AND CONVERT(value, SIGNED)"+st['1']+st[2], restype)
+                        WHERE DMDOMAIN(name, '"""+str(st[0])+"')=1 AND CONVERT(value, SIGNED)"+st[1]+st[2], reverse)
                except:
                   pass
 
          elif restype=='string' and len(st)>0:
             try:
-               ret=doQuery("SELECT value FROM uniques WHERE DMDOMAIN(name,'"+str(st[0])+"')=1", restype=False)
+               ret=doQuery("SELECT value FROM uniques WHERE DMDOMAIN(name,'"+str(st[0])+"')=1")
             except:
                pass
 
diff --git a/domotika/upnp.py b/domotika/upnp.py
index 19571fe56cc5846d3d4ee4d61d3d190f2c7aa751..1ac94dba0351b7e4d0ebb99c483f5b9db85c02d1 100644
--- a/domotika/upnp.py
+++ b/domotika/upnp.py
@@ -61,7 +61,11 @@ class DomotikaUPNP(object):
              'modelNumber': 'Unknown',
              'deviceType': 'Unknown',
              'host': 'Unknown'}
-      xmlstring=xml.parseXMLString(res)
+      try:
+         xmlstring=xml.parseXMLString(res)
+      except:
+         log.info("Cannot parse XML for "+str(device))
+         return
       log.debug('RAW DEVICE XML: '+str(res)+' FOR DEVICE: '+str(device))
       xmldev=xml.getElementsByTagName(xmlstring, 'device')[0]
       for k in descr.keys():