Using an ESP32 and Adafruit VEML7700 to measure UV light levels – UV index values and Lux levels:
esphome: name: light friendly_name: light includes: - /config/veml7700.h libraries: - "Wire" - "Adafruit Unified Sensor" - "SPI" - "Adafruit BusIO" - "Adafruit VEML7700 Library" esp32: board: esp32dev framework: type: arduino # Enable logging logger: # Enable Home Assistant API api: encryption: key: "5ahEglhdocQ2xU2wzJpOtMAar6ihhna9Xh7cJrHrGBU=" ota: password: "e77cc6a990001b6813a6705822241c8c" wifi: ssid: !secret wifi_ssid password: !secret wifi_password # Enable fallback hotspot (captive portal) in case wifi connection fails ap: ssid: "Light Fallback Hotspot" password: "HsLOrYzCA2Pz" captive_portal: i2c: sda: 21 scl: 22 scan: true id: bus_a sensor: - platform: custom lambda: |- auto my_veml7700_sensor = new MyVEML7700Sensor(); App.register_component(my_veml7700_sensor); return { my_veml7700_sensor->veml7700_lux // , my_veml7700_sensor->veml7700_white // , my_veml7700_sensor->veml7700_raw_als // , my_veml7700_sensor->veml7700_gain // , my_veml7700_sensor->veml7700_it // , my_veml7700_sensor->veml7700_interrupt_status }; sensors: - name: "VEML7700 Lux" # filters: # - median: # # window_size: 5 # send_every: 1 # # send_first_at: 2 # - exponential_moving_average: # # window_size: 5 # send_every: 3 # # send_first_at: 5 accuracy_decimals: 1 unit_of_measurement: lux # poll_frequency: see veml7700.h, VEML_POLL_RATE # - name: "${node_name} VEML7700 White" # accuracy_decimals: 1 # unit_of_measurement: lux # - name: "${node_name} VEML7700 raw ALS" # accuracy_decimals: 1 # unit_of_measurement: raw - platform: ltr390 uv_index: name: "UV Index" filters: - multiply: 95 uv: name: "UV Level" light: name: "Light" gain: "X1" resolution: 18 window_correction_factor: 1.0 update_interval: 5s