Skip to content

Commit

Permalink
Add victron pins to device manager
Browse files Browse the repository at this point in the history
  • Loading branch information
helgeerbe committed Feb 2, 2023
1 parent 9e79f02 commit 1c01e92
Show file tree
Hide file tree
Showing 11 changed files with 52 additions and 7 deletions.
3 changes: 3 additions & 0 deletions include/PinMapping.h
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand All @@ -39,6 +41,7 @@ class PinMappingClass {

bool isValidNrf24Config();
bool isValidEthConfig();
bool isValidVictronConfig();

private:
PinMapping_t _pinMapping;
Expand Down
4 changes: 2 additions & 2 deletions lib/VeDirectFrameHandler/VeDirectFrameHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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();
}

Expand Down
2 changes: 1 addition & 1 deletion lib/VeDirectFrameHandler/VeDirectFrameHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
2 changes: 2 additions & 0 deletions platformio.ini
Original file line number Diff line number Diff line change
Expand Up @@ -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]
Expand Down
2 changes: 2 additions & 0 deletions platformio_override.ini
Original file line number Diff line number Diff line change
Expand Up @@ -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
12 changes: 12 additions & 0 deletions src/PinMapping.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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;

}

Expand Down Expand Up @@ -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;
}
}
Expand All @@ -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;
}
4 changes: 4 additions & 0 deletions src/WebApi_device.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
}
Expand Down
10 changes: 7 additions & 3 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down
14 changes: 13 additions & 1 deletion webapp/src/components/PinInfo.vue
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand All @@ -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>
Expand Down
6 changes: 6 additions & 0 deletions webapp/src/types/PinMapping.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 modified webapp_dist/js/app.js.gz
Binary file not shown.

0 comments on commit 1c01e92

Please sign in to comment.