Last active
April 25, 2016 20:25
-
-
Save archonic/8d2d936c8f25f3cb84004f01d58c135c to your computer and use it in GitHub Desktop.
Dumps temperature data to Mongo, theoretically. I'm running a weird version of Mongo (packaged with a fork of meteor) so this hasn't worked yet.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os, glob, sched, time, sys | |
from w1thermsensor import W1ThermSensor | |
from pymongo import MongoClient | |
from datetime import datetime | |
# Run mongo if it's not already running | |
#mongod | |
# Sensor array | |
sensors_available = W1ThermSensor.get_available_sensors([W1ThermSensor.THERM_SENSOR_DS18B20]) | |
# DB connection | |
client = MongoClient() | |
# Check if DB connection worked | |
try: | |
server_info = client.server_info() | |
print("Server info: /n%s" % (server_info)) | |
except: | |
print("Looks like Mongod isn't running") | |
sys.exit() | |
db = client.test | |
sensors_collection = db.sensors | |
temp_collection = db.temps | |
# Populate sensors in DB so they can be associated with vessels | |
print("Sensors detected: %s" % (sensors_available)) | |
sensors_for_db = [] | |
# write sensors to DB | |
for index, sensor in enumerate(sensors_available): | |
print("Sensor %s has temperature %.2f" % (sensor.id, sensor.get_temperature())) | |
sensors_for_db.append( { "id": sensor.id } ) | |
result = sensors_collection.insert_many(sensors_for_db) | |
print("Sensors written: %s" % (result.inserted_ids)) | |
# continuously write temps to DB | |
while True: | |
temps_for_db = [] | |
for index, sensor in enumerate(sensors_available): | |
print( "Sensor %s has temperature %.2f at %s" % ( sensor.id, sensor.get_temperature(), datetime.datetime.utcnow() ) ) | |
temps_for_db.append( { "id": sensor.id, "temp": sensor.get_temperature(), "time": datetime.datetime.utcnow() } ) | |
result = temp_collection.insert_many(temps_for_db) | |
print("Temps written: %s" % (result.inserted_ids)) | |
sleep(1.0) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment