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_clk;
|
||||||
uint8_t display_cs;
|
uint8_t display_cs;
|
||||||
uint8_t display_reset;
|
uint8_t display_reset;
|
||||||
|
uint8_t victron_tx;
|
||||||
|
uint8_t victron_rx;
|
||||||
};
|
};
|
||||||
|
|
||||||
class PinMappingClass {
|
class PinMappingClass {
|
||||||
@ -39,6 +41,7 @@ public:
|
|||||||
|
|
||||||
bool isValidNrf24Config();
|
bool isValidNrf24Config();
|
||||||
bool isValidEthConfig();
|
bool isValidEthConfig();
|
||||||
|
bool isValidVictronConfig();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PinMapping_t _pinMapping;
|
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();
|
VedirectSerial.flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -29,7 +29,7 @@ class VeDirectFrameHandler {
|
|||||||
public:
|
public:
|
||||||
|
|
||||||
VeDirectFrameHandler();
|
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 setPollInterval(unsigned long interval); // set poll intervall in seconds
|
||||||
void loop(); // main loop to read ve.direct data
|
void loop(); // main loop to read ve.direct data
|
||||||
unsigned long getLastUpdate(); // timestamp of last successful frame read
|
unsigned long getLastUpdate(); // timestamp of last successful frame read
|
||||||
|
|||||||
@ -51,6 +51,8 @@ build_flags = ${env.build_flags}
|
|||||||
-DHOYMILES_PIN_IRQ=16
|
-DHOYMILES_PIN_IRQ=16
|
||||||
-DHOYMILES_PIN_CE=4
|
-DHOYMILES_PIN_CE=4
|
||||||
-DHOYMILES_PIN_CS=5
|
-DHOYMILES_PIN_CS=5
|
||||||
|
-DVICTRON_PIN_TX=21
|
||||||
|
-DVICTRON_PIN_RX=22
|
||||||
|
|
||||||
|
|
||||||
[env:olimex_esp32_poe]
|
[env:olimex_esp32_poe]
|
||||||
|
|||||||
@ -30,5 +30,7 @@ upload_port = COM4
|
|||||||
; -DHOYMILES_PIN_IRQ=4
|
; -DHOYMILES_PIN_IRQ=4
|
||||||
; -DHOYMILES_PIN_CE=5
|
; -DHOYMILES_PIN_CE=5
|
||||||
; -DHOYMILES_PIN_CS=6
|
; -DHOYMILES_PIN_CS=6
|
||||||
|
; -DVICTRON_PIN_TX=21
|
||||||
|
; -DVICTRON_PIN_RX=22
|
||||||
;monitor_port = /dev/ttyACM0
|
;monitor_port = /dev/ttyACM0
|
||||||
;upload_port = /dev/ttyACM0
|
;upload_port = /dev/ttyACM0
|
||||||
|
|||||||
@ -61,6 +61,9 @@ PinMappingClass::PinMappingClass()
|
|||||||
_pinMapping.display_cs = DISPLAY_CS;
|
_pinMapping.display_cs = DISPLAY_CS;
|
||||||
_pinMapping.display_reset = DISPLAY_RESET;
|
_pinMapping.display_reset = DISPLAY_RESET;
|
||||||
|
|
||||||
|
_pinMapping.victron_tx = VICTRON_PIN_TX;
|
||||||
|
_pinMapping.victron_rx = VICTRON_PIN_RX;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
PinMapping_t& PinMappingClass::get()
|
PinMapping_t& PinMappingClass::get()
|
||||||
@ -113,6 +116,9 @@ bool PinMappingClass::init(const String& deviceMapping)
|
|||||||
_pinMapping.display_cs = doc[i]["display"]["cs"] | DISPLAY_CS;
|
_pinMapping.display_cs = doc[i]["display"]["cs"] | DISPLAY_CS;
|
||||||
_pinMapping.display_reset = doc[i]["display"]["reset"] | DISPLAY_RESET;
|
_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;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -134,3 +140,9 @@ bool PinMappingClass::isValidEthConfig()
|
|||||||
{
|
{
|
||||||
return _pinMapping.eth_enabled;
|
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("screensaver")] = config.Display_ScreenSaver;
|
||||||
display[F("contrast")] = config.Display_Contrast;
|
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();
|
response->setLength();
|
||||||
request->send(response);
|
request->send(response);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -165,9 +165,13 @@ void setup()
|
|||||||
|
|
||||||
// Initialize ve.direct communication
|
// Initialize ve.direct communication
|
||||||
MessageOutput.println(F("Initialize ve.direct interface... "));
|
MessageOutput.println(F("Initialize ve.direct interface... "));
|
||||||
VeDirect.init();
|
if (PinMapping.isValidVictronConfig()) {
|
||||||
|
VeDirect.init(pin.victron_rx, pin.victron_tx);
|
||||||
VeDirect.setPollInterval(config.Vedirect_PollInterval);
|
VeDirect.setPollInterval(config.Vedirect_PollInterval);
|
||||||
MessageOutput.println(F("done"));
|
MessageOutput.println(F("done"));
|
||||||
|
} else {
|
||||||
|
MessageOutput.println(F("Invalid pin config"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void loop()
|
void loop()
|
||||||
|
|||||||
@ -81,7 +81,7 @@
|
|||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td rowspan="6">Display</td>
|
<td rowspan="5">Display</td>
|
||||||
<td>type</td>
|
<td>type</td>
|
||||||
<td>{{ selectedPinAssignment?.display?.type }}</td>
|
<td>{{ selectedPinAssignment?.display?.type }}</td>
|
||||||
<td>{{ currentPinAssignment?.display?.type }}</td>
|
<td>{{ currentPinAssignment?.display?.type }}</td>
|
||||||
@ -107,6 +107,18 @@
|
|||||||
<td>{{ currentPinAssignment?.display?.reset }}</td>
|
<td>{{ currentPinAssignment?.display?.reset }}</td>
|
||||||
</tr>
|
</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>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -25,11 +25,17 @@ export interface Display {
|
|||||||
reset: number;
|
reset: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export interface Victron {
|
||||||
|
rx: number;
|
||||||
|
tx: number;
|
||||||
|
}
|
||||||
|
|
||||||
export interface Device {
|
export interface Device {
|
||||||
name: string;
|
name: string;
|
||||||
nrf24: Nrf24;
|
nrf24: Nrf24;
|
||||||
eth: Ethernet;
|
eth: Ethernet;
|
||||||
display: Display;
|
display: Display;
|
||||||
|
victron: Victron;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface PinMapping extends Array<Device>{}
|
export interface PinMapping extends Array<Device>{}
|
||||||
Binary file not shown.
Loading…
Reference in New Issue
Block a user