Compare commits

...

3 Commits

7 changed files with 103 additions and 15 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

View File

@ -2,10 +2,16 @@
#define _LORA_NET_H_ #define _LORA_NET_H_
#include <Arduino.h> #include <Arduino.h>
#ifdef LORA_FEATURE_ENABLED
#include <LoRa_E220.h> #include <LoRa_E220.h>
#elif defined(FEATURE_ENABLE_UARTLORA)
#include <SoftwareSerial.h>
#endif
// local includes // local includes
#include "lora_messages.h" #include "lora_messages.h"
#include "debugger.h"
#include "defaults.h" #include "defaults.h"
#include "config.h" #include "config.h"
#include "globals.h" #include "globals.h"

View File

@ -14,6 +14,9 @@
#error "You must define an WIFI_AP_PASSWORD for Standalone AP-Mode" #error "You must define an WIFI_AP_PASSWORD for Standalone AP-Mode"
#endif #endif
#if defined(FEATURE_ENABLE_UARTLORA) && defined(FEATURE_ENABLE_LORA)
#error "You cannot enable LoRa and UART-Protocol at the same time!"
#endif
#ifdef FEATURE_ENABLE_WIFI_CLIENT #ifdef FEATURE_ENABLE_WIFI_CLIENT
#ifndef WIFI_CLIENT_PASSWORD #ifndef WIFI_CLIENT_PASSWORD

View File

@ -22,7 +22,7 @@ upload_speed = 921600
;upload_port = 10.0.1.48 ;upload_port = 10.0.1.48
;upload_protocol = espota ;upload_protocol = espota
;upload_flags = ;upload_flags =
; --auth=${wifi_cred.admin_password} ; --auth=${wifi_cred.ota_password}
build_flags= build_flags=
!python git_rev_macro.py !python git_rev_macro.py
@ -30,8 +30,9 @@ build_flags=
;-DFEATURE_ENABLE_WIFI_CLIENT ;-DFEATURE_ENABLE_WIFI_CLIENT
;-DFEATURE_ENABLE_LORA ;-DFEATURE_ENABLE_LORA
;-DCAPTIVE ;-DCAPTIVE
-DFEATURE_ENABLE_UARTLORA
-DWIFI_AP_IP_GW=10,0,0,1 -DWIFI_AP_IP_GW=10,0,0,1
-DADMIN_PASSWORD=${wifi_cred.admin_password} -DADMIN_PASSWORD=${wifi_cred.ota_password}
-DWIFI_CLIENT_SSID=${wifi_cred.wifi_client_ssid} -DWIFI_CLIENT_SSID=${wifi_cred.wifi_client_ssid}
-DWIFI_CLIENT_PASSWORD=${wifi_cred.wifi_client_password} -DWIFI_CLIENT_PASSWORD=${wifi_cred.wifi_client_password}
-DWIFI_AP_SSID=${wifi_cred.wifi_ap_ssid} -DWIFI_AP_SSID=${wifi_cred.wifi_ap_ssid}

View File

@ -1,13 +1,19 @@
#include "lora_net.h" #include "lora_net.h"
#ifdef FEATURE_ENABLE_LORA
LoRa_E220 e220ttl(GPIO_LORA_TX, GPIO_LORA_RX, GPIO_LORA_AUX, 3, 4); // Arduino RX <-- e220 TX, Arduino TX --> e220 RX AUX M0 M1 LoRa_E220 e220ttl(GPIO_LORA_TX, GPIO_LORA_RX, GPIO_LORA_AUX, 3, 4); // Arduino RX <-- e220 TX, Arduino TX --> e220 RX AUX M0 M1
void printParameters(struct Configuration configuration); void printParameters(struct Configuration configuration);
void printModuleInformation(struct ModuleInformation moduleInformation); void printModuleInformation(struct ModuleInformation moduleInformation);
#elif defined(FEATURE_ENABLE_UARTLORA)
SoftwareSerial SerialLoRa(GPIO_LORA_RX, GPIO_LORA_TX); // RX, TX
void Parse_LoRa_UartCommand(char input[], int size);
#endif
bool InitLoRa(void (*MPinHelper)(int, int)) bool InitLoRa(void (*MPinHelper)(int, int))
{ {
bool returnval; bool returnval = false;
#ifdef FEATURE_ENABLE_LORA
e220ttl.setMPins = MPinHelper; e220ttl.setMPins = MPinHelper;
returnval = e220ttl.begin(); returnval = e220ttl.begin();
@ -60,11 +66,15 @@ bool InitLoRa(void (*MPinHelper)(int, int))
{ {
MaintainDTC(DTC_NO_LORA_FOUND, DTC_WARN, true); MaintainDTC(DTC_NO_LORA_FOUND, DTC_WARN, true);
} }
#elif defined(FEATURE_ENABLE_UARTLORA)
// LORA UART Stuff here
#endif
return returnval; return returnval;
} }
void LoRa_Process() void LoRa_Process()
{ {
#ifdef FEATURE_ENABLE_LORA
if (e220ttl.available() > 1) if (e220ttl.available() > 1)
{ {
ResponseContainer rc = e220ttl.receiveMessageRSSI(); ResponseContainer rc = e220ttl.receiveMessageRSSI();
@ -82,10 +92,50 @@ void LoRa_Process()
Serial.println(rc.rssi, DEC); Serial.println(rc.rssi, DEC);
} }
} }
#elif defined(FEATURE_ENABLE_UARTLORA)
char packageInput[16];
bool packageRecieved = false;
unsigned int bufferPtr = 0;
if (SerialLoRa.available() && packageRecieved == false)
{
while (bufferPtr < sizeof(packageInput))
{
packageInput[bufferPtr] = SerialLoRa.read();
if (packageInput[bufferPtr] == '\n')
{
packageInput[bufferPtr] = 0; // terminate String
packageRecieved = true;
Debug_pushMessage("Got LoRa UART: %s\n", packageInput);
break;
}
else if ((packageInput[bufferPtr] >= 0x30) || (packageInput[bufferPtr] <= 0x5A)) // only accept Numbers, UpperCase-Letters and some special chars
{
if (bufferPtr < sizeof(packageInput) - 1)
{
bufferPtr++;
}
else
{
packageInput[bufferPtr] = 0; // terminate String, bc Buffer is full (package to long)
packageRecieved = true; // send it anyway to the parser
Debug_pushMessage("Got LoRa UART: %s\n", packageInput);
break;
}
}
}
}
if (packageRecieved)
Parse_LoRa_UartCommand(packageInput, bufferPtr);
#endif
} }
void sendStatus_LoRa() void sendStatus_LoRa()
{ {
#ifdef FEATURE_ENABLE_LORA
struct struct
{ {
MessageType_t type = "STATUS"; MessageType_t type = "STATUS";
@ -101,8 +151,13 @@ void sendStatus_LoRa()
ResponseStatus rs = e220ttl.sendFixedMessage(0xFF, 0xFF, 23, (byte *)&sendStatus, sizeof(sendStatus)); ResponseStatus rs = e220ttl.sendFixedMessage(0xFF, 0xFF, 23, (byte *)&sendStatus, sizeof(sendStatus));
Serial.println(rs.getResponseDescription()); Serial.println(rs.getResponseDescription());
#elif defined(FEATURE_ENABLE_UARTLORA)
// LORA UART SEND STUFF HERE
#endif
} }
#ifdef FEATURE_ENABLE_LORA
void printParameters(struct Configuration configuration) void printParameters(struct Configuration configuration)
{ {
Serial.println("----------------------------------------"); Serial.println("----------------------------------------");
@ -169,3 +224,26 @@ void printParameters(struct Configuration configuration)
Serial.println("----------------------------------------"); Serial.println("----------------------------------------");
} }
#endif
#ifdef FEATURE_ENABLE_UARTLORA
void Parse_LoRa_UartCommand(char input[], int size)
{
char delimiter[] = ";";
char *ptr;
char command[8];
char value[8];
ptr = strtok(input, delimiter);
while (ptr != NULL)
{
strncpy(command, ptr, sizeof(command));
ptr = strtok(NULL, delimiter);
strncpy(value, ptr, sizeof(value));
}
Debug_pushMessage("Parsed LoRa UART Command: %s Value: %s\n", command, value);
}
#endif

View File

@ -19,7 +19,7 @@
#include "globals.h" #include "globals.h"
#include "dtc.h" #include "dtc.h"
#include "debugger.h" #include "debugger.h"
#ifdef FEATURE_ENABLE_LORA #if defined(FEATURE_ENABLE_LORA) || defined(FEATURE_ENABLE_UARTLORA)
#include "lora_net.h" #include "lora_net.h"
#endif #endif
@ -49,7 +49,7 @@ void OverrideDisplay(uint32_t time, const char *message1, const char *message2,
void initGlobals(); void initGlobals();
void maintainSysStat(); void maintainSysStat();
#ifdef FEATURE_ENABLE_LORA #if defined(FEATURE_ENABLE_UARTLORA) || defined(FEATURE_ENABLE_LORA)
void setMPins_Helper(int pin, int status); void setMPins_Helper(int pin, int status);
void tmrCallback_StatusSender(); void tmrCallback_StatusSender();
Ticker tmrStatusSender(tmrCallback_StatusSender, 30000, 0, MILLIS); Ticker tmrStatusSender(tmrCallback_StatusSender, 30000, 0, MILLIS);
@ -72,7 +72,7 @@ Ticker tmrWiFiMaintainConnection(tmrCallback_WiFiMaintainConnection, 1000, 0, MI
uint32_t DisplayOverrideFlag = 0; uint32_t DisplayOverrideFlag = 0;
char DisplayOverrideValue[3][5] = {0}; char DisplayOverrideValue[3][5] = {0};
#ifdef FEATURE_ENABLE_LORA #if defined(FEATURE_ENABLE_UARTLORA) || defined(FEATURE_ENABLE_LORA)
void setMPins_Helper(int pin, int status) void setMPins_Helper(int pin, int status)
{ {
i2c_io.write(pin, status); i2c_io.write(pin, status);
@ -119,7 +119,7 @@ void setup()
Serial.print("INA219 not Initialized\n"); Serial.print("INA219 not Initialized\n");
} }
#ifdef FEATURE_ENABLE_LORA #if defined(FEATURE_ENABLE_UARTLORA) || defined(FEATURE_ENABLE_LORA)
if (InitLoRa(&setMPins_Helper)) if (InitLoRa(&setMPins_Helper))
{ {
Serial.print("Initialized LoRa_Transceiver\n"); Serial.print("Initialized LoRa_Transceiver\n");
@ -229,9 +229,9 @@ void loop()
DTC_Process(); DTC_Process();
Debug_Process(); Debug_Process();
#ifdef FEATURE_ENABLE_LORA #if defined(FEATURE_ENABLE_LORA) || defined(FEATURE_ENABLE_UARTLORA)
tmrStatusSender.update();
LoRa_Process(); LoRa_Process();
tmrStatusSender.update();
#endif #endif
#ifdef CAPTIVE #ifdef CAPTIVE
@ -380,7 +380,7 @@ void tmrCallback_InputGetter()
} }
} }
#ifdef FEATURE_ENABLE_LORA #if defined(FEATURE_ENABLE_LORA) || defined(FEATURE_ENABLE_UARTLORA)
void tmrCallback_StatusSender() void tmrCallback_StatusSender()
{ {
sendStatus_LoRa(); sendStatus_LoRa();

View File

@ -1,6 +1,6 @@
[wifi_cred] [wifi_cred]
wifi_ap_ssid = wifi-ap-ssid wifi_ap_ssid = wifi-ap-ssid
wifi_ap_password = wifiappass wifi_ap_password = wifiappass
wifi_ssid = wifi-ssid wifi_client_ssid = wifi-ssid
wifi_password = wifi-pass wifi_client_password = wifi-pass
admin_password = ota-password ota_password = ota-password