lorawan.h 1.25 KB
Newer Older
1
2
#ifndef AMPEL_LORAWAN_H_
#define AMPEL_LORAWAN_H_
3
#if defined(AMPEL_LORAWAN) && defined(ESP32)
4
#include <Arduino.h>
Eric Duminil's avatar
Notes    
Eric Duminil committed
5
6
// Requires "MCCI LoRaWAN LMIC library", which will be automatically used with PlatformIO but should be added in "Arduino IDE".
// Tested successfully with v3.2.0 and connected to a thethingsnetwork.org app.
7
8
#include <lmic.h>
#include <hal/hal.h>
Eric Duminil's avatar
Eric Duminil committed
9
#include <arduino_lmic_hal_boards.h>
10
#include <SPI.h>
Eric Duminil's avatar
Note    
Eric Duminil committed
11

12
13
14
15
16
#include "led_effects.h"
#include "config.h"

#include "util.h"

Eric Duminil's avatar
Eric Duminil committed
17
18
19
20
namespace config {
  extern uint16_t lorawan_sending_interval; // [s]
}

Eric Duminil's avatar
Eric Duminil committed
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#if defined(CFG_eu868)
#  define LMIC_FREQUENCY_PLAN "Europe 868"
#elif defined(CFG_us915)
#  define LMIC_FREQUENCY_PLAN "US 915"
#elif defined(CFG_au915)
#  define LMIC_FREQUENCY_PLAN "Australia 915"
#elif defined(CFG_as923)
#  define LMIC_FREQUENCY_PLAN "Asia 923"
#elif defined(CFG_kr920)
#  define LMIC_FREQUENCY_PLAN "Korea 920"
#elif defined(CFG_in866)
#  define LMIC_FREQUENCY_PLAN "India 866"
#else
#  error "Region should be specified"
#endif

37
38
namespace lorawan {
  extern bool waiting_for_confirmation;
Eric Duminil's avatar
Eric Duminil committed
39
40
  extern bool connected;
  extern String last_transmission;
41
42
  void initialize();
  void process();
Eric Duminil's avatar
Eric Duminil committed
43
  void preparePayloadIfTimeHasCome(const int16_t &co2, const float &temp, const float &hum);
44
45
46
}

#endif
47
#endif