[weewx-user] Re: parsing from csv file

2017-03-02 Thread Neville Davis
Also script is in user dir

Nev

On Friday, March 3, 2017 at 11:10:10 AM UTC+10, Neville Davis wrote:
>
> Frank also this in weewx.conf
>
>
> #station_type = Simulator
>
> station_type = PiWeather
>
>
>
> #
>
> [PiWeather]
> loop_interval = 2.5
> driver = user.piweather
>
>
> 
>
> Neville
>
> On Friday, March 3, 2017 at 11:02:36 AM UTC+10, Neville Davis wrote:
>>
>> 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.

[weewx-user] Re: parsing from csv file

2017-03-02 Thread Neville Davis
Frank also this in weewx.conf

   
#station_type = Simulator

station_type = PiWeather


#

[PiWeather]
loop_interval = 2.5
driver = user.piweather



Neville

On Friday, March 3, 2017 at 11:02:36 AM UTC+10, Neville Davis wrote:
>
> 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 weewx-user+unsubscr...@googlegroups.com.
For more options, visit 

[weewx-user] Re: parsing from csv file

2017-03-02 Thread Neville Davis
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 weewx-user+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


[weewx-user] Re: Selection of USB/RS232 device to RPI. To control WMR 928

2017-03-02 Thread bgrattan
An rs232 -> usb which uses an FTDI chip works the best as it usually contains a 
serial number which is useful in setting up a udev rule. Mwall has posted a 
good guide to creating a rule for this purpose. I had been using a converter 
with pl2303 chip but started having problems with it switching ttyUSB on me.
Bob

-- 
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 weewx-user+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.