this change adds support for a second Victron MPPT charge controller using a second serial connection. * Add device configuration for a second victron mppt * Update VedirectView for second victron mppt * Update MqttHandleVedirect for second victron mppt * Update MqttHandleVedirectHass for second victron mppt * Handle nonexisting victron controllers with optionals * Add bool-function to Battery and inherited classes, if uart port 2 is being used * Introduced a serial port manager. In order to prevent the battery and the Victron MPPT to use the same hw serial ports, this class keeps track of the used ports and their owners.
41 lines
990 B
C++
41 lines
990 B
C++
// SPDX-License-Identifier: GPL-2.0-or-later
|
|
#pragma once
|
|
|
|
#include "VeDirectMpptController.h"
|
|
#include "Configuration.h"
|
|
#include <Arduino.h>
|
|
#include <map>
|
|
#include <TaskSchedulerDeclarations.h>
|
|
|
|
#ifndef VICTRON_PIN_RX
|
|
#define VICTRON_PIN_RX 22
|
|
#endif
|
|
|
|
#ifndef VICTRON_PIN_TX
|
|
#define VICTRON_PIN_TX 21
|
|
#endif
|
|
|
|
class MqttHandleVedirectClass {
|
|
public:
|
|
void init(Scheduler& scheduler);
|
|
void forceUpdate();
|
|
private:
|
|
void loop();
|
|
std::map<std::string, VeDirectMpptController::veMpptStruct> _kvFrames;
|
|
|
|
Task _loopTask;
|
|
|
|
// point of time in millis() when updated values will be published
|
|
uint32_t _nextPublishUpdatesOnly = 0;
|
|
|
|
// point of time in millis() when all values will be published
|
|
uint32_t _nextPublishFull = 1;
|
|
|
|
bool _PublishFull;
|
|
|
|
void publish_mppt_data(const VeDirectMpptController::spData_t &spMpptData,
|
|
VeDirectMpptController::veMpptStruct &frame) const;
|
|
};
|
|
|
|
extern MqttHandleVedirectClass MqttHandleVedirect;
|