I have a custom hardware setup.. the DH22 and BME280 are outputting data 
las they should..(best I can tell)

For my own quick and dirty webpage I did some maths to get pascals to inHg 
but now I want to do this in weewx and with some expert help on this forum 
I am like 98 percent there.. I have learned a lot but have hit the wall I 
always hit when I can't find some code to read or I don't know what code I 
am reading. Now I have read the manual and each time I get over one of 
these hurdles more of that manual changes from greek to english...but alas 
I am blocked by my own ignorance..

So.. here is what I am doing for my own webpage..

#Setup and pull data from the Sensor
#bme280
from Adafruit_BME280 import *
sensor = BME280(mode=BME280_OSAMPLE_8)
temperature = sensor.read_temperature()
pascals = sensor.read_pressure()

#Setup and pull data from the Sensor
#AM2303
import Adafruit_DHT
sensor = Adafruit_DHT.AM2302
pin = 17
humidity, degrees = Adafruit_DHT.read_retry(sensor, pin)

#Setup Time
#time
import time
from datetime import datetime
from time import strftime, localtime

#Load up Converter
#calcs
from meteocalc import dew_point, heat_index
temp = degrees*9/5+32
baro = pascals/3386.389
dewpoint = dew_point(temperature=degrees, humidity=humidity)
heatindex = heat_index(temperature=degrees, humidity=humidity)


My sensor puts out Pa
I divide PA by 3386.839 and that gets me to inHg

I output this to a file and it comes in to the right range and matches 
other weather stations around me plus or minus .10 inHg, so I feel like I 
have things setup correctly.

Now this leads me to the error I am getting.
The error I get is because the reading is outside the QA range limits.. So 
I have to tried to back into the number some to figure out what is going 
on....engine: 2017-04-06 23:10:39 CDT (1491538239) LOOP value 'pressure' 
85.32306 outside limits (24.0, 34.5)

85.32306... Where the heck did that number come from?  Well that 
is 85.32inHg/.029 = 2942.06896hPa*100 = 294206.8965517Pa
Since hPa = mBAR there is no conversion there..

The math is wrong in weewx.units?.. but I don't believe that either.. it 
has to be me messing up the math.. but I am not sure where to go from here 
to put in a custom conversion into extensions.py... I just have not been 
able to figure out the code to do so..

or I am otherwise all wet.. 

My driver looks like this.. (Expertly written by a very nice MWall)

!/usr/bin/python

import time
import Adafruit_BME280
import Adafruit_DHT
import weewx.drivers
from weewx.units import INHG_PER_MBAR

DRIVER_NAME = 'PiHat'
DRIVER_VERSION = '0.1'

def loader(config_dict, engine):
    return PiHatDriver(**config_dict[DRIVER_NAME])

class PiHatDriver(weewx.drivers.AbstractDevice):
    def __init__(self, **stn_dict):
        self._sensor1 = 
Adafruit_BME280.BME280(mode=Adafruit_BME280.BME280_OSAMPLE_8)
        self._sensor2 = Adafruit_DHT.AM2302
        self._pin = 17

    def genLoopPackets(self):
        while True:
            try:
                packet = dict()
                packet['dateTime'] = int(time.time() + 0.5)
                packet['usUnits'] = weewx.METRIC
                packet['inTemp'] = self._sensor1.read_temperature()
                packet['pressure'] = self._sensor1.read_pressure() * 
weewx.units.INHG_PER_MBAR
                packet['outHumidity'], packet['outTemp'] = 
Adafruit_DHT.read_retry(self._sensor2, self._pin)
                yield packet
            except IOError, e:
                syslog.syslog(syslog.LOG_ERR, "get data failed: %s" % e)
            time.sleep(10) # wait 60 seconds before getting next set of data




-- 
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].
For more options, visit https://groups.google.com/d/optout.

Reply via email to