-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathcalculate_energy_per_payload.py
45 lines (36 loc) · 1.4 KB
/
calculate_energy_per_payload.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import pandas as pd
import matplotlib.pyplot as plt
from multihop.Packets import *
from multihop.config import settings
from multihop.Nodes import power_of_state, NodeState
from multihop.preambles import preambles
payload_sizes = range(1, 30, 5)
payload_ns = range(1, 25, 1)
_payload_sizes = []
_payload_ns = []
energies = []
energies_per_payload = []
for payload_n in payload_ns:
for payload_size in payload_sizes:
p = Message(MessageType.TYPE_ROUTED, 0, 0, 0, 1, [1] * payload_size, None,
[Message(MessageType.TYPE_ROUTED, 0, 0, 0, 1, [1] * payload_size, None, [])] * payload_n)
print(p)
if p.size() < 255:
energy = preambles[settings.LORA_SF][settings.MEASURE_INTERVAL_S] * power_of_state(NodeState.STATE_PREAMBLE_TX) + p.time() * power_of_state(NodeState.STATE_TX)
_payload_sizes.append(payload_size)
_payload_ns.append(payload_n)
energies.append(energy)
energies_per_payload.append(energy/(payload_n+1)) # + 1 because of own payload
df = pd.DataFrame({
"payload_size": _payload_sizes,
"payload_n": _payload_ns,
"energy": energies,
"energy_per_payload": energies_per_payload
})
plt.ioff()
_df = df.pivot(index='payload_n', columns='payload_size', values='energy_per_payload')
_df.plot()
plt.show()
# import tikzplotlib
# tikzplotlib.save("results/calculate_energy_per_payload.tex")
print("The end")