Skip to content

EdgeDevice

A piece of edge hardware (sensor, gateway, controller, embedded computer) made up of one or more EdgeComponents plus a structural chassis. Aggregates fabrication and energy footprints of its components, then attributes them to the RecurrentEdgeComponentNeeds that load each one.

When to use this class

Use EdgeDevice to assemble bespoke hardware from individual EdgeComponents. For appliance-style hardware modelled as a single workload curve, prefer EdgeAppliance. For computer-like hardware composed of CPU, RAM, and storage, prefer EdgeComputer.

Common pitfalls

EdgeDevice.lifespan must be longer than every EdgeUsageJourney.usage_span that uses the device. Otherwise the device cannot last the journey and the model raises an error.

Params

name

A human readable description of the object.

structure_carbon_footprint_fabrication

Embodied carbon of the chassis or structural envelope, separate from individual components.

Unit: kilogram.

components

List of EdgeComponents that make up the device (typically RAM, CPU, storage, or workload).

A list of EdgeRAMComponents.

lifespan

Expected time before the device is replaced. Embodied carbon is amortised over this duration.

Unit: year.

Calculated attributes

lifespan_validation

Validates that the device lifespan is at least as long as every EdgeUsageJourney that uses it; raises otherwise.

Example value: no value

Depends directly on:

through the following calculations:

You can also visit the link to no value’s full calculation graph.

component_needs_edge_device_validation

Validates that every RecurrentEdgeComponentNeed loaded onto this device targets a component that actually belongs to it.

Example value: no value

Depends directly on:

through the following calculations:

You can also visit the link to no value’s full calculation graph.

total_nb_of_units

How many copies of the device are deployed in total once group hierarchies are unrolled. Defaults to 1 if the device is not in any EdgeDeviceGroup.

Example value: 2

Depends directly on:

through the following calculations:

You can also visit the link to Total nb per ensemble’s full calculation graph.

structure_fabrication_footprint_per_usage_pattern

Hourly fabrication-phase emissions of the chassis (excluding components), broken down by usage pattern.

Example value: {
EdgeUsagePattern Default edge usage pattern (7d23cf): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in t:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.0019, 0.0038, 0.0057],
last 10 vals [0.0095, 0.0095, 0.0095, 0.0095, 0.0095, 0.0076, 0.0057, 0.0038, 0.0019, 0],
}

Depends directly on:

through the following calculations:

You can also visit the link to Hourly structure fabrication footprint for Default edge usage pattern’s full calculation graph.

instances_fabrication_footprint_per_usage_pattern

Hourly fabrication-phase emissions of the whole device (chassis plus all components), broken down by usage pattern.

Example value: {
EdgeUsagePattern Default edge usage pattern (7d23cf): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in t:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.00653, 0.0131, 0.0196],
last 10 vals [0.0327, 0.0327, 0.0327, 0.0327, 0.0327, 0.0261, 0.0196, 0.0131, 0.00652, 0],
}

Depends directly on:

through the following calculations:

You can also visit the link to Hourly instances fabrication footprint for Default edge usage pattern’s full calculation graph.

instances_energy_per_usage_pattern

Hourly energy consumed by the whole device, broken down by usage pattern. Equal to the sum of component-level energy multiplied by the device count.

Example value: {
EdgeUsagePattern Default edge usage pattern (7d23cf): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in MWh:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.0206, 0.0411, 0.0617],
last 10 vals [0.103, 0.103, 0.103, 0.103, 0.103, 0.0823, 0.0617, 0.0411, 0.0205, 0],
}

Depends directly on:

through the following calculations:

You can also visit the link to Hourly energy consumed by instances for Default edge usage pattern’s full calculation graph.

energy_footprint_per_usage_pattern

Hourly carbon emissions caused by device electricity use, broken down by usage pattern. Equal to component-level energy footprints summed and multiplied by the device count.

Example value: {
EdgeUsagePattern Default edge usage pattern (7d23cf): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in t:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.00175, 0.0035, 0.00525],
last 10 vals [0.00875, 0.00875, 0.00875, 0.00875, 0.00875, 0.007, 0.00525, 0.0035, 0.00175, 0],
}

Depends directly on:

through the following calculations:

You can also visit the link to Energy footprint for Default edge usage pattern’s full calculation graph.

instances_fabrication_footprint

Total hourly fabrication-phase carbon footprint, summed across every usage pattern.

Example value: 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in t:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.00653, 0.0131, 0.0196],
last 10 vals [0.0327, 0.0327, 0.0327, 0.0327, 0.0327, 0.0261, 0.0196, 0.0131, 0.00652, 0]

Depends directly on:

through the following calculations:

You can also visit the link to Total fabrication footprint across usage patterns’s full calculation graph.

fabrication_footprint_breakdown_by_source

Per-component breakdown of the device's fabrication footprint, attributing each component's own embodied carbon plus an even share of the chassis fabrication.

Example value: {
EdgeRAMComponent edge RAM component (e7d6fc): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in t:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.00139, 0.00279, 0.00418],
last 10 vals [0.00697, 0.00696, 0.00697, 0.00697, 0.00697, 0.00557, 0.00418, 0.00278, 0.00139, 0],
EdgeCPUComponent edge CPU component (1bfc51): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in t:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.00139, 0.00279, 0.00418],
last 10 vals [0.00697, 0.00696, 0.00697, 0.00697, 0.00697, 0.00557, 0.00418, 0.00278, 0.00139, 0],
EdgeStorage edge storage component (69c12a): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in t:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.00374, 0.00749, 0.0112],
last 10 vals [0.0187, 0.0187, 0.0187, 0.0187, 0.0187, 0.015, 0.0112, 0.00748, 0.00374, 0],
}

Depends directly on:

through the following calculations:

You can also visit the link to Fabrication footprint attributed to edge RAM component’s full calculation graph.

instances_energy

Total hourly energy consumed by all instances of the device, summed across every usage pattern.

Example value: 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in MWh:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.0206, 0.0411, 0.0617],
last 10 vals [0.103, 0.103, 0.103, 0.103, 0.103, 0.0823, 0.0617, 0.0411, 0.0205, 0]

Depends directly on:

through the following calculations:

You can also visit the link to Total energy consumed across usage patterns’s full calculation graph.

energy_footprint

Total hourly energy-use carbon footprint, summed across every usage pattern.

Example value: 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in t:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.00175, 0.0035, 0.00525],
last 10 vals [0.00875, 0.00875, 0.00875, 0.00875, 0.00875, 0.007, 0.00525, 0.0035, 0.00175, 0]

Depends directly on:

through the following calculations:

You can also visit the link to Total energy footprint across usage patterns’s full calculation graph.

fabrication_impact_repartition_weights

Per-RecurrentEdgeComponentNeed weights used to attribute the device's fabrication footprint to the needs that load each component, proportional to each need's share of demand.

Example value: {
RecurrentEdgeComponentNeed RAM need (60c24c): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in t:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.00101, 0.00203, 0.00304],
last 10 vals [0.00507, 0.00507, 0.00507, 0.00507, 0.00507, 0.00405, 0.00304, 0.00202, 0.00101, 0],
RecurrentEdgeComponentNeed CPU need (d0b54c): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in t:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.00101, 0.00203, 0.00304],
last 10 vals [0.00507, 0.00507, 0.00507, 0.00507, 0.00507, 0.00405, 0.00304, 0.00202, 0.00101, 0],
RecurrentEdgeStorageNeed Storage need (41f82f): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in t:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
last 10 vals [0.011, 0.0109, 0.0109, 0.011, 0.011, 0.00876, 0.00657, 0.00437, 0.00218, 0],
}

Depends directly on:

through the following calculations:

You can also visit the link to RAM need fabrication weight in impact repartition’s full calculation graph.

fabrication_impact_repartition_weight_sum

Sum of fabrication impact repartition weights, used as the denominator when normalising into per-container shares.

Example value: 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in t:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.00203, 0.00405, 0.00608],
last 10 vals [0.0211, 0.0211, 0.0211, 0.0211, 0.0211, 0.0169, 0.0126, 0.00842, 0.00421, 0]

Depends directly on:

through the following calculations:

You can also visit the link to Fabrication impact repartition weights sum’s full calculation graph.

fabrication_impact_repartition

Normalised share of fabrication-phase emissions that this object attributes to each container.

Example value: {
RecurrentEdgeComponentNeed RAM need (60c24c): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in :
first 10 vals [1, 1, 1, 1, 1, 1, 1, 0.5, 0.5, 0.5],
last 10 vals [0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 1],
RecurrentEdgeComponentNeed CPU need (d0b54c): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in :
first 10 vals [1, 1, 1, 1, 1, 1, 1, 0.5, 0.5, 0.5],
last 10 vals [0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 0.24, 1],
RecurrentEdgeStorageNeed Storage need (41f82f): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in :
first 10 vals [1, 1, 1, 1, 1, 1, 1, 0, 0, 0],
last 10 vals [0.519, 0.519, 0.519, 0.519, 0.519, 0.519, 0.519, 0.519, 0.519, 1],
}

Depends directly on:

through the following calculations:

You can also visit the link to fabrication impact attribution to RAM need’s full calculation graph.

usage_impact_repartition_weights

Per-RecurrentEdgeComponentNeed weights used to attribute the device's energy-use footprint to the needs that load each component.

Example value: {
RecurrentEdgeComponentNeed RAM need (60c24c): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in t:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.00034, 0.000679, 0.00102],
last 10 vals [0.0017, 0.0017, 0.0017, 0.0017, 0.0017, 0.00136, 0.00102, 0.000679, 0.000339, 0],
RecurrentEdgeComponentNeed CPU need (d0b54c): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in t:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.000535, 0.00107, 0.00161],
last 10 vals [0.00268, 0.00267, 0.00268, 0.00268, 0.00268, 0.00214, 0.0016, 0.00107, 0.000534, 0],
RecurrentEdgeStorageNeed Storage need (41f82f): no value,
}

Depends directly on:

through the following calculations:

You can also visit the link to RAM need usage weight in impact repartition’s full calculation graph.

usage_impact_repartition_weight_sum

Sum of usage impact repartition weights, used as the denominator when normalising into per-container shares.

Example value: 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in t:
first 10 vals [0, 0, 0, 0, 0, 0, 0, 0.000874, 0.00175, 0.00262],
last 10 vals [0.00437, 0.00437, 0.00437, 0.00438, 0.00438, 0.0035, 0.00262, 0.00175, 0.000873, 0]

Depends directly on:

through the following calculations:

You can also visit the link to Usage impact repartition weights sum’s full calculation graph.

usage_impact_repartition

Normalised share of usage-phase emissions that this object attributes to each container.

Example value: {
RecurrentEdgeComponentNeed RAM need (60c24c): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in :
first 10 vals [1, 1, 1, 1, 1, 1, 1, 0.388, 0.388, 0.388],
last 10 vals [0.388, 0.388, 0.388, 0.388, 0.388, 0.388, 0.388, 0.388, 0.388, 1],
RecurrentEdgeComponentNeed CPU need (d0b54c): 105192 values from 2025-01-01 00:00:00+00:00 to 2037-01-01 00:00:00+00:00 in :
first 10 vals [1, 1, 1, 1, 1, 1, 1, 0.612, 0.612, 0.612],
last 10 vals [0.612, 0.612, 0.612, 0.612, 0.612, 0.612, 0.612, 0.612, 0.612, 1],
RecurrentEdgeStorageNeed Storage need (41f82f): no value,
}

Depends directly on:

through the following calculations:

You can also visit the link to usage impact attribution to RAM need’s full calculation graph.