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()