Add support for VEML6075 and VEML7700

- Add support for VEML6075 UVA/UVB/UVINDEX Sensor by device111 (#8432)
- Add support for VEML7700 Ambient light intensity Sensor by device111 (#8432)
This commit is contained in:
Theo Arends 2020-05-22 15:16:01 +02:00
parent 2b798ff194
commit 86921e60b2
6 changed files with 27 additions and 23 deletions

View File

@ -70,5 +70,5 @@ Index | Define | Driver | Device | Address(es) | Description
46 | USE_IAQ | xsns_66 | IAQ | 0x5a | Air quality sensor
47 | USE_DISPLAY_SEVENSEG| xdsp_11 | HT16K33 | 0x70 - 0x77 | Seven segment LED
48 | USE_AS3935 | xsns_67 | AS3935 | 0x03 | Franklin Lightning Sensor
49 | USE_VEML6075 | xsns_68 | VEML6075 | 0x10 | UVA/UVB/UVINDEX Sensor
50 | USE_VEML7700 | xsns_69 | VEML7700 | 0x10 | Ambient light intensity sensor
49 | USE_VEML6075 | xsns_70 | VEML6075 | 0x10 | UVA/UVB/UVINDEX Sensor
50 | USE_VEML7700 | xsns_71 | VEML7700 | 0x10 | Ambient light intensity sensor

View File

@ -57,3 +57,5 @@ The following binary downloads have been compiled with ESP8266/Arduino library c
- Change IRremoteESP8266 library updated to v2.7.7
- Add command ``Rule0`` to change global rule parameters
- Add more functionality to ``Switchmode`` 11 and 12 (#8450)
- Add support for VEML6075 UVA/UVB/UVINDEX Sensor by device111 (#8432)
- Add support for VEML7700 Ambient light intensity Sensor by device111 (#8432)

View File

@ -6,6 +6,8 @@
- Add command ``Rule0`` to change global rule parameters
- Add more functionality to ``Switchmode`` 11 and 12 (#8450)
- Add dump of compressed rules over 512 chars and unishox decompress fix
- Add support for VEML6075 UVA/UVB/UVINDEX Sensor by device111 (#8432)
- Add support for VEML7700 Ambient light intensity Sensor by device111 (#8432)
## Released

View File

@ -1,5 +1,5 @@
/*
xsns_70_veml6075.ino - VEML6075 Franklin Lightning Sensor support for Tasmota
xsns_70_veml6075.ino - VEML6075 UVA/UVB/UVINDEX Sensor support for Tasmota
Copyright (C) 2020 Martin Wagner
@ -85,13 +85,13 @@ enum VEML6075_Commands { // commands for Console
CMND_VEML6075_SET_HD,
CMND_VEML6075_SET_UVIT,
};
// global variables
struct VEML6075STRUCT
{
char types[9] = D_NAME_VEML6075;
uint8_t address = VEML6075_ADDR;
uint8_t inttime = 0;
uint8_t inttime = 0;
uint16_t uva = 0;
uint16_t uvb = 0;
uint16_t uva_raw = 0;
@ -113,9 +113,9 @@ typedef union {
uint8_t hd:1; // High dynamic
uint8_t inttime:3; // Integration Time
uint8_t spare7:1; // spare
};
};
uint16_t config;
} veml6075configRegister;
} veml6075configRegister;
veml6075configRegister veml6075Config;
@ -179,7 +179,7 @@ uint8_t VEML6075GetPwr(void){
return veml6075Config.pwr;
}
void VEML6075ReadData(void)
void VEML6075ReadData(void)
{
veml6075_sensor.uva_raw = VEML6075read16 (VEML6075_REG_UVA);
veml6075_sensor.uvb_raw = VEML6075read16 (VEML6075_REG_UVB);
@ -201,7 +201,7 @@ bool VEML6075init(void)
void VEML6075Detect(void) {
if (I2cActive(veml6075_sensor.address)) return;
if (VEML6075init()) {
I2cSetActiveFound(veml6075_sensor.address, veml6075_sensor.types);
VEML6075write16 (VEML6075_REG_CONF, 0x10); // set default
@ -252,7 +252,7 @@ bool VEML6075Cmd(void) {
}
}
void VEML6075Show(bool json)
void VEML6075Show(bool json)
{
char s_uvindex[FLOATSZ];
dtostrfd(veml6075_sensor.uvi,1, s_uvindex);
@ -260,10 +260,10 @@ void VEML6075Show(bool json)
if (json) {
ResponseAppend_P(JSON_SNS_VEML6075, D_NAME_VEML6075, veml6075_sensor.uva, veml6075_sensor.uvb, s_uvindex);
#ifdef USE_WEBSERVER
} else {
} else {
WSContentSend_PD(HTTP_SNS_UVA, D_NAME_VEML6075, veml6075_sensor.uva);
WSContentSend_PD(HTTP_SNS_UVB, D_NAME_VEML6075, veml6075_sensor.uvb);
WSContentSend_PD(HTTP_SNS_UVINDEX, D_NAME_VEML6075 ,s_uvindex);
WSContentSend_PD(HTTP_SNS_UVINDEX, D_NAME_VEML6075 ,s_uvindex);
#endif // USE_WEBSERVER
}
}

View File

@ -1,5 +1,5 @@
/*
xsns_71_VEML7700.ino - VEML7700 Franklin Lightning Sensor support for Tasmota
xsns_71_VEML7700.ino - VEML7700 Ambient light intensity Sensor support for Tasmota
Copyright (C) 2020 Martin Wagner
@ -34,14 +34,13 @@ Adafruit_VEML7700 veml7700 = Adafruit_VEML7700(); //create object copy
#define D_NAME_VEML7700 "VEML7700"
#define D_WHITE_CONTENT "White content"
const char HTTP_SNS_LUX[] PROGMEM = "{s}%s " D_ILLUMINANCE "{m}%d " D_UNIT_LUX " {e}";
const char HTTP_SNS_WHITE[] PROGMEM = "{s}%s " D_WHITE_CONTENT "{m}%d {e}";
const char JSON_SNS_VEML7700[] PROGMEM = ",\"%s\":{\"" D_JSON_ILLUMINANCE "\":%d,\"" D_JSON_WHITE_CONTENT "\":%d}";
struct VEML7700STRUCT
{
char types[9] = D_NAME_VEML7700;
uint8_t address = VEML7700_I2CADDR_DEFAULT;
uint8_t address = VEML7700_I2CADDR_DEFAULT;
uint16_t lux = 0;
uint16_t white = 0;
} veml7700_sensor;
@ -67,13 +66,13 @@ void VEML7700Show(bool json)
{
if (json) {
ResponseAppend_P(JSON_SNS_VEML7700, D_NAME_VEML7700, veml7700_sensor.lux, veml7700_sensor.white);
#ifdef USE_DOMOTICZ
if (0 == tele_period) DomoticzSensor(DZ_ILLUMINANCE, veml7700_sensor.lux);
#endif // USE_DOMOTICZ
#ifdef USE_WEBSERVER
} else {
WSContentSend_PD(HTTP_SNS_LUX, D_NAME_VEML7700, veml7700_sensor.lux);
} else {
WSContentSend_PD(HTTP_SNS_ILLUMINANCE, D_NAME_VEML7700, veml7700_sensor.lux);
WSContentSend_PD(HTTP_SNS_WHITE, D_NAME_VEML7700, veml7700_sensor.white);
#endif // USE_WEBSERVER
}

View File

@ -147,7 +147,8 @@ a_setoption = [[
"Disable non-json MQTT response",
"Enable light fading at start/power on",
"Set PWM Mode from regular PWM to ColorTemp control","",
"","","","",
"Keep uncompressed rules in memory to avoid CPU load of uncompressing at each tick",
"","","",
"","","","",
"","","","",
"","","","",
@ -195,15 +196,15 @@ a_features = [[
"USE_INA226","USE_A4988_STEPPER","USE_DDS2382","USE_SM2135",
"USE_SHUTTER","USE_PCF8574","USE_DDSU666","USE_DEEPSLEEP",
"USE_SONOFF_SC","USE_SONOFF_RF","USE_SONOFF_L1","USE_EXS_DIMMER",
"USE_ARDUINO_SLAVE","USE_HIH6","USE_HPMA","USE_TSL2591",
"USE_TASMOTA_SLAVE","USE_HIH6","USE_HPMA","USE_TSL2591",
"USE_DHT12","USE_DS1624","USE_GPS","USE_HOTPLUG",
"USE_NRF24","USE_MIBLE","USE_HM10","USE_LE01MR",
"USE_AHT1x","USE_WEMOS_MOTOR_V1","USE_DEVICE_GROUPS","USE_PWM_DIMMER"
],[
"USE_KEELOQ","USE_HRXL","USE_SONOFF_D1","USE_HDC1080",
"USE_IAQ","USE_DISPLAY_SEVENSEG","USE_AS3935","USE_PING",
"USE_WINDMETER","USE_OPENTHERM","USE_THERMOSTAT","",
"","","","",
"USE_WINDMETER","USE_OPENTHERM","USE_THERMOSTAT","USE_VEML6075",
"USE_VEML7700","","","",
"","","","",
"","","","",
"","","","",
@ -241,7 +242,7 @@ else:
obj = json.load(fp)
def StartDecode():
print ("\n*** decode-status.py v20200507 by Theo Arends and Jacek Ziolkowski ***")
print ("\n*** decode-status.py v20200510 by Theo Arends and Jacek Ziolkowski ***")
# print("Decoding\n{}".format(obj))