Beispiel #1
0
 def configure(self, qParentWidget):
     try:
         d = dict()
         d['debug'] = (ValueType.boolean, "Debug",
                       self.config['GENERAL']['debug'] == "True", None,
                       None)
         d['morerequests'] = (
             ValueType.boolean, "Fast Connection",
             self.config['GENERAL']['morerequests'] == "True", None, None)
         d['serversperpage'] = (
             ValueType.integer, "Servers per page:",
             int(self.config['GENERAL']['serversperpage']), 0, 250)
         d['api'] = (ValueType.string, "API Base URL:",
                     self.config['GENERAL']['api'], None, 1)
         d['alternatebackgroundcolor'] = (
             ValueType.string, "Alternate row bg color:",
             self.config['GENERAL']['alternatebackgroundcolor'], None, 1)
         getValues(None, "Server Browser Settings", d,
                   self.configDialogClosed)
     except:
         from traceback import format_exc
         try:
             ts3.logMessage(format_exc(),
                            ts3defines.LogLevel.LogLevel_ERROR,
                            "PyTSon::" + self.name, 0)
         except:
             print("Error in " + self.name + ".configure: " + format_exc())
Beispiel #2
0
 def configure(self, qParentWidget):
     try:
         d = dict()
         d['debug'] = (ValueType.boolean, "Debug",
                       self.cfg['general']['debug'] == "True", None, None)
         d['enabled'] = (ValueType.boolean, "Broadcast own changes",
                         self.cfg['general']['enabled'] == "True", None,
                         None)
         d['pw'] = (ValueType.boolean, "Broadcast server passwords",
                    self.cfg['general']['pw'] == "True", None, None)
         d['channel'] = (ValueType.boolean, "Broadcast new channel",
                         self.cfg['general']['channel'] == "True", None,
                         None)
         d['channelpw'] = (ValueType.boolean, "Broadcast channel pw",
                           self.cfg['general']['channelpw'] == "True", None,
                           None)
         d['status'] = (ValueType.string, "AFK status text:",
                        self.cfg['general']['status'], None, 1)
         getValues(None, "{} Settings".format(self.name), d,
                   self.configDialogClosed)
     except:
         from traceback import format_exc
         try:
             ts3.logMessage(format_exc(),
                            ts3defines.LogLevel.LogLevel_ERROR,
                            "PyTSon::" + self.name, 0)
         except:
             print("Error in " + self.name + ".configure: " + format_exc())
Beispiel #3
0
def off(force=False):
    logging.debug("off called.")
    if islocked() and not force:
        logging.debug("Asked to swich fan off, but fan is locked")
        rrdtool.update(DATADIR + '/fan.rrd',
                       'N:' + getvalues.getValues()['Fan'])
        mqtt.publishFan(getvalues.getValues()['Fan'])
    else:
        logging.debug("Current fan value is: %s" %
                      getvalues.getValues()['Fan'])
        if getvalues.getValues()['Fan'] != "0":
            if not DRYRUN:
                subprocess.call([SISPMCTL, "-A " + FANOUTPORT])
                subprocess.call([SISPMCTL, "-f " + FANOUTPORT])
                if force:
                    subprocess.call([SISPMCTL, "-A " + FANINPORT])
                    subprocess.call([SISPMCTL, "-f " + FANINPORT])
                else:
                    subprocess.call([
                        SISPMCTL, "-A", FANINPORT, "--Aafter", "2", "--Ado",
                        "off"
                    ])
            logging.info("switched fan off.")
        rrdtool.update(DATADIR + '/fan.rrd', 'N:0')
        mqtt.publishFan(0)
Beispiel #4
0
 def configure(self, qParentWidget):
     try:
         d = dict()
         for n, v in self.cfg['general'].items():
             if n == "cfgversion": continue
             d[n] = (ValueType.boolean, n.title(), self.cfg.getboolean('general', n), None, None)
         getValues(qParentWidget, self.name, d, self.configDialogClosed)
     except: from traceback import format_exc;ts3.logMessage(format_exc(), ts3defines.LogLevel.LogLevel_ERROR, "PyTSon", 0)
Beispiel #5
0
 def configure(self, qParentWidget):
     if not self.dlg: self.dlg = contactStatsFilters(self)
     self.dlg.show()
     self.dlg.raise_()
     self.dlg.activateWindow()
     return QDialog.Rejected
     d = dict()
     for k in self.cfg['filters']:
         d[k] = (ValueType.string, k, self.cfg['filters'][k], None, 1)
     getValues(None, "Count Contacts Prefixes", d, self.configDialogClosed)
Beispiel #6
0
def on(force=False):
  logging.debug("on called.")
  if islocked() and not force:
    logging.debug("Asked to swich fan on, but fan is locked")
    rrdtool.update(DATADIR+'/fan.rrd','N:'+getvalues.getValues()['Fan'])
  else:
    if getvalues.getValues()['Fan'] == "0":
      if not DRYRUN:
        subprocess.call([SISPMCTL,"-A "+FANINPORT])
        subprocess.call([SISPMCTL,"-o "+FANINPORT])
        subprocess.call([SISPMCTL,"-A",FANOUTPORT,"--Aafter","2","--Ado","on"])
      logging.info("switched fan on.")
    rrdtool.update(DATADIR+'/fan.rrd','N:1')
Beispiel #7
0
 def configure(self, qParentWidget):
     try:
         # Start QDialog method +
         if not self.dlg:
             self.dlg = SettingsDialog(self)
         self.dlg.show()
         self.dlg.raise_()
         self.dlg.activateWindow()
         # End QDialog method -
         # Start getValues method +
         d = dict()
         d['api'] = (ValueType.string, "Example String:",
                     self.cfg['general']['example string'], None, 1)
         widgets = getValues(None, self.name + " Settings", d,
                             self.configDialogClosed)
         # End getValues method -
         # Start QInputDialog method +
         result = QInputDialog.getText(
             qParentWidget, self.name + " Settings", "Example String:",
             QLineEdit.Normal, self.cfg['general']['example string'])
         if not result: return
         self.cfg.set('general', 'api', result)
         with open(self.ini, 'w') as configfile:
             self.cfg.write(configfile)
         # End QInputDialog method -
     except:
         from traceback import format_exc
         logMessage(format_exc(), ts3defines.LogLevel.LogLevel_ERROR,
                    "PyTSon", 0)
Beispiel #8
0
def cron():
    currentState = getvalues.getValues()
    Fan = currentState["Fan"]
    logging.debug("cron called. Current values are %s" % currentState)
    if "U" in currentState.itervalues():
        logging.info("cron: switching fan off due to invalid state (%s)" %
                     currentState)
        off()
    else:
        AHkeller = float(currentState["AHkeller"])
        AHaussen = float(currentState["AHaussen"])
        if Fan == "0":
            margin = AHmargin
        else:
            margin = AHmargin - AHhysterese
        if AHaussen > AHkeller - margin:
            logging.debug("abs. hum. outside is larger, switching fan off")
            off()
        else:
            logging.debug(
                "abs. hum. outside is smaller, considering further...")
            Tkeller = float(currentState["Tkeller"])
            DPkeller = float(currentState["DPkeller"])
            Taussen = float(currentState["Taussen"])
            if Taussen > Tkeller:
                if Fan == "0":
                    margin = Thysterese
                else:
                    margin = 0.0
                if (Taussen < Tkellermax) or (Tkeller < Tkellermax - margin):
                    logging.debug(
                        "temp. outside is higher and cellar is not too warm, switching fan on."
                    )
                    on()
                else:
                    logging.debug(
                        "temp. outside is higher but cellar is too warm, switching fan off."
                    )
                    off()
            else:
                if Fan == "0":
                    marginT = Thysterese
                    marginDP = DPmargin
                else:
                    marginT = 0.0
                    marginDP = DPmargin - DPhysterese
                if ((Taussen > Tkellermin) or
                    (Tkeller > Tkellermin + marginT)) and (
                        Tkeller > DPkeller + marginDP):
                    logging.debug(
                        "temp. outside is lower but cellar is warm enough and well above dew point, switching fan on."
                    )
                    on()
                else:
                    logging.debug(
                        "temp. outside is lower and cellar is too cold or too close to dew point, switching fan off."
                    )
                    off()
    subprocess.call(BINDIR + '/makegraphs.sh')
Beispiel #9
0
 def configure(self, qParentWidget):
     d = dict()
     d['debug'] = (ValueType.boolean, "Debug",
                   self.cfg['general']['debug'] == "True", None, None)
     d['enabled'] = (ValueType.boolean, "Broadcast own changes",
                     self.cfg['general']['enabled'] == "True", None, None)
     d['pw'] = (ValueType.boolean, "Broadcast server passwords",
                self.cfg['general']['pw'] == "True", None, None)
     d['channel'] = (ValueType.boolean, "Broadcast new channel",
                     self.cfg['general']['channel'] == "True", None, None)
     d['channelpw'] = (ValueType.boolean, "Broadcast channel pw",
                       self.cfg['general']['channelpw'] == "True", None,
                       None)
     d['status'] = (ValueType.string, "AFK status text:",
                    self.cfg['general']['status'], None, 1)
     getValues(None, "{} Settings".format(self.name), d,
               self.configDialogClosed)
Beispiel #10
0
def on(force=False):
    logging.debug("on called.")
    if islocked() and not force:
        logging.debug("Asked to swich fan on, but fan is locked")
        rrdtool.update(DATADIR + '/fan.rrd',
                       'N:' + getvalues.getValues()['Fan'])
        mqtt.publishFan(getvalues.getValues()['Fan'])
    else:
        if UseInterval and (LockInterval or not force):
            FanRatio = str(
                round(float(IntervalOn) / (IntervalOn + IntervalOff), 3))
            logging.debug("Interval ventilation in use, setting ratio to " +
                          FanRatio)
        else:
            FanRatio = "1"
        if getvalues.getValues()['Fan'] != FanRatio:
            if not DRYRUN:
                if UseInterval and (LockInterval or not force):
                    subprocess.call([SISPMCTL, "-A " + FANINPORT])
                    subprocess.call([SISPMCTL, "-o " + FANINPORT])
                    subprocess.call([
                        SISPMCTL, "-A", FANINPORT, "--Aafter",
                        str(IntervalOn), "--Ado", "off", "--Aafter",
                        str(IntervalOff), "--Ado", "on", "--Aloop",
                        str(IntervalOn + IntervalOff)
                    ])
                    subprocess.call([
                        SISPMCTL, "-A", FANOUTPORT, "--Aafter", "2", "--Ado",
                        "on", "--Aafter",
                        str(IntervalOn - 2), "--Ado", "off", "--Aloop",
                        str(IntervalOn + IntervalOff)
                    ])
                else:
                    subprocess.call([SISPMCTL, "-A " + FANINPORT])
                    subprocess.call([SISPMCTL, "-o " + FANINPORT])
                    subprocess.call([
                        SISPMCTL, "-A", FANOUTPORT, "--Aafter", "2", "--Ado",
                        "on"
                    ])
            logging.info("switched fan on.")
        rrdtool.update(DATADIR + '/fan.rrd', 'N:' + FanRatio)
        mqtt.publishFan(FanRatio)
Beispiel #11
0
 def configure(self, qParentWidget):
     try:
         d = dict()
         d['enabled'] = (ValueType.boolean, "Enabled",
                         self.config['general']['enabled'] == "True", None,
                         None)
         d['debug'] = (ValueType.boolean, "Debug",
                       self.config['general']['debug'] == "True", None,
                       None)
         d['cids'] = (ValueType.string, "CIDS:",
                      self.config['general']['cids'], None, 1)
         d['clids'] = (ValueType.string, "CLIDS:",
                       self.config['general']['clids'], None, 1)
         getValues(None, self.name + " Settings", d,
                   self.configDialogClosed)
     except:
         from traceback import format_exc
         try:
             ts3lib.logMessage(format_exc(),
                               ts3defines.LogLevel.LogLevel_ERROR,
                               "PyTSon::" + self.name, 0)
         except:
             print("Error in " + self.name + ".configure: " + format_exc())
Beispiel #12
0
def cron():
  currentState = getvalues.getValues()
  Fan = currentState["Fan"]
  logging.debug("cron called. Current values are %s" % currentState)
  if "U" in currentState.itervalues():
    logging.info("cron: switching fan off due to invalid state (%s)" % currentState)
    off()
  else:
    AHkeller = float(currentState["AHkeller"])
    AHaussen = float(currentState["AHaussen"])
    if Fan == "0":
      margin = AHmargin
    else:
      margin = AHmargin - AHhysterese
    if AHaussen > AHkeller - margin:
      logging.debug("abs. hum. outside is larger, switching fan off")
      off()
    else:
      logging.debug("abs. hum. outside is smaller, considering further...")
      Tkeller = float(currentState["Tkeller"])
      DPkeller = float(currentState["DPkeller"])
      Taussen = float(currentState["Taussen"])
      if Taussen > Tkeller:
        if Fan == "0":
          margin = Thysterese
        else:
          margin = 0.0
        if ( Taussen < Tkellermax ) or ( Tkeller < Tkellermax - margin ): 
          logging.debug("temp. outside is higher and cellar is not too warm, switching fan on.")
          on()
        else:
          logging.debug("temp. outside is higher but cellar is too warm, switching fan off.")
          off()
      else:
        if Fan == "0":
          marginT = Thysterese
          marginDP = DPmargin
        else:
          marginT = 0.0
          marginDP = DPmargin - DPhysterese
        if ( ( Taussen > Tkellermin ) or ( Tkeller > Tkellermin + marginT ) ) and ( Tkeller > DPkeller + marginDP ):
          logging.debug("temp. outside is lower but cellar is warm enough and well above dew point, switching fan on.")
          on()
        else:
          logging.debug("temp. outside is lower and cellar is too cold or too close to dew point, switching fan off.")
          off()
  subprocess.call(BINDIR+'/makegraphs.sh')
Beispiel #13
0
def lock(state,duration):
  if duration == "inf":
    unlocktime = "inf"
  else:
    try:
      unlocktime = int(duration)
      unlocktime = int(time.time())+unlocktime*60
    except:
      logging.error("Ungültige Angabe für Sperrdauer: %s" % duration)
      return False
  logging.info("Locking fan to %s for %s minutes" % ( state, duration ))
  f = open(LOCKFILE,'w')
  f.write(str(unlocktime))
  f.close()
  currentState = getvalues.getValues()['Fan']
  if str(state) == currentState:
    logging.debug("lock: Fan is already in state %s, not switching" % state)
  else:
    logging.debug("lock: Switching fan to state %s" % state)
    if state == 0:
      off(force=True)
    elif state == 1:
      on(force=True)
Beispiel #14
0
def lock(state, duration):
    if duration == "inf":
        unlocktime = "inf"
    else:
        try:
            unlocktime = int(duration)
            unlocktime = int(time.time()) + unlocktime * 60
        except:
            logging.error("Ungültige Angabe für Sperrdauer: %s" % duration)
            return False
    logging.info("Locking fan to %s for %s minutes" % (state, duration))
    f = open(LOCKFILE, 'w')
    f.write(str(unlocktime))
    f.close()
    currentState = getvalues.getValues()['Fan']
    if str(state) == currentState:
        logging.debug("lock: Fan is already in state %s, not switching" %
                      state)
    else:
        logging.debug("lock: Switching fan to state %s" % state)
        if state == 0:
            off(force=True)
        elif state == 1:
            on(force=True)
Beispiel #15
0
#!/usr/bin/env python
import time
import serial
import getvalues as gv
      
	ser = serial.Serial(
              
        	port='/dev/ttyAMA0',
      		baudrate = 9600,
        	parity=serial.PARITY_NONE,
        	stopbits=serial.STOPBITS_ONE,
        	bytesize=serial.EIGHTBITS,
        	timeout=1
        )
        counter=0
        while counter<200:
		data=gv.getValues()
		if len(data) != 0:
        		ser.write('%s'%data)
		        counter += 1
               	time.sleep(1)
Beispiel #16
0
    def updateValues(self):

        currentState = getvalues.getValues()

        if currentState['Tkeller'] == "U":
            Tkeller = "--"
        else:
            Tkeller = "%5.1f°C" % float(currentState['Tkeller'])
        if currentState['RHkeller'] == "U":
            RHkeller = "--"
        else:
            RHkeller = "%2.0f%%" % float(currentState['RHkeller'])
        if currentState['DPkeller'] == "U":
            DPkeller = "--"
        else:
            DPkeller = "%5.1f°C" % float(currentState['DPkeller'])
        if currentState['AHkeller'] == "U":
            AHkeller = "--"
        else:
            AHkeller = "%3.1fg/m³" % float(currentState['AHkeller'])

        if currentState['Taussen'] == "U":
            Taussen = "--"
        else:
            Taussen = "%5.1f°C" % float(currentState['Taussen'])
        if currentState['RHaussen'] == "U":
            RHaussen = "--"
        else:
            RHaussen = "%2.0f%%" % float(currentState['RHaussen'])
        if currentState['DPaussen'] == "U":
            DPaussen = "--"
        else:
            DPaussen = "%5.1f°C" % float(currentState['DPaussen'])
        if currentState['AHaussen'] == "U":
            AHaussen = "--"
        else:
            AHaussen = "%3.1fg/m³" % float(currentState['AHaussen'])

        if currentState['Fan'] == "U":
            Fan = "--"
            self.FanLabel.configure(background="black")
            self.FanLabel.configure(foreground="white")
        else:
            if float(currentState['Fan']) > .99:
                Fan = "AN"
                self.FanLabel.configure(background="green")
                self.FanLabel.configure(foreground="white")
            else:
                Fan = "AUS"
                self.FanLabel.configure(background="red")
                self.FanLabel.configure(foreground="white")

        RHimage = PhotoImage(file=GRAPHDIR + '/rhsmall.png')
        AHimage = PhotoImage(file=GRAPHDIR + '/ahsmall.png')

        self.RHLabel.configure(image=RHimage)
        self.AHLabel.configure(image=AHimage)

        self.RHLabel.image = RHimage
        self.AHLabel.image = AHimage

        self.KellerLine1.set(Tkeller + " " + RHkeller)
        self.KellerLine2.set(DPkeller + " " + AHkeller)

        self.AussenLine1.set(Taussen + " " + RHaussen)
        self.AussenLine2.set(DPaussen + " " + AHaussen)

        self.FanLine.set("Lüfter: " + Fan)

        root.after(60000, self.updateValues)
Beispiel #17
0
    def updateValues(self):

        currentState = getvalues.getValues()

        if currentState['Tkeller'] == "U":
            self.Tkeller.set("--    ")
        else:
            self.Tkeller.set("%5.1f°C" % float(currentState['Tkeller']))
        if currentState['RHkeller'] == "U":
            self.RHkeller.set("--")
            self.RHkellerLabel.configure(foreground="black")
        else:
            RHkeller = float(currentState['RHkeller'])
            self.RHkeller.set("%2.0f%%" % RHkeller)
            if RHkeller > 60.0:
                self.RHkellerLabel.configure(foreground="red")
            else:
                self.RHkellerLabel.configure(foreground="black")
        if currentState['DPkeller'] == "U":
            self.DPkeller.set("--    ")
        else:
            self.DPkeller.set("%5.1f°C" % float(currentState['DPkeller']))
        if currentState['AHkeller'] == "U":
            self.AHkeller.set("--")
        else:
            self.AHkeller.set("%3.1fg/m³" % float(currentState['AHkeller']))

        if currentState['Taussen'] == "U":
            self.Taussen.set("--    ")
        else:
            self.Taussen.set("%5.1f°C" % float(currentState['Taussen']))
        if currentState['RHaussen'] == "U":
            self.RHaussen.set("--")
        else:
            self.RHaussen.set("%2.0f%%" % float(currentState['RHaussen']))
        if currentState['DPaussen'] == "U":
            self.DPaussen.set("--    ")
        else:
            self.DPaussen.set("%5.1f°C" % float(currentState['DPaussen']))
        if currentState['AHaussen'] == "U":
            self.AHaussen.set("--")
        else:
            self.AHaussen.set("%4.1fg/m³" % float(currentState['AHaussen']))

        if currentState['Fan'] == "U":
            Fan = "--"
            self.FanLabel.configure(background="black")
            self.FanLabel.configure(foreground="white")
        else:
            if float(currentState['Fan']) > .99:
                Fan = "AN"
                self.FanLabel.configure(background="green")
                self.FanLabel.configure(foreground="white")
            else:
                Fan = "AUS"
                self.FanLabel.configure(background="red")
                self.FanLabel.configure(foreground="white")

        RHimage = PhotoImage(file=GRAPHDIR+'/rhsmall.png')
        AHimage = PhotoImage(file=GRAPHDIR+'/ahsmall.png')

        self.RHLabel.configure(image=RHimage)
        self.AHLabel.configure(image=AHimage)

        self.RHLabel.image = RHimage
        self.AHLabel.image = AHimage

        self.FanLine.set("Lüfter: "+Fan)

        islocked = fanctl.islocked()

        if islocked:
            self.LockLabel.configure(background="red")
            if islocked == "inf":
                self.LockLine.set("gesperrt")
            else:
                if islocked > ( 6*24*60*60 ):
                    n = ( islocked -1 ) / ( 7*24*60*60 ) + 1
                    unit = "Woche"
                    plural = "n"
                elif islocked > ( 23*60*60 ):
                    n = ( islocked - 1 ) / ( 24*60*60 ) + 1
                    unit = "Tag"
                    plural = "e"
                    self.LockLine.set("%i Tage" % n)
                elif islocked > ( 59*60 ):
                    n = ( islocked - 1 ) / ( 60*60 ) + 1
                    unit = "Stunde"
                    plural = "n"
                    self.LockLine.set("%i Stunden" % n)
                else:
                    n = ( islocked -1 ) / 60 + 1
                    unit = "Minute"
                    plural = "n"
                    self.LockLine.set("% i Minuten" % n)
                if n > 1:
                    unit += plural
                self.LockLine.set("%i %s" % (n,unit))
        else:
            self.LockLabel.configure(background="blue")
            self.LockLine.set("Auto")

        self.TimeLine.set(time.strftime("%a %-d.%-m.%Y %H:%M"))
Beispiel #18
0
    def updateValues(self):

        currentState = getvalues.getValues()

        if currentState['Tkeller'] == "U":
            Tkeller = "--"
        else:
            Tkeller = "%5.1f°C" % float(currentState['Tkeller'])
        if currentState['RHkeller'] == "U":
            RHkeller = "--"
        else:
            RHkeller = "%2.0f%%" % float(currentState['RHkeller'])
        if currentState['DPkeller'] == "U":
            DPkeller = "--"
        else:
            DPkeller = "%5.1f°C" % float(currentState['DPkeller'])
        if currentState['AHkeller'] == "U":
            AHkeller = "--"
        else:
            AHkeller = "%3.1fg/m³" % float(currentState['AHkeller'])

        if currentState['Taussen'] == "U":
            Taussen = "--"
        else:
            Taussen = "%5.1f°C" % float(currentState['Taussen'])
        if currentState['RHaussen'] == "U":
            RHaussen = "--"
        else:
            RHaussen = "%2.0f%%" % float(currentState['RHaussen'])
        if currentState['DPaussen'] == "U":
            DPaussen = "--"
        else:
            DPaussen = "%5.1f°C" % float(currentState['DPaussen'])
        if currentState['AHaussen'] == "U":
            AHaussen = "--"
        else:
            AHaussen = "%3.1fg/m³" % float(currentState['AHaussen'])

        if currentState['Fan'] == "U":
            Fan = "--"
            self.FanLabel.configure(background="black")
            self.FanLabel.configure(foreground="white")
        else:
            if float(currentState['Fan']) > .99:
                Fan = "AN"
                self.FanLabel.configure(background="green")
                self.FanLabel.configure(foreground="white")
            else:
                Fan = "AUS"
                self.FanLabel.configure(background="red")
                self.FanLabel.configure(foreground="white")

        RHimage = PhotoImage(file=GRAPHDIR+'/rhsmall.png')
        AHimage = PhotoImage(file=GRAPHDIR+'/ahsmall.png')

        self.RHLabel.configure(image=RHimage)
        self.AHLabel.configure(image=AHimage)

        self.RHLabel.image = RHimage
        self.AHLabel.image = AHimage

        self.KellerLine1.set(Tkeller+" "+RHkeller)
        self.KellerLine2.set(DPkeller+" "+AHkeller)

        self.AussenLine1.set(Taussen+" "+RHaussen)
        self.AussenLine2.set(DPaussen+" "+AHaussen)

        self.FanLine.set("Lüfter: "+Fan)

        root.after(60000,self.updateValues)