From 9593e6da215a4510decb0be6b603c0f237ad328c Mon Sep 17 00:00:00 2001 From: Theo Arends <11044339+arendst@users.noreply.github.com> Date: Sun, 6 Dec 2020 17:31:18 +0100 Subject: [PATCH] Prep for multiple addresses --- tasmota/xsns_66_iAQ.ino | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/tasmota/xsns_66_iAQ.ino b/tasmota/xsns_66_iAQ.ino index c647aa13b..962480748 100644 --- a/tasmota/xsns_66_iAQ.ino +++ b/tasmota/xsns_66_iAQ.ino @@ -19,6 +19,11 @@ #ifdef USE_I2C #ifdef USE_IAQ +/*********************************************************************************************\ + * iAQ-Core - Indoor Air Quality Sensor + * + * I2C Address: 0x5A +\*********************************************************************************************/ #define XSNS_66 66 #define XI2C_46 46 // See I2CDEVICES.md @@ -35,22 +40,32 @@ struct { int32_t resistance; uint16_t pred; uint16_t Tvoc; + uint8_t i2c_address; uint8_t status; bool ready; } iAQ; -void IAQ_Init(void) -{ +void IAQ_Init(void) { if (!I2cSetDevice(I2_ADR_IAQ)) { return; } I2cSetActiveFound(I2_ADR_IAQ, "IAQ"); + iAQ.i2c_address = I2_ADR_IAQ; iAQ.ready = true; +/* + for (iAQ.i2c_address = I2_ADR_IAQ; iAQ.i2c_address < I2_ADR_IAQ +5; iAQ.i2c_address++) { + if (I2cActive(iAQ.i2c_address)) { continue; } + if (I2cSetDevice(iAQ.i2c_address)) { + I2cSetActiveFound(iAQ.i2c_address, "IAQ"); + iAQ.ready = true; + break; + } + } +*/ } -void IAQ_Read(void) -{ +void IAQ_Read(void) { uint8_t buf[9]; buf[2] = IAQ_STATUS_I2C_ERR; // populate entry with error code - Wire.requestFrom((uint8_t)I2_ADR_IAQ,sizeof(buf)); + Wire.requestFrom(iAQ.i2c_address, sizeof(buf)); for( uint32_t i=0; i<9; i++ ) { buf[i]= Wire.read(); }