This repository contains an extended version of the FLoRaSat framework with a
new energy-efficiency module (ECO-SAT) designed to compute energy
consumption of LoRa IoT devices in Direct-to-Satellite (DTS) scenarios.
The modifications focus primarily on the LoRaRadio.cc module, enabling
fine-grained tracking of Tx, Rx, Idle, and Sleep states based on LoRa PHY
parameters.
These extensions were developed to support the research described in the accompanying article on energy optimization in satellite-based LoRaWAN systems.
Below is a concise summary of the main changes introduced into the original OMNeT++ LoRa radio.
INET’s built-in reception handling was bypassed:
// FlatRadioBase::startReception(timer, part);and replaced by a custom LoRa-specific routine:
auto isReceptionSuccessful =
medium->getReceptionDecision(this, signal->getListening(), transmission, part)
->isReceptionSuccessful();This allows explicit control over reception start, success/failure, and duration of each radio state.
The preamble is now added at the beginning of each transmitted packet:
auto preamble = makeShared<LoRaPhyPreamble>();
packet->insertAtFront(preamble);and removed during decapsulation:
auto preamble = packet->popAtFront<LoRaPhyPreamble>();This exposes real LoRa PHY parameters (SF, BW, CR, Tx power) to the energy consumer.
A new signal was created to capture failed receptions that the original INET radio does not expose:
simsignal_t LoRaRadio::droppedPacket =
cComponent::registerSignal("droppedPacket");
emit(LoRaRadio::droppedPacket, 0);Transmission power is now computed and stored manually to support the new energy model:
setCurrentTxPower(10 * log10(tag->getPower().get() * 1000.0));A SignalPowerReq tag is also forced into each packet:
auto signalPowerReq = packet->addTagIfAbsent<SignalPowerReq>();
signalPowerReq->setPower(tag->getPower());These instructions are for setting up the FLoRaSat framework for use with OMNeT++.
- OMNeT++: You must have
OMNeT++version6.0.3installed. - INET Framework: In the OMNeT++ IDE, go to the menu Help >> Install Simulation Models... and install the
INETframework, version4.3.9, into your workspace.
-
Open a terminal and navigate to your OMNeT++ workspace directory. This is typically where you store your simulation projects.
# Navigate to your workspace (adjust the path if necessary) cd ~/omnetpp-6.0.3/workspace
-
Clone the FLoRaSat repository from GitLab.
git clone [https://gitlab.inria.fr/jfraire/florasat.git](https://gitlab.inria.fr/jfraire/florasat.git)
-
Navigate into the newly cloned directory.
cd florasat -
Check out a specific, known-working commit.
Note: The
masterbranch of FLoRaSat may have compatibility issues with the required versions of OMNeT++ and INET. The following commit is known to be stable with this setup.git checkout 989866236a3ded66dbac60a132609fb859ef98aa
-
(Optional) Create a new branch from this commit to save your work.
# Creates a new branch named 'stable-build' git checkout -b stable-build
- Open or return to the OMNeT++ IDE.
- Go to the menu File >> Open Projects from File System....
- Select the
florasatproject directory you just cloned and add it to the workspace. - In the Project Explorer, right-click on the
florasatproject and go to Properties. - In the Properties window, navigate to Project References and ensure that only
inet(version 4.3.9) is selected. - Finally, right-click the
florasatproject again and select Build Project.