commit
e42152aba3
@ -17,7 +17,6 @@ void housekeeping(void);
|
|||||||
void doHousekeeping(void);
|
void doHousekeeping(void);
|
||||||
uint64_t uptime(void);
|
uint64_t uptime(void);
|
||||||
void reset_counters(void);
|
void reset_counters(void);
|
||||||
int redirect_log(const char *fmt, va_list args);
|
|
||||||
uint32_t getFreeRAM();
|
uint32_t getFreeRAM();
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -4,7 +4,7 @@
|
|||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
#include "rcommand.h"
|
#include "rcommand.h"
|
||||||
#include "timekeeper.h"
|
#include "timekeeper.h"
|
||||||
#ifdef DBTIMESYNC
|
#if(DBTIMESYNC)
|
||||||
#include "DBtimesync.h"
|
#include "DBtimesync.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
#include <rom/rtc.h>
|
#include <rom/rtc.h>
|
||||||
#include "cyclic.h"
|
#include "cyclic.h"
|
||||||
#include "timekeeper.h"
|
#include "timekeeper.h"
|
||||||
#ifdef DBTIMESYNC
|
#if(DBTIMESYNC)
|
||||||
#include "DBtimesync.h"
|
#include "DBtimesync.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ description = Paxcounter is a proof-of-concept ESP32 device for metering passeng
|
|||||||
|
|
||||||
[common]
|
[common]
|
||||||
; for release_version use max. 10 chars total, use any decimal format like "a.b.c"
|
; for release_version use max. 10 chars total, use any decimal format like "a.b.c"
|
||||||
release_version = 1.7.35
|
release_version = 1.7.36
|
||||||
; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running!
|
; DEBUG LEVEL: For production run set to 0, otherwise device will leak RAM while running!
|
||||||
; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose
|
; 0=None, 1=Error, 2=Warn, 3=Info, 4=Debug, 5=Verbose
|
||||||
debug_level = 3
|
debug_level = 3
|
||||||
|
@ -146,7 +146,7 @@ IRAM_ATTR void gap_callback_handler(esp_gap_ble_cb_event_t event,
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef VENDORFILTER
|
#if(VENDORFILTER)
|
||||||
|
|
||||||
if ((p->scan_rst.ble_addr_type == BLE_ADDR_TYPE_RANDOM) ||
|
if ((p->scan_rst.ble_addr_type == BLE_ADDR_TYPE_RANDOM) ||
|
||||||
(p->scan_rst.ble_addr_type == BLE_ADDR_TYPE_RPA_RANDOM)) {
|
(p->scan_rst.ble_addr_type == BLE_ADDR_TYPE_RPA_RANDOM)) {
|
||||||
@ -210,7 +210,7 @@ esp_err_t register_ble_callback(void) {
|
|||||||
.scan_type = BLE_SCAN_TYPE_PASSIVE,
|
.scan_type = BLE_SCAN_TYPE_PASSIVE,
|
||||||
.own_addr_type = BLE_ADDR_TYPE_RANDOM,
|
.own_addr_type = BLE_ADDR_TYPE_RANDOM,
|
||||||
|
|
||||||
#ifdef VENDORFILTER
|
#if(VENDORFILTER)
|
||||||
.scan_filter_policy = BLE_SCAN_FILTER_ALLOW_WLIST_PRA_DIR,
|
.scan_filter_policy = BLE_SCAN_FILTER_ALLOW_WLIST_PRA_DIR,
|
||||||
// ADV_IND, ADV_NONCONN_IND, ADV_SCAN_IND packets are used for broadcasting
|
// ADV_IND, ADV_NONCONN_IND, ADV_SCAN_IND packets are used for broadcasting
|
||||||
// data in broadcast applications (e.g., Beacons), so we don't want them in
|
// data in broadcast applications (e.g., Beacons), so we don't want them in
|
||||||
@ -234,7 +234,7 @@ esp_err_t register_ble_callback(void) {
|
|||||||
} // register_ble_callback
|
} // register_ble_callback
|
||||||
|
|
||||||
void start_BLEscan(void) {
|
void start_BLEscan(void) {
|
||||||
#ifdef BLECOUNTER
|
#if(BLECOUNTER)
|
||||||
ESP_LOGI(TAG, "Initializing bluetooth scanner ...");
|
ESP_LOGI(TAG, "Initializing bluetooth scanner ...");
|
||||||
|
|
||||||
ESP_ERROR_CHECK(esp_coex_preference_set(
|
ESP_ERROR_CHECK(esp_coex_preference_set(
|
||||||
@ -254,7 +254,7 @@ void start_BLEscan(void) {
|
|||||||
} // start_BLEscan
|
} // start_BLEscan
|
||||||
|
|
||||||
void stop_BLEscan(void) {
|
void stop_BLEscan(void) {
|
||||||
#ifdef BLECOUNTER
|
#if(BLECOUNTER)
|
||||||
ESP_LOGI(TAG, "Shutting down bluetooth scanner ...");
|
ESP_LOGI(TAG, "Shutting down bluetooth scanner ...");
|
||||||
ESP_ERROR_CHECK(esp_ble_gap_register_callback(NULL));
|
ESP_ERROR_CHECK(esp_ble_gap_register_callback(NULL));
|
||||||
ESP_ERROR_CHECK(esp_bluedroid_disable());
|
ESP_ERROR_CHECK(esp_bluedroid_disable());
|
||||||
|
@ -115,11 +115,4 @@ void reset_counters() {
|
|||||||
macs_total = 0; // reset all counters
|
macs_total = 0; // reset all counters
|
||||||
macs_wifi = 0;
|
macs_wifi = 0;
|
||||||
macs_ble = 0;
|
macs_ble = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef VERBOSE
|
|
||||||
int redirect_log(const char *fmt, va_list args) {
|
|
||||||
// do nothing
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
@ -89,7 +89,7 @@ void init_display(const char *Productname, const char *Version) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Display chip information
|
// Display chip information
|
||||||
#ifdef VERBOSE
|
#if(VERBOSE)
|
||||||
esp_chip_info_t chip_info;
|
esp_chip_info_t chip_info;
|
||||||
esp_chip_info(&chip_info);
|
esp_chip_info(&chip_info);
|
||||||
u8x8.printf("ESP32 %d cores\nWiFi%s%s\n", chip_info.cores,
|
u8x8.printf("ESP32 %d cores\nWiFi%s%s\n", chip_info.cores,
|
||||||
@ -114,7 +114,7 @@ void init_display(const char *Productname, const char *Version) {
|
|||||||
u8x8.clear();
|
u8x8.clear();
|
||||||
u8x8.setPowerSave(!cfg.screenon); // set display off if disabled
|
u8x8.setPowerSave(!cfg.screenon); // set display off if disabled
|
||||||
u8x8.draw2x2String(0, 0, "PAX:0");
|
u8x8.draw2x2String(0, 0, "PAX:0");
|
||||||
#ifdef BLECOUNTER
|
#if(BLECOUNTER)
|
||||||
u8x8.setCursor(0, 3);
|
u8x8.setCursor(0, 3);
|
||||||
u8x8.printf("BLTH:0");
|
u8x8.printf("BLTH:0");
|
||||||
#endif
|
#endif
|
||||||
@ -178,7 +178,7 @@ void refreshtheDisplay() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// update bluetooth counter + LoRa SF (line 3)
|
// update bluetooth counter + LoRa SF (line 3)
|
||||||
#ifdef BLECOUNTER
|
#if(BLECOUNTER)
|
||||||
u8x8.setCursor(0, 3);
|
u8x8.setCursor(0, 3);
|
||||||
if (cfg.blescan)
|
if (cfg.blescan)
|
||||||
u8x8.printf("BLTH:%-5d", macs_ble);
|
u8x8.printf("BLTH:%-5d", macs_ble);
|
||||||
|
@ -155,7 +155,7 @@ void get_hard_deveui(uint8_t *pdeveui) {
|
|||||||
#endif // MCP 24AA02E64
|
#endif // MCP 24AA02E64
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef VERBOSE
|
#if(VERBOSE)
|
||||||
|
|
||||||
// Display OTAA keys
|
// Display OTAA keys
|
||||||
void showLoraKeys(void) {
|
void showLoraKeys(void) {
|
||||||
@ -225,7 +225,7 @@ void onEvent(ev_t ev) {
|
|||||||
|
|
||||||
case EV_TXCOMPLETE:
|
case EV_TXCOMPLETE:
|
||||||
|
|
||||||
#ifdef DBTIMESYNC
|
#if(DBTIMESYNC)
|
||||||
if (!(LMIC.txrxFlags & TXRX_ACK) && time_sync_seqNo)
|
if (!(LMIC.txrxFlags & TXRX_ACK) && time_sync_seqNo)
|
||||||
time_sync_messages[time_sync_seqNo - 1] = LMIC.txend;
|
time_sync_messages[time_sync_seqNo - 1] = LMIC.txend;
|
||||||
#endif
|
#endif
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
// Basic Config
|
// Basic Config
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
|
|
||||||
#ifdef VENDORFILTER
|
#if(VENDORFILTER)
|
||||||
#include "vendor_array.h"
|
#include "vendor_array.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -49,7 +49,7 @@ bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) {
|
|||||||
int8_t beaconID; // beacon number in test monitor mode
|
int8_t beaconID; // beacon number in test monitor mode
|
||||||
uint16_t hashedmac; // temporary buffer for generated hash value
|
uint16_t hashedmac; // temporary buffer for generated hash value
|
||||||
uint32_t addr2int; // temporary buffer for shortened MAC
|
uint32_t addr2int; // temporary buffer for shortened MAC
|
||||||
#ifdef VENDORFILTER
|
#if(VENDORFILTER)
|
||||||
uint32_t vendor2int; // temporary buffer for Vendor OUI
|
uint32_t vendor2int; // temporary buffer for Vendor OUI
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -58,7 +58,7 @@ bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) {
|
|||||||
addr2int = ((uint32_t)paddr[2]) | ((uint32_t)paddr[3] << 8) |
|
addr2int = ((uint32_t)paddr[2]) | ((uint32_t)paddr[3] << 8) |
|
||||||
((uint32_t)paddr[4] << 16) | ((uint32_t)paddr[5] << 24);
|
((uint32_t)paddr[4] << 16) | ((uint32_t)paddr[5] << 24);
|
||||||
|
|
||||||
#ifdef VENDORFILTER
|
#if(VENDORFILTER)
|
||||||
vendor2int = ((uint32_t)paddr[2]) | ((uint32_t)paddr[1] << 8) |
|
vendor2int = ((uint32_t)paddr[2]) | ((uint32_t)paddr[1] << 8) |
|
||||||
((uint32_t)paddr[0] << 16);
|
((uint32_t)paddr[0] << 16);
|
||||||
// use OUI vendor filter list only on Wifi, not on BLE
|
// use OUI vendor filter list only on Wifi, not on BLE
|
||||||
@ -88,7 +88,7 @@ bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) {
|
|||||||
blink_LED(COLOR_GREEN, 50);
|
blink_LED(COLOR_GREEN, 50);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#ifdef BLECOUNTER
|
#if(BLECOUNTER)
|
||||||
else if (sniff_type == MAC_SNIFF_BLE) {
|
else if (sniff_type == MAC_SNIFF_BLE) {
|
||||||
macs_ble++; // increment BLE Macs counter
|
macs_ble++; // increment BLE Macs counter
|
||||||
#if (HAS_LED != NOT_A_PIN) || defined(HAS_RGB_LED)
|
#if (HAS_LED != NOT_A_PIN) || defined(HAS_RGB_LED)
|
||||||
@ -121,7 +121,7 @@ bool mac_add(uint8_t *paddr, int8_t rssi, bool sniff_type) {
|
|||||||
sniff_type == MAC_SNIFF_WIFI ? "WiFi" : "BLTH", rssi, buff,
|
sniff_type == MAC_SNIFF_WIFI ? "WiFi" : "BLTH", rssi, buff,
|
||||||
hashedmac, macs_wifi, macs_ble, getFreeRAM());
|
hashedmac, macs_wifi, macs_ble, getFreeRAM());
|
||||||
|
|
||||||
#ifdef VENDORFILTER
|
#if(VENDORFILTER)
|
||||||
} else {
|
} else {
|
||||||
// Very noisy
|
// Very noisy
|
||||||
// ESP_LOGD(TAG, "Filtered MAC %02X:%02X:%02X:%02X:%02X:%02X",
|
// ESP_LOGD(TAG, "Filtered MAC %02X:%02X:%02X:%02X:%02X:%02X",
|
||||||
|
29
src/main.cpp
29
src/main.cpp
@ -105,9 +105,6 @@ static const char TAG[] = __FILE__;
|
|||||||
|
|
||||||
void setup() {
|
void setup() {
|
||||||
|
|
||||||
// disable the default wifi logging
|
|
||||||
esp_log_level_set("wifi", ESP_LOG_NONE);
|
|
||||||
|
|
||||||
char features[100] = "";
|
char features[100] = "";
|
||||||
|
|
||||||
// create some semaphores for syncing / mutexing tasks
|
// create some semaphores for syncing / mutexing tasks
|
||||||
@ -124,19 +121,18 @@ void setup() {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// setup debug output or silence device
|
// setup debug output or silence device
|
||||||
#ifdef VERBOSE
|
#if(VERBOSE)
|
||||||
Serial.begin(115200);
|
Serial.begin(115200);
|
||||||
esp_log_level_set("*", ESP_LOG_VERBOSE);
|
esp_log_level_set("*", ESP_LOG_VERBOSE);
|
||||||
#else
|
#else
|
||||||
// mute logs completely by redirecting them to silence function
|
// mute logs completely by redirecting them to silence function
|
||||||
esp_log_level_set("*", ESP_LOG_NONE);
|
esp_log_level_set("*", ESP_LOG_NONE);
|
||||||
esp_log_set_vprintf(redirect_log);
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
ESP_LOGI(TAG, "Starting %s v%s", PRODUCTNAME, PROGVERSION);
|
ESP_LOGI(TAG, "Starting %s v%s", PRODUCTNAME, PROGVERSION);
|
||||||
|
|
||||||
// print chip information on startup if in verbose mode
|
// print chip information on startup if in verbose mode
|
||||||
#ifdef VERBOSE
|
#if(VERBOSE)
|
||||||
esp_chip_info_t chip_info;
|
esp_chip_info_t chip_info;
|
||||||
esp_chip_info(&chip_info);
|
esp_chip_info(&chip_info);
|
||||||
ESP_LOGI(TAG,
|
ESP_LOGI(TAG,
|
||||||
@ -162,13 +158,14 @@ void setup() {
|
|||||||
#ifdef HAS_LORA
|
#ifdef HAS_LORA
|
||||||
ESP_LOGI(TAG, "IBM LMIC version %d.%d.%d", LMIC_VERSION_MAJOR,
|
ESP_LOGI(TAG, "IBM LMIC version %d.%d.%d", LMIC_VERSION_MAJOR,
|
||||||
LMIC_VERSION_MINOR, LMIC_VERSION_BUILD);
|
LMIC_VERSION_MINOR, LMIC_VERSION_BUILD);
|
||||||
|
|
||||||
ESP_LOGI(TAG, "Arduino LMIC version %d.%d.%d.%d",
|
ESP_LOGI(TAG, "Arduino LMIC version %d.%d.%d.%d",
|
||||||
ARDUINO_LMIC_VERSION_GET_MAJOR(ARDUINO_LMIC_VERSION),
|
ARDUINO_LMIC_VERSION_GET_MAJOR(ARDUINO_LMIC_VERSION),
|
||||||
ARDUINO_LMIC_VERSION_GET_MINOR(ARDUINO_LMIC_VERSION),
|
ARDUINO_LMIC_VERSION_GET_MINOR(ARDUINO_LMIC_VERSION),
|
||||||
ARDUINO_LMIC_VERSION_GET_PATCH(ARDUINO_LMIC_VERSION),
|
ARDUINO_LMIC_VERSION_GET_PATCH(ARDUINO_LMIC_VERSION),
|
||||||
ARDUINO_LMIC_VERSION_GET_LOCAL(ARDUINO_LMIC_VERSION));
|
ARDUINO_LMIC_VERSION_GET_LOCAL(ARDUINO_LMIC_VERSION));
|
||||||
#endif
|
ESP_LOGI(TAG, "DEVEUI: ");
|
||||||
|
showLoraKeys();
|
||||||
|
#endif // HAS_LORA
|
||||||
|
|
||||||
#ifdef HAS_GPS
|
#ifdef HAS_GPS
|
||||||
ESP_LOGI(TAG, "TinyGPS+ version %s", TinyGPSPlus::libraryVersion());
|
ESP_LOGI(TAG, "TinyGPS+ version %s", TinyGPSPlus::libraryVersion());
|
||||||
@ -230,7 +227,7 @@ void setup() {
|
|||||||
batt_voltage = read_voltage();
|
batt_voltage = read_voltage();
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef USE_OTA
|
#if(USE_OTA)
|
||||||
strcat_P(features, " OTA");
|
strcat_P(features, " OTA");
|
||||||
// reboot to firmware update mode if ota trigger switch is set
|
// reboot to firmware update mode if ota trigger switch is set
|
||||||
if (cfg.runmode == 1) {
|
if (cfg.runmode == 1) {
|
||||||
@ -242,7 +239,7 @@ void setup() {
|
|||||||
|
|
||||||
// start BLE scan callback if BLE function is enabled in NVRAM configuration
|
// start BLE scan callback if BLE function is enabled in NVRAM configuration
|
||||||
// or switch off bluetooth, if not compiled
|
// or switch off bluetooth, if not compiled
|
||||||
#ifdef BLECOUNTER
|
#if(BLECOUNTER)
|
||||||
strcat_P(features, " BLE");
|
strcat_P(features, " BLE");
|
||||||
if (cfg.blescan) {
|
if (cfg.blescan) {
|
||||||
ESP_LOGI(TAG, "Starting Bluetooth...");
|
ESP_LOGI(TAG, "Starting Bluetooth...");
|
||||||
@ -251,10 +248,7 @@ void setup() {
|
|||||||
btStop();
|
btStop();
|
||||||
#else
|
#else
|
||||||
// remove bluetooth stack to gain more free memory
|
// remove bluetooth stack to gain more free memory
|
||||||
ESP_ERROR_CHECK(esp_bluedroid_disable());
|
|
||||||
ESP_ERROR_CHECK(esp_bluedroid_deinit());
|
|
||||||
btStop();
|
btStop();
|
||||||
ESP_ERROR_CHECK(esp_bt_controller_deinit());
|
|
||||||
ESP_ERROR_CHECK(esp_bt_mem_release(ESP_BT_MODE_BTDM));
|
ESP_ERROR_CHECK(esp_bt_mem_release(ESP_BT_MODE_BTDM));
|
||||||
ESP_ERROR_CHECK(esp_coex_preference_set((
|
ESP_ERROR_CHECK(esp_coex_preference_set((
|
||||||
esp_coex_prefer_t)ESP_COEX_PREFER_WIFI)); // configure Wifi/BT coexist lib
|
esp_coex_prefer_t)ESP_COEX_PREFER_WIFI)); // configure Wifi/BT coexist lib
|
||||||
@ -307,7 +301,7 @@ void setup() {
|
|||||||
assert(spi_init() == ESP_OK);
|
assert(spi_init() == ESP_OK);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef VENDORFILTER
|
#if(VENDORFILTER)
|
||||||
strcat_P(features, " OUIFLT");
|
strcat_P(features, " OUIFLT");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -346,13 +340,6 @@ void setup() {
|
|||||||
// show compiled features
|
// show compiled features
|
||||||
ESP_LOGI(TAG, "Features:%s", features);
|
ESP_LOGI(TAG, "Features:%s", features);
|
||||||
|
|
||||||
#ifdef HAS_LORA
|
|
||||||
// output LoRaWAN keys to console
|
|
||||||
#ifdef VERBOSE
|
|
||||||
showLoraKeys();
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// start wifi in monitor mode and start channel rotation timer
|
// start wifi in monitor mode and start channel rotation timer
|
||||||
ESP_LOGI(TAG, "Starting Wifi...");
|
ESP_LOGI(TAG, "Starting Wifi...");
|
||||||
wifi_sniffer_init();
|
wifi_sniffer_init();
|
||||||
|
@ -7,15 +7,15 @@
|
|||||||
#define PRODUCTNAME "PAXCNT"
|
#define PRODUCTNAME "PAXCNT"
|
||||||
|
|
||||||
// Verbose enables serial output
|
// Verbose enables serial output
|
||||||
#define VERBOSE 1 // comment out to silence the device, for mute use build option
|
#define VERBOSE 1 // set to 0 to silence the device, for mute use build option
|
||||||
|
|
||||||
// Payload send cycle and encoding
|
// Payload send cycle and encoding
|
||||||
#define SENDCYCLE 30 // payload send cycle [seconds/2], 0 .. 255
|
#define SENDCYCLE 30 // payload send cycle [seconds/2], 0 .. 255
|
||||||
#define PAYLOAD_ENCODER 2 // payload encoder: 1=Plain, 2=Packed, 3=Cayenne LPP dynamic, 4=Cayenne LPP packed
|
#define PAYLOAD_ENCODER 2 // payload encoder: 1=Plain, 2=Packed, 3=Cayenne LPP dynamic, 4=Cayenne LPP packed
|
||||||
|
|
||||||
// Set this to include BLE counting and vendor filter functions
|
// Set this to include BLE counting and vendor filter functions
|
||||||
#define VENDORFILTER 1 // comment out if you want to count things, not people
|
#define VENDORFILTER 1 // set to 0 if you want to count things, not people
|
||||||
#define BLECOUNTER 1 // activate if you want to use BLE count, at expense of memory
|
#define BLECOUNTER 0 // set it to 1 if you want to use BLE count, at expense of memory
|
||||||
|
|
||||||
// BLE scan parameters
|
// BLE scan parameters
|
||||||
#define BLESCANTIME 0 // [seconds] scan duration, 0 means infinite [default], see note below
|
#define BLESCANTIME 0 // [seconds] scan duration, 0 means infinite [default], see note below
|
||||||
@ -59,7 +59,7 @@
|
|||||||
#define STATE_SAVE_PERIOD UINT32_C(360 * 60 * 1000) // update every 360 minutes = 4 times a day
|
#define STATE_SAVE_PERIOD UINT32_C(360 * 60 * 1000) // update every 360 minutes = 4 times a day
|
||||||
|
|
||||||
// OTA settings
|
// OTA settings
|
||||||
#define USE_OTA 1 // Comment out to disable OTA update
|
#define USE_OTA 1 // set to 0 to disable OTA update
|
||||||
#define WIFI_MAX_TRY 5 // maximum number of wifi connect attempts for OTA update [default = 20]
|
#define WIFI_MAX_TRY 5 // maximum number of wifi connect attempts for OTA update [default = 20]
|
||||||
#define OTA_MAX_TRY 5 // maximum number of attempts for OTA download and write to flash [default = 3]
|
#define OTA_MAX_TRY 5 // maximum number of attempts for OTA download and write to flash [default = 3]
|
||||||
#define OTA_MIN_BATT 3600 // minimum battery level for OTA [millivolt]
|
#define OTA_MIN_BATT 3600 // minimum battery level for OTA [millivolt]
|
||||||
@ -67,8 +67,8 @@
|
|||||||
|
|
||||||
// settings for syncing time of node with external time source
|
// settings for syncing time of node with external time source
|
||||||
#define TIME_SYNC_INTERVAL 2 // sync time attempt each .. minutes from time source (GPS/LORA/RTC) [default = 60], comment out means off
|
#define TIME_SYNC_INTERVAL 2 // sync time attempt each .. minutes from time source (GPS/LORA/RTC) [default = 60], comment out means off
|
||||||
//#define TIME_SYNC_LORA 1 // use LORA network as time source, comment out means off [default = off]
|
#define TIME_SYNC_LORA 0 // set to 1 to use LORA network as time source, comment out means off [default = off]
|
||||||
//#define DBTIMESYNC 1 // use DB LORA timeserver with patented sync algorithm [default = off]
|
#define DBTIMESYNC 0 // set to 1 to use DB LORA timeserver with patented sync algorithm [default = off]
|
||||||
|
|
||||||
// time zone, see https://github.com/JChristensen/Timezone/blob/master/examples/WorldClock/WorldClock.ino
|
// time zone, see https://github.com/JChristensen/Timezone/blob/master/examples/WorldClock/WorldClock.ino
|
||||||
#define DAYLIGHT_TIME {"CEST", Last, Sun, Mar, 2, 120} // Central European Summer Time
|
#define DAYLIGHT_TIME {"CEST", Last, Sun, Mar, 2, 120} // Central European Summer Time
|
||||||
|
@ -38,7 +38,7 @@ void set_reset(uint8_t val[]) {
|
|||||||
break;
|
break;
|
||||||
case 9: // reset and ask for software update via Wifi OTA
|
case 9: // reset and ask for software update via Wifi OTA
|
||||||
ESP_LOGI(TAG, "Remote command: software update via Wifi");
|
ESP_LOGI(TAG, "Remote command: software update via Wifi");
|
||||||
#ifdef USE_OTA
|
#if(USE_OTA)
|
||||||
sprintf(display_line6, "Software update");
|
sprintf(display_line6, "Software update");
|
||||||
cfg.runmode = 1;
|
cfg.runmode = 1;
|
||||||
#else
|
#else
|
||||||
@ -306,7 +306,7 @@ cmd_t table[] = {{0x01, set_rssi, 1, true},
|
|||||||
{0x84, get_gps, 0, false},
|
{0x84, get_gps, 0, false},
|
||||||
{0x85, get_bme, 0, false},
|
{0x85, get_bme, 0, false},
|
||||||
{0x86, get_time, 0, false}
|
{0x86, get_time, 0, false}
|
||||||
#ifdef DBTIMESYNC
|
#if(DBTIMESYNC)
|
||||||
,
|
,
|
||||||
{TIME_ANS_OPCODE, recv_DBtime_ans, 0, false},
|
{TIME_ANS_OPCODE, recv_DBtime_ans, 0, false},
|
||||||
{TIME_SYNC_OPCODE, force_DBtime_sync, 0, false}
|
{TIME_SYNC_OPCODE, force_DBtime_sync, 0, false}
|
||||||
|
@ -36,10 +36,10 @@ time_t timeProvider(void) {
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// kick off asychronous DB timesync if we have
|
// kick off asychronous DB timesync if we have
|
||||||
#ifdef DBTIMESYNC
|
#if(DBTIMESYNC)
|
||||||
send_DBtime_req();
|
send_DBtime_req();
|
||||||
// kick off asychronous lora sync if we have
|
// kick off asychronous lora sync if we have
|
||||||
#elif defined HAS_LORA && defined TIME_SYNC_LORA
|
#elif defined HAS_LORA && (TIME_SYNC_LORA)
|
||||||
LMIC_requestNetworkTime(user_request_network_time_callback, &userUTCTime);
|
LMIC_requestNetworkTime(user_request_network_time_callback, &userUTCTime);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user