@@ -65,6 +65,14 @@ static Adafruit_INA219 INA219(TELEM_INA219_ADDRESS);
6565static Adafruit_INA260 INA260;
6666#endif
6767
68+ #if ENV_INCLUDE_INA226
69+ #define TELEM_INA226_ADDRESS 0x44
70+ #define TELEM_INA226_SHUNT_VALUE 0.100
71+ #define TELEM_INA226_MAX_AMP 0.8
72+ #include < INA226.h>
73+ static INA226 INA226 (TELEM_INA226_ADDRESS);
74+ #endif
75+
6876#if ENV_INCLUDE_MLX90614
6977#define TELEM_MLX90614_ADDRESS 0x5A // MLX90614 IR temperature sensor I2C address
7078#include < Adafruit_MLX90614.h>
@@ -202,6 +210,17 @@ bool EnvironmentSensorManager::begin() {
202210 }
203211 #endif
204212
213+ #if ENV_INCLUDE_INA226
214+ if (INA226.begin ()) {
215+ MESH_DEBUG_PRINTLN (" Found INA226 at address: %02X" , TELEM_INA226_ADDRESS);
216+ INA226.setMaxCurrentShunt (TELEM_INA226_MAX_AMP, TELEM_INA226_SHUNT_VALUE);
217+ INA226_initialized = true ;
218+ } else {
219+ INA226_initialized = false ;
220+ MESH_DEBUG_PRINTLN (" INA226 was not found at I2C address %02X" , TELEM_INA226_ADDRESS);
221+ }
222+ #endif
223+
205224 #if ENV_INCLUDE_MLX90614
206225 if (MLX90614.begin (TELEM_MLX90614_ADDRESS, TELEM_WIRE)) {
207226 MESH_DEBUG_PRINTLN (" Found MLX90614 at address: %02X" , TELEM_MLX90614_ADDRESS);
@@ -323,6 +342,15 @@ bool EnvironmentSensorManager::querySensors(uint8_t requester_permissions, Cayen
323342 }
324343 #endif
325344
345+ #if ENV_INCLUDE_INA226
346+ if (INA226_initialized) {
347+ telemetry.addVoltage (next_available_channel, INA226.getBusVoltage ());
348+ telemetry.addCurrent (next_available_channel, INA226.getCurrent_mA () / 1000.0 );
349+ telemetry.addPower (next_available_channel, INA226.getPower_mW () / 1000.0 );
350+ next_available_channel++;
351+ }
352+ #endif
353+
326354 #if ENV_INCLUDE_MLX90614
327355 if (MLX90614_initialized) {
328356 telemetry.addTemperature (TELEM_CHANNEL_SELF, MLX90614.readObjectTempC ());
0 commit comments