mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-27 20:56:35 +00:00
Add support for CAN bus and Freedom Won Battery Management System by Marius Bezuidenhout (#12651)
This commit is contained in:
parent
de2e86f022
commit
4173340c6a
@ -6,6 +6,7 @@ All notable changes to this project will be documented in this file.
|
|||||||
## [9.5.0.3]
|
## [9.5.0.3]
|
||||||
### Added
|
### Added
|
||||||
- Command ``SetSensor1..127 0|1`` to globally disable individual sensor driver
|
- Command ``SetSensor1..127 0|1`` to globally disable individual sensor driver
|
||||||
|
- Support for CAN bus and Freedom Won Battery Management System by Marius Bezuidenhout (#12651)
|
||||||
|
|
||||||
## [9.5.0.2] 20210714
|
## [9.5.0.2] 20210714
|
||||||
### Added
|
### Added
|
||||||
|
@ -110,6 +110,7 @@ The latter links can be used for OTA upgrades too like ``OtaUrl http://ota.tasmo
|
|||||||
- MQTT minimum password length restriction in GUI [#12553](https://github.com/arendst/Tasmota/issues/12553)
|
- MQTT minimum password length restriction in GUI [#12553](https://github.com/arendst/Tasmota/issues/12553)
|
||||||
- Support for Technoline WS2300-15 Anemometer [#12573](https://github.com/arendst/Tasmota/issues/12573)
|
- Support for Technoline WS2300-15 Anemometer [#12573](https://github.com/arendst/Tasmota/issues/12573)
|
||||||
- Support for Telaire T6700 Series CO2 sensor by Alexander Savchenko [#12618](https://github.com/arendst/Tasmota/issues/12618)
|
- Support for Telaire T6700 Series CO2 sensor by Alexander Savchenko [#12618](https://github.com/arendst/Tasmota/issues/12618)
|
||||||
|
- Support for CAN bus and Freedom Won Battery Management System by Marius Bezuidenhout [#12651](https://github.com/arendst/Tasmota/issues/12651)
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
- ESP32 core library from v1.0.6 to v1.0.7.1
|
- ESP32 core library from v1.0.6 to v1.0.7.1
|
||||||
|
@ -738,19 +738,21 @@ void ResponseAppendFeatures(void)
|
|||||||
feature8 |= 0x00000008; // xdrv_52_9_berry.ino
|
feature8 |= 0x00000008; // xdrv_52_9_berry.ino
|
||||||
#endif
|
#endif
|
||||||
#if defined(USE_I2C) && defined(USE_BM8563)
|
#if defined(USE_I2C) && defined(USE_BM8563)
|
||||||
feature8 |= 0x00000010;
|
feature8 |= 0x00000010; // xdrv_56_BM8563_RTC.ino
|
||||||
#endif
|
#endif
|
||||||
#if defined(USE_ENERGY_SENSOR) && defined(USE_ENERGY_DUMMY)
|
#if defined(USE_ENERGY_SENSOR) && defined(USE_ENERGY_DUMMY)
|
||||||
feature8 |= 0x00000020;
|
feature8 |= 0x00000020; // xnrg_20_dummy.ino
|
||||||
#endif
|
#endif
|
||||||
#if defined(USE_I2C) && defined(USE_AM2320)
|
#if defined(USE_I2C) && defined(USE_AM2320)
|
||||||
feature8 |= 0x00000040;
|
feature8 |= 0x00000040; // xsns_88_am2320.ino
|
||||||
#endif
|
#endif
|
||||||
#if defined(USE_I2C) && defined(USE_T67XX)
|
#if defined(USE_I2C) && defined(USE_T67XX)
|
||||||
feature8 |= 0x00000080;
|
feature8 |= 0x00000080; // xsns_89_t67xx.ino
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// feature8 |= 0x00000100;
|
#if defined(USE_SPI) && defined(USE_MCP2515)
|
||||||
|
feature8 |= 0x00000100; // xsns_87_mcp2515.ino
|
||||||
|
#endif
|
||||||
// feature8 |= 0x00000200;
|
// feature8 |= 0x00000200;
|
||||||
// feature8 |= 0x00000400;
|
// feature8 |= 0x00000400;
|
||||||
// feature8 |= 0x00000800;
|
// feature8 |= 0x00000800;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
xsns_89_mcp2515.ino - MCP2515 CAN bus support for Tasmota
|
xsns_87_mcp2515.ino - MCP2515 CAN bus support for Tasmota
|
||||||
|
|
||||||
Copyright (C) 2021 Marius Bezuidenhout
|
Copyright (C) 2021 Marius Bezuidenhout
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU General Public License as published by
|
it under the terms of the GNU General Public License as published by
|
||||||
@ -34,9 +34,7 @@
|
|||||||
* VCC Vin/5V
|
* VCC Vin/5V
|
||||||
\*********************************************************************************************/
|
\*********************************************************************************************/
|
||||||
|
|
||||||
#define XSNS_90 90
|
#define XSNS_87 87
|
||||||
|
|
||||||
#include "mcp2515.h"
|
|
||||||
|
|
||||||
// set defaults if not defined
|
// set defaults if not defined
|
||||||
#ifndef MCP2515_BITRATE
|
#ifndef MCP2515_BITRATE
|
||||||
@ -67,6 +65,8 @@
|
|||||||
#endif // MCP2515_BMS_FREEDWON
|
#endif // MCP2515_BMS_FREEDWON
|
||||||
#endif // MCP2515_BMS_CLIENT
|
#endif // MCP2515_BMS_CLIENT
|
||||||
|
|
||||||
|
#include "mcp2515.h"
|
||||||
|
|
||||||
#ifdef MCP2515_BMS_CLIENT
|
#ifdef MCP2515_BMS_CLIENT
|
||||||
struct BMS_Struct {
|
struct BMS_Struct {
|
||||||
uint16_t stateOfCharge;
|
uint16_t stateOfCharge;
|
||||||
@ -100,7 +100,7 @@ void MCP2515_Init(void) {
|
|||||||
AddLog(LOG_LEVEL_ERROR, PSTR("MCP2515: Failed to set module bitrate"));
|
AddLog(LOG_LEVEL_ERROR, PSTR("MCP2515: Failed to set module bitrate"));
|
||||||
mcp2515_init_status = 0;
|
mcp2515_init_status = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mcp2515_init_status && MCP2515::ERROR_OK != mcp2515->setNormalMode()) {
|
if (mcp2515_init_status && MCP2515::ERROR_OK != mcp2515->setNormalMode()) {
|
||||||
AddLog(LOG_LEVEL_ERROR, PSTR("MCP2515: Failed to set normal mode"));
|
AddLog(LOG_LEVEL_ERROR, PSTR("MCP2515: Failed to set normal mode"));
|
||||||
mcp2515_init_status = 0;
|
mcp2515_init_status = 0;
|
||||||
@ -221,8 +221,8 @@ void MCP2515_Show(bool Json) {
|
|||||||
if (lastFrameRecv > 0 && TasmotaGlobal.uptime - lastFrameRecv <= MCP2515_TIMEOUT ) {
|
if (lastFrameRecv > 0 && TasmotaGlobal.uptime - lastFrameRecv <= MCP2515_TIMEOUT ) {
|
||||||
#ifdef MCP2515_BMS_CLIENT
|
#ifdef MCP2515_BMS_CLIENT
|
||||||
ResponseAppend_P(PSTR(",\"MCP2515\":{\"SOC\":%d,\"SOH\":%d}"), \
|
ResponseAppend_P(PSTR(",\"MCP2515\":{\"SOC\":%d,\"SOH\":%d}"), \
|
||||||
bms.stateOfCharge,
|
bms.stateOfCharge,
|
||||||
bms.stateOfHealth
|
bms.stateOfHealth
|
||||||
);
|
);
|
||||||
#endif // MCP2515_BMS_CLIENT
|
#endif // MCP2515_BMS_CLIENT
|
||||||
}
|
}
|
||||||
@ -245,7 +245,7 @@ void MCP2515_Show(bool Json) {
|
|||||||
* Interface
|
* Interface
|
||||||
\*********************************************************************************************/
|
\*********************************************************************************************/
|
||||||
|
|
||||||
bool Xsns90(uint8_t function)
|
bool Xsns87(uint8_t function)
|
||||||
{
|
{
|
||||||
bool result = false;
|
bool result = false;
|
||||||
|
|
@ -255,7 +255,7 @@ a_features = [[
|
|||||||
],[
|
],[
|
||||||
"USE_MPU_ACCEL","USE_TFMINIPLUS","USE_CSE7761","USE_BERRY",
|
"USE_MPU_ACCEL","USE_TFMINIPLUS","USE_CSE7761","USE_BERRY",
|
||||||
"USE_BM8563","USE_ENERGY_DUMMY","USE_AM2320","USE_T67XX",
|
"USE_BM8563","USE_ENERGY_DUMMY","USE_AM2320","USE_T67XX",
|
||||||
"","","","",
|
"USE_MCP2515","","","",
|
||||||
"","","","",
|
"","","","",
|
||||||
"","","","",
|
"","","","",
|
||||||
"","","","",
|
"","","","",
|
||||||
@ -288,7 +288,7 @@ else:
|
|||||||
obj = json.load(fp)
|
obj = json.load(fp)
|
||||||
|
|
||||||
def StartDecode():
|
def StartDecode():
|
||||||
print ("\n*** decode-status.py v20210713 by Theo Arends and Jacek Ziolkowski ***")
|
print ("\n*** decode-status.py v20210717 by Theo Arends and Jacek Ziolkowski ***")
|
||||||
|
|
||||||
# print("Decoding\n{}".format(obj))
|
# print("Decoding\n{}".format(obj))
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user