Exemplo n.º 1
0
def main():
    # parse arguments
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument('--frequency',
                        '-f',
                        type=int,
                        default=10,
                        help='read out frequency')
    parser.add_argument('log_file',
                        type=argparse.FileType('w'),
                        default=sys.stdout,
                        nargs='?',
                        help='Output file')
    args = parser.parse_args()

    # probe for sensors
    sensors = find_sensors_by_type('sfxx') + find_sensors_by_type('sht3x')
    if not sensors:
        sys.stderr.writelines('No sensors found!\n')
        return

    # set up the printing
    log_file = args.log_file
    if log_file == sys.stdout:
        start = time.time()
        separator = '\t'
        value_format = '{0:.3f} {1}'
        missing_format = 'None {1}'
    else:
        start = 0
        separator = ','
        value_format = '{0:.3f}'
        missing_format = ''

    # print a header
    log_file.write('timestamp[s]{0}'.format(separator))
    log_file.write(
        separator.join('{0}[{1}]'.format(type(s).__name__, u) for s in sensors
                       for u in s.get_units()))
    log_file.write('\n')

    def print_values(timestamp, values):
        log_file.write(value_format.format(timestamp - start, 's'))
        for sensor, sensor_values in values.iteritems():
            for value, unit in zip(sensor_values, sensor.get_units()):
                log_file.write(separator)
                if value is None:
                    log_file.write(missing_format.format(value, unit))
                else:
                    log_file.write(value_format.format(value, unit))
        log_file.write('\n')
        return True

    # run the sensor reader synchranously
    try:
        reader = SensorReader(sensors, args.frequency, print_values)
        reader.run()
    finally:
        log_file.close()
def main():
    # parse arguments
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument('--frequency', '-f', type=int, default=10, help='read out frequency')
    parser.add_argument('log_file', type=argparse.FileType('w'), default=sys.stdout, nargs='?', help='Output file')
    args = parser.parse_args()

    # probe for sensors
    sensors = find_sensors_by_type('sfxx') + find_sensors_by_type('sht3x')
    if not sensors:
        sys.stderr.writelines('No sensors found!\n')
        return

    # set up the printing
    log_file = args.log_file
    if log_file == sys.stdout:
        start = time.time()
        separator = '\t'
        value_format = '{0:.3f} {1}'
        missing_format = 'None {1}'
    else:
        start = 0
        separator = ','
        value_format = '{0:.3f}'
        missing_format = ''

    # print a header
    log_file.write('timestamp[s]{0}'.format(separator))
    log_file.write(separator.join('{0}[{1}]'.format(type(s).__name__, u) for s in sensors for u in s.get_units()))
    log_file.write('\n')

    def print_values(timestamp, values):
        log_file.write(value_format.format(timestamp - start, 's'))
        for sensor, sensor_values in values.iteritems():
            for value, unit in zip(sensor_values, sensor.get_units()):
                log_file.write(separator)
                if value is None:
                    log_file.write(missing_format.format(value, unit))
                else:
                    log_file.write(value_format.format(value, unit))
        log_file.write('\n')
        return True

    # run the sensor reader synchranously
    try:
        reader = SensorReader(sensors, args.frequency, print_values)
        reader.run()
    finally:
        log_file.close()
def main():
    # parse arguments
    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument('--frequency', '-f', type=int, default=10, help='read out frequency')
    args = parser.parse_args()

    # probe for sensors
    sensors_list = ['sfm3000', 'sdp600']	 
    sensors = find_sensors_by_type(sensors_list[0]) + find_sensors_by_type(sensors_list[1])
    if not sensors:
        sys.stderr.writelines('No sensors found!\n')
        return

    value_format = '{0:.3f}'
    
    # write data JSON to stdout
    def print_values(timestamp, values):
	i = 0
	sdata = ''
	sdata += '\"{'
        for sensor, sensor_values in values.iteritems():
            for value, unit in zip(sensor_values, sensor.get_units()):
                if value is None:
		    continue
                else:
		    if (i > 0):
			sdata += ','
		    sdata += '\\\"' + sensors_list[i] + '\\\":'
                    sdata += value_format.format(value)
		i += 1
	sdata += '}\"'
        sdata += '\n'
		
       	sys.stdout.write(sdata) 
	sys.stdout.flush()
	return True

    # run the sensor reader synchranously
    try:
        reader = SensorReader(sensors, args.frequency, print_values)
        reader.run()
    except:
        pass
Exemplo n.º 4
0
def readSensor():
    shtObj = find_sensor_by_type('sht3x')

    if not shtObj:
        return -1

    def reportSensorValues(sensorName):
        def sensorValue(timestamp, values):
            global value
            if sys.version_info >= (3, 0):
                value = list(values.values())[0]
            else:
                value = values.values()[0]

            sensorObj.stop()

        return sensorValue

    try:
        sensorObj = SensorReader((shtObj, ), 1, reportSensorValues('shtObj'))
        sensorObj.start()
    finally:
        sensorObj.join()

    return 0
Exemplo n.º 5
0
def main():
    print('detecting sensors')
    sdp = find_sensor_by_type('sdp600')

    if not sdp:
        sys.stderr.writelines("couldn't find any sensors\n")
        return

    print('connecting to mqtt')
    client = mqtt.Client()
    client.on_connect = on_connect
    client.connect("139.59.172.240", 1884)
    print('connected')

    def send_sensor_values(sensor, sensor_name):
        def send(timestamp, values):
            global lst, counter
            measurements = values.values()[0]
            if all(m is not None for m in measurements):
                val = measurements[0]
                lst.append(val)
                print(counter)
                if counter == 6:
                    val = sum(lst) / len(lst)
                    payload = {
                        "id": str(uuid.uuid4()),
                        "createdAt": time.time(),
                        "ip": "piSerial#",
                        "ok": "true",
                        "sensor": "Sdp610",
                        "val": val
                    }
                    print(payload)
                    client.publish('Sdp610', json.dumps(payload))
                    lst = []
                    counter = 0
                counter += 1

        return send

    def signal_handler(signal, frame):
        print('terminating')
        client.disconnect()

    signal.signal(signal.SIGINT, signal_handler)

    try:
        if sdp:
            lst = []
            counter = 0
            sdp_reader = SensorReader((sdp, ), (1),
                                      send_sensor_values(sdp, 'sdp'))
            sdp_reader.start()
        client.loop_forever()
    finally:
        client.loop_stop()
        if sdp:
            sdp_reader.join()
def main():

    sfm = find_sensor_by_type('sfm3000')
    sdp = find_sensor_by_type('sdp600')
    sht = find_sensor_by_type('sht3x')
    if not all((sfm, sdp, sht)):
        sys.stderr.writelines("couldn't find all sensors\n")
        return

    def print_sensor_values(sensor_name):
        def print_to_console(timestamp, values):
            print "{0}: {1}".format(sensor_name, values.values()[0])
            return True
        return print_to_console

    try:
        sfm_reader = SensorReader((sfm,), 100, print_sensor_values('sfm'))
        sdp_reader = SensorReader((sdp,), 10, print_sensor_values('sdp'))
        sht_reader = SensorReader((sht,), 1, print_sensor_values('sht'))
        sfm_reader.start()
        sdp_reader.start()
        sht_reader.run()
    finally:
        sfm_reader.join()
        sdp_reader.join()
Exemplo n.º 7
0
def main():

    sfm = find_sensor_by_type('sfm3000')
    sdp = find_sensor_by_type('sdp600')
    sht = find_sensor_by_type('sht3x')
    if not all((sfm, sdp, sht)):
        sys.stderr.writelines("couldn't find all sensors\n")
        return

    def print_sensor_values(sensor_name):
        def print_to_console(timestamp, values):
            print "{0}: {1}".format(sensor_name, values.values()[0])
            return True

        return print_to_console

    try:
        sfm_reader = SensorReader((sfm, ), 100, print_sensor_values('sfm'))
        sdp_reader = SensorReader((sdp, ), 10, print_sensor_values('sdp'))
        sht_reader = SensorReader((sht, ), 1, print_sensor_values('sht'))
        sfm_reader.start()
        sdp_reader.start()
        sht_reader.run()
    finally:
        sfm_reader.join()
        sdp_reader.join()
def main():
    print('detecting sensors')
    sfm = find_sensor_by_type('sfm3000')
    sdp = find_sensor_by_type('sdp600')
    sht = find_sensor_by_type('sht3x')
    if not any((sfm, sdp, sht)):
        sys.stderr.writelines("couldn't find any sensors\n")
        return

    print('connecting to mqtt')
    client = mqtt.Client()
    client.on_connect = on_connect
    client.connect("localhost")

    def send_sensor_values(sensor, sensor_name):
        topic = 'sensors/{0}/{1}/values'.format(socket.gethostname(), sensor_name)
        units = sensor.get_units()

        def send(timestamp, values):
            measurements = values.values()[0]
            if all(m is not None for m in measurements):
                payload = {
                    "timestamp": timestamp,
                    "values": measurements,
                    "units": units,
                }
                client.publish(topic, json.dumps(payload))
        return send

    def signal_handler(signal, frame):
        print('terminating')
        client.disconnect()

    signal.signal(signal.SIGINT, signal_handler)

    try:
        if sfm:
            sfm_reader = SensorReader((sfm,), 100, send_sensor_values(sfm, 'sfm'))
            sfm_reader.start()
        if sdp:
            sdp_reader = SensorReader((sdp,), 10, send_sensor_values(sdp, 'sdp'))
            sdp_reader.start()
        if sht:
            sht_reader = SensorReader((sht,), 1, send_sensor_values(sht, 'sht'))
            sht_reader.start()
        client.loop_forever()
    finally:
        client.loop_stop()
        if sfm:
            sfm_reader.join()
        if sdp:
            sdp_reader.join()
        if sht:
            sht_reader.join()