worktree-test/windsensor.py

122 lines
3.8 KiB
Python

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Tue May 5 14:52:57 2020
@author: nits
"""
import minimalmodbus
import time
import configfile
conf = configfile.Configuration()
import Adafruit_BBIO.UART as UART
from datetime import datetime
class WindSensor():
def __init__(self): #initialise network connection and parameters
conf = configfile.Configuration()
UART.setup(conf.uart)
self.inst = minimalmodbus.Instrument(conf.port_name, conf.slave_address) # port name, slave address (in decimal)
self.inst.serial.baudrate = conf.baudrate # Baud
self.inst.serial.parity = conf.parity
self.inst.serial.stopbits = conf.stopbits
self.inst.mode = conf.mode
self.inst.close_port_after_each_call=conf.close_port_after_each_call
self.inst.debug=conf.debug_serial
self.inst.serial.timeout = conf.timeout
self.inst.handle_local_echo = conf.handle_local_echo
self.error=0
self.errorcounter = 0
self.cyclecounter = 0
#read temperature from sensor
def readTemp(self):
try:
temp = self.inst.read_long(30405,4,True)/10
except Exception as error:
print ("[!] Exception occurred: ", error)
self.errorcounter = self.errorcounter + 1
#time.sleep(0.1)
return 0
return temp
#read speed from sensor
def readWindSpeed(self):
try:
temp = self.inst.read_long(30003,4,False)/10
except Exception as error:
print ("[!] Exception occurred: ", error)
self.errorcounter = self.errorcounter + 1
self.error=1
return 0
return temp
#read wind direction from sensor
def readWindDirection(self):
try:
temp = self.inst.read_long(30203,4,False)/10
except Exception as error:
print ("[!] Exception occurred: ", error)
self.errorcounter = self.errorcounter + 1
# time.sleep(0.1)
error=1
return 0
return temp
#read date and time from sensor
def readDateTime(self):
try:
date = self.inst.read_long(34601,4,False)
uhr = self.inst.read_long(34603,4,False)
date_time = datetime.strptime(str(date)+str(uhr), '%Y%m%d%H%M%S');
date_info=date_time.strftime('%Y-%m-%d %H:%M:%S');
except Exception as error:
print ("[!] Exception occurred: ", error)
self.errorcounter = self.errorcounter + 1
return ""
return date_info
#read compass angle from sensor
def readCompassAngle(self):
try:
temp = self.inst.read_long(35081,4,False)/10
except Exception as error:
print ("[!] Exception occurred: ", error)
self.errorcounter = self.errorcounter + 1
error=1
return 0
return temp
#function to read parameter
def readP(self,address):
try:
param = self.inst.read_long(address,3,False)
print("The value of the address ",address,"is: ",param)
except Exception as error:
print ("[!] Exception occurred: ", error)
self.errorcounter = self.errorcounter + 1
error=1
return 0
#function to set parameter
def setP(self,address,value):
try:
param = self.inst.write_register(address,value,functioncode=16)
print("The value of the address ",address,"has been changed to: ",value)
except Exception as error:
print ("[!] Exception occurred: ", error)
self.errorcounter = self.errorcounter + 1
error=1
return 0
return 1