Add victron pins to device manager
This commit is contained in:
parent
9e79f02787
commit
1c01e927f9
@ -29,6 +29,8 @@ struct PinMapping_t {
|
||||
uint8_t display_clk;
|
||||
uint8_t display_cs;
|
||||
uint8_t display_reset;
|
||||
uint8_t victron_tx;
|
||||
uint8_t victron_rx;
|
||||
};
|
||||
|
||||
class PinMappingClass {
|
||||
@ -39,6 +41,7 @@ public:
|
||||
|
||||
bool isValidNrf24Config();
|
||||
bool isValidEthConfig();
|
||||
bool isValidVictronConfig();
|
||||
|
||||
private:
|
||||
PinMapping_t _pinMapping;
|
||||
|
||||
@ -56,9 +56,9 @@ VeDirectFrameHandler::VeDirectFrameHandler() :
|
||||
{
|
||||
}
|
||||
|
||||
void VeDirectFrameHandler::init()
|
||||
void VeDirectFrameHandler::init(int8_t rx, int8_t tx)
|
||||
{
|
||||
VedirectSerial.begin(19200, SERIAL_8N1, VICTRON_PIN_RX, VICTRON_PIN_TX);
|
||||
VedirectSerial.begin(19200, SERIAL_8N1, rx, tx);
|
||||
VedirectSerial.flush();
|
||||
}
|
||||
|
||||
|
||||
@ -29,7 +29,7 @@ class VeDirectFrameHandler {
|
||||
public:
|
||||
|
||||
VeDirectFrameHandler();
|
||||
void init(); // initialize HardewareSerial
|
||||
void init(int8_t rx, int8_t tx); // initialize HardewareSerial
|
||||
void setPollInterval(unsigned long interval); // set poll intervall in seconds
|
||||
void loop(); // main loop to read ve.direct data
|
||||
unsigned long getLastUpdate(); // timestamp of last successful frame read
|
||||
|
||||
@ -51,6 +51,8 @@ build_flags = ${env.build_flags}
|
||||
-DHOYMILES_PIN_IRQ=16
|
||||
-DHOYMILES_PIN_CE=4
|
||||
-DHOYMILES_PIN_CS=5
|
||||
-DVICTRON_PIN_TX=21
|
||||
-DVICTRON_PIN_RX=22
|
||||
|
||||
|
||||
[env:olimex_esp32_poe]
|
||||
|
||||
@ -30,5 +30,7 @@ upload_port = COM4
|
||||
; -DHOYMILES_PIN_IRQ=4
|
||||
; -DHOYMILES_PIN_CE=5
|
||||
; -DHOYMILES_PIN_CS=6
|
||||
; -DVICTRON_PIN_TX=21
|
||||
; -DVICTRON_PIN_RX=22
|
||||
;monitor_port = /dev/ttyACM0
|
||||
;upload_port = /dev/ttyACM0
|
||||
|
||||
@ -60,6 +60,9 @@ PinMappingClass::PinMappingClass()
|
||||
_pinMapping.display_clk = DISPLAY_CLK;
|
||||
_pinMapping.display_cs = DISPLAY_CS;
|
||||
_pinMapping.display_reset = DISPLAY_RESET;
|
||||
|
||||
_pinMapping.victron_tx = VICTRON_PIN_TX;
|
||||
_pinMapping.victron_rx = VICTRON_PIN_RX;
|
||||
|
||||
}
|
||||
|
||||
@ -113,6 +116,9 @@ bool PinMappingClass::init(const String& deviceMapping)
|
||||
_pinMapping.display_cs = doc[i]["display"]["cs"] | DISPLAY_CS;
|
||||
_pinMapping.display_reset = doc[i]["display"]["reset"] | DISPLAY_RESET;
|
||||
|
||||
_pinMapping.victron_rx = doc[i]["victron"]["rx"] | VICTRON_PIN_RX;
|
||||
_pinMapping.victron_tx = doc[i]["victron"]["tx"] | VICTRON_PIN_TX;
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -133,4 +139,10 @@ bool PinMappingClass::isValidNrf24Config()
|
||||
bool PinMappingClass::isValidEthConfig()
|
||||
{
|
||||
return _pinMapping.eth_enabled;
|
||||
}
|
||||
|
||||
bool PinMappingClass::isValidVictronConfig()
|
||||
{
|
||||
return _pinMapping.victron_rx > 0
|
||||
&& _pinMapping.victron_tx > 0;
|
||||
}
|
||||
@ -69,6 +69,10 @@ void WebApiDeviceClass::onDeviceAdminGet(AsyncWebServerRequest* request)
|
||||
display[F("screensaver")] = config.Display_ScreenSaver;
|
||||
display[F("contrast")] = config.Display_Contrast;
|
||||
|
||||
JsonObject victronPinObj = curPin.createNestedObject("victron");
|
||||
victronPinObj[F("rx")] = pin.victron_rx;
|
||||
victronPinObj[F("tx")] = pin.victron_tx;
|
||||
|
||||
response->setLength();
|
||||
request->send(response);
|
||||
}
|
||||
|
||||
10
src/main.cpp
10
src/main.cpp
@ -165,9 +165,13 @@ void setup()
|
||||
|
||||
// Initialize ve.direct communication
|
||||
MessageOutput.println(F("Initialize ve.direct interface... "));
|
||||
VeDirect.init();
|
||||
VeDirect.setPollInterval(config.Vedirect_PollInterval);
|
||||
MessageOutput.println(F("done"));
|
||||
if (PinMapping.isValidVictronConfig()) {
|
||||
VeDirect.init(pin.victron_rx, pin.victron_tx);
|
||||
VeDirect.setPollInterval(config.Vedirect_PollInterval);
|
||||
MessageOutput.println(F("done"));
|
||||
} else {
|
||||
MessageOutput.println(F("Invalid pin config"));
|
||||
}
|
||||
}
|
||||
|
||||
void loop()
|
||||
|
||||
@ -81,7 +81,7 @@
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td rowspan="6">Display</td>
|
||||
<td rowspan="5">Display</td>
|
||||
<td>type</td>
|
||||
<td>{{ selectedPinAssignment?.display?.type }}</td>
|
||||
<td>{{ currentPinAssignment?.display?.type }}</td>
|
||||
@ -107,6 +107,18 @@
|
||||
<td>{{ currentPinAssignment?.display?.reset }}</td>
|
||||
</tr>
|
||||
|
||||
<tr>
|
||||
<td rowspan="2">Victron</td>
|
||||
<td>RX</td>
|
||||
<td>{{ selectedPinAssignment?.victron?.rx }}</td>
|
||||
<td>{{ currentPinAssignment?.victron?.rx }}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>TX</td>
|
||||
<td>{{ selectedPinAssignment?.victron?.tx }}</td>
|
||||
<td>{{ currentPinAssignment?.victron?.tx }}</td>
|
||||
</tr>
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
@ -25,11 +25,17 @@ export interface Display {
|
||||
reset: number;
|
||||
}
|
||||
|
||||
export interface Victron {
|
||||
rx: number;
|
||||
tx: number;
|
||||
}
|
||||
|
||||
export interface Device {
|
||||
name: string;
|
||||
nrf24: Nrf24;
|
||||
eth: Ethernet;
|
||||
display: Display;
|
||||
victron: Victron;
|
||||
}
|
||||
|
||||
export interface PinMapping extends Array<Device>{}
|
||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user