OK. Let's put a bit more logging in bme280wx.py, we'll just look at 
pressure for now. Move aside your existing /usr/share/weewx/user/bme280wx.py 
by renaming it as bme280wx_orig.py. Download the attached bme280wx.py and 
save it in it's place in the /usr/share/weewx/user directory. Leave debug = 
1 and restart WeeWX. Post the log including WeeWX startup and the first 
half dozen loop packets.

Gary
On Sunday, 8 August 2021 at 21:47:36 UTC+10 wxwatching wrote:

> Ok, here's the current section from config file:
>
> [Engine]
>
>     # The following section specifies which services should be run and in 
> what order.
>     [[Services]]
>         prep_services = weewx.engine.StdTimeSynch
>         data_services = user.bme280wx.Bme280wx,
>         process_services = weewx.engine.StdConvert, 
> weewx.engine.StdCalibrate, weewx.engine.StdQC, 
> weewx.wxservices.StdWXCalculate
>         xtype_services = weewx.wxxtypes.StdWXXTypes, 
> weewx.wxxtypes.StdPressureCooker, weewx.wxxtypes.StdRainRater, 
> weewx.wxxtypes.StdDelta
>         archive_services = weewx.engine.StdArchive
>         restful_services = weewx.restx.StdStationRegistry, 
> weewx.restx.StdWunderground, weewx.restx.StdPWSweather, 
> weewx.restx.StdCWOP, weewx.restx.StdWOW, weewx.restx.StdAWEKAS
>         report_services = weewx.engine.StdPrint, weewx.engine.StdReport
>
> [Bme280wx]
>     i2c_port = 1
>     i2c_address = 0x76
>     usUnits = US
>     pressureKeys = pressure
>     pressure_must_have = ""
>     humidityKeys = inHumidity
>     humidity_must_have = ""
>     temperatureKeys = inTemp
>     temperature_must_have = ""
>
> New problem now is that the loop apparently hangs and WeeWX quits 
> reporting weather data.
>
> sudo weewxd
> LOOP:   2021-08-08 07:36:29 EDT (1628422589) dateTime: 1628422589, lux: 
> 13470, maxSolarRad: None, outTempBatteryStatus: 0, radiation: 
> 106.314127861, rainRate: 0, usUnits: 1, UV: 1, windSpeed: 0.0
> LOOP:   2021-08-08 07:36:29 EDT (1628422589) dateTime: 1628422589, lux: 
> 13470, maxSolarRad: None, outTempBatteryStatus: 0, radiation: 
> 106.314127861, rainRate: 0, usUnits: 1, UV: 1, windSpeed: 0.0
> LOOP:   2021-08-08 07:36:29 EDT (1628422589) dateTime: 1628422589, lux: 
> 13470, maxSolarRad: None, outTempBatteryStatus: 0, radiation: 
> 106.314127861, rainRate: 0, usUnits: 1, UV: 1, windSpeed: 0.0
> LOOP:   2021-08-08 07:36:39 EDT (1628422599) appTemp: 78.5400076483, 
> cloudbase: 229.659363466, dateTime: 1628422599, dewpoint: 70.6, heatindex: 
> 72.06, humidex: 86.4663612495, maxSolarRad: None, outHumidity: 100.0, 
> outTemp: 70.6, outTempBatteryStatus: 0, rainRate: 0, usUnits: 1, windchill: 
> 70.6, windSpeed: 0.0
> LOOP:   2021-08-08 07:36:39 EDT (1628422599) appTemp: 78.5400076483, 
> cloudbase: 229.659363466, dateTime: 1628422599, dewpoint: 70.6, heatindex: 
> 72.06, humidex: 86.4663612495, maxSolarRad: None, outHumidity: 100.0, 
> outTemp: 70.6, outTempBatteryStatus: 0, rainRate: 0, usUnits: 1, windchill: 
> 70.6, windSpeed: 0.0
> LOOP:   2021-08-08 07:36:39 EDT (1628422599) appTemp: 78.5400076483, 
> cloudbase: 229.659363466, dateTime: 1628422599, dewpoint: 70.6, heatindex: 
> 72.06, humidex: 86.4663612495, maxSolarRad: None, outHumidity: 100.0, 
> outTemp: 70.6, outTempBatteryStatus: 0, rainRate: 0, usUnits: 1, windchill: 
> 70.6, windSpeed: 0.0
> LOOP:   2021-08-08 07:36:49 EDT (1628422609) dateTime: 1628422609, 
> maxSolarRad: None, outTempBatteryStatus: 0, rain: None, rainRate: 0, 
> rain_total: 2.07, usUnits: 1, windDir: None, windSpeed: 0.0
> LOOP:   2021-08-08 07:36:49 EDT (1628422609) dateTime: 1628422609, 
> maxSolarRad: None, outTempBatteryStatus: 0, rain: 0.0, rainRate: 0, 
> rain_total: 2.07, usUnits: 1, windDir: None, windSpeed: 0.0
> LOOP:   2021-08-08 07:36:49 EDT (1628422609) dateTime: 1628422609, 
> maxSolarRad: None, outTempBatteryStatus: 0, rain: 0.0, rainRate: 0, 
> rain_total: 2.07, usUnits: 1, windDir: None, windSpeed: 0.0
>
> And the output from the syslog is:
>
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO __main__: Initializing weewx 
> version 4.5.1
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO __main__: Using Python 2.7.16 
> (default, Oct 10 2019, 22:02:15) #012[GCC 8.3.0]
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO __main__: Platform 
> Linux-5.10.52-v7+-armv7l-with-debian-10.10
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO __main__: Locale is 
> 'en_US.UTF-8'
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO __main__: Using configuration 
> file /etc/weewx/weewx.conf
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO __main__: Debug is 1
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG __main__: Initializing engine
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO weewx.engine: Loading station 
> type SDR (user.sdr)
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO user.sdr: driver version is 
> 0.78
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO user.sdr: sensor map is 
> {u'outTempBatteryStatus': u'battery.0222.AcuriteAtlasPacket', u'outTemp': 
> u'temperature.0222.AcuriteAtlasPacket', u'outHumidity': 
> u'humidity.0222.AcuriteAtlasPacket', u'windSpeed': 
> u'wind_speed.0222.AcuriteAtlasPacket', u'windDir': 
> u'wind_dir.0222.AcuriteAtlasPacket', u'UV': u'uv.0222.AcuriteAtlasPacket', 
> u'rain_total': u'rain_total.0222.AcuriteAtlasPacket', u'radiation': 
> u'lux.0222.AcuriteAtlasPacket', u'strikes_total': 
> u'strike_count.0222.AcuriteAtlasPacket', u'strike_distance': 
> u'strike_distance.0222.AcuriteAtlasPacket', u'lux': 
> u'lux.0222.AcuriteAtlasPacket', u'log_unknown_sensors': u'True', 
> u'log_unmapped_sensors': u'True'}
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO user.sdr: deltas is {u'rain': 
> u'rain_total', u'lightning_strike_count': u'strikes_total'}
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO user.sdr: startup process 
> 'rtl_433 -M utc -F json'
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG user.sdr: start async reader 
> for stdout-thread
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG user.sdr: start async reader 
> for stderr-thread
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.engine.StdTimeSynch
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.engine.StdTimeSynch
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service user.bme280wx.Bme280wx
> Aug  8 07:36:23 raspberrypi weewxd: bme280: bme280wx configuration 
> {u'i2c_port': u'1', u'i2c_address': u'0x76', u'usUnits': u'US', 
> u'pressureKeys': u'pressure', u'pressure_must_have': u'', u'humidityKeys': 
> u'inHumidity', u'humidity_must_have': u'', u'temperatureKeys': u'inTemp', 
> u'temperature_must_have': u''}
> Aug  8 07:36:23 raspberrypi weewxd: bme280: I2C port: 1
> Aug  8 07:36:23 raspberrypi weewxd: bme280: I2C address: 0x76
> Aug  8 07:36:23 raspberrypi weewxd: bme280: fallback default units: US
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service user.bme280wx.Bme280wx
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.engine.StdConvert
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO weewx.engine: StdConvert 
> target unit is 0x1
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.engine.StdConvert
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.engine.StdCalibrate
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.engine.StdCalibrate
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.engine.StdQC
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.engine.StdQC
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.wxservices.StdWXCalculate
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.manager: Daily summary 
> version is 4.0
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.wxservices.StdWXCalculate
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.wxxtypes.StdWXXTypes
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.wxxtypes.StdWXXTypes
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.wxxtypes.StdPressureCooker
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.wxxtypes.StdPressureCooker
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.wxxtypes.StdRainRater
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.wxxtypes.StdRainRater
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.wxxtypes.StdDelta
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.wxxtypes.StdDelta
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.engine.StdArchive
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO weewx.engine: Archive will 
> use data binding wx_binding
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO weewx.engine: Record 
> generation will be attempted in 'hardware'
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO weewx.engine: Using archive 
> interval of 60 seconds (specified in weewx configuration)
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Use LOOP data 
> in hi/low calculations: 1
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.engine.StdArchive
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.restx.StdStationRegistry
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO weewx.restx: StationRegistry: 
> Registration not requested.
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.restx.StdStationRegistry
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.restx.StdWunderground
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.restx: WU essentials: 
> {}
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO weewx.restx: Wunderground-RF: 
> Data for station KNCDUNN5 will be posted
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.restx.StdWunderground
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.restx.StdPWSweather
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO weewx.restx: PWSWeather: Data 
> for station KNCDUNN5 will be posted
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.restx.StdPWSweather
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.restx.StdCWOP
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO weewx.restx: CWOP: Data for 
> station KG4AGD will be posted
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.restx.StdCWOP
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.restx.StdWOW
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO weewx.restx: WOW: Posting not 
> enabled.
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.restx.StdWOW
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.restx.StdAWEKAS
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO weewx.restx: AWEKAS: Posting 
> not enabled.
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.manager: Daily summary 
> version is 4.0
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.restx.StdAWEKAS
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.engine.StdPrint
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.engine.StdPrint
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Loading 
> service weewx.engine.StdReport
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Finished 
> loading service weewx.engine.StdReport
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO __main__: Starting up weewx 
> version 4.5.1
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.engine: Station does 
> not support reading the time
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO weewx.engine: Using binding 
> 'wx_binding' to database 'weewx.sdb'
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO weewx.manager: Starting 
> backfill of daily summaries
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.manager: Daily summary 
> version is 4.0
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO weewx.manager: Daily 
> summaries up to date
> Aug  8 07:36:23 raspberrypi weewx[2566] INFO weewx.engine: Starting main 
> packet loop.
> Aug  8 07:36:23 raspberrypi weewx[2566] DEBUG weewx.manager: Daily summary 
> version is 4.0
> Aug  8 07:36:26 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:36:29 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:36:33 raspberrypi weewx[2566] DEBUG user.sdr: lines=[u'{"time" : 
> "2021-08-08 11:36:29", "model" : "Acurite-Atlas", "id" : 546, "channel" : 
> "A", "sequence_num" : 0, "battery_ok" : 1, "message_type" : 39, 
> "wind_avg_mi_h" : 0.000, "uv" : 1, "lux" : 13470, "strike_count" : 138, 
> "strike_distance" : 27, "exception" : 0, "raw_msg" : 
> "c222e700810ac322db16"}\n', u'{"time" : "2021-08-08 11:36:29", "model" : 
> "Acurite-Atlas", "id" : 546, "channel" : "A", "sequence_num" : 1, 
> "battery_ok" : 1, "message_type" : 39, "wind_avg_mi_h" : 0.000, "uv" : 1, 
> "lux" : 13470, "strike_count" : 138, "strike_distance" : 27, "exception" : 
> 0, "raw_msg" : "c622e700810ac322db1a"}\n', u'{"time" : "2021-08-08 
> 11:36:29", "model" : "Acurite-Atlas", "id" : 546, "channel" : "A", 
> "sequence_num" : 2, "battery_ok" : 1, "message_type" : 39, "wind_avg_mi_h" 
> : 0.000, "uv" : 1, "lux" : 13470, "strike_count" : 138, "strike_distance" : 
> 27, "exception" : 0, "raw_msg" : "ca22e700810ac322db1e"}\n']
> Aug  8 07:36:33 raspberrypi weewx[2566] DEBUG user.sdr: packet={u'UV': 1, 
> u'lux': 13470, u'outTempBatteryStatus': 0, u'radiation': 13470, 'dateTime': 
> 1628422589, u'windSpeed': 0.0, 'usUnits': 1}
> Aug  8 07:36:33 raspberrypi weewxd: bme280: BME280 data 
> compensated_reading(id=54dfb6fb-2a31-4fbf-8c62-99294a28c2f2, 
> timestamp=2021-08-08 07:36:33.390092, temp=28.094 °C, pressure=1009.87 hPa, 
> humidity=37.42 % rH)
> Aug  8 07:36:33 raspberrypi weewxd: bme280: {u'UV': 1, u'lux': 13470, 
> u'outTempBatteryStatus': 0, u'radiation': 13470, 'dateTime': 1628422589, 
> u'windSpeed': 0.0, 'usUnits': 1}
> Aug  8 07:36:33 raspberrypi weewx[2566] DEBUG user.sdr: packet={u'UV': 1, 
> u'lux': 13470, u'outTempBatteryStatus': 0, u'radiation': 13470, 'dateTime': 
> 1628422589, u'windSpeed': 0.0, 'usUnits': 1}
> Aug  8 07:36:33 raspberrypi weewxd: bme280: BME280 data 
> compensated_reading(id=bfb12de0-9f08-4dcb-b75f-5582a7bf8439, 
> timestamp=2021-08-08 07:36:33.462064, temp=28.094 °C, pressure=1009.79 hPa, 
> humidity=37.41 % rH)
> Aug  8 07:36:33 raspberrypi weewxd: bme280: {u'UV': 1, u'lux': 13470, 
> u'outTempBatteryStatus': 0, u'radiation': 13470, 'dateTime': 1628422589, 
> u'windSpeed': 0.0, 'usUnits': 1}
> Aug  8 07:36:33 raspberrypi weewx[2566] DEBUG user.sdr: packet={u'UV': 1, 
> u'lux': 13470, u'outTempBatteryStatus': 0, u'radiation': 13470, 'dateTime': 
> 1628422589, u'windSpeed': 0.0, 'usUnits': 1}
> Aug  8 07:36:33 raspberrypi weewxd: bme280: BME280 data 
> compensated_reading(id=31075ae2-5934-4757-846a-3d13f6b1ec6f, 
> timestamp=2021-08-08 07:36:33.508809, temp=28.104 °C, pressure=1009.80 hPa, 
> humidity=37.41 % rH)
> Aug  8 07:36:33 raspberrypi weewxd: bme280: {u'UV': 1, u'lux': 13470, 
> u'outTempBatteryStatus': 0, u'radiation': 13470, 'dateTime': 1628422589, 
> u'windSpeed': 0.0, 'usUnits': 1}
> Aug  8 07:36:33 raspberrypi weewx[2566] INFO weewx.restx: Wunderground-RF: 
> Published record 2021-08-08 07:36:29 EDT (1628422589)
> Aug  8 07:36:34 raspberrypi weewx[2566] INFO weewx.restx: Wunderground-RF: 
> Published record 2021-08-08 07:36:29 EDT (1628422589)
> Aug  8 07:36:36 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:36:39 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:36:43 raspberrypi weewx[2566] DEBUG user.sdr: lines=[u'{"time" : 
> "2021-08-08 11:36:39", "model" : "Acurite-Atlas", "id" : 546, "channel" : 
> "A", "sequence_num" : 0, "battery_ok" : 1, "message_type" : 37, 
> "wind_avg_mi_h" : 0.000, "temperature_F" : 70.600, "humidity" : 100, 
> "strike_count" : 138, "strike_distance" : 27, "exception" : 0, "raw_msg" : 
> "c222650088d2e422db84"}\n', u'{"time" : "2021-08-08 11:36:39", "model" : 
> "Acurite-Atlas", "id" : 546, "channel" : "A", "sequence_num" : 1, 
> "battery_ok" : 1, "message_type" : 37, "wind_avg_mi_h" : 0.000, 
> "temperature_F" : 70.600, "humidity" : 100, "strike_count" : 138, 
> "strike_distance" : 27, "exception" : 0, "raw_msg" : 
> "c622650088d2e422db88"}\n', u'{"time" : "2021-08-08 11:36:39", "model" : 
> "Acurite-Atlas", "id" : 546, "channel" : "A", "sequence_num" : 2, 
> "battery_ok" : 1, "message_type" : 37, "wind_avg_mi_h" : 0.000, 
> "temperature_F" : 70.600, "humidity" : 100, "strike_count" : 138, 
> "strike_distance" : 27, "exception" : 0, "raw_msg" : 
> "ca22650088d2e422db8c"}\n']
> Aug  8 07:36:43 raspberrypi weewx[2566] DEBUG user.sdr: 
> packet={u'outHumidity': 100.0, u'outTempBatteryStatus': 0, 'dateTime': 
> 1628422599, u'outTemp': 70.6, u'windSpeed': 0.0, 'usUnits': 1}
> Aug  8 07:36:43 raspberrypi weewxd: bme280: BME280 data 
> compensated_reading(id=02e0b8d9-bffa-4de7-a8b7-88b422469a98, 
> timestamp=2021-08-08 07:36:43.310072, temp=28.125 °C, pressure=1009.78 hPa, 
> humidity=37.38 % rH)
> Aug  8 07:36:43 raspberrypi weewxd: bme280: {u'outHumidity': 100.0, 
> u'outTempBatteryStatus': 0, 'dateTime': 1628422599, u'outTemp': 70.6, 
> u'windSpeed': 0.0, 'usUnits': 1}
> Aug  8 07:36:43 raspberrypi weewx[2566] DEBUG user.sdr: 
> packet={u'outHumidity': 100.0, u'outTempBatteryStatus': 0, 'dateTime': 
> 1628422599, u'outTemp': 70.6, u'windSpeed': 0.0, 'usUnits': 1}
> Aug  8 07:36:43 raspberrypi weewxd: bme280: BME280 data 
> compensated_reading(id=6b2484e3-7c77-4af5-b3e9-536bef3aec7c, 
> timestamp=2021-08-08 07:36:43.342067, temp=28.130 °C, pressure=1009.79 hPa, 
> humidity=37.38 % rH)
> Aug  8 07:36:43 raspberrypi weewxd: bme280: {u'outHumidity': 100.0, 
> u'outTempBatteryStatus': 0, 'dateTime': 1628422599, u'outTemp': 70.6, 
> u'windSpeed': 0.0, 'usUnits': 1}
> Aug  8 07:36:43 raspberrypi weewx[2566] DEBUG user.sdr: 
> packet={u'outHumidity': 100.0, u'outTempBatteryStatus': 0, 'dateTime': 
> 1628422599, u'outTemp': 70.6, u'windSpeed': 0.0, 'usUnits': 1}
> Aug  8 07:36:43 raspberrypi weewxd: bme280: BME280 data 
> compensated_reading(id=54e69c0c-a40d-4f3c-b884-aa873f0933b8, 
> timestamp=2021-08-08 07:36:43.376732, temp=28.130 °C, pressure=1009.84 hPa, 
> humidity=37.40 % rH)
> Aug  8 07:36:43 raspberrypi weewxd: bme280: {u'outHumidity': 100.0, 
> u'outTempBatteryStatus': 0, 'dateTime': 1628422599, u'outTemp': 70.6, 
> u'windSpeed': 0.0, 'usUnits': 1}
> Aug  8 07:36:43 raspberrypi weewx[2566] INFO weewx.restx: Wunderground-RF: 
> Published record 2021-08-08 07:36:39 EDT (1628422599)
> Aug  8 07:36:44 raspberrypi weewx[2566] INFO weewx.restx: Wunderground-RF: 
> Published record 2021-08-08 07:36:39 EDT (1628422599)
> Aug  8 07:36:46 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:36:49 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:36:53 raspberrypi weewx[2566] DEBUG user.sdr: lines=[u'{"time" : 
> "2021-08-08 11:36:49", "model" : "Acurite-Atlas", "id" : 546, "channel" : 
> "A", "sequence_num" : 0, "battery_ok" : 1, "message_type" : 38, 
> "wind_avg_mi_h" : 0.000, "wind_dir_deg" : 25.000, "rain_in" : 2.070, 
> "strike_count" : 138, "strike_distance" : 27, "exception" : 0, "raw_msg" : 
> "c22266000065cf22db7b"}\n', u'{"time" : "2021-08-08 11:36:49", "model" : 
> "Acurite-Atlas", "id" : 546, "channel" : "A", "sequence_num" : 1, 
> "battery_ok" : 1, "message_type" : 38, "wind_avg_mi_h" : 0.000, 
> "wind_dir_deg" : 25.000, "rain_in" : 2.070, "strike_count" : 138, 
> "strike_distance" : 27, "exception" : 0, "raw_msg" : 
> "c62266000065cf22db7f"}\n', u'{"time" : "2021-08-08 11:36:49", "model" : 
> "Acurite-Atlas", "id" : 546, "channel" : "A", "sequence_num" : 2, 
> "battery_ok" : 1, "message_type" : 38, "wind_avg_mi_h" : 0.000, 
> "wind_dir_deg" : 25.000, "rain_in" : 2.070, "strike_count" : 138, 
> "strike_distance" : 27, "exception" : 0, "raw_msg" : 
> "ca2266000065cf22db83"}\n']
> Aug  8 07:36:53 raspberrypi weewx[2566] DEBUG user.sdr: 
> packet={u'outTempBatteryStatus': 0, 'dateTime': 1628422609, u'windDir': 
> 25.0, u'windSpeed': 0.0, u'rain_total': 2.07, 'usUnits': 1}
> Aug  8 07:36:53 raspberrypi weewxd: bme280: BME280 data 
> compensated_reading(id=0b956964-09a7-4b7d-aa20-aa1ac8182845, 
> timestamp=2021-08-08 07:36:53.283276, temp=28.089 °C, pressure=1009.80 hPa, 
> humidity=37.49 % rH)
> Aug  8 07:36:53 raspberrypi weewxd: bme280: {u'outTempBatteryStatus': 0, 
> u'rain': None, 'dateTime': 1628422609, u'windDir': 25.0, u'windSpeed': 0.0, 
> u'rain_total': 2.07, 'usUnits': 1}
> Aug  8 07:36:53 raspberrypi weewx[2566] DEBUG user.sdr: 
> packet={u'outTempBatteryStatus': 0, 'dateTime': 1628422609, u'windDir': 
> 25.0, u'windSpeed': 0.0, u'rain_total': 2.07, 'usUnits': 1}
> Aug  8 07:36:53 raspberrypi weewxd: bme280: BME280 data 
> compensated_reading(id=f17509e4-5900-40eb-87d2-a7af41252126, 
> timestamp=2021-08-08 07:36:53.316713, temp=28.084 °C, pressure=1009.80 hPa, 
> humidity=37.49 % rH)
> Aug  8 07:36:53 raspberrypi weewxd: bme280: {u'outTempBatteryStatus': 0, 
> u'rain': 0.0, 'dateTime': 1628422609, u'windDir': 25.0, u'windSpeed': 0.0, 
> u'rain_total': 2.07, 'usUnits': 1}
> Aug  8 07:36:53 raspberrypi weewx[2566] DEBUG user.sdr: 
> packet={u'outTempBatteryStatus': 0, 'dateTime': 1628422609, u'windDir': 
> 25.0, u'windSpeed': 0.0, u'rain_total': 2.07, 'usUnits': 1}
> Aug  8 07:36:53 raspberrypi weewxd: bme280: BME280 data 
> compensated_reading(id=65c200c0-1ca2-4200-a9a9-e781d4a68c30, 
> timestamp=2021-08-08 07:36:53.348244, temp=28.084 °C, pressure=1009.85 hPa, 
> humidity=37.48 % rH)
> Aug  8 07:36:53 raspberrypi weewxd: bme280: {u'outTempBatteryStatus': 0, 
> u'rain': 0.0, 'dateTime': 1628422609, u'windDir': 25.0, u'windSpeed': 0.0, 
> u'rain_total': 2.07, 'usUnits': 1}
> Aug  8 07:36:53 raspberrypi weewx[2566] INFO weewx.restx: Wunderground-RF: 
> Published record 2021-08-08 07:36:49 EDT (1628422609)
> Aug  8 07:36:54 raspberrypi weewx[2566] INFO weewx.restx: Wunderground-RF: 
> Published record 2021-08-08 07:36:49 EDT (1628422609)
> Aug  8 07:36:56 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:36:59 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:02 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:05 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:08 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:11 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:14 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:17 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:20 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:23 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:26 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:29 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:32 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:35 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:38 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:41 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:44 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:47 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:50 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:53 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:56 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:37:59 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:38:02 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:38:05 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:38:08 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:38:11 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:38:14 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:38:17 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:38:20 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:38:23 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:38:26 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:38:29 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:38:32 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:38:35 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:38:38 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:38:41 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
> Aug  8 07:38:44 raspberrypi weewx[2566] DEBUG user.sdr: lines=[]
>
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/6488994d-f469-44bb-90fe-61f8427b5382n%40googlegroups.com.
#!/usr/bin/env python
"""
bme280wx
"""
import smbus2
import bme280
import syslog
import weewx
from weewx.engine import StdService
import weeutil

def logmsg(level, msg):
    syslog.syslog(level, 'bme280: %s' % msg)

def logdbg(msg):
    logmsg(syslog.LOG_DEBUG, msg)

def loginf(msg):
    logmsg(syslog.LOG_INFO, msg)

def logerr(msg):
    logmsg(syslog.LOG_ERR, msg)

def surely_a_list(innie):
    if isinstance(innie, list):
        return innie
    if innie is None or innie is "":
        return []
    return [innie] # cross fingers

class Bme280wx(StdService):

    def __init__(self, engine, config_dict):

      # Initialize my superclass first:
      super(Bme280wx, self).__init__(engine, config_dict)
      self.bme280_dict = config_dict.get('Bme280wx', {})
      loginf('bme280wx configuration %s' % self.bme280_dict)

      self.port = int(self.bme280_dict.get('i2c_port', '1'))
      self.address = int(self.bme280_dict.get('i2c_address', '0x76'), base=16)

      self.default_units = self.bme280_dict.get('usUnits', 'US').upper()
      self.default_units = weewx.units.unit_constants[self.default_units]

      self.temperatureKeys = surely_a_list(self.bme280_dict.get('temperatureKeys', 'inTemp'))
      self.temperature_must_have = surely_a_list(self.bme280_dict.get('temperature_must_have', []))

      # The conversion from station pressure to MSL barometric pressure depends on the
      # temperature. So, the default is to only provide the pressure value when there
      # is already an outdoor temperature value
      self.pressureKeys = surely_a_list(self.bme280_dict.get('pressureKeys', 'pressure'))
      self.pressure_must_have = surely_a_list(self.bme280_dict.get('pressure_must_have', ['outTemp']))

      self.humidityKeys = surely_a_list(self.bme280_dict.get('humidityKeys', 'inHumidity'))
      self.humidity_must_have = surely_a_list(self.bme280_dict.get('humidity_must_have', []))
      
      self.bus = smbus2.SMBus(self.port)
      # this caches part-speciofic stuff so that a weewx restart is needed
      # if you change the bme280 sensor part; each one is unique
      self.calibration_params = bme280.load_calibration_params(self.bus, self.address)

      loginf('I2C port: %s' % self.port)
      loginf('I2C address: %s' % hex(self.address))
      loginf('fallback default units: %s' % weewx.units.unit_nicknames[self.default_units])
      loginf('pressureKeys=%s' % (self.pressureKeys,))
      loginf('pressure_must_have=%s' % (self.pressure_must_have,))

      # This is last to make sure all the other stuff is ready to go
      # (avoid race condition)
      self.bind(weewx.NEW_LOOP_PACKET, self.new_loop_packet)
      
    def new_loop_packet(self, event):

        packet = event.packet
        
        # the sample method will take a single reading and return a
        # compensated_reading object
        bme280data = bme280.sample(self.bus, self.address, self.calibration_params)
        loginf('BME280 data %s' % bme280data)

        if bme280data is None:
            return
        # If there is a declared set of units already, we'll convert to that.
        # If there isn't, we'll accept the configured wisdom.
        if 'usUnits' in packet:
            converter = weewx.units.StdUnitConverters[packet['usUnits']]
        else:
            converter = weewx.units.StdUnitConverters[self.default_units]

        if all(must_have in packet for must_have in self.pressure_must_have):
            loginf("pressure conditions met")
            pressurePA = (bme280data.pressure, 'mbar', 'group_pressure')
            converted = converter.convert(pressurePA)
            loginf("converted pressure=%s" % converted[0])
            for key in self.pressureKeys:
                packet[key] = converted[0]
                loginf("set key '%s' to %s" % (key,converted[0]))
        else:
            loginf("pressure conditions not met")

        if all(must_have in packet for must_have in self.temperature_must_have):
            temperatureC = (bme280data.temperature, 'degree_C', 'group_temperature')
            converted = converter.convert(temperatureC)
            for key in self.temperatureKeys:
                packet[key] = converted[0]

        if all(must_have in packet for must_have in self.humidity_must_have):
            humidityPCT = (bme280data.humidity, 'percent', 'group_percent')
            converted = converter.convert(humidityPCT)
            for key in self.humidityKeys:
                packet[key] = converted[0]

        logdbg(packet)

Reply via email to