mirror of
https://github.com/lumapu/ahoy.git
synced 2025-06-26 14:26:59 +02:00
* inverter dependent mqtt (is avail)
* implemented heap stats #58 * inserted 'break' in ISR while loop
This commit is contained in:
parent
81943441e0
commit
df5a306bb2
6 changed files with 52 additions and 25 deletions
|
@ -14,7 +14,6 @@ app::app() : Main() {
|
|||
mSerialTicker = 0xffff;
|
||||
mSerialInterval = 0;
|
||||
mMqttActive = false;
|
||||
mMqttNewDataAvail = false;
|
||||
|
||||
mTicker = 0;
|
||||
mRxTicker = 0;
|
||||
|
@ -25,8 +24,9 @@ app::app() : Main() {
|
|||
mSerialDebug = false;
|
||||
|
||||
memset(mPayload, 0, (MAX_NUM_INVERTERS * sizeof(invPayload_t)));
|
||||
mRxFailed = 0;
|
||||
mRxSuccess = 0;
|
||||
mRxFailed = 0;
|
||||
mRxSuccess = 0;
|
||||
mLastPacketId = 0x00;
|
||||
|
||||
mSys = new HmSystemType();
|
||||
}
|
||||
|
@ -162,8 +162,11 @@ void app::loop(void) {
|
|||
}
|
||||
|
||||
if((*pid & 0x80) == 0x80) {
|
||||
if((*pid & 0x7f) > mPayload[iv->id].maxPackId)
|
||||
if((*pid & 0x7f) > mPayload[iv->id].maxPackId) {
|
||||
mPayload[iv->id].maxPackId = (*pid & 0x7f);
|
||||
if(*pid > 0x81)
|
||||
mLastPacketId = *pid;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -182,14 +185,14 @@ void app::loop(void) {
|
|||
mMqtt.loop();
|
||||
|
||||
if(checkTicker(&mTicker, 1000)) {
|
||||
if(mMqttNewDataAvail) {
|
||||
if(++mMqttTicker >= mMqttInterval) {
|
||||
mMqttTicker = 0;
|
||||
mMqtt.isConnected(true);
|
||||
char topic[30], val[10];
|
||||
for(uint8_t id = 0; id < mSys->getNumInverters(); id++) {
|
||||
Inverter<> *iv = mSys->getInverterByPos(id);
|
||||
if(NULL != iv) {
|
||||
if(++mMqttTicker >= mMqttInterval) {
|
||||
mMqttTicker = 0;
|
||||
mMqtt.isConnected(true);
|
||||
char topic[30], val[10];
|
||||
for(uint8_t id = 0; id < mSys->getNumInverters(); id++) {
|
||||
Inverter<> *iv = mSys->getInverterByPos(id);
|
||||
if(NULL != iv) {
|
||||
if(iv->isAvailable(mTimestamp)) {
|
||||
for(uint8_t i = 0; i < iv->listLen; i++) {
|
||||
snprintf(topic, 30, "%s/ch%d/%s", iv->name, iv->assign[i].ch, fields[iv->assign[i].fieldId]);
|
||||
snprintf(val, 10, "%.3f", iv->getValue(i));
|
||||
|
@ -199,10 +202,9 @@ void app::loop(void) {
|
|||
}
|
||||
}
|
||||
}
|
||||
snprintf(val, 10, "%d", ESP.getFreeHeap());
|
||||
mMqtt.sendMsg("free_heap", val);
|
||||
mMqttNewDataAvail = false;
|
||||
}
|
||||
snprintf(val, 10, "%d", ESP.getFreeHeap());
|
||||
mMqtt.sendMsg("free_heap", val);
|
||||
}
|
||||
|
||||
if(mSerialValues) {
|
||||
|
@ -212,13 +214,15 @@ void app::loop(void) {
|
|||
for(uint8_t id = 0; id < mSys->getNumInverters(); id++) {
|
||||
Inverter<> *iv = mSys->getInverterByPos(id);
|
||||
if(NULL != iv) {
|
||||
for(uint8_t i = 0; i < iv->listLen; i++) {
|
||||
if(0.0f != iv->getValue(i)) {
|
||||
snprintf(topic, 30, "%s/ch%d/%s", iv->name, iv->assign[i].ch, iv->getFieldName(i));
|
||||
snprintf(val, 10, "%.3f %s", iv->getValue(i), iv->getUnit(i));
|
||||
DPRINTLN(String(topic) + ": " + String(val));
|
||||
if(iv->isAvailable(mTimestamp)) {
|
||||
for(uint8_t i = 0; i < iv->listLen; i++) {
|
||||
if(0.0f != iv->getValue(i)) {
|
||||
snprintf(topic, 30, "%s/ch%d/%s", iv->name, iv->assign[i].ch, iv->getFieldName(i));
|
||||
snprintf(val, 10, "%.3f %s", iv->getValue(i), iv->getUnit(i));
|
||||
DPRINTLN(String(topic) + ": " + String(val));
|
||||
}
|
||||
yield();
|
||||
}
|
||||
yield();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -318,7 +322,10 @@ void app::processPayload(bool retransmit) {
|
|||
else {
|
||||
if(mSerialDebug)
|
||||
DPRINTLN(F("Error while retrieving data: last frame missing: Request Retransmit"));
|
||||
mSys->Radio.sendTimePacket(iv->radioId.u64, mPayload[iv->id].ts);
|
||||
if(0x00 != mLastPacketId)
|
||||
mSys->Radio.sendCmdPacket(iv->radioId.u64, 0x15, mLastPacketId, true);
|
||||
else
|
||||
mSys->Radio.sendTimePacket(iv->radioId.u64, mPayload[iv->id].ts);
|
||||
}
|
||||
mSys->Radio.switchRxCh(100);
|
||||
}
|
||||
|
@ -343,7 +350,6 @@ void app::processPayload(bool retransmit) {
|
|||
iv->addValue(i, payload);
|
||||
}
|
||||
iv->doCalculations();
|
||||
mMqttNewDataAvail = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue