def convert_flac_file(input_filename, output_filename, calibration_filename, correct_phase): wavfile = uncompress_and_load(input_filename) samples_per_degree = (wavfile.getframerate() / config.MAINS_HZ) / 360 calibration = scpm.load_calibration_file(filename=calibration_filename, samples_per_degree=samples_per_degree) if calibration is None: raise Exception("No calibration data loaded.") adc_data = get_adc_data(wavfile) time = os.path.split(input_filename)[1] time = time.replace('vi-','') time = time.replace('_', '.') time = float(time) while adc_data.data: adc_data.sample_width = wavfile.getsampwidth() adc_data = scpm.join_frames_and_widen(adc_data) split_adc_data = scpm.split_channels(adc_data) adc_rms = scpm.calculate_adc_rms(split_adc_data) voltage, current = scpm.convert_adc_to_numpy_float(split_adc_data) if correct_phase: voltage, current = scpm.shift_phase(voltage, current, calibration) calcd_data = scpm.calculate_calibrated_power(split_adc_data, adc_rms, calibration) # Dump power data to disk with open(output_filename, 'a') as data_file: data_file.write('{:.1f} {:.2f} {:.2f} {:.2f}\n' .format(time, calcd_data.real_power, calcd_data.apparent_power, calcd_data.volts_rms)) adc_data = get_adc_data(wavfile) time += len(voltage) / wavfile.getframerate() wavfile.close()
def main(): scpm.init_logger() sampler = Sampler() try: sampler.open() sampler.start() try: calibration = scpm.load_calibration_file() except: calibration = None adc_data = sampler.adc_data_queue.get() except KeyboardInterrupt: sampler.terminate() else: sampler.terminate() adc_data = scpm.join_frames_and_widen(adc_data) split_adc_data = scpm.split_channels(adc_data) adc_rms = scpm.calculate_adc_rms(split_adc_data) if calibration is not None: calcd_data = scpm.calculate_calibrated_power( split_adc_data, adc_rms, calibration) print("") scpm.print_power(calcd_data) voltage, current = scpm.convert_adc_to_numpy_float(split_adc_data) voltage, current = scpm.shift_phase(voltage, current, calibration) scpm.plot(voltage, current, calibration) logging.shutdown()
def main(): scpm.init_logger() sampler = Sampler() try: sampler.open() sampler.start() try: calibration = scpm.load_calibration_file() except: calibration = None adc_data = sampler.adc_data_queue.get() except KeyboardInterrupt: sampler.terminate() else: sampler.terminate() adc_data = scpm.join_frames_and_widen(adc_data) split_adc_data = scpm.split_channels(adc_data) adc_rms = scpm.calculate_adc_rms(split_adc_data) if calibration is not None: calcd_data = scpm.calculate_calibrated_power(split_adc_data, adc_rms, calibration) print("") scpm.print_power(calcd_data) voltage, current = scpm.convert_adc_to_numpy_float(split_adc_data) voltage, current = scpm.shift_phase(voltage, current, calibration) scpm.plot(voltage, current, calibration) logging.shutdown()
def convert_flac_file(input_filename, output_filename, calibration_filename, correct_phase): wavfile = uncompress_and_load(input_filename) samples_per_degree = (wavfile.getframerate() / config.MAINS_HZ) / 360 calibration = scpm.load_calibration_file( filename=calibration_filename, samples_per_degree=samples_per_degree) if calibration is None: raise Exception("No calibration data loaded.") adc_data = get_adc_data(wavfile) time = os.path.split(input_filename)[1] time = time.replace('vi-', '') time = time.replace('_', '.') time = float(time) while adc_data.data: adc_data.sample_width = wavfile.getsampwidth() adc_data = scpm.join_frames_and_widen(adc_data) split_adc_data = scpm.split_channels(adc_data) adc_rms = scpm.calculate_adc_rms(split_adc_data) voltage, current = scpm.convert_adc_to_numpy_float(split_adc_data) if correct_phase: voltage, current = scpm.shift_phase(voltage, current, calibration) calcd_data = scpm.calculate_calibrated_power(split_adc_data, adc_rms, calibration) # Dump power data to disk with open(output_filename, 'a') as data_file: data_file.write('{:.1f} {:.2f} {:.2f} {:.2f}\n'.format( time, calcd_data.real_power, calcd_data.apparent_power, calcd_data.volts_rms)) adc_data = get_adc_data(wavfile) time += len(voltage) / wavfile.getframerate() wavfile.close()
def main(): args = setup_argparser() scpm.init_logger() wavfile = uncompress_and_load(args.input_file) samples_per_degree = (wavfile.getframerate() / config.MAINS_HZ) / 360 calibration = scpm.load_calibration_file( filename=args.calibration_file, samples_per_degree=samples_per_degree) adc_data = get_adc_data(wavfile) adc_data.sample_width = wavfile.getsampwidth() adc_data = scpm.join_frames_and_widen(adc_data) split_adc_data = scpm.split_channels(adc_data) adc_rms = scpm.calculate_adc_rms(split_adc_data) voltage, current = scpm.convert_adc_to_numpy_float(split_adc_data) print(len(voltage), len(current)) if calibration is None: print("No calibration data loaded.") else: calcd_data = scpm.calculate_calibrated_power(split_adc_data, adc_rms, calibration) print("") scpm.print_power(calcd_data) if args.correct_phase: print("Correcting phase by {} degrees = {} samples.".format( calibration.phase_diff, calibration.phase_diff_n_samples)) voltage, current = scpm.shift_phase(voltage, current, calibration) else: print("Not correcting phase difference" " (use --correct-phase to correct phase)") scpm.plot(voltage, current, calibration) wavfile.close()
def main(): args = setup_argparser() scpm.init_logger() wavfile = uncompress_and_load(args.input_file) samples_per_degree = (wavfile.getframerate() / config.MAINS_HZ) / 360 calibration = scpm.load_calibration_file(filename=args.calibration_file, samples_per_degree=samples_per_degree) adc_data = get_adc_data(wavfile) adc_data.sample_width = wavfile.getsampwidth() adc_data = scpm.join_frames_and_widen(adc_data) split_adc_data = scpm.split_channels(adc_data) adc_rms = scpm.calculate_adc_rms(split_adc_data) voltage, current = scpm.convert_adc_to_numpy_float(split_adc_data) print(len(voltage), len(current)) if calibration is None: print("No calibration data loaded.") else: calcd_data = scpm.calculate_calibrated_power(split_adc_data, adc_rms, calibration) print("") scpm.print_power(calcd_data) if args.correct_phase: print("Correcting phase by {} degrees = {} samples." .format(calibration.phase_diff, calibration.phase_diff_n_samples)) voltage, current = scpm.shift_phase(voltage, current, calibration) else: print("Not correcting phase difference" " (use --correct-phase to correct phase)") scpm.plot(voltage, current, calibration) wavfile.close()