mirror of
https://github.com/dalathegreat/Battery-Emulator.git
synced 2025-10-03 09:49:32 +02:00
133 lines
7.5 KiB
C
133 lines
7.5 KiB
C
#ifndef __USER_SETTINGS_H__
|
|
#define __USER_SETTINGS_H__
|
|
#include <WiFi.h>
|
|
#include <stdint.h>
|
|
#include "src/devboard/utils/types.h"
|
|
|
|
/* This file is being transitioned towards COMMON_IMAGE. Use v8.16 if you are taking this software into use! */
|
|
|
|
//#define COMMON_IMAGE
|
|
|
|
/* Select hardware used for Battery-Emulator */
|
|
//#define HW_LILYGO
|
|
//#define HW_STARK
|
|
//#define HW_3LB
|
|
//#define HW_DEVKIT
|
|
|
|
/* Shunt/Contactor settings (Optional) */
|
|
//#define BMW_SBOX // SBOX relay control & battery current/voltage measurement
|
|
|
|
/* Select charger used (Optional) */
|
|
//#define CHEVYVOLT_CHARGER //Enable this line to control a Chevrolet Volt charger connected to battery - for example, when generator charging or using an inverter without a charging function.
|
|
//#define NISSANLEAF_CHARGER //Enable this line to control a Nissan LEAF PDM connected to battery - for example, when generator charging
|
|
|
|
/* Automatic Precharge settings (Optional) If you have a battery that expects an external voltage applied before opening contactors (within the battery), configure this section */
|
|
//#define PRECHARGE_CONTROL //Enable this line to control a modified HIA4V1 via PWM on the HIA4V1_PIN (see Wiki and HAL for pin definition)
|
|
//#define INVERTER_DISCONNECT_CONTACTOR_IS_NORMALLY_OPEN //Enable this line if you use a normally open contactor instead of normally closed
|
|
|
|
/* Other options */
|
|
//#define EQUIPMENT_STOP_BUTTON // Enable this to allow an equipment stop button connected to the Battery-Emulator to disengage the battery
|
|
//#define LFP_CHEMISTRY //Tesla specific setting, enable this line to startup in LFP mode
|
|
//#define INTERLOCK_REQUIRED //Nissan LEAF specific setting, if enabled requires both high voltage conenctors to be seated before starting
|
|
/* CAN options */
|
|
//#define CAN_ADDON //Enable this line to activate an isolated secondary CAN Bus using add-on MCP2515 chip (Needed for some inverters / double battery)
|
|
#define CRYSTAL_FREQUENCY_MHZ 8 //CAN_ADDON option, what is your MCP2515 add-on boards crystal frequency?
|
|
//#define CANFD_ADDON //Enable this line to activate an isolated secondary CAN-FD bus using add-on MCP2518FD chip / Native CANFD on Stark board
|
|
#define CANFD_ADDON_CRYSTAL_FREQUENCY_MHZ \
|
|
ACAN2517FDSettings::OSC_40MHz //CANFD_ADDON option, what is your MCP2518 add-on boards crystal frequency?
|
|
//#define USE_CANFD_INTERFACE_AS_CLASSIC_CAN // Enable this line if you intend to use the CANFD as normal CAN
|
|
|
|
/* Connectivity options */
|
|
#define WIFI
|
|
//#define WIFICONFIG //Enable this line to set a static IP address / gateway /subnet mask for the device. see USER_SETTINGS.cpp for the settings
|
|
//#define CUSTOM_HOSTNAME \
|
|
"battery-emulator" //Enable this line to use a custom hostname for the device, if disabled the default naming format 'esp32-XXXXXX' will be used.
|
|
#define WEBSERVER //Enable this line to enable WiFi, and to run the webserver. See USER_SETTINGS.cpp for the Wifi settings.
|
|
#define WIFIAP //When enabled, the emulator will broadcast its own access point Wifi. Can be used at the same time as a normal Wifi connection to a router.
|
|
#define MDNSRESPONDER //Enable this line to enable MDNS, allows battery monitor te be found by .local address. Requires WEBSERVER to be enabled.
|
|
#define LOAD_SAVED_SETTINGS_ON_BOOT // Enable this line to read settings stored via the webserver on boot (overrides Wifi credentials set here)
|
|
|
|
/* MQTT options */
|
|
// #define MQTT // Enable this line to enable MQTT
|
|
#define MQTT_QOS 0 // MQTT Quality of Service (0, 1, or 2)
|
|
#define MQTT_PUBLISH_CELL_VOLTAGES // Enable this line to publish cell voltages to MQTT
|
|
#define MQTT_TIMEOUT 2000 // MQTT timeout in milliseconds
|
|
#define MQTT_MANUAL_TOPIC_OBJECT_NAME
|
|
// Enable MQTT_MANUAL_TOPIC_OBJECT_NAME to use custom MQTT topic, object ID prefix, and device name.
|
|
// WARNING: If this is not defined, the previous default naming format 'battery-emulator_esp32-XXXXXX' (based on hardware ID) will be used.
|
|
// This naming convention was in place until version 7.5.0. Users should check the version from which they are updating, as this change
|
|
// may break compatibility with previous versions of MQTT naming. Please refer to USER_SETTINGS.cpp for configuration options.
|
|
|
|
/* Home Assistant options */
|
|
#define HA_AUTODISCOVERY // Enable this line to send Home Assistant autodiscovery messages. If not enabled manual configuration of Home Assitant is required
|
|
|
|
/* Battery settings */
|
|
// Predefined total energy capacity of the battery in Watt-hours (updates automatically from battery data when available)
|
|
#define BATTERY_WH_MAX 30000
|
|
// Increases battery life. If true will rescale SOC between the configured min/max-percentage
|
|
#define BATTERY_USE_SCALED_SOC true
|
|
// 8000 = 80.0% , Max percentage the battery will charge to (Inverter gets 100% when reached)
|
|
#define BATTERY_MAXPERCENTAGE 8000
|
|
// 2000 = 20.0% , Min percentage the battery will discharge to (Inverter gets 0% when reached)
|
|
#define BATTERY_MINPERCENTAGE 2000
|
|
// 500 = 50.0 °C , Max temperature (Will produce a battery overheat event if above)
|
|
#define BATTERY_MAXTEMPERATURE 500
|
|
// -250 = -25.0 °C , Min temperature (Will produce a battery frozen event if below)
|
|
#define BATTERY_MINTEMPERATURE -250
|
|
// 150 = 15.0 °C , Max difference between min and max temperature (Will produce a battery temperature deviation event if greater)
|
|
#define BATTERY_MAX_TEMPERATURE_DEVIATION 150
|
|
// 300 = 30.0A , Max charge in Amp (Some inverters needs to be limited)
|
|
#define BATTERY_MAX_CHARGE_AMP 300
|
|
// 300 = 30.0A , Max discharge in Amp (Some inverters needs to be limited)
|
|
#define BATTERY_MAX_DISCHARGE_AMP 300
|
|
// Enable this to manually set voltage limits on how much battery can be discharged/charged. Normally not used.
|
|
#define BATTERY_USE_VOLTAGE_LIMITS false
|
|
// 5000 = 500.0V , Target charge voltage (Value can be tuned on the fly via webserver). Not used unless BATTERY_USE_VOLTAGE_LIMITS = true
|
|
#define BATTERY_MAX_CHARGE_VOLTAGE 5000
|
|
// 3000 = 300.0V, Target discharge voltage (Value can be tuned on the fly via webserver). Not used unless BATTERY_USE_VOLTAGE_LIMITS = true
|
|
#define BATTERY_MAX_DISCHARGE_VOLTAGE 3000
|
|
|
|
/* Do not change any code below this line */
|
|
/* Only change battery specific settings above and in "USER_SETTINGS.cpp" */
|
|
typedef struct {
|
|
CAN_Interface battery;
|
|
CAN_Interface inverter;
|
|
CAN_Interface battery_double;
|
|
CAN_Interface charger;
|
|
CAN_Interface shunt;
|
|
} CAN_Configuration;
|
|
extern volatile CAN_Configuration can_config;
|
|
extern volatile uint8_t AccessPointEnabled;
|
|
extern const uint8_t wifi_channel;
|
|
extern volatile float CHARGER_SET_HV;
|
|
extern volatile float CHARGER_MAX_HV;
|
|
extern volatile float CHARGER_MIN_HV;
|
|
extern volatile float CHARGER_MAX_POWER;
|
|
extern volatile float CHARGER_MAX_A;
|
|
extern volatile float CHARGER_END_A;
|
|
|
|
extern volatile unsigned long long bmsResetTimeOffset;
|
|
|
|
#include "src/communication/equipmentstopbutton/comm_equipmentstopbutton.h"
|
|
|
|
// Equipment stop button behavior. Use NC button for safety reasons.
|
|
//LATCHING_SWITCH - Normally closed (NC), latching switch. When pressed it activates e-stop
|
|
//MOMENTARY_SWITCH - Short press to activate e-stop, long 15s press to deactivate. E-stop is persistent between reboots
|
|
|
|
#ifdef EQUIPMENT_STOP_BUTTON
|
|
const STOP_BUTTON_BEHAVIOR stop_button_default_behavior = STOP_BUTTON_BEHAVIOR::MOMENTARY_SWITCH;
|
|
#else
|
|
const STOP_BUTTON_BEHAVIOR stop_button_default_behavior = STOP_BUTTON_BEHAVIOR::NOT_CONNECTED;
|
|
#endif
|
|
|
|
#ifdef WIFICONFIG
|
|
extern IPAddress local_IP;
|
|
extern IPAddress gateway;
|
|
extern IPAddress subnet;
|
|
#endif
|
|
|
|
#if defined(MEB_BATTERY)
|
|
#define PRECHARGE_CONTROL
|
|
#endif
|
|
|
|
#endif // __USER_SETTINGS_H__
|