Added CLI

This commit is contained in:
TraYali 2024-03-20 11:28:43 +01:00
parent b63bd9ae42
commit 70b27a0c07
8 changed files with 151 additions and 32 deletions

View file

@ -1,6 +1,6 @@
#include <vector>
#include <iostream>
// #include <thread>
#include <string>
#include "modbus.h"
@ -9,15 +9,13 @@
#include "portParameters.h"
// struct _modbus;
// typedef _modbus modbus_t;
Dtu::Dtu(const char *ip_address, int port) {
class modbus modbus{ip_address, (uint16_t) port};
this->modbus = std::make_shared<class modbus>(modbus);
if (!this->modbus.get()->modbus_connect()) {
std::cerr << "conn_error";
std::cerr << "conn_error" << std::endl;
this->connected = false;
}
else {
@ -98,6 +96,14 @@ void Dtu::updateMicroinverters() {
// std::cout << std::endl;
}
void Dtu::updateMicroinverters(std::vector<std::string> &parametersToGet) {
std::vector<Microinverter>::iterator microinvertersIterator = this->microinverters.begin();
while(microinvertersIterator != this->microinverters.end()) {
microinvertersIterator->updatePorts(parametersToGet);
microinvertersIterator++;
}
}
void Dtu::printMicroinverters() {
std::cout << "DTU:" << std::endl;
std::vector<Microinverter>::iterator microinvertersIterator = this->microinverters.begin();
@ -106,4 +112,13 @@ void Dtu::printMicroinverters() {
std::cout << std::endl;
microinvertersIterator++;
}
}
void Dtu::printMicroinverters(std::vector<std::string> &parametersToGet) {
std::cout << "DTU:" << std::endl;
std::vector<Microinverter>::iterator microinvertersIterator = this->microinverters.begin();
while(microinvertersIterator != this->microinverters.end()) {
microinvertersIterator->printPorts(parametersToGet);
microinvertersIterator++;
}
}

View file

@ -1,6 +1,7 @@
// #include <thread>
#include <iostream>
#include <memory>
#include <string>
#include "modbus.h"
@ -27,6 +28,14 @@ void Microinverter::updatePorts() {
// }
}
void Microinverter::updatePorts(std::vector<std::string> &parametersToGet) {
std::vector<Port>::iterator portsIterator = this->ports.begin();
while(portsIterator != this->ports.end()) {
portsIterator->updateParameters(parametersToGet);
portsIterator++;
}
}
void Microinverter::printPorts() {
std::cout << "Microinverter: " << this->serialNumber << std::endl;
@ -36,4 +45,15 @@ void Microinverter::printPorts() {
std::cout << std::endl;
portsIterator++;
}
}
void Microinverter::printPorts(std::vector<std::string> &parametersToGet) {
std::cout << "Microinverter: " << this->serialNumber << std::endl;
std::vector<Port>::iterator portsIterator = this->ports.begin();
while(portsIterator != this->ports.end()) {
portsIterator->printParameters(parametersToGet);
std::cout << std::endl;
portsIterator++;
}
}

View file

@ -2,7 +2,6 @@
#include <string>
#include <iostream>
#include <cmath>
#include <memory>
#include "modbus.h"
@ -11,7 +10,6 @@
Port::Port(std::shared_ptr<class modbus> modbus, uint16_t portStartAddress) {
this->modbus = modbus;
// this->modbus_context_mutex = modbus_context_mutex;
this->portStartAddress = portStartAddress;
@ -52,6 +50,21 @@ void Port::populateParameters() {
this->parameters.push_back(std::make_shared<PortParameterLinkStatus>());
}
std::pair<std::shared_ptr<PortParameter>, bool> Port::getParameterByName(std::string name) {
std::pair<std::shared_ptr<PortParameter>, bool> result;
result.second = false;
std::vector<std::shared_ptr<PortParameter>>::iterator parametersIterator = this->parameters.begin();
while(parametersIterator != this->parameters.end() && !result.second) {
if(parametersIterator->get()->name == name) {
result.first = *parametersIterator;
result.second = true;
}
}
return result;
}
void Port::fixCurrent() {
if(this->currentFixed) {
return;
@ -80,6 +93,20 @@ void Port::updateParameters() {
this->fixCurrent();
}
void Port::updateParameters(std::vector<std::string> &parametersToGet) {
std::vector<std::string>::iterator parametersToGetIterator = parametersToGet.begin();
while(parametersToGetIterator != parametersToGet.end()) {
std::pair<std::shared_ptr<PortParameter>, bool> parameterPair;
parameterPair = this->getParameterByName(*parametersToGetIterator);
if(parameterPair.second) {
parameterPair.first->updateValue(this->modbus, this->portStartAddress);
}
parametersToGetIterator++;
}
}
void Port::printParameters() {
std::vector<std::shared_ptr<PortParameter>>::iterator parametersIterator = this->parameters.begin();
@ -91,4 +118,22 @@ void Port::printParameters() {
std::cout << " " << parametersIterator->get()->name << ": " << parametersIterator->get()->getOutputValue() << " |";
parametersIterator++;
}
}
void Port::printParameters(std::vector<std::string> &parametersToGet) {
std::vector<std::string>::iterator parametersToGetIterator = parametersToGet.begin();
if(parametersToGetIterator != parametersToGet.end()) {
std::cout << "|";
}
while(parametersToGetIterator != parametersToGet.end()) {
std::pair<std::shared_ptr<PortParameter>, bool> parameterPair;
parameterPair = this->getParameterByName(*parametersToGetIterator);
if(parameterPair.second) {
std::cout << " " << parameterPair.first->name << ": " << parameterPair.first->getOutputValue() << " |";
}
}
}