Skip to content

Commit 1c594d4

Browse files
authored
Merge pull request #1274 from IoTThinks/MCdev-FixedMCUTemperature
To fix MCU Temperature for repeaters
2 parents 1d9d37c + 0b30d24 commit 1c594d4

2 files changed

Lines changed: 14 additions & 6 deletions

File tree

examples/simple_repeater/MyMesh.cpp

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -174,17 +174,18 @@ int MyMesh::handleRequest(ClientInfo *sender, uint32_t sender_timestamp, uint8_t
174174
telemetry.reset();
175175
telemetry.addVoltage(TELEM_CHANNEL_SELF, (float)board.getBattMilliVolts() / 1000.0f);
176176

177-
float temperature = board.getMCUTemperature();
178-
if(!isnan(temperature)) { // Supported boards with built-in temperature sensor. ESP32-C3 may return NAN
179-
telemetry.addTemperature(TELEM_CHANNEL_SELF, temperature); // Built-in MCU Temperature
180-
}
181-
182177
// query other sensors -- target specific
183178
if ((sender->permissions & PERM_ACL_ROLE_MASK) == PERM_ACL_GUEST) {
184179
perm_mask = 0x00; // just base telemetry allowed
185180
}
186181
sensors.querySensors(perm_mask, telemetry);
187182

183+
// This default temperature will be overridden by external sensors (if any)
184+
float temperature = board.getMCUTemperature();
185+
if(!isnan(temperature)) { // Supported boards with built-in temperature sensor. ESP32-C3 may return NAN
186+
telemetry.addTemperature(TELEM_CHANNEL_SELF, temperature); // Built-in MCU Temperature
187+
}
188+
188189
uint8_t tlen = telemetry.getSize();
189190
memcpy(&reply_data[4], telemetry.getBuffer(), tlen);
190191
return 4 + tlen; // reply_len

src/helpers/ESP32Board.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,14 @@ class ESP32Board : public mesh::MainBoard {
4444

4545
// Temperature from ESP32 MCU
4646
float getMCUTemperature() override {
47-
return temperatureRead();
47+
uint32_t raw = 0;
48+
49+
// To get and average the temperature so it is more accurate, especially in low temperature
50+
for (int i = 0; i < 4; i++) {
51+
raw += temperatureRead();
52+
}
53+
54+
return raw / 4;
4855
}
4956

5057
uint8_t getStartupReason() const override { return startup_reason; }

0 commit comments

Comments
 (0)