Example #1
0
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()))
Example #2
0
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()
Example #3
0
        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")
Example #4
0
#!/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)

Example #5
0
            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
Example #6
0
    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)
Example #7
0
        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")