Rev 16 | Rev 18 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
#!/usr/bin/python3# -*- coding: utf-8 -*-## sensors/__init__.py## Copyright 2020 Ron Wellsted <ron@wellsted.org.uk>## This program is free software; you can redistribute it and/or modify# it under the terms of the GNU General Public License as published by# the Free Software Foundation; either version 2 of the License, or# (at your option) any later version.## This program is distributed in the hope that it will be useful,# but WITHOUT ANY WARRANTY; without even the implied warranty of# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# GNU General Public License for more details.## You should have received a copy of the GNU General Public License# along with this program; if not, write to the Free Software# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,# MA 02110-1301, USA.##import re, smbus, w1thermsensorimport gpiozeroi2cbus = Nonedebug = True# find out which revision of RPi we are running on#info = open('/proc/cpuinfo')#for line in info:# line = line.rstrip()# if re.search('Revision', line):# x, x, rev = line.split()if gpiozero.pi_info.revision == '0002':i2cbus = 0else:i2cbus = 1# BME280 Temperature, Pressure & Humidity sensor_bme280_probe_ = [0x76, 0x77]bme280_address = None# BH1750 Ambient light level sensor_bh1750_probe_ = [0x5c, 0x23]bh1750_address = None# PCF8574 8 pin I/O device (wind direction sensor)_pcf8574_probe_ = [0x20, 0x21, 0x22, 0x24, 0x25, 0x26, 0x27]pcf8574_address = Noneif i2cbus is not None:bus = smbus.SMBus(i2cbus)for device in _bme280_probe_:try:bus.read_byte(device)bme280_address = deviceexcept: # exception if read_byte failspassfor device in _bh1750_probe_:try:bus.read_byte(device)bh1750_address = deviceexcept: # exception if read_byte failspassfor device in _pcf8574_probe_:try:bus.read_byte(device)pcf8574_address = deviceexcept: # exception if read_byte failspassif debug:if i2cbus is not None:print('i2cbus=',i2cbus)if bme280_address is not None:print('bme280=', hex(bme280_address))else:print('bme280 not found')if bh1750_address is not None:print('bh1750=', hex(bh1750_address))else:print('bh1750 not found')if pcf8574_address is not None:print('pcf8574=', hex(pcf8574_address))else:print('pcf8574 not found')else:print('i2cbus not found, sensors not availabe')# end of if debug