Merge remote-tracking branch 'upstream/development' into battery_webinterface

This commit is contained in:
MalteSchm 2023-04-02 14:28:37 +02:00
commit 6b85b8d4a2
4 changed files with 47 additions and 47 deletions

View File

@ -89,7 +89,7 @@ private:
MCP_CAN *CAN;
uint8_t _huawei_irq;
uint8_t _huawei_power;
bool initialized = false;
};
extern HuaweiCanClass HuaweiCan;

View File

@ -58,7 +58,7 @@ build_flags = ${env.build_flags}
-DHOYMILES_PIN_CE=4
-DHOYMILES_PIN_CS=5
-DVICTRON_PIN_TX=21
-DVICTRON_PIN_RX=22
-DVICTRON_PIN_RX=22
-DPYLONTECH_PIN_RX=27
-DPYLONTECH_PIN_TX=14
-DHUAWEI_PIN_MISO=12
@ -180,4 +180,4 @@ build_flags = ${env.build_flags}
-DHOYMILES_PIN_SCLK=12
-DHOYMILES_PIN_CS=10
-DHOYMILES_PIN_IRQ=4
-DHOYMILES_PIN_CE=5
-DHOYMILES_PIN_CE=5

View File

@ -14,35 +14,37 @@ HuaweiCanClass HuaweiCan;
void HuaweiCanClass::init(uint8_t huawei_miso, uint8_t huawei_mosi, uint8_t huawei_clk, uint8_t huawei_irq, uint8_t huawei_cs, uint8_t huawei_power)
{
initialized = false;
const CONFIG_T& config = Configuration.get();
const CONFIG_T& config = Configuration.get();
if (!config.Huawei_Enabled) {
return;
}
spi = new SPIClass(VSPI);
spi->begin(huawei_clk, huawei_miso, huawei_mosi, huawei_cs);
pinMode(huawei_cs, OUTPUT);
digitalWrite(huawei_cs, HIGH);
if (!config.Huawei_Enabled) {
return;
}
pinMode(huawei_irq, INPUT_PULLUP);
_huawei_irq = huawei_irq;
spi = new SPIClass(VSPI);
spi->begin(huawei_clk, huawei_miso, huawei_mosi, huawei_cs);
pinMode(huawei_cs, OUTPUT);
digitalWrite(huawei_cs, HIGH);
pinMode(huawei_irq, INPUT_PULLUP);
_huawei_irq = huawei_irq;
CAN = new MCP_CAN(spi, huawei_cs);
if (!CAN->begin(MCP_ANY, CAN_125KBPS, MCP_8MHZ) == CAN_OK) {
MessageOutput.println("Error Initializing MCP2515...");
return;
}
CAN = new MCP_CAN(spi, huawei_cs);
if(CAN->begin(MCP_ANY, CAN_125KBPS, MCP_8MHZ) == CAN_OK) {
MessageOutput.println("MCP2515 Initialized Successfully!");
}
else {
MessageOutput.println("Error Initializing MCP2515...");
}
initialized = true;
CAN->setMode(MCP_NORMAL); // Change to normal mode to allow messages to be transmitted
pinMode(huawei_power, OUTPUT);
digitalWrite(huawei_power,HIGH);
_huawei_power = huawei_power;
// Change to normal mode to allow messages to be transmitted
CAN->setMode(MCP_NORMAL);
pinMode(huawei_power, OUTPUT);
digitalWrite(huawei_power, HIGH);
_huawei_power = huawei_power;
}
RectifierParameters_t * HuaweiCanClass::get()
@ -60,13 +62,12 @@ uint8_t data[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
void HuaweiCanClass::sendRequest()
{
if (previousMillis < millis()) {
// Send extended message
byte sndStat = CAN->sendMsgBuf(0x108040FE, 1, 8, data);
if(sndStat == CAN_OK){
MessageOutput.println("Message Sent Successfully!");
if(sndStat == CAN_OK) {
MessageOutput.println("Message Sent Successfully!");
} else {
MessageOutput.println("Error Sending Message...");
MessageOutput.println("Error Sending Message...");
}
previousMillis += 5000;
@ -96,7 +97,8 @@ void HuaweiCanClass::onReceive(uint8_t* frame, uint8_t len)
case R48xx_DATA_OUTPUT_POWER:
_rp.output_power = value / 1024.0;
lastUpdate = millis(); // We'll only update last update on the important params
// We'll only update last update on the important params
lastUpdate = millis();
break;
case R48xx_DATA_EFFICIENCY:
@ -155,12 +157,12 @@ void HuaweiCanClass::loop()
const CONFIG_T& config = Configuration.get();
if (!config.Huawei_Enabled) {
if (!config.Huawei_Enabled || !initialized) {
return;
}
if(!digitalRead(_huawei_irq)) // If CAN_INT pin is low, read receive buffer
{
if (!digitalRead(_huawei_irq)) {
// If CAN_INT pin is low, read receive buffer
CAN->readMsgBuf(&rxId, &len, rxBuf); // Read data: len = data length, buf = data byte(s)
if((rxId & 0x80000000) == 0x80000000) { // Determine if ID is standard (11 bits) or extended (29 bits)
@ -191,15 +193,13 @@ void HuaweiCanClass::setValue(float in, uint8_t parameterType)
// Send extended message
byte sndStat = CAN->sendMsgBuf(0x108180FE, 1, 8, data);
if(sndStat == CAN_OK){
MessageOutput.println("Message Sent Successfully!");
if (sndStat == CAN_OK) {
MessageOutput.println("Message Sent Successfully!");
} else {
MessageOutput.println("Error Sending Message...");
MessageOutput.println("Error Sending Message...");
}
}
void HuaweiCanClass::setPower(bool power) {
digitalWrite(_huawei_power, !power);
digitalWrite(_huawei_power, !power);
}

View File

@ -255,14 +255,14 @@ void WebApiHuaweiClass::onAdminPost(AsyncWebServerRequest* request)
const PinMapping_t& pin = PinMapping.get();
if (config.Huawei_Enabled) {
MessageOutput.println(F("Initialize Huawei AC charger interface... "));
if (PinMapping.isValidHuaweiConfig()) {
MessageOutput.printf("Huawei AC-charger miso = %d, mosi = %d, clk = %d, irq = %d, cs = %d, power_pin = %d\r\n", pin.huawei_miso, pin.huawei_mosi, pin.huawei_clk, pin.huawei_irq, pin.huawei_cs, pin.huawei_power);
HuaweiCan.init(pin.huawei_miso, pin.huawei_mosi, pin.huawei_clk, pin.huawei_irq, pin.huawei_cs, pin.huawei_power);
MessageOutput.println(F("done"));
} else {
MessageOutput.println(F("Invalid pin config"));
}
MessageOutput.println(F("Initialize Huawei AC charger interface... "));
if (PinMapping.isValidHuaweiConfig()) {
MessageOutput.printf("Huawei AC-charger miso = %d, mosi = %d, clk = %d, irq = %d, cs = %d, power_pin = %d\r\n", pin.huawei_miso, pin.huawei_mosi, pin.huawei_clk, pin.huawei_irq, pin.huawei_cs, pin.huawei_power);
HuaweiCan.init(pin.huawei_miso, pin.huawei_mosi, pin.huawei_clk, pin.huawei_irq, pin.huawei_cs, pin.huawei_power);
MessageOutput.println(F("done"));
} else {
MessageOutput.println(F("Invalid pin config"));
}
}
HuaweiCan.setPower(config.Huawei_Enabled);