Skip to content

Instantly share code, notes, and snippets.

@archonic
Last active April 25, 2016 20:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save archonic/8d2d936c8f25f3cb84004f01d58c135c to your computer and use it in GitHub Desktop.
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.
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