def test_dc(self): r = aggregate_statuses([self.status], dc_voltage=True) self.assertEqual({ 'energy_gen': 5670, 'power_gen': 170, 'temp': Decimal('21.1'), 'voltage': Decimal('451.8'), }, r)
def test_one(self): r = aggregate_statuses([self.status]) self.assertEqual({ 'energy_gen': 5670, 'power_gen': 170, 'temp': Decimal('21.1'), 'voltage': Decimal('228.5'), }, r)
def test_two(self): status2 = dict(self.status) status2['internal_temperature'] = Decimal('22.1') status2['grid_voltage'] = Decimal('229.5') r = aggregate_statuses([self.status, status2]) self.assertEqual({ 'energy_gen': 11340, 'power_gen': 340, 'temp': Decimal('21.6'), 'voltage': Decimal('229.0'), }, r)
def test_three_phase(self): status = dict(self.status) del status['grid_voltage'] status['grid_voltage_r_phase'] = Decimal('228.6') status['grid_voltage_s_phase'] = Decimal('229.6') status['grid_voltage_t_phase'] = Decimal('229.5') r = aggregate_statuses([status]) self.assertEqual({ 'energy_gen': 5670, 'power_gen': 170, 'temp': Decimal('21.1'), 'voltage': Decimal('229.2'), }, r)
def upload(): """Uploads status to PVOutput.""" # Todo: this should be asynchronous so that multiple inverters can be requested at once status_data = aggregate_statuses( [inv.status() for inv in inverters], dc_voltage=dc_voltage) if not status_data: logging.info( "Not uploading, no inverter has operating mode normal") return # Upload logging.info("Uploading status data: %s", status_data) if not dry_run: add_status(system_id, api_key, **status_data)
def test_non_normal_operation_mode(self): self.status['operation_mode'] = "Not normal" result = aggregate_statuses([self.status]) self.assertIsNone(result)