Hi All,

Over the past week I have been trying to update my Driver that I use with 
my Raspberry Pi3 and GrovePi board.

The problem I have is that it appears to load up and then stops and shows:

Nov  9 23:10:07 RaspiDexmet2 weewx[3252]: engine: Starting up weewx version 
3.7.1
Nov  9 23:10:07 RaspiDexmet2 weewx[3252]: engine: Starting main packet loop.


Can anyone please advise as to what I am doing wrong?
I have uploaded at shortened version of my driver,, hope someone may help 
solve the problem

Many thanks
Michael


-- 
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.
#!/usr/bin/python
#
#   $ Revision2B: beta 001 $
#   $ Author: WhimickRH $
#   $ US - UK $
#   $ Date: 2017-11-09
#   $
#   $ Raspi_Met Version 2B WEEWX Beta 001 $
#   $ For For GrovePi Weather Station $
#   $ And weather Display CSV output    $
#

# -------------------------------IMPORT DEPENDENCIES-----------------------------------------

from __future__ import with_statement
import os
import os.path
import sys
import syslog
import numpy as np
import time
import datetime
import cPickle
import logging
import random
import threading
import multiprocessing
import csv
import shutil

# -------------------------------GROVEPI BOARD AND SENSORS-----------------------------------

import smbus
import RPi.GPIO as GPIO
import grovepi
from grovepi import *
# import BMP280.BMP280 as BMP280

# -------------------------------WEEWX DRIVERS-----------------------------------------------

import weeutil.weeutil
import weewx.drivers
import weewx.wxformulas

# -------------------------------PATH AND MODULES--------------------------------------------
"""
sys.path.append('/home/pi/Weather_Sensors')
import Air_Sensors
import SDL_Pi_SI1145
import SI1145Lux
from grove_i2c_temp_hum_hdc1000 import HDC1000
import SDL_DS3231
import Wind_Rain6
"""
# -------------------------------GROVEPI BOARD & SENSOR SET UP-------------------------------

rev = GPIO.RPI_REVISION
if rev == 2 or rev == 3:
	bus = smbus.SMBus(1)
else:
	bus = smbus.SMBus(0)

GPIO.setwarnings(False)

"""
# -------------------------------RESET LEDS--------------------------------------------------

green_led = 4
digitalWrite(green_led, 0)

red_led = 3
digitalWrite(red_led, 0)

# -------------------------------ANALOG SENSORS----------------------------------------------

Water = 0		# Pin 15 is A0 Port. Grove - Water_Sensor(LeafWetness)
Moisture = 1    # Pin 16 is A1 Port. Grove - Moisture_Sensor(PlantPot)

grovepi.pinMode(Water, "INPUT")      # Grove - Water_Sensor(LeafWetness)
grovepi.pinMode(Moisture, "INPUT")   # Grove - Moisture Sensor(PlantPot)

# -------------------------------SUNLIGHT SENSOR Si1145--------------------------------------

# sunsensor = SI1145.SI1145()
sunsensor = SDL_Pi_SI1145.SDL_Pi_SI1145()

# -------------------------------12C SENSORS-------------------------------------------------

bmp280 = BMP280.BMP280()  # GROVE 12C TEMPERATURE-HUMID-BAROMOMETER
hdc = HDC1000()
hdc.Config()
"""
# -------------------------------RTL DS3231 RTC----------------------------------------------

# ds3231 = SDL_DS3231.SDL_DS3231(1, 0x68)

# -------------------------------VARIABLES---------------------------------------------------

record_no = 0
water_sensor = 0
moisture_sensor = 0
ws = 0
rain_mm = 0

# -------------------------------ERROR LOGGING-----------------------------------------------


# -------------------------------GROVEPI WEATHER STATION-------------------------------------

DRIVER_NAME = 'Raspi_Met2WX'
DRIVER_VERSION = '001'

def loader(config_dict, engine):
	return Raspi_Met2WXDriver(**config_dict[DRIVER_NAME])
	
def confeditor_loader():
	return Raspi_Met2WXConfEditor()

class Raspi_Met2WXDriver(weewx.drivers.AbstractDevice):
	
	def __init__(self, **stn_dict):
		self.loop_interval = float(stn_dict.get('loop_interval', 5))
		self.Software_Version = "Raspi_Met Version 2B Beta 001"
		
		self.starttime = time.time()
		self.start_hour = int(time.strftime("%H"))
		
		self.record_no = record_no
		self.na = ""
		
		self.system_temp_C = 0
		self.system_temp_F = 0
		
		self.outTemp_C = 0
		self.outTemp_F = 0
		self.inTemp_C = 0
		self.inTemp_F = 0
		
		self.barometer = 0
		self.inHg = 0
		self.mspl = 0
		self.mspl_inHg = 0
		self.altitude = 0
		
	def hardware_name(self):
		return DRIVER_NAME
		
		
# -------------------------------READ SDL_DS3231 TIME----------------------------------------
	"""
	def ds3231_time(self):
		self.rtc_time = "%s" % ds3231.read_datetime()
		self.rtc_temp = ds3231.getTemp()
		ds3231_t = ds3231.read_datetime()
		self.epoch = int(time.mktime(time.strptime(ds3231_t.strftime("%Y-%m-%d %H:%M:%S"), "%Y-%m-%d %H:%M:%S")))
		GPIO.cleanup()
		# print("Times",self.rtc_time, self.rtc_time, self.epoch)
		# --------DATE TIME---------------
		self.year = int(time.strftime("%Y"))
		self.month = int(time.strftime("%m"))
		self.day = int(time.strftime("%d"))
		self.hour = int(time.strftime("%H"))
		self.minutes = int(time.strftime("%M"))
		self.seconds = int(time.strftime("%S"))
		return self.rtc_time, self.rtc_time, self.epoch
	"""
# -------------------------------RASPI TEMPERATURE SENSORS-----------------------------------
	
	def pi_temp(self):
		f = open('/sys/class/thermal/thermal_zone0/temp', 'r')
		input = f.readline()
		if input:
			s_temp = float(input) / 1000
			self.system_temp_C = round(s_temp, 1)
			# self.system_temp_F = round(9.0 / 5.0 * self.system_temp_C + 32, 1)
			
			self.system_temp_F = (self.system_temp_C * 1.8) + 32
		else:
			self.system_temp_C = 0
			self.system_temp_F = 0
		# print("system_temp_C", self.system_temp_C)
		return self.system_temp_C, self.system_temp_F
		
# -------------------------------READ TEMPERATURE & BARO SENSORS---------------
	
	def temp_baro_sensors(self):  # this function gets temp values from the bmp
		self.outTemp_C = 10.6
		self.outTemp_F = 53.8
		self.inTemp_C = 12.9
		self.inTemp_F = 70.5
		self.outHumidity = 79
		
		self.barometer = 1027
		self.inHg = round(0.029529980164712 * self.barometer, 2)
		self.mspl_inHg = round(self.barometer * 0.02952998751, 2)
		#self.mspl = round(float(bmp280.read_sealevel_pressure(altitude_m=50.0)) * 0.01, 2)
		# Takes new messurement so the sensor_data might have changed
		self.altitude = 65
		
		# print("Read HDC1000","OutTemp_C",self.outTemp_C, "OutHumidity",self.outHumidity)
		return self.outTemp_C, self.outTemp_F, self.inTemp_C, self.inTemp_F, self.outHumidity
	
	def genLoopPackets(self):
		
		while True:
			start_time = time.time()
			try:
				self.pi_temp()
				self.temp_baro_sensors()
				
				packet = {'dateTime': int(time.time() + 0.5), 'usUnits': weewx.US}
				
				packet['inTemp'] = self.inTemp_F
				packet['outTemp'] = self.outTemp_F
				packet['outHumidity'] = self.outHumidity
				packet['barometer'] = self.inHg
				packet['pressure'] = self.mspl_inHg
				packet['altimeter'] = self.altitude
				
				sleep_time = (start_time - time.time()) + self.loop_interval
				self.record_no += 1
				
				# syslog.openlog('Raspi_Met2WX', syslog.LOG_PID | syslog.LOG_CONS)
				# syslog.setlogmask(syslog.LOG_UPTO(syslog.LOG_DEBUG))
				
			except Exception as e:
				# digitalWrite(green_led, 0)
				# logging.exception(str(e))
				
				print(logging.exception(str(e)))
				sys.exit()


class Raspi_Met2WXConfEditor(weewx.drivers.AbstractConfEditor):
	@property
	def default_stanza(self):
		return

def main():
	station = Raspi_Met2WXDriver()
	Raspi_Loop_thread = threading.Thread(target=station.genLoopPackets(), args=())
	Raspi_Loop_thread.daemon = True
	Raspi_Loop_thread.start()
	return

# --------------------------------RUN MAIN----------------------------------------------------

if __name__ == '__main__':
	try:
		main()
		# yslog.openlog('Raspi_Met2WX', syslog.LOG_PID | syslog.LOG_CONS)
		# syslog.setlogmask(syslog.LOG_UPTO(syslog.LOG_DEBUG))
	except Exception as e:
		# digitalWrite(green_led, 0)
		# logging.exception(str(e))
		
		print(logging.exception(str(e)))
		sys.exit()

Reply via email to