Files
ThingsBoard/RPI Docker Test/meshifyData/meshifyData.py
2024-10-04 18:53:54 -05:00

113 lines
3.2 KiB
Python

import urllib
try:
import json
except:
import simplejson as json
import pickle
MAC = "00409D53168A"
class meshifyData():
def __init__(self, MAC):
self.mac = MAC[0:6] + "FF-FF" + MAC[6:]
print "here is the mac: " + self.mac
#set the defaults
self.param_dict = {}
def checkConfig(self):
url = "https://f5rrbd3r45.execute-api.us-east-1.amazonaws.com/device_config?mac=" + self.mac
try:
f = urllib.urlopen(url)
except:
print "Error opening url for remote config"
#return the defaults
return None
try:
s = f.read()
#print s
if len(s) < 5:
return None
s = s[1:-1].replace("'", '"')
print s
data = json.loads(s)
#if we get there then replace the deviceList.txt
with open('/root/python_firmware/deviceList.txt', 'w') as myfile:
json.dump(data, myfile, indent=4)
return data
except Exception as e:
print e
#return the defaults
return None
def checkAPI(self):
offset = -21600
dst = False
companyId = "1"
url = "https://machines.meshify.com/api/gateway?macaddressForTimezone=" + self.mac
try:
f = urllib.urlopen(url)
except:
print "Error opening url"
#return the defaults
return offset, dst, companyId
try:
s = f.read()
print s
data = json.loads(s)
offset = int(data["offset"])
dst = bool(int(data["dst"]))
print bool(int("0"))
companyId = data["companyId"]
return offset, dst, companyId
except Exception,e:
print e
#return the defaults
return -21600, False, "1"
def getdata(self):
#if the API fails and the company ID of 1 is returned then you need to
#check and see if you have pickled anything.
#if it doesn't fail, and it gives you something other than 1
#then you need to repickle the object
self.offset, self.dst, self.companyId = self.checkAPI()
if self.companyId == "1":
try:
self.param_dict = pickle.load( open( "params.p", "rb" ) )
except:
print self.offset, self.dst, self.companyId
return self.offset, self.dst, self.companyId
try:
self.offset = self.param_dict["offset"]
self.dst = self.param_dict["dst"]
self.companyId = self.param_dict["companyId"]
except:
return -21600, False, "1"
return self.offset, self.dst, self.companyId
else:
self.param_dict["offset"] = self.offset
self.param_dict["dst"] = self.dst
self.param_dict["companyId"] = self.companyId
pickle.dump( self.param_dict, open( "params.p", "wb" ) )
print self.param_dict
print self.offset, self.dst, self.companyId
return self.offset, self.dst, self.companyId