Пример #1
0
 def __init__(self):
     self._logger = Logger("Humidistat")
     self._logger.setLevel(Logger.INFO)
     self._logger.debug("initialize Humidistat object")
     self._co2 = SCD30()
     self._humidifier = Humidifier()
     self._target_rh = 80
def co2_attach():
    scl_pin_scd30   = Pin(pin_I2C_SCL, Pin.IN, Pin.PULL_UP)
    sda_pin_scd30   = Pin(pin_I2C_SDA, Pin.IN, Pin.PULL_UP)
    i2c_scd30 = I2C(scl=scl_pin_scd30, sda=sda_pin_scd30, freq=40000)

    ### debug scan i2c_scd30-bus and print found devices
    DEBUG = True
    if DEBUG:
        dev_scd30 = i2c_scd30.scan()
        print("idev= ", end='');
        print(dev_scd30)
        time.sleep_ms(200)

    ### attach to sensor
    scd30 = SCD30(i2c_scd30, 0x61)
    scd30.soft_reset()
    time.sleep_ms(1000)

    fw_version = scd30.get_firmware_version()
    print("SCD30 Firmware Version: major=0x%02x minor=0x%02x" %  fw_version)

    scd30.set_measurement_interval(2)
    time.sleep_ms(100)

    scd30.start_continous_measurement()
    time.sleep_ms(100)

    return scd30
Пример #3
0
    def getSCD(self):
        """Record CO2 sensor (scd30)
            Generates co2, temperature and relative humidity
        Args:
            None
        Returns:
            None
        Raises:
            None
        """

        from scd30 import SCD30
        self._scd = SCD30(self._logger)
        self._logger.debug("In SCD30")
        try:
            co2, temp, rh = self._scd.get_data()

            status = 'Success'
            if self._test:
                status = 'Test'
            c_rec = [
                'Environment_Observation', '', 'Top', 'Air', 'CO2',
                "{:10.1f}".format(co2), 'ppm', 'scd30', status, ''
            ]
            t_rec = [
                'Environment_Observation', '', 'Top', 'Air', 'Temperature',
                "{:10.1f}".format(temp), 'Centigrade', 'scd30', status, ''
            ]
            h_rec = [
                'Environment_Observation', '', 'Top', 'Air', 'Humidity',
                "{:10.1f}".format(rh), 'Percent', 'scd30', status, ''
            ]
            self._persist.save(c_rec)
            self._persist.save(t_rec)
            self._persist.save(h_rec)
            self._logger.info("{} {:6.1f}, {} {:3.1f}, {} {:3.1f}".format(
                "EnvObsv-CO2:", co2, "Temp", temp, "Humidity:", rh))
        except Exception as e:
            status = 'Failure'
            if self._test:
                status = 'Test'
            c_rec = [
                'Environment_Observation', '', 'Top', 'Air', 'CO2', '', 'ppm',
                'scd30', status,
                str(e)
            ]
            t_rec = [
                'Environment_Observation', '', 'Top', 'Air', 'Temperature', '',
                'Centigrde', 'scd30', status, ''
            ]
            h_rec = [
                'Environment_Observation', '', 'Top', 'Air', 'Humidity', '',
                'Percent', 'scd30', status, ''
            ]
            self._persist.save(c_rec)
            self._persist.save(t_rec)
            self._persist.save(h_rec)
            self._logger.debug("{} {}".format("EnvObsv-SCD30 Error:", e))
Пример #4
0
    def __init__(self, update_env=600):
        self._scd30 = SCD30(use_pin=True)
        self._ccs811 = CCS811(use_pin=True)

        self.CO2 = 0
        self.eCO2 = 0
        self.temp = 0
        self.temp_NTC = 0
        self.hum = 0
        self.TVOC = 0

        self._update_env = update_env

        gevent.spawn(self._data_loop)
        gevent.spawn(self._update_env_loop)
Пример #5
0
    def __init__(self, send_queue):
        self.sendToQueue = send_queue
        self.uuid = my_ids.UUID()

        self.bme280 = BME280()
        self.measurement_interval = 60
        auto_calibration = 1
        self.scd30 = SCD30(self.measurement_interval, auto_calibration,
                           int(self.bme280.read_pressure()))

        self.lock = threading.Lock()
        self.current_pressure = None
        self.current_scd30_data = None

        self.readThread = threading.Thread(target=self.read_thread)
        self.readThread.setDaemon(True)
        self.readThread.start()
Пример #6
0
    def getAirCanopyCO2Obsv(self, test=False):
        '''CO2 from the canopy (SCD30 Sensiron sensor)
           Args:
               self:
               test:
           Returns:
               None:
           Raises:
               None
        '''               
        
        status_qualifier = 'Success'
        co2 = 0
        temp = 0
        rh = 0
        try:
            sensor = SCD30()
            sensor.start_periodic_measurement(test)   
            co2, temp, rh = sensor.get_data(test)

            if test:
                status_qualifier = 'Test'
            
            saveList([self._activity_type, '', 'Canopy', 'Air', 'CO2', "{:3.1f}".format(co2), 'ppm', 'SCD30', status_qualifier,''])                                                
            self._logger.debug("{}, {}, {:10.1f}".format("Canopy CO2", status_qualifier, co2))            
            
            saveList([self._activity_type, '', 'Canopy', 'Air', 'Temperature', "{:3.1f}".format(temp), 'ppm', 'SCD30', status_qualifier,''])                                                
            self._logger.debug("{}, {}, {:10.1f}".format("Canopy Temperature", status_qualifier, temp))            
                               
            saveList([self._activity_type, '', 'Canopy', 'Air', 'Humidity', "{:3.1f}".format(rh), 'ppm', 'SCD30', status_qualifier,''])                                                
            self._logger.debug("{}, {}, {:10.1f}".format("Canopy Humidity", status_qualifier, rh))            
        except Exception as e:
            status_qualifier = 'Failure'
            if test:
                status_qualifier = 'Test'
            saveList([self._activity_type, '', 'Canopy', 'Air', 'CO2', '', 'ppm', 'SCD30', status_qualifier,str(e)])                                                            
            self._logger.error("{}, {}".format("Canopy CO2", e))                                           

            saveList([self._activity_type, '', 'Canopy', 'Air', 'Temperature', '', 'c', 'SCD30', status_qualifier,str(e)])                                                            
            self._logger.error("{}, {}".format("Canopy CO2", e))                                           

            saveList([self._activity_type, '', 'Canopy', 'Air', 'Humidity', '', 'percent', 'SCD30', status_qualifier,str(e)])                                                            
            self._logger.error("{}, {}".format("Canopy Humidity", e))
Пример #7
0
from pyb import LED
import sys, os, pyb
import machine
from machine import Pin
import time
import utime
from scd30 import SCD30
from machine import I2C

errled = LED(1)
led = LED(2)

# Get Sensor, should be scannable here...
i2c = I2C(1)
scd30 = SCD30(i2c, 0x61)

# Make sure we have a SD card!
sd = pyb.SDCard()

if sd.present() != 1:
    errled.on()
    machine.deepsleep()

# Power off the board...
sd.power(0)

en_3v3 = Pin('EN_3V3')
en_3v3.value(0)

while True:
    data = {}
Пример #8
0
from scd30 import SCD30

sensor = SCD30()



data = sensor.get_data_ready()

print("result:")
for byte in data:
    print(byte)
Пример #9
0
 def __init__(self):
     self.logger = Logger("CO2_stat")
     self.logger.debug("initialize CO2 controller object")
     self._co2 = SCD30(self.logger)
     self._fan = Fan(self.logger)