Compare commits

..

4 Commits

3 changed files with 22 additions and 57 deletions

View File

@@ -1,6 +1,7 @@
import utime
import gc
import machine
_DEBUG = True
ss = machine.Pin(15,machine.Pin.OUT) # Chip select / HCS
so = machine.Pin(12) # HMISO
@@ -412,9 +413,9 @@ class CC1101(object):
self.lqi = self.readLQI()
freqEst = self.readStatus(self.CC1101_FREQEST)
freqError = self.calcFreqError(freqEst)
if DEBUG:
if _DEBUG:
print(b"FERROR: {} (EST: {})".format(freqError, freqEst))
print(b"FCOMP: {}".format(davis.freqComp))
print(b"FCOMP: {}".format(self.freqComp))
if self.freqComp[self.hopIndex] + freqEst <= 255:
self.freqComp[self.hopIndex] = self.freqComp[self.hopIndex] + freqEst
else:

View File

@@ -1,12 +1,11 @@
import urequests
import machine
try:
_DEBUG = DEBUG
except:
_DEBUG = False
_DEBUG = True
def send_to_influx(host, port, db, user, password, davis_unit_id, wind, measurement, name, value, tags):
def send_to_influx(host, port, db, user, password, davis_unit_id, wind, measurement, name, value, tags, rssi, lqi):
post = "http://{}:{}/write?db={}".format(host, port, db)
if _DEBUG:
print(b"SENDING TO: {}".format(post))
@@ -22,40 +21,25 @@ def send_to_influx(host, port, db, user, password, davis_unit_id, wind, measurem
else:
for tag in tags.keys():
measurement = "{},{}={}".format(measurement, tag, tags[tag])
data = "{_measure},davis_id={_davis_id} {_name}={_value}\n wind,type=speed,davis_id={_davis_id} value={_speed}\n wind,type=direction,davis_id={_davis_id} value={_direction}".format(
data = "{_measure},davis_id={_davis_id} {_name}={_value}\n wind,type=speed,davis_id={_davis_id} value={_speed}\n wind,type=direction,davis_id={_davis_id} value={_direction}\n signal,type=rssi,davis_id={_davis_id} value={_rssi}\n signal,type=lqi,davis_id={_davis_id} value={_lqi}".format(
_measure=measurement,
_name=name,
_value=value,
_davis_id = davis_unit_id,
_speed=wind['speed'],
_direction=wind['direction'])
_direction=wind['direction'],
_rssi=rssi,
_lqi=lqi)
if _DEBUG:
print(b"POST_DATA: {}".format(data))
try:
return (True, urequests.post(post, data=data))
except Exception as e:
if e.args[0] == 103:
machine.reset()
return (False, b"ERROR sending data to influx: {}".format(e.args))
else:
return (False, b"ERROR sending data to influx: {}".format(e))
def raw_send_to_influx(host, port, db, user, password, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, rssi, lqi):
post = "http://{}:{}/write?db={}".format(host, port, db)
if _DEBUG:
print(b"SENDING TO: {}".format(post))
data = "data b0={_b0},b1={_b1},b2={_b2},b3={_b3},b4={_b4},b5={_b5},b6={_b6},b7={_b7},b8={_b8},b9={_b9},rssi={_rssi},lqi={_lqi}".format(
_b0=b0, _b1=b1, _b2=b2, _b3=b3,
_b4=b4, _b5=b5, _b6=b6, _b7=b7,
_b8=b8, _b9=b9, _rssi=rssi, _lqi=lqi)
if _DEBUG:
print(b"POST_DATA: {}".format(data))
try:
return (True, urequests.post(post, data=data))
except Exception as e:
if e.args[0] == 103:
machine.reset()
else:
return (False, b"ERROR sending RAW data to influx: {}".format(e))
return (False, b"ERROR sending data to influx: {}".format(e.args))
return (False, b"ERROR - well fuck me, daisy")
def reverseBits(data):
data = "{:08b}".format(data)
@@ -66,11 +50,10 @@ def reverseBits(data):
class davisDecoder(object):
def __init__(self, weather_db, stat_db, raw_db):
def __init__(self, weather_db, stat_db):
__name__ = 'Davis value decoder class'
self.weather_influx_db = weather_db
self.stat_influx_db = stat_db
self.raw_influx_db = raw_db
def byte_split(self, data):
msb = data >> 4
@@ -242,4 +225,3 @@ class davisDecoder(object):
self.name = 'value'
self.tags = {'type': 'rain_bucket_tips'}
self.value = rain

36
main.py
View File

@@ -16,7 +16,6 @@ ips = wifi_con.connectInfra(
if DEBUG:
print("IPCONF: {}".format(ips))
gc.collect()
davis = cc1101_davis.CC1101()
@@ -24,8 +23,7 @@ davis.setRegisters()
davis.setFrequency(davis.hopIndex)
decoder = davis_decode.davisDecoder(
wifi_con._INF_DB_WEATHER,
wifi_con._INF_DB_STATUS,
wifi_con._INF_DB_RAW)
wifi_con._INF_DB_STATUS)
gc.collect()
@@ -35,7 +33,7 @@ while True:
try:
data_int = davis.rxPacket()
except Exception as e:
raise e
#raise e
print(b"Rx EXCEPTION: {}".format(e))
continue
if data_int:
@@ -80,38 +78,22 @@ while True:
decoder.measurement,
decoder.name,
decoder.value,
decoder.tags)
except Exception as e:
raise e
print(b"ERROR: Data send 'urequest': {}".format(e))
try:
(raw_sent_ok, raw_data_sent) = davis_decode.raw_send_to_influx(
wifi_con._INFLUX_HOST,
wifi_con._INFLUX_PORT,
decoder.raw_influx_db,
wifi_con._INFLUX_USER,
wifi_con._INFLUX_PASS,
data_int[0],
data_int[1],
data_int[2],
data_int[3],
data_int[4],
data_int[5],
data_int[6],
data_int[7],
data_int[8],
data_int[9],
decoder.tags,
davis.rssi,
davis.lqi)
except Exception as e:
raise e
print(b"ERROR: Data send 'urequest': {}".format(e))
#raise e
if _DEBUG:
print(b"ERROR: Data send 'urequest': {}".format(e))
gc.collect()
if DEBUG:
if sent_ok:
print(b"DATA SEND: {}".format(data_sent.status_code))
else:
print(b"DATA SEND FAIL: {}".format(data_sent))
#if data_sent[0] == -2:
machine.reset()
interpacket_time = 0
else:
interpacket_time += 1