Skip to content
This repository was archived by the owner on May 20, 2025. It is now read-only.

Commit 359eece

Browse files
committed
Yield/User and Yiels/System now updated in real time instead of once each day
1 parent 74c103b commit 359eece

File tree

3 files changed

+44
-3
lines changed

3 files changed

+44
-3
lines changed

software/src/dbus_tsmppt_bridge.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,8 @@ DBusTsmpptBridge::DBusTsmpptBridge(Tsmppt *tsmppt, QObject *parent):
3838
produce(mTsmppt, "powerMaxDaily", "/History/Daily/0/MaxPower", "W", 0);
3939
produce(mTsmppt, "arrayVoltageMaxDaily", "/History/Daily/0/MaxPvVoltage", "V", 2);
4040
produce(mTsmppt, "wattHoursDaily", "/History/Daily/0/Yield", "kWh", 2);
41-
produce(mTsmppt, "wattHoursTotalResettable", "/Yield/User", "kWh", 0);
42-
produce(mTsmppt, "wattHoursTotal", "/Yield/System", "kWh", 0);
41+
produce(mTsmppt, "yieldUser", "/Yield/User", "kWh", 0);
42+
produce(mTsmppt, "yieldSystem", "/Yield/System", "kWh", 0);
4343
produce(mTsmppt, "timeInAbsorption", "/History/Daily/0/TimeInAbsorption");
4444
// TSMPPT does not give time in bulk:
4545
// produce(mTsmppt, "timeInBulk", "/History/Daily/0/TimeInBulk");

software/src/tsmppt.cpp

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ const int REG_ESERIAL = 57536;
3030
const int REG_EMODEL = 57548;
3131

3232
Tsmppt::Tsmppt(const QString &IPAddress, const int port, int interval, int slave, QObject *parent):
33-
QObject(parent), mInitialized(false), mTimer(new QTimer(this))
33+
QObject(parent), mInitialized(false), mTimer(new QTimer(this)), yield_user(0), yield_system(0)
3434
{
3535
QLOG_DEBUG() << "Tsmppt::Tsmppt(" << IPAddress << ", " << port << ", " << interval << ", " << slave << ")";
3636
mCtx = modbus_new_tcp_pi(IPAddress.toStdString().c_str(), QString::number(port).toStdString().c_str());
@@ -198,10 +198,12 @@ void Tsmppt::updateValues()
198198
// Whc total:
199199
temp = (double)reg[REG_KWH_TOTAL_RES-REG_FIRST_DYN];
200200
setWattHoursTotalResettable(temp);
201+
setYieldUser(m_whc+temp);
201202

202203
// Whc total:
203204
temp = (double)reg[REG_KWH_TOTAL-REG_FIRST_DYN];
204205
setWattHoursTotal(temp);
206+
setYieldSystem(m_whc+temp);
205207

206208
// Pmax daily:
207209
temp = (double)reg[REG_POUT_MAX_DAILY-REG_FIRST_DYN] * m_i_pu * m_v_pu / 131072.0;
@@ -443,6 +445,32 @@ int Tsmppt::timeInFloat() const
443445
return m_t_float;
444446
}
445447

448+
void Tsmppt::setYieldUser(double v)
449+
{
450+
if (yield_user == v)
451+
return;
452+
yield_user = v;
453+
emit yieldUserChanged();
454+
}
455+
456+
double Tsmppt::yieldUser() const
457+
{
458+
return yield_user;
459+
}
460+
461+
void Tsmppt::setYieldSystem(double v)
462+
{
463+
if (yield_system == v)
464+
return;
465+
yield_system = v;
466+
emit yieldSystemChanged();
467+
}
468+
469+
double Tsmppt::yieldSystem() const
470+
{
471+
return yield_system;
472+
}
473+
446474
void Tsmppt::setTimeInFloat(int v)
447475
{
448476
if (m_t_float == v)

software/src/tsmppt.h

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ class Tsmppt : public QObject
2626
Q_PROPERTY(int chargeState READ chargeState WRITE setChargeState NOTIFY chargeStateChanged)
2727
Q_PROPERTY(int timeInAbsorption READ timeInAbsorption WRITE setTimeInAbsorption NOTIFY timeInAbsorptionChanged)
2828
Q_PROPERTY(int timeInFloat READ timeInFloat WRITE setTimeInFloat NOTIFY timeInFloatChanged)
29+
Q_PROPERTY(double yieldUser READ yieldUser WRITE setYieldUser NOTIFY yieldUserChanged)
30+
Q_PROPERTY(double yieldSystem READ yieldSystem WRITE setYieldSystem NOTIFY yieldSystemChanged)
2931

3032
public:
3133
Tsmppt(const QString &IPAddress, const int port = 502, int interval = 5000, int slave = 1, QObject *parent = 0);
@@ -79,6 +81,12 @@ class Tsmppt : public QObject
7981
int timeInFloat() const;
8082
void setTimeInFloat(int v);
8183

84+
double yieldUser() const;
85+
void setYieldUser(double v);
86+
87+
double yieldSystem() const;
88+
void setYieldSystem(double v);
89+
8290
QString firmwareVersion() const;
8391
QString hardwareVersion() const;
8492
uint64_t serialNumber() const;
@@ -105,6 +113,8 @@ class Tsmppt : public QObject
105113
void connectionLost();
106114
void timeInAbsorptionChanged();
107115
void timeInFloatChanged();
116+
void yieldUserChanged();
117+
void yieldSystemChanged();
108118

109119
private slots:
110120
void onTimeout();
@@ -133,6 +143,9 @@ private slots:
133143
int m_cs; // Charge state
134144
int m_t_abs; // Time in absorption
135145
int m_t_float; // Time in float
146+
double yield_user; // Watt hours, total since last reset
147+
double yield_system; // Watt hours, total
148+
136149
// Static values (read once):
137150
double m_v_pu; // Voltage scaling
138151
double m_i_pu; // Current scaling

0 commit comments

Comments
 (0)