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.
Backwards links
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:
- Hourly nb of edge usage journeys in parallel
- Total nb per ensemble
- Structure fabrication carbon footprint
- Lifespan
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:
- Hourly structure fabrication footprint for Default edge usage pattern
- Hourly fabrication footprint per edge device for Default edge usage pattern
- Total nb per ensemble
- Hourly fabrication footprint per edge device for Default edge usage pattern
- Hourly fabrication footprint per edge device for Default edge usage pattern
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:
- Hourly energy consumed by per edge device for Default edge usage pattern
- Hourly energy consumed by per edge device for Default edge usage pattern
- Hourly energy consumed by per edge device for Default edge usage pattern
- Total nb per ensemble
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:
- Energy footprint per edge device for Default edge usage pattern
- Energy footprint per edge device for Default edge usage pattern
- Energy footprint per edge device for Default edge usage pattern
- Total nb per ensemble
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:
- Total fabrication footprint per edge device across usage patterns
- Total nb per ensemble
- Hourly structure fabrication footprint for Default edge usage pattern
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:
- Hourly fabrication footprint per edge device for Default edge usage pattern
- Hourly structure fabrication footprint for Default edge usage pattern
- Unitary hourly need for Default edge usage pattern
- Total hourly need for Default edge usage pattern
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:
- RAM need fabrication weight in impact repartition
- CPU need fabrication weight in impact repartition
- Storage need fabrication weight in impact repartition
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:
- Energy footprint per edge device for Default edge usage pattern
- Unitary hourly need for Default edge usage pattern
- Total hourly need for Default edge usage pattern
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:
- RAM need usage weight in impact repartition
- CPU need usage weight in impact repartition
- Storage need usage weight in impact repartition
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.