Frank
I use the following has been faultless for months on Pi3 with data from i2C
and other sensors
#
# $Revision: 1 $
# $Author: Nickolas McColl $
# $Date: 2014-08-16 $
# Initial information from above author further edits by Nev Davis
# Latest edit 12 Dec 2016 by Nev Davis reconfigured to place in user dir
"""Raspberry Pi driver for the weewx weather system"""
from __future__ import with_statement
import math
import time
import weewx.units
import weedb
import weeutil.weeutil
import weewx.drivers
import weewx.wxformulas
DRIVER_NAME = 'PiWeather'
DRIVER_VERSION = "1.8"
def loader(config_dict, engine):
return PiWeatherDriver(**config_dict[DRIVER_NAME])
def confeditor_loader():
return PiWeatherConfEditor()
class PiWeatherDriver(weewx.drivers.AbstractDevice):
def __init__(self, **stn_dict):
self.loop_interval = float(stn_dict.get('loop_interval',2.5))
def genLoopPackets(self):
while True:
start_time = time.time()
# Create Loop packet
f = open('/var/ramdisk/wxdata.csv')
input = f.readline()
f.close()
data = input.split(',')
if len(data) == 13: # data line is complete, process
for i in range(1, (len(data))):
try:
data[i] = float(data[i])
except ValueError:
data[i] = None
raw_time =time.strptime(data[0], "%Y-%m-%d %H:%M:%S")
_packet = {'dateTime': int(time.mktime(raw_time)),
'usUnits' : weewx.METRIC,
'outTemp' : data[1],
'outHumidity' : data[2],
'pressure' : data[6],
'extraTemp1' : data[7],
'windSpeed' : data[3], #use 3 second average
'windGust' : data[4], #use 3 second average
'windDir' : data[5],
'radiation' :data[11],
'inTemp' : data[8],
'inHumidity' : data[9],
'UV' : data[10],
'farsSpeed' : data[12]
#'referenceVoltage' : data[12]
#'UV' : data[11]
}
_packet['dewpoint'] =
weewx.wxformulas.dewpointC(_packet['outTemp'], _packet['outHumidity'])
#_packet['barometer'] =
weewx.wxformulas.sealevel_pressure_Metric(_packet['pressure'],
self.altitude, _packet['outTemp'])
#_packet['altimeter'] =
weewx.wxformulas.altimeter_pressure_Metric(_packet['pressure'],
self.altitude)
_packet['heatdeg'] =
weewx.wxformulas.heating_degrees(_packet['outTemp'], 18.333)
_packet['cooldeg'] =
weewx.wxformulas.cooling_degrees(_packet['outTemp'], 18.333)
_packet['heatindex'] =
weewx.wxformulas.heatindexC(_packet['outTemp'], _packet['outHumidity'])
yield _packet
sleep_time = (start_time - time.time()) + self.loop_interval
#sleep_time = self.loop_interval
if sleep_time > 0:
time.sleep(sleep_time)
class PiWeatherConfEditor(weewx.drivers.AbstractConfEditor):
@property
def default_stanza(self):
return
Neville
On Thursday, March 2, 2017 at 8:53:45 AM UTC+10, mwall wrote:
>
>
>
> On Wednesday, March 1, 2017 at 2:32:28 PM UTC-5, Frank Johnson wrote:
>>
>> ok now im confused (big time) here is my log file and looks like it
>> should work so what is it looking for...
>>
>
> frank,
>
> the code i posted is not tested, and in fact is not correct. this is
> closer:
>
> with open(filename) as f:
> line = f.readline()
> values = line.split(',')
> record['inTemp'] = float(values[0])
> record['inHumidity'] = float(values[1])
> record['barometer'] = float(values[2])
>
> but there is no error-checking, and you still need to check
> record['usUnits'] to see whether you need to do any unit conversions.
>
> m
>
--
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.