In [1]:
from nilmtk import HDFDataStore, ElecMeter
from nilmtk.stats import TotalEnergy, DropoutRate
ds = HDFDataStore('redd.h5')
ElecMeter.meter_devices.update({
'test model': {
'sample_period': 10,
'max_sample_period': 30,
'measurements': [{'physical_quantity': 'power',
'type': 'apparent',
'lower_limit': 0,
'upper_limit': 50000}]
}})
meter = ElecMeter(ds, {'data_location': '/building5/elec/meter1',
'device_model': 'test model',
'preprocessing_applied': {'clip': True}})
source = meter.get_source_node()
total_energy = TotalEnergy(source)
total_energy.run()
In [2]:
total_energy.results.to_dict()
Out[2]:
In [3]:
from nilmtk.preprocessing import Clip
source = meter.get_source_node()
clip = Clip(source)
total_energy = TotalEnergy(clip)
dropout_rate = DropoutRate(total_energy)
dropout_rate.run()
print(total_energy.results.to_dict())
print(dropout_rate.results.combined())
In [4]:
for chunk in meter.power_series():
print(chunk.head())
In [5]:
clip = Clip()
clip.upper = 10
clip.lower = 0
for chunk in meter.power_series(preprocessing=[clip]):
print(chunk.head())
In [6]:
from nilmtk import DataSet
dataset = DataSet()
dataset.load(ds)
Out[6]:
In [6]:
In [7]:
import nilmtk
nilmtk.global_meter_group.select(site_meter=True)
Out[7]:
In [8]:
nilmtk.global_meter_group.select_using_appliances(type='fridge')
Out[8]:
In [9]:
dataset.buildings[1].elec['fridge']
Out[9]:
In [10]:
dataset.buildings[1].elec
Out[10]:
In [12]:
elec = dataset.buildings[1].elec
In [13]:
elec['fridge'].plot()
In [13]:
from nilmtk.elecmeter import ElecMeterID
meter = elec[ElecMeterID(1,1,'REDD')]
print(meter.metadata)
#print(meter.device)
source = meter.get_source_node()
clip = Clip(source)
total_energy = TotalEnergy(clip)
dropout_rate = DropoutRate(total_energy)
dropout_rate.run()
print(total_energy.results.to_dict())
print(dropout_rate.results.combined())
In [14]:
# dropout rate ignoring gaps...
sections = meter.good_sections()
print(sections)
In [15]:
full_sections_results = meter.good_sections(full_results=True)
In [16]:
full_sections_results.plot()
In [17]:
source = meter.get_source_node(sections=sections)
dropout_rate = DropoutRate(source)
dropout_rate.run()
print(dropout_rate.results.combined())
In [18]:
dropout_rate.results
Out[18]:
In [19]:
dropout_rate.results.plot()
In [20]:
elec.select_using_appliances(category='single-phase induction motor')
Out[20]:
In [21]:
elec.select_using_appliances(category='resistive')
Out[21]:
In [22]:
from nilmtk.disaggregate import CombinatorialOptimisation
co = CombinatorialOptimisation()
# co.train(elec)
# co.model
In [23]:
fridge = elec['fridge']
In [24]:
fridge.available_power_ac_types()
Out[24]:
In [25]:
fridge.dominant_appliance().identifier
Out[25]:
In [26]:
elec.mains()
Out[26]:
In [27]:
graph = elec.wiring_graph()
In [28]:
elec
Out[28]:
In [29]:
elec.draw_wiring_graph()
In [30]:
elec['fridge'].upstream_meter() == elec['microwave'].upstream_meter()
Out[30]:
In [31]:
elec['fridge'].upstream_meter()
Out[31]:
In [32]:
from nilmtk import MeterGroup
from nilmtk.elecmeter import ElecMeterID
In [33]:
nilmtk.global_meter_group.from_list([ElecMeterID(3,1,'REDD'),
(
ElecMeterID(1,1,'REDD'),
(ElecMeterID(2,1,'REDD'), ElecMeterID(4,1,'REDD'))
)])
Out[33]:
In [34]:
from nilmtk import ElecMeter
ElecMeter(meter_id=ElecMeterID(1,1,'x'))
Out[34]:
In [35]:
elec.identifier
Out[35]:
In [36]:
elec.mains().total_energy()
Out[36]:
In [37]:
# energy_per_meter = elec.energy_per_meter()
In [38]:
# energy_per_meter
In [39]:
elec['fridge'].total_energy(full_results=True).combined()
Out[39]:
In [40]:
# fraction = elec.fraction_per_meter()
In [41]:
elec.available_power_ac_types()
Out[41]:
In [42]:
elec['fridge'].when_on().next().head()
Out[42]:
In [43]:
elec['fridge'].min_on_power_threshold()
Out[43]:
In [44]:
from nilmtk.electric import align_two_meters
gne = align_two_meters(elec['fridge'], elec.mains())
In [45]:
head = gne.next().head()
In [46]:
head.icol(0) - head.icol(1)
Out[46]:
In [47]:
meter.dropout_rate(sections=sections)
Out[47]:
In [47]: