def print_temperatures(sensors): now = datetime.datetime.now().isoformat() print('{}'.format(now)) for name, sensor_path in sensors.items(): with open(sensor_path, 'r') as sensor_fh: data = sensor_fh.readlines() if len(data) != 2: print('Unexpected data read from sensor ' '{name}:{data}'.format(**locals())) continue for line in data: if line.startswith('t='): break raw_temperature = int(line.split('=')[1]) temperature = raw_temperature / 1000 if GRAPHITE_OUT: graphitesend.send('temp_' + name, temperature) if FILE_OUT: with open(FILE_OUT, 'a') as out_fh: out_fh.write('{now},{name}={temperature}\n'.format(**locals())) print('Sensor {name}: {temperature}°C'.format(**locals()))
def _main(): import graphitesend import sys import argparse parser = argparse.ArgumentParser() parser.add_argument("file") parser.add_argument("--graphite-server") parser.add_argument("--graphite-id", default='0') parser.add_argument("--http-host", default='127.0.0.1') parser.add_argument("--http-port", type=int) args = parser.parse_args() graphite = args.graphite_server is not None if graphite: graphitesend.init(graphite_server=args.graphite_server, prefix="co2mon." + args.graphite_id, system_name="") state = {} if args.http_port: import flask import threading app = flask.Flask("co2mon") @app.route("/") def show_state(): return flask.jsonify(state) def run(): app.run(host=args.http_host, port=args.http_port) threading.Thread(target=run, daemon=True).start() with open(sys.argv[1], "r+b") as dev: key = generate_key() hid = hidraw.HIDRaw(dev.fileno()) init_sensor(hid, key) while True: data = read_sensor(dev, key) if type(data) == CO2: if graphite: graphitesend.send("co2", data.ppm()) state["co2"] = data.ppm() elif type(data) == Temperature: if graphite: graphitesend.send("temperature", data.celsius()) state["temperature"] = data.celsius()
if row['Humidex'] == '' and row['WindChill'] == '': feelslike = row['Temp'] elif row['Humidex'] == '': feelslike = row['WindChill'] else: feelslike = row['Humidex'] if row['WindSpd'] == '': row['WindSpd'] = 0 if row['WindDir'] == '': row['WindDir'] = 0 metric_string = 'weather.hourly.temp ' + str(row['Temp']) + ' ' + timestamp metriclog.write(metric_string + "\n") graphitesend.send('weather.hourly.temp', str(row['Temp']), timestamp) metric_string = 'weather.hourly.windspeed ' + str(row['WindSpd']) + ' ' + timestamp metriclog.write(metric_string + "\n") graphitesend.send('weather.hourly.windspeed', str(row['WindSpd']), timestamp) metric_string = 'weather.hourly.winddir ' + str(row['WindDir']) + ' ' + timestamp metriclog.write(metric_string + "\n") graphitesend.send('weather.hourly.winddir', str(row['WindDir']), timestamp) metric_string = 'weather.hourly.humidity ' + str(row['Humidity']) + ' ' + timestamp metriclog.write(metric_string + "\n") graphitesend.send('weather.hourly.humidity', str(row['Humidity']), timestamp) metric_string = 'weather.hourly.feelslike ' + str(feelslike) + ' ' + timestamp metriclog.write(metric_string + "\n")
#!/usr/bin/env python import graphitesend import time import os graphitesend.init(graphite_server='graphite.cloud.nibalizer.com') while True: with open('/sys/class/power_supply/BAT0/energy_now') as f: lines = f.read() f.closed energy_now = float(lines) with open('/sys/class/power_supply/BAT0/energy_full') as f: lines = f.read() f.closed energy_full = float(lines) batt_percent = energy_now/energy_full * 100 load = os.getloadavg()[0] graphitesend.send('battery_percent', batt_percent) graphitesend.send('load', load) print "batt_percent: %s" % batt_percent time.sleep(1)
feelslike = row['Temp'] elif row['Humidex'] == '': feelslike = row['WindChill'] else: feelslike = row['Humidex'] if row['WindSpd'] == '': row['WindSpd'] = 0 if row['WindDir'] == '': row['WindDir'] = 0 metric_string = 'weather.hourly.temp ' + str( row['Temp']) + ' ' + timestamp metriclog.write(metric_string + "\n") graphitesend.send('weather.hourly.temp', str(row['Temp']), timestamp) metric_string = 'weather.hourly.windspeed ' + str( row['WindSpd']) + ' ' + timestamp metriclog.write(metric_string + "\n") graphitesend.send('weather.hourly.windspeed', str(row['WindSpd']), timestamp) metric_string = 'weather.hourly.winddir ' + str( row['WindDir']) + ' ' + timestamp metriclog.write(metric_string + "\n") graphitesend.send('weather.hourly.winddir', str(row['WindDir']), timestamp) metric_string = 'weather.hourly.humidity ' + str( row['Humidity']) + ' ' + timestamp
dailyurl=i['url'] + "?begin=" + yesterday + "&end=" + yesterday + "&step=4" print dailyurl print 'Loading ' + i['installation'] + ' ' + i['direction'] + '...' # 15 minute counts try: response = urllib2.urlopen(url) except: pass json_data = response.read() datapoints = json.loads(json_data) for datapoint in datapoints: if datapoint['comptage'] is None: continue metric_string = i['installation'] + '.' + i['direction'] + '.trips ' + str(datapoint['comptage']) + ' ' + str(datapoint['timestamp']/1000) metriclog.write(metric_string + "\n") graphitesend.send(i['installation'] + '.' + i['direction'] + '.trips', datapoint['comptage'], datapoint['timestamp']/1000) # Daily counts try: response = urllib2.urlopen(dailyurl) except: pass json_data = response.read() datapoints = json.loads(json_data) for datapoint in datapoints: if datapoint['comptage'] is None: continue # Set daily time forward datapoint['timestamp'] += 14400000 metric_string = 'daily.' + i['installation'] + '.' + i['direction'] + '.trips ' + str(datapoint['comptage']) + ' ' + str(datapoint['timestamp']/1000) graphitesend.send('daily.' + i['installation'] + '.' + i['direction'] + '.trips', datapoint['comptage'], datapoint['timestamp']/1000)
if row["Humidex"] == "" and row["WindChill"] == "": feelslike = row["Temp"] elif row["Humidex"] == "": feelslike = row["WindChill"] else: feelslike = row["Humidex"] if row["WindSpd"] == "": row["WindSpd"] = 0 if row["WindDir"] == "": row["WindDir"] = 0 metric_string = "weather.hourly.temp " + str(row["Temp"]) + " " + timestamp metriclog.write(metric_string + "\n") graphitesend.send("weather.hourly.temp", str(row["Temp"]), timestamp) metric_string = "weather.hourly.windspeed " + str(row["WindSpd"]) + " " + timestamp metriclog.write(metric_string + "\n") graphitesend.send("weather.hourly.windspeed", str(row["WindSpd"]), timestamp) metric_string = "weather.hourly.winddir " + str(row["WindDir"]) + " " + timestamp metriclog.write(metric_string + "\n") graphitesend.send("weather.hourly.winddir", str(row["WindDir"]), timestamp) metric_string = "weather.hourly.humidity " + str(row["Humidity"]) + " " + timestamp metriclog.write(metric_string + "\n") graphitesend.send("weather.hourly.humidity", str(row["Humidity"]), timestamp) metric_string = "weather.hourly.feelslike " + str(feelslike) + " " + timestamp metriclog.write(metric_string + "\n")