def on(self, ip): if self.state == 0: if plugs.send(self.ip, generateCMD("on"))["system"]["set_relay_state"]["err_code"] == 0: print(cTime.nowf() + " - ACTION: HeatPad On") self.state = 1 return 0 else: print(cTime.nowf() + " - ALERT: Failed to turn on HeatPad", file=sys.stderr)
def off(self, ip): if self.state == 1: currRuntime = plugs.send(self.ip, commands["info"])["system"]["get_sysinfo"]["children"][self.location]["on_time"] if plugs.send(self.ip, generateCMD("off"))["system"]["set_relay_state"]["err_code"] == 0: print(cTime.nowf() + " - ACTION: HeatPad Off") self.state = 0 self.pastRuntime += int(currRuntime) return 0 else: print(cTime.nowf() + " - ALERT: Failed to turn off HeatPad", file=sys.stderr)
def on(self, ip): if self.state == 0: if plugs.send(self.ip, commands["on"] )["system"]["set_relay_state"]["err_code"] == 0: print(cTime.nowf() + " - ACTION: Lights On") self.state = 1 return 0 else: print(cTime.nowf() + " - ALERT: Failed to turn lights on", file=sys.stderr)
def off(self, ip): if self.state == 1: currRuntime = plugs.send( self.ip, commands["info"])["system"]["get_sysinfo"]["on_time"] if plugs.send(self.ip, commands["off"] )["system"]["set_relay_state"]["err_code"] == 0: print(cTime.nowf() + " - ACTION: Lights Off") self.state = 0 self.pastRuntime += int(currRuntime) return 0 else: print(cTime.nowf() + " - ALERT: Failed to turn lights off", file=sys.stderr)
def __init__(self, ip, plugID): self.ip = ip self.id = plugID plugJSON = plugs.send(self.ip, commands["info"])["system"]["get_sysinfo"] self.location = None for i in plugJSON["children"]: if i["id"] == plugID: self.location = i break if self.location == None print(cTime.nowf() + " - ALERT: id number " + self.id + " not found on device" + ip, file=sys.stderr) exit() self.state = plugJSON["children"][self.location]["state"]
def processesNotif(avgTemp): global queueNotification currentTime = cTime.nowf() # If between quiet hours if cTime.between(currentTime, [runTime[0], tempGraceTime[0]]) or cTime.between( currentTime, [runTime[1], tempGraceTime[1]]): return else: if queueNotification == "high": printHigh(avgTemp) queueNotification = None elif queueNotification == "low": printLow(avgTemp) queueNotification = None elif queueNotification == "return": printReturn(avgTemp) queueNotification = None
def close(self): if self.state != self.states[0]: self.chgState(self.states[0]) print(cTime.nowf() + " - ACTION: Servo " + self.name + " Closed")
def open(self): if self.state != self.states[1]: self.chgState(self.states[1]) print(cTime.nowf() + " - ACTION: Servo " + self.name + " Open")
def off(self, silent=False): if self.state() == 1: self.pi.write(self.pin, 0) if not silent: print(cTime.nowf() + " - ACTION: Fan Off")
def on(self, silent=False): if self.state() == 0: self.pi.write(self.pin, 1) if not silent: print(cTime.nowf() + " - ACTION: Fan On")
array.append(self.data[i]["RH"]) return min(array), max(array) if __name__ == "__main__": import pigpio as gpio import cTime DHTList = [ # (Name, Model, Pin) ("left", "AM2320", 6, True), ("right", "AM2320", 23, True), ("light", "DHT11", 22, False) ] pi = gpio.pi() currentTime = cTime.nowf() pi.set_mode(5, gpio.OUTPUT) pi.write(5, 1) DHTSensors = DHT(pi, DHTList) DHTData = DHTSensors.getData() minTemp, maxTemp, avgTemp = DHTSensors.getTempSummary(ignore=["light"]) minRH, maxRH = DHTSensors.getRHSummary() print("Current Time: {}".format(currentTime)) print("Tempretures are: {:3.2f}, {:3.2f}, Light: {:3.2f}".format( DHTData["left"]["temp"], DHTData["right"]["temp"], DHTData["light"]["temp"]))
def init(): global lastCheckL, lastCheckM, cycle global pi, DHTSensors, fan, light, servos, mSensor, notify, logFileDHT, logFileM, heatpad print("Initializing...") # create pigpio instance pi = gpio.pi() # init Notify notify = Notify() # open logFiles file_exists = os.path.isfile(DHT_LOG) logFileDHT = open(DHT_LOG, "a+", buffering=1) if not file_exists: logFileDHT.write( "time, tempLeft, tempRight, tempLight, avgTemp, RHLeft, RHRight, RHLight\n" ) file_exists = os.path.isfile(MOISTURE_LOG) logFileM = open(MOISTURE_LOG, "a+", buffering=1) if not file_exists: logFileM.write( "time, potLeft, rawLeft, potMid, rawMid, potRight, rawRight\n") # init Sensors pi.set_mode(5, gpio.OUTPUT) pi.write(5, 1) DHTSensors = DHTC(pi, DHT) # init Fan fan = fanC(pi, FAN_PIN) # init ADC for moisture sensor mSensor = ADS1115C(pi, 0x48, INSTALLED_MOISTURE_SENSORS) mData = mSensor.readAll() logSoilData(cTime.nowf(), mData) #ADS1115C.checkData(mData, notify, SOIL_THRESH) lastCheckM = cTime.now() # init Servos servos = servosC(pi, SERVOS, fan) # init Smartplug light = smartplugC(PLUG_ADDR) lastCheckL = cTime.now() heatpad = smartstripC(HEATPAD_ADDR, HEATPAD_ID) # init State lastState = -1 if cTime.between(cTime.nowf(), runTime): cycle = 1 light.set(ON) else: cycle = 0 light.set(OFF) fan.set(OFF) servos.all(OFF)
def printLow(avgTemp): msg = cTime.nowf( ) + " - ALERT: TEMP VALUES BELOW E LEVELS: {:.2f}°F".format(avgTemp) sendNotification(msg, outfile=sys.stderr)
def printReturn(avgTemp): msg = cTime.nowf( ) + " - INFO: TEMP VALUES HAVE RETURNED TO NORMAL: {:.2f}°F".format( avgTemp) sendNotification(msg)