diff --git a/openplotterI2c/i2cPostInstall.py b/openplotterI2c/i2cPostInstall.py index 71f52cb..9c9b40f 100644 --- a/openplotterI2c/i2cPostInstall.py +++ b/openplotterI2c/i2cPostInstall.py @@ -28,7 +28,7 @@ def main(): print(_('Installing python packages...')) try: - subprocess.call(['pip3', 'install', 'adafruit-blinka','adafruit-circuitpython-tca9548a','adafruit-circuitpython-bme680','adafruit-circuitpython-ads1x15', 'adafruit-circuitpython-htu21d', 'adafruit-circuitpython-bmp280', 'adafruit-circuitpython-bme280', 'adafruit-circuitpython-bmp3xx', 'adafruit-circuitpython-ina260', 'adafruit-circuitpython-ina219', 'adafruit-circuitpython-lps35hw', 'adafruit-circuitpython-bh1750','adafruit-circuitpython-ahtx0', '-U', '--break-system-packages']) + subprocess.call(['pip3', 'install', 'adafruit-blinka','adafruit-circuitpython-tca9548a','adafruit-circuitpython-bme680','adafruit-circuitpython-ads1x15', 'adafruit-circuitpython-htu21d', 'adafruit-circuitpython-bmp280', 'adafruit-circuitpython-bme280', 'adafruit-circuitpython-bmp3xx', 'adafruit-circuitpython-ina260', 'adafruit-circuitpython-ina219', 'adafruit-circuitpython-lps35hw', 'adafruit-circuitpython-bh1750','adafruit-circuitpython-ahtx0', 'adafruit-circuitpython-dps310', '-U', '--break-system-packages']) print(_('DONE')) except Exception as e: print(_('FAILED: ')+str(e)) diff --git a/openplotterI2c/openplotterI2c.py b/openplotterI2c/openplotterI2c.py index e247917..a515429 100644 --- a/openplotterI2c/openplotterI2c.py +++ b/openplotterI2c/openplotterI2c.py @@ -51,7 +51,7 @@ def __init__(self): self.i2c_sensors_def['HTU21D'] = {'magnitudes': [_('humidity'),_('temperature')], 'SKkeys': ['environment.inside.relativeHumidity',''], 'multiplexing':True} self.i2c_sensors_def['LPS3X'] = {'magnitudes': [_('pressure'),_('temperature')], 'SKkeys': ['environment.outside.pressure',''], 'multiplexing':True} self.i2c_sensors_def['MS5607-02BA03'] = {'magnitudes': [_('pressure'),_('temperature')], 'SKkeys': ['environment.outside.pressure',''], 'multiplexing':False} - + self.i2c_sensors_def['DPS310'] = {'magnitudes': [_('pressure'),_('temperature')], 'SKkeys': ['environment.outside.pressure',''], 'multiplexing':False} wx.Frame.__init__(self, None, title='I2C '+version, size=(800,444)) self.SetFont(wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL)) icon = wx.Icon(self.currentdir+"/data/openplotter-i2c.png", wx.BITMAP_TYPE_PNG) diff --git a/openplotterI2c/openplotterI2cRead.py b/openplotterI2c/openplotterI2cRead.py index 258bdc7..672e939 100644 --- a/openplotterI2c/openplotterI2cRead.py +++ b/openplotterI2c/openplotterI2cRead.py @@ -78,7 +78,7 @@ def main(): conf2 = conf.Conf() platform2 = platform.Platform() if conf2.get('GENERAL', 'debug') == 'yes': debug = True - else: debug = False + else: debug = True try: i2c_sensors=eval(conf2.get('I2C', 'sensors')) except: i2c_sensors=[] instances = [] @@ -286,6 +286,18 @@ def main(): if i2c_sensors[i]['address']: instances.append({'name':i,'type':'ATHX0','tick':[now,now],'sensor':i2c_sensors[i],'object':adafruit_ahtx0.AHTx0(muxInstances[i2c_sensors[i]['address']][i2c_sensors[i]['channel']-1])}) + elif i2c_sensors[i]['type'] == 'DPS310': + import adafruit_dps310 + if i2c_sensors[i]['channel'] == 0: + if i2c_sensors[i]['address']: + instances.append({'name':i,'type':'DPS310','tick':[now,now],'sensor':i2c_sensors[i],'object':adafruit_dps310.basic.DPS310(i2c, address=int(i2c_sensors[i]['address'], 16))}) + else: + if debug: + print('Multiplexing not implemented for DPS310 sensors') + sys.stdout.flush() + + + except Exception as e: error = 'Error processing '+i+': '+str(e) i2c_sensors[i]['error'] = error @@ -733,6 +745,41 @@ def main(): Erg = getPaths(Erg,humidityValue,humidityValue2,humidityKey,humidityOffset,humidityFactor,humidityRaw) instances[index]['tick'][1] = time.time() + elif i['type'] == 'DPS310': + pressureKey = i['sensor']['data'][0]['SKkey'] + temperatureKey = i['sensor']['data'][1]['SKkey'] + + if temperatureKey: + temperatureRaw = i['object'].temperature + if debug: + print("DPS310 temperature:",temperatureRaw) + temperatureRate = i['sensor']['data'][1]['rate'] + temperatureOffset = i['sensor']['data'][1]['offset'] + temperatureFactor = i['sensor']['data'][1]['factor'] + tick0 = time.time() + if tick0 - i['tick'][0] > temperatureRate: + temperatureValue = temperatureRaw + try: temperatureValue2 = float(temperatureValue)+273.15 + except: temperatureValue2 = '' + Erg = getPaths(Erg,temperatureValue,temperatureValue2,temperatureKey,temperatureOffset,temperatureFactor,temperatureRaw) + instances[index]['tick'][1] = time.time() + + if pressureKey: + pressureRaw = i['object'].pressure + if debug: + print("DPS310 pressure:",pressureRaw,"signalk key:",pressureKey) + pressureRate = i['sensor']['data'][0]['rate'] + pressureOffset = i['sensor']['data'][0]['offset'] + pressureFactor = i['sensor']['data'][0]['factor'] + tick0 = time.time() + if tick0 - i['tick'][1] > pressureRate: + pressureValue = pressureRaw * 100 + pressureValue2 = pressureValue + Erg = getPaths(Erg,pressureValue,pressureValue2,pressureKey,pressureOffset,pressureFactor,pressureRaw) + + instances[index]['tick'][0] = time.time() + + except Exception as e: if debug: print('Error reading '+i['name']+': '+str(e)) @@ -751,4 +798,4 @@ def main(): if __name__ == '__main__': main() - \ No newline at end of file +