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)