relay board
This commit is contained in:
108
config_relay.cmake
Normal file
108
config_relay.cmake
Normal file
@@ -0,0 +1,108 @@
|
||||
set(BOBBY_APP_NAME bobby_relay)
|
||||
|
||||
add_definitions(
|
||||
-DUSER_SETUP_LOADED=1
|
||||
-DLOAD_GLCD=1
|
||||
-DLOAD_FONT2=1
|
||||
-DLOAD_FONT4=1
|
||||
-DLOAD_FONT7=1
|
||||
-DILI9341_DRIVER=1
|
||||
-DTFT_MOSI=13
|
||||
-DTFT_SCLK=15
|
||||
-DTFT_CS=14
|
||||
-DTFT_DC=12
|
||||
-DTFT_RST=2
|
||||
-DSPI_FREQUENCY=40000000
|
||||
)
|
||||
|
||||
set(BOBBYCAR_BUILDFLAGS
|
||||
-DFEATURE_ADC_IN
|
||||
-DPINS_GAS=34
|
||||
-DPINS_BREMS=35
|
||||
-DDEFAULT_SWAPSCREENBYTES=false
|
||||
#-DFEATURE_CAN
|
||||
# -DFEATURE_SERIAL
|
||||
# -DPINS_RX1=4
|
||||
# -DPINS_TX1=5
|
||||
# -DPINS_RX2=22
|
||||
# -DPINS_TX2=23
|
||||
-DDEFAULT_INVERTFRONTLEFT=false
|
||||
-DDEFAULT_INVERTFRONTRIGHT=true
|
||||
-DDEFAULT_INVERTBACKLEFT=false
|
||||
-DDEFAULT_INVERTBACKRIGHT=true
|
||||
-DDEFAULT_WHEELDIAMETER=200
|
||||
# -DFEATURE_MOSFETS
|
||||
# -DPINS_MOSFET0=18
|
||||
# -DPINS_MOSFET1=19
|
||||
# -DPINS_MOSFET2=21
|
||||
-DDEFAULT_IMOTMAX=28
|
||||
-DDEFAULT_IDCMAX=30
|
||||
-DDEFAULT_NMOTMAX=2000
|
||||
-DDEFAULT_FIELDWEAKMAX=7
|
||||
-DDEFAULT_FIELDADVMAX=40
|
||||
-DDEVICE_PREFIX=bobby_relay
|
||||
-DAP_PASSWORD=Passwort_123
|
||||
-DFEATURE_WEBSERVER
|
||||
#-DFEATURE_OTA
|
||||
-DOTA_USERNAME="relay"
|
||||
-DFEATURE_DPAD_5WIRESW_2OUT
|
||||
-DPINS_DPAD_5WIRESW_OUT1=18
|
||||
-DPINS_DPAD_5WIRESW_OUT2=19
|
||||
-DPINS_DPAD_5WIRESW_IN1=4
|
||||
-DPINS_DPAD_5WIRESW_IN2=5
|
||||
-DPINS_DPAD_5WIRESW_IN3=27
|
||||
-DDPAD_5WIRESW_UP=4
|
||||
-DDPAD_5WIRESW_DOWN=7
|
||||
-DDPAD_5WIRESW_CONFIRM=1
|
||||
-DDPAD_5WIRESW_BACK=10
|
||||
-DDPAD_5WIRESW_PROFILE0=11
|
||||
-DDPAD_5WIRESW_PROFILE1=8
|
||||
-DDPAD_5WIRESW_PROFILE2=5
|
||||
-DDPAD_5WIRESW_PROFILE3=2
|
||||
-DDPAD_5WIRESW_BLINK_LEFT=9
|
||||
-DDPAD_5WIRESW_BLINK_RIGHT=0
|
||||
-DDPAD_5WIRESW_QUICKACTION_DOWN=3
|
||||
-DDPAD_5WIRESW_QUICKACTION_UP=6
|
||||
# -DDPAD_5WIRESW_DEBUG
|
||||
-DDEFAULT_GASMIN=842
|
||||
-DDEFAULT_GASMAX=2480
|
||||
-DDEFAULT_BREMSMIN=826
|
||||
-DDEFAULT_BREMSMAX=2502
|
||||
#-DFEATURE_BLE
|
||||
# -DFEATURE_BLUETOOTH
|
||||
# -DFEATURE_BMS
|
||||
# -DFEATURE_GAMETRAK
|
||||
# -DPINS_GAMETRAKX=34
|
||||
# -DPINS_GAMETRAKY=39
|
||||
# -DPINS_GAMETRAKDIST=36
|
||||
# -DDEFAULT_GAMETRAKXMIN=0
|
||||
# -DDEFAULT_GAMETRAKXMAX=4095
|
||||
# -DDEFAULT_GAMETRAKYMIN=0
|
||||
# -DDEFAULT_GAMETRAKYMAX=4095
|
||||
# -DDEFAULT_GAMETRAKDISTMIN=0
|
||||
# -DDEFAULT_GAMETRAKDISTMAX=4095
|
||||
# -DFEATURE_POWERSUPPLY
|
||||
# -DFEATURE_CLOUD
|
||||
-DFEATURE_UDPCLOUD
|
||||
-DFEATURE_LEDBACKLIGHT
|
||||
-DPINS_LEDBACKLIGHT=23
|
||||
-DLEDBACKLIGHT_INVERTED
|
||||
-DFEATURE_GARAGE
|
||||
-DFEATURE_NTP
|
||||
-DFEATURE_WIRELESS_CONFIG
|
||||
-DFEATURE_LEDSTRIP
|
||||
-DPINS_LEDSTRIP=33
|
||||
-DLEDSTRIP_LENGTH=288
|
||||
# -DLEDSTRIP_WRONG_DIRECTION
|
||||
-DLEDSTRIP_ANIMATION_DEFAULT=2
|
||||
-DLEDS_PER_METER=144
|
||||
-DOLD_NVS
|
||||
-DFEATURE_DNS_NS
|
||||
-DFEATURE_ESPNOW
|
||||
-DFEATURE_IS_MIR_EGAL_OB_DER_WEBSERVER_KORREKT_ARBEITET
|
||||
)
|
||||
|
||||
if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/ignore/lockscreen_plugin.cmake")
|
||||
include("${CMAKE_CURRENT_SOURCE_DIR}/ignore/lockscreen_plugin.cmake")
|
||||
message(WARNING "Including lockscreen_plugin")
|
||||
endif()
|
@@ -11,12 +11,18 @@
|
||||
#include "globals.h"
|
||||
#include "utils.h"
|
||||
#include "time_bobbycar.h"
|
||||
#define PIN_RELAY 17
|
||||
|
||||
using namespace std::chrono_literals;
|
||||
|
||||
namespace espnow {
|
||||
namespace {
|
||||
constexpr const char * const TAG = "BOBBY_ESP_NOW";
|
||||
} // namespace
|
||||
|
||||
std::optional<espchrono::millis_clock::time_point> ledtimer;
|
||||
std::optional<espchrono::millis_clock::time_point> last_send_ms;
|
||||
|
||||
uint16_t lastYear; // Used for esp-now timesync
|
||||
|
||||
std::deque<esp_now_message_t> message_queue{};
|
||||
@@ -27,10 +33,49 @@ bool receiveTimeStamp{true};
|
||||
bool receiveTsFromOtherBobbycars{true};
|
||||
|
||||
namespace {
|
||||
extern "C" void onReceive(const uint8_t *mac_addr, const uint8_t *data, int data_len)
|
||||
extern "C" void onReceive(const uint8_t *mac_addr, const uint8_t *data, int len)
|
||||
{
|
||||
ESP_LOGD(TAG, "Received data");
|
||||
const std::string_view data_str{(const char *)data, size_t(data_len)};
|
||||
ESP_LOGI(TAG, "Received data");
|
||||
const std::string token = "Bobbycar_123";
|
||||
const std::string id = "Buero";
|
||||
|
||||
const std::string message(data, data + len);
|
||||
//Serial.printf("Received: %s\n", message.c_str());
|
||||
|
||||
// Parse the message (msg format: "msg_type:msg_value:msg_token") via find and npos
|
||||
const size_t pos = message.find(":");
|
||||
if (pos == std::string::npos) {
|
||||
//Serial.println("Invalid message format");
|
||||
return;
|
||||
}
|
||||
const size_t pos2 = message.find(":", pos + 1);
|
||||
if (pos2 == std::string::npos) {
|
||||
//Serial.println("Invalid message format");
|
||||
return;
|
||||
}
|
||||
const std::string msg_type = message.substr(0, pos);
|
||||
const std::string msg_value = message.substr(pos + 1, pos2 - pos - 1);
|
||||
std::string msg_token{};
|
||||
if (pos2 + 1 < message.size()) {
|
||||
msg_token = message.substr(pos2 + 1);
|
||||
}
|
||||
|
||||
if (msg_token.empty()) {
|
||||
//Serial.println("No token was send");
|
||||
return;
|
||||
}
|
||||
|
||||
if (msg_token != std::string(token.c_str())) {
|
||||
//Serial.println("Invalid token");
|
||||
return;
|
||||
}
|
||||
|
||||
if (msg_type == "BOBBYOPEN" && msg_value == std::string(id.c_str())) {
|
||||
//Serial.println("Bob is opening the door");
|
||||
digitalWrite(PIN_RELAY, HIGH);
|
||||
ledtimer = espchrono::millis_clock::now();
|
||||
}
|
||||
/*const std::string_view data_str{(const char *)data, size_t(data_len)};
|
||||
|
||||
size_t sep_pos = data_str.find(":");
|
||||
if (std::string_view::npos != sep_pos)
|
||||
@@ -47,12 +92,15 @@ extern "C" void onReceive(const uint8_t *mac_addr, const uint8_t *data, int data
|
||||
else
|
||||
{
|
||||
ESP_LOGW(TAG, "Invalid message: Could not find ':' (%.*s)", data_str.size(), data_str.data());
|
||||
}
|
||||
}*/
|
||||
}
|
||||
} // namespace
|
||||
|
||||
void initESPNow()
|
||||
{
|
||||
pinMode(PIN_RELAY, OUTPUT);
|
||||
digitalWrite(PIN_RELAY, LOW);
|
||||
|
||||
ESP_LOGI(TAG, "Initializing esp-now...");
|
||||
|
||||
if (initialized < 1)
|
||||
@@ -120,6 +168,17 @@ void initESPNow()
|
||||
|
||||
void handle()
|
||||
{
|
||||
if (!ledtimer || espchrono::ago(*ledtimer) > 3s) {
|
||||
digitalWrite(PIN_RELAY, LOW);
|
||||
}
|
||||
|
||||
if (!last_send_ms || espchrono::ago(*last_send_ms) > 1s) {
|
||||
const auto message = fmt::format("T:{}", espchrono::utc_clock::now().time_since_epoch().count());
|
||||
espnow::send_espnow_message(message);
|
||||
last_send_ms = espchrono::millis_clock::now();
|
||||
}
|
||||
|
||||
|
||||
if (initialized < 255 && !(!settings.wifiSettings.wifiApEnabled && (!settings.wifiSettings.wifiStaEnabled && wifi_stack::get_sta_status() == wifi_stack::WiFiStaStatus::NO_SHIELD) || (wifi_stack::get_wifi_mode() != wifi_mode_t::WIFI_MODE_STA && wifi_stack::get_wifi_mode() != wifi_mode_t::WIFI_MODE_AP && wifi_stack::get_wifi_mode() != wifi_mode_t::WIFI_MODE_APSTA)))
|
||||
{
|
||||
initESPNow();
|
||||
|
@@ -1,4 +1,4 @@
|
||||
# Name, Type, SubType, Offset, Size, Flags
|
||||
nvs, data, nvs, 0x10000, 0x5000,
|
||||
otadata, data, ota, 0x15000, 0x2000,
|
||||
app0, app, ota_0, 0x20000, 0x1F0000,
|
||||
app0, app, ota_0, 0x20000, 0x3E0000,
|
||||
|
|
1736
sdkconfig_relay
Normal file
1736
sdkconfig_relay
Normal file
File diff suppressed because it is too large
Load Diff
@@ -8,6 +8,7 @@ VALID_CONFIGS=(
|
||||
"greyhash"
|
||||
"nofeatures"
|
||||
"allfeatures"
|
||||
"relay"
|
||||
)
|
||||
|
||||
print_usage() {
|
||||
|
Reference in New Issue
Block a user