53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
|
#!/usr/bin/env python3
|
||
|
import os
|
||
|
import time
|
||
|
import yaml
|
||
|
import mongoengine
|
||
|
import datetime
|
||
|
import requests
|
||
|
|
||
|
base_url = "https://api.particle.io/v1/devices/"
|
||
|
|
||
|
config = None
|
||
|
with open("/etc/l2-sensors/conf.yml", 'r') as f:
|
||
|
config = yaml.load(f.read())
|
||
|
if config is None:
|
||
|
raise ValueError("Failed to load configuration.")
|
||
|
|
||
|
mongoengine.connect(
|
||
|
'particule',
|
||
|
host=os.environ['DB_PORT_27017_TCP_ADDR'],
|
||
|
port=int(os.environ['DB_PORT_27017_TCP_PORT']),
|
||
|
username=config['db']['mongo']['username'],
|
||
|
password=config['db']['mongo']['password']
|
||
|
)
|
||
|
|
||
|
|
||
|
class Measure(mongoengine.DynamicDocument):
|
||
|
_date = mongoengine.DateTimeField(default=datetime.datetime.now)
|
||
|
meta = {
|
||
|
'indexes': [
|
||
|
{'fields': ['name', '_date']}
|
||
|
],
|
||
|
}
|
||
|
|
||
|
while True:
|
||
|
try:
|
||
|
for device in config['devices']:
|
||
|
for variable in device['variables']:
|
||
|
res = requests.get("%s%s/%s?access_token=%s" %
|
||
|
(
|
||
|
base_url,
|
||
|
device['id'],
|
||
|
variable,
|
||
|
config['token']
|
||
|
)
|
||
|
)
|
||
|
Measure(**res.json()).save()
|
||
|
except (KeyboardInterrupt, SystemExit):
|
||
|
break
|
||
|
except Exception as e:
|
||
|
print(e)
|
||
|
finally:
|
||
|
time.sleep(600)
|