Exemplo n.º 1
0
class DisplayPeriodicMessage:

    logMessage = ''
    const = ''
    processSensorData = ''
    lcd = ''

    def __init__(self):
        self.logMessage = LogMessage()
        self.const = Constant()
        self.processSensorData = ProcessSensorReading()
        if self.const.live:
            self.lcd = RPILCD()

    def run(self):
        try:
            if self.processSensorData.checkConfigFileExist():
                while True:
                    data = self.processSensorData.getSensorData()

                    currentTime = time.strftime("%d.%m.%Y %H:%M:%S")
                    self.displayOnLcd('ILLUMINUM \nGREEN HOUSE TECH')
                    time.sleep(5)
                    self.displayOnLcd('TAITA FARM')
                    time.sleep(5)
                    self.displayOnLcd('SMART MOBILE \nFARMING')
                    time.sleep(5)
                    self.displayOnLcd('TEMP : ' + str(data[0]) + ' CELSIUS')
                    time.sleep(3)
                    self.displayOnLcd('HUM : ' + str(data[1]) + ' %')
                    time.sleep(3)
                    self.displayOnLcd('SOIL MOISTURE \n ' + str(data[2]) +
                                      ' %')
                    time.sleep(3)
                    self.displayOnLcd('IRRIGATION : ' + str(data[5]))
                    time.sleep(3)
                    self.displayOnLcd('WATER USED : ' + str(data[3]))
                    time.sleep(3)
                    self.displayOnLcd('DATE : ' + str(currentTime))
                    time.sleep(3)
            else:
                self.logMessage.log(
                    'Invalid configuration data / No file found - Display Periodic Message'
                )
                self.run()
        except:
            self.logMessage.log('Error in displaying periodic messages')
            self.run()

    # display text on LCD screen
    def displayOnLcd(self, text):
        if self.const.live:
            self.lcd.clear()
            time.sleep(1)
            self.lcd.message(text)
        else:
            print text
class DisplayPeriodicMessage:

    logMessage = ''
    const = ''
    processSensorData = ''
    lcd = ''

    def __init__(self):
        self.logMessage = LogMessage()
        self.const = Constant()
        self.processSensorData = ProcessSensorReading()
        if self.const.live:
            self.lcd = RPILCD()

    def run(self):
        try:
            if self.processSensorData.checkConfigFileExist():
                while True:
                    data = self.processSensorData.getSensorData()

                    currentTime = time.strftime("%d.%m.%Y %H:%M:%S")
                    self.displayOnLcd('ILLUMINUM \nGREEN HOUSE TECH')
                    time.sleep(5)
                    self.displayOnLcd('TAITA FARM')
                    time.sleep(5)
                    self.displayOnLcd('SMART MOBILE \nFARMING')
                    time.sleep(5)
                    self.displayOnLcd('TEMP : ' + str(data[0]) + ' CELSIUS')
                    time.sleep(3)
                    self.displayOnLcd('HUM : ' + str(data[1]) + ' %')
                    time.sleep(3)
                    self.displayOnLcd('SOIL MOISTURE \n ' + str(data[2]) + ' %')
                    time.sleep(3)
                    self.displayOnLcd('IRRIGATION : ' + str(data[5]))
                    time.sleep(3)
                    self.displayOnLcd('WATER USED : ' + str(data[3]))
                    time.sleep(3)
                    self.displayOnLcd('DATE : ' + str(currentTime))
                    time.sleep(3)
            else:
                self.logMessage.log('Invalid configuration data / No file found - Display Periodic Message')
                self.run()
        except:
            self.logMessage.log('Error in displaying periodic messages')
            self.run()

    # display text on LCD screen
    def displayOnLcd(self, text):
        if self.const.live:
            self.lcd.clear()
            time.sleep(1)
            self.lcd.message(text)
        else:
            print text
Exemplo n.º 3
0
class DailyReport:

    logMessage = ''
    const = ''
    sim = ''
    messages = ''
    processSensorData = ''
    processConfigFile = ''
    bus = ''
    address = 0x04

    def __init__(self):
        self.logMessage = LogMessage()
        self.const = Constant()
        self.sim = SIMOperations()
        self.messages = Message()
        self.processConfigFile = ProcessConfigFile()
        self.processSensorData = ProcessSensorReading()
        self.bus = smbus.SMBus(1)

    def run(self):
        try:
            if self.sim.checkSIMCard():
                if self.processConfigFile.checkValuesInConfigFile():
                    data = self.processSensorData.getSensorData()
                    if len(data) > 0:
                        currentTime = time.strftime("%d.%m.%Y %H:%M:%S")
                        message1 = 'Dear Digital Farmer, here is your farm’s status;'
                        message2 = 'Device ID: %s \n Temperature: %s \n Humidity: %s ' % (
                            'SMF001', str(data[0]), str(data[1]))
                        message3 = 'Soil Moisture: %s \n Liters of water irrigated: %s ' % (
                            str(data[2]), str(data[3]))
                        message4 = 'State of Valve: %s \n Battery voltage: %s \n Date and Time: %s' % (
                            str(data[5]), str(data[4]), str(currentTime))
                        self.sim.sendSMS(message1)
                        time.sleep(2)
                        self.sim.sendSMS(message2)
                        time.sleep(2)
                        self.sim.sendSMS(message3)
                        time.sleep(2)
                        self.sim.sendSMS(message4)
                        self.logMessage.log(
                            'Running daily schedule : (message : ' +
                            str(message1) + str(message2) + str(message3) +
                            str(message4) + ' )')
                        self.processSensorData.updateWaterUsed('0')
                        # send alert to arduino to reset water usage value
                        self.writeNumber(self.const.SENSOR_CODE_WATER_RESET)
                        time.sleep(1)
                        water = self.readNumber()
                        self.processSensorData.updateWaterUsed(water)
                    else:
                        self.logMessage.log('No sensor data saved')
                else:
                    self.logMessage.log(
                        'Invalid configuration data / No file found - Daily report'
                    )
            else:
                self.logMessage.log(
                    'Error No SIM Card detected - Daily report')
        except:
            self.logMessage.log('Error in Daily Report')

    def writeNumber(self, value):
        try:
            self.bus.write_byte(self.address, value)
        except:
            pass
        return -1

    def readNumber(self):
        number = 0
        try:
            number = self.bus.read_byte(self.address)
        except:
            pass
        return number
Exemplo n.º 4
0
class DailyReport:

    logMessage = ''
    const = ''
    sim = ''
    messages = ''
    processSensorData = ''
    processConfigFile = ''
    bus = ''
    address = 0x04

    def __init__(self):
        self.logMessage = LogMessage()
        self.const = Constant()
        self.sim = SIMOperations()
        self.messages = Message()
        self.processConfigFile = ProcessConfigFile()
        self.processSensorData = ProcessSensorReading()
        self.bus = smbus.SMBus(1)

    def run(self):
        try:
            if self.sim.checkSIMCard():
                if self.processConfigFile.checkValuesInConfigFile():
                    data = self.processSensorData.getSensorData()
                    if len(data) > 0:
                        currentTime = time.strftime("%d.%m.%Y %H:%M:%S")
                        message1 = 'Dear Digital Farmer, here is your farm’s status;'
                        message2 = 'Device ID: %s \n Temperature: %s \n Humidity: %s ' % ('SMF001', str(data[0]), str(data[1]))
                        message3 = 'Soil Moisture: %s \n Liters of water irrigated: %s ' % (str(data[2]), str(data[3]))
                        message4 = 'State of Valve: %s \n Battery voltage: %s \n Date and Time: %s' % (str(data[5]), str(data[4]), str(currentTime))
                        self.sim.sendSMS(message1)
                        time.sleep(2)
                        self.sim.sendSMS(message2)
                        time.sleep(2)
                        self.sim.sendSMS(message3)
                        time.sleep(2)
                        self.sim.sendSMS(message4)
                        self.logMessage.log('Running daily schedule : (message : ' + str(message1) + str(message2) + str(message3) + str(message4) + ' )')
                        self.processSensorData.updateWaterUsed('0')
                        # send alert to arduino to reset water usage value
                        self.writeNumber(self.const.SENSOR_CODE_WATER_RESET)
                        time.sleep(1)
                        water = self.readNumber()
                        self.processSensorData.updateWaterUsed(water)
                    else:
                        self.logMessage.log('No sensor data saved')
                else:
                    self.logMessage.log('Invalid configuration data / No file found - Daily report')
            else:
                self.logMessage.log('Error No SIM Card detected - Daily report')
        except:
            self.logMessage.log('Error in Daily Report')

    def writeNumber(self, value):
        try:
            self.bus.write_byte(self.address, value)
        except:
            pass
        return -1

    def readNumber(self):
        number = 0
        try:
            number = self.bus.read_byte(self.address)
        except:
            pass
        return number