Skip to content

An IoT device simulator that uses a real LoRaWAN® module (connected to serial port) to sent simulated IoT data to TTN® (The Things Network) infrastructure.

License

Notifications You must be signed in to change notification settings

AgroTechLab-IFSC/pyiotdevsim

trackgit-views GitHub Release GitHub top language GitHub commit activity GitHub Issues or Pull Requests GitHub Issues or Pull Requests GitHub followers GitHub forks GitHub Repo stars GitHub watchers GitHub License GitHub Downloads (all assets, all releases)

pyIoTDevSim

pyIoTDevSim is a IoT device simulator developed by AgroTechLab (Technology Development Laboratory for Agribusiness) of IFSC (Federal Institute of Santa Catarina).

It uses a real LoRaWAN module (connected to serial port) to sent simulated IoT data to TTN (The Things Network) infrastructure. Its objective is to accelerate the development of IoT solutions, allowing the validation of the communication infrastructure, data validation/formatting and storage and visualization system in parallel to the development of hardware and firmware projects.

More details can be found on the pyIoTDevSim Documentation page.

SCHEME schematic connection

Configuration file

The pyIoTDevSim.yml is the configuration file searched by pyIoTDevSim to sets system, LoRa and projects parameters.
It uses a YAML format and all sections and keys parameters must be defined in lower case mode.
Two main sections are defined:

  • system - defines common LoRa parameters, LoRa module interface and the debug level used;
  • projects - list the projects enabled to run;

The system parameters are the same to all projects:

  • debug_level - pyIoTDevSim debug level (ie: DEBUG);
  • lora_module - LoRa module (ie: RHF76-052);
  • serial - subsection with serial parameters:
    • port - serial port (ie: /dev/ttyUSB0);
    • baudrade - serial baudrate (ie: 9600);
  • lora - subsection with LoRa parameters:
    • base_band - LoRa base band (ie: AU920);
    • sub_band - LoRa sub-band (ie: 2);
    • class - LoRa class (ie: A);
    • rxwin2_freq - LoRa RX window 2 frequency (ie: 923.3);
    • rxwin2_dr - LoRa RX window 2 data ratio (ie.: DR8);
    • auth_mode - LoRa authentication mode (ie: LWABP);

The projects section list the name of projects enabled to run. An example is showed bellow (in this case Project C is defined but not will be enabled):

projects:
- Project_A
- Project_B
# - Project_C

Ater, to each project listed at projects section a new section must be created with the following parameters:

  • project_name - section with the project name (the same used at projects section);
    • sampling_period - sampling period (in seconds) of sensor list (ie: 300);
    • ttn - subsection with TTN (The Things Network) parameters:
      • dev_eui - device EUI;
      • app_eui - application EUI;
      • dev_addr - device address;
      • nwks_key - network session key;
      • apps_key - application session key;
      • app_key - application key;
    • lora - subsection with LoRa parameters:
      • tx_power - transmission power in dB (ie: 20);
      • uplink_dr - uplink data ratio (ie: DR1);
      • chan0_freq - channel 0 frequency (ie: 917.2);
      • chan0_dr - channel 0 data ratio (ie: DR1);
      • chan1_freq - channel 1 frequency (ie: 917.9);
      • chan1_dr - channel 1 data ratio (ie: DR1);
      • adr - automatic data ratio (ie: OFF);
      • repeat - transmission repeat (ie: 2);
      • retry - transmission retry (ie: 2);
      • initial_port - initial port number to transmission sensor values (ie: 10);
    • sensor_list - subsection with a list of sensors;
    • sensor_name - subsection with sensor parameters (one to each sensor listed at sensor_list):
      • data_type - sensor data type (ie: float32);
      • min_value - sensor minimum value (ie: -27.803293);
      • max_value - sensor maximum value (ie: -27.804540);

Sensor values are randomly generated between values defines at min_value and max_value. To fixed values both parameters must be the same. The data_type will define the data type and payload size used to compose LoRa message (all messages are sent using hexadecimal format). The following data types can be used:

  • int8
    • range: -128 to 127
    • size: 1 byte
  • uint8
    • range: 0 to 255
    • size: 1 byte
  • int16
    • range: -32768 to 32767
    • size: 2 bytes
  • uint16
    • range: 0 to 65535
    • size: 2 bytes
  • int32
    • range: -2147483648 to 2147483647
    • size: 4 bytes
  • uint32
    • range: 0 to 4294967295
    • size: 4 bytes
  • float_uint16
    • range: 0 to 655.35
    • size: 2 bytes
    • limitation: only 2 digits of precision
    • operation: value * 100
  • float_int15
    • range: -327.67 to 327.67
    • size: 2 bytes
    • limitation: 1 bit of sign and 15 bits of value; only 2 digits of precision
    • operation: value * 100
  • float
    • range: -3.4E+38 to +3.4E+38
    • size: 4 bytes
    • operation: sign bit, 8 bits exponent, 23 bits mantissa



AgroTechLab (Laboratório de Desenvolvimento de Tecnologias para o Agronegócio)
IFSC (Instituto Federal de Santa Catarina) - Câmpus Lages
Rua Heitor Vila Lobos, 225 - São Francisco
Lages/SC - Brazil
CEP: 88.506-400

About

An IoT device simulator that uses a real LoRaWAN® module (connected to serial port) to sent simulated IoT data to TTN® (The Things Network) infrastructure.

Topics

Resources

License

Code of conduct

Security policy

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages