ESP8266, PMS5003 and WS2812

Hi.
I have a small home assistant setup with one esp8266 and a pms5003 sensor so i can monitor small particules because i have two kids and my wife that suffers from asthma.
Initially i only had the esp8266 with pms5003 connected, but everytime i wanted to see how the particules are i had to reach the smartphone, so i bought 4 ws2812 and tryed to output on each led the particules acording to AQI (air quality index) schema in Europe. So the first led is for PM1 (particules below 1µm) the second PM2,5, the third PM10 and the fourth the AQI itself.
The problem i have is when the data is colected, all the leds light white. They seem to flash (i notice other colors) for a brief moment once data is provided by the pms5003, but stay white the rest of the time.
The yaml i use follows:

substitutions:
    name: esphome-web-0524a0
    friendly_name: Sensor Partículas

esphome:
  name: ${name}
  friendly_name: ${friendly_name}
  name_add_mac_suffix: false
  project:
    name: esphome.web
    version: '4.0'
  on_boot:
    priority: 600  # garantir que executa antes de qualquer leitura
    then:
      - light.turn_off: Particle_Matter_Indicator
    #then:
      #- delay: 1s
      #- script.execute: BootFlash

esp8266:
  board: nodemcu
  framework: 
    version: recommended

# Enable logging
logger:
  baud_rate: 0

# Enable Home Assistant API
api:
  encryption:
    key: !secret sensorParticulas
  services:
    - service: dummy_block_led
      variables: {}
      then:
        - logger.log: "API de luz bloqueada"

ota:
  - platform: esphome
    password: !secret ota_pass

wifi:
  networks:
    - ssid: !secret wifi_ssid2
      password: !secret wifi_password2
    - ssid: !secret wifi_ssid3
      password: !secret wifi_password3
  power_save_mode: NONE

  manual_ip:
    static_ip: 192.168.1.xx
    gateway: 192.168.1.xx
    subnet: 255.255.255.0
    dns1: 192.168.1.xx

  # Enable fallback hotspot (captive portal) in case wifi connection fails
  ap:
    ssid: "Esphomexxxxxxxxxx"
    password: !secret ap_pass

captive_portal:

globals:
  - id: aqi
    type: int
    restore_value: False
    initial_value: '0'

# Light component
light:
  - platform: neopixelbus
    type: GRB
    variant: WS2812
    pin: GPIO12
    method: BIT_BANG
    num_leds: 4
    name: "Indicador de Particulas"
    id: Particle_Matter_Indicator
    internal: true
    default_transition_length: 0.1s
    initial_state: 
      state: True
    restore_mode: ALWAYS_OFF
    effects: []

# Define onboard LED
output:
  - platform: gpio
    pin: GPIO2
    id: OnboardLED
    inverted: true

button:
  - platform: restart
    name: "Reiniciar"

# Particle sensor PMS5003
uart:
  rx_pin: GPIO13
  tx_pin: GPIO15
  baud_rate: 9600

sensor:
  - platform: pmsx003
    type: PMSX003
    id: part_sensor_hall
    pm_1_0:
      name: "Particulate Matter <1.0µm Concentration"
      id: pmsx003_pm_1_0

    pm_2_5:
      name: "Particulate Matter <2.5µm Concentration"
      id: pmsx003_pm_2_5

    pm_10_0:
      name: "Particulate Matter <10.0µm Concentration"
      id: pmsx003_pm_10_0
    update_interval: 100s
    
  # Adicionar um sensor para exibir o AQI
  - platform: template
    name: "Air Quality Index"
    id: aqi_display
    unit_of_measurement: "AQI"
    lambda: |-      
        // Obter as concentrações de partículas
        float pm1_0 = id(pmsx003_pm_1_0).state;
        float pm2_5 = id(pmsx003_pm_2_5).state;
        float pm10_0 = id(pmsx003_pm_10_0).state;
        int aqi = 0;

        // Calcular o AQI com base nas três partículas
        // Podemos usar a média ou a maior concentração
        // Aqui estamos pegando o maior valor entre PM 1.0, PM 2.5 e PM 10.0 para determinar o AQI
        float max_pm = std::max(std::max(pm1_0, pm2_5), pm10_0);

        // https://qualar.apambiente.pt/node/metodo-calculo-indices & https://atmotube.com/blog/particulate-matter-pm-levels-and-aqi
        // Classificação    	PM1 	     PM2.5	      PM10         Cor        Indice
        // Muito Bom	        0-10	      0-10	     0 - 20       Verde        0 - 50
        // Bom	              11-20	     11-20	    21 - 40      Amarelo      51 - 100
        // Médio	             21-25	     21-25	    41 - 50      Laranja     101 - 150
        // Fraco	            26-50	     26-50	    51 - 100     Vermelho    150 - 300
        // Mau	            51-800      51-800	   101 - 150      Roxo       301 - 2800

        // PM 1µ partículas caem na categoria das PM 2,5µ e os efeitos no corpo humano são semelhantes:
        // https://www.iqair.com/us/newsroom/pm1

        if (max_pm <= 12) {
          aqi = (max_pm / 12) * 50;
        } else if (max_pm <= 35.4) {
          aqi = 51 + ((max_pm - 12) / 23.4) * 49;
        } else if (max_pm <= 55.4) {
          aqi = 101 + ((max_pm - 35.4) / 20) * 49;
        } else if (max_pm <= 150.4) {
          aqi = 151 + ((max_pm - 55.4) / 95) * 149;
        } else if (max_pm <= 250.4) {
          aqi = 301 + ((max_pm - 150.4) / 100) * 199;
        } else if (max_pm <= 350.4) {
          aqi = 501 + ((max_pm - 250.4) / 100) * 249;
        } else {
          aqi = 3000;
        }

        // Exibir o AQI no log
        ESP_LOGI("AQI", "AQI Calculado: %d", aqi);
        return aqi;

    on_value:
      then:
        - lambda: |-
            id(aqi) = (int)x;
        - script.execute: LED_control

  - platform: wifi_signal
    name: ${friendly_name} WiFi Signal Strength
    update_interval: 60s

  - platform: uptime
    name: ${friendly_name} Uptime

binary_sensor:
  - platform: status
    name: ${friendly_name}

# Scripts
# source: community.home-assistant.io/t/air-quality-measurement-sensor-with-esphome/276445/31
# https://community.home-assistant.io/t/how-to-change-ws2812b-led-colour-based-on-sensor-values/699219/14
script:
  - id: LED_control
    mode: single
    then:
      - logger.log: "Script LED_control executado"
      - logger.log:
          format: "pm1=%.1f pm2.5=%.1f pm10=%.1f AQI=%d"
          args: [id(pmsx003_pm_1_0).state, id(pmsx003_pm_2_5).state, id(pmsx003_pm_10_0).state, id(aqi)]
      - if: # Condição para pm1
          condition:
            - lambda: return id(pmsx003_pm_1_0).state < 10;
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 0
                range_to: 1
                red: 0%
                green: 100% #verde
                blue: 0%
            - logger.log: "pm1 < 10µg/m3"
      - if:
          condition:
            - lambda: return ((id(pmsx003_pm_1_0).state >= 11.0) & (id(pmsx003_pm_1_0).state <20.));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 0
                range_to: 1
                red: 100%
                green: 100% #amarelo
                blue: 0%
            - logger.log: "pm1 > 11 < 20µg/m3"
      - if:
          condition:
            - lambda: return ((id(pmsx003_pm_1_0).state >= 21) & (id(pmsx003_pm_1_0).state < 25));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 0
                range_to: 1
                red: 100%
                green: 60% # laranja
                blue: 0%
            - logger.log: "pm1 > 21 < 25µg/m3"
      - if:
          condition:
            - lambda: return ((id(pmsx003_pm_1_0).state >= 26) & (id(pmsx003_pm_1_0).state < 50));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 0
                range_to: 1
                red: 100%
                green: 0% #vermelho
                blue: 0%
            - logger.log: "pm1 > 26 < 50µg/m3"
      - if:
          condition:
            - lambda: return ((id(pmsx003_pm_1_0).state >= 51) & (id(pmsx003_pm_1_0).state < 800));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 0
                range_to: 1
                red: 25%
                green: 0% #roxo
                blue: 25%
            - logger.log: "pm1 > 51 < 800µg/m3"
      
      - if: # condição para pm2,5
          condition:
            - lambda: return id(pmsx003_pm_2_5).state < 10;
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 1
                range_to: 2
                red: 0%
                green: 100% #verde
                blue: 0%
            - logger.log: "pm2.5 < 10µg/m3"
      - if:
          condition:
            - lambda: return ((id(pmsx003_pm_2_5).state >= 11) & (id(pmsx003_pm_2_5).state < 20));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 1
                range_to: 2
                red: 100%
                green: 100% #amarelo
                blue: 0%
            - logger.log: "pm2.5 > 11 < 20µg/m3"
      - if:
          condition:
            - lambda: return ((id(pmsx003_pm_2_5).state >= 21) & (id(pmsx003_pm_2_5).state < 25));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 1
                range_to: 2
                red: 100%
                green: 60% # laranja
                blue: 0%
            - logger.log: "pm2.5 > 21 < 25µg/m3"
      - if:
          condition:
            - lambda: return ((id(pmsx003_pm_2_5).state >= 26) & (id(pmsx003_pm_2_5).state < 50));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 1
                range_to: 2
                red: 100%
                green: 0% #vermelho
                blue: 0%
            - logger.log: "pm2.5 > 26 < 50µg/m3"
      - if:
          condition:
            - lambda: return ((id(pmsx003_pm_2_5).state >= 51) & (id(pmsx003_pm_2_5).state < 800));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 1
                range_to: 2
                red: 25%
                green: 0% #roxo
                blue: 25%
            - logger.log: "pm2.5 > 51 < 800µg/m3"

      - if: # condição para pm10
          condition:
            - lambda: return id(pmsx003_pm_10_0).state < 20;
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 2
                range_to: 3
                red: 0%
                green: 100% #verde
                blue: 0%
            - logger.log: "pm10 < 20µg/m3"
      - if:
          condition:
            - lambda: return ((id(pmsx003_pm_10_0).state >= 21) & (id(pmsx003_pm_10_0).state < 40));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 2
                range_to: 3
                red: 100%
                green: 100% #amarelo
                blue: 0%
            - logger.log: "pm10 > 21 < 40µg/m3"
      - if:
          condition:
            - lambda: return ((id(pmsx003_pm_10_0).state >= 41) & (id(pmsx003_pm_10_0).state < 50));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 2
                range_to: 3
                red: 100%
                green: 60% # laranja
                blue: 0%
            - logger.log: "pm10 > 41 < 50µg/m3"
      - if:
          condition:
            - lambda: return ((id(pmsx003_pm_10_0).state >= 51) & (id(pmsx003_pm_10_0).state < 100));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 2
                range_to: 3
                red: 100%
                green: 0% #vermelho
                blue: 0%
            - logger.log: "pm10 > 51 < 100µg/m3"
      - if:
          condition:
            - lambda: return ((id(pmsx003_pm_10_0).state >= 101) & (id(pmsx003_pm_10_0).state < 150));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 2
                range_to: 3
                red: 25%
                green: 0% #roxo
                blue: 25%
            - logger.log: "pm10 > 101 < 150µg/m3"

      - if: # condição para Indice AQI
          condition:
            - lambda: return id(aqi) < 50;
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 3
                range_to: 4
                red: 0%
                green: 100% #verde
                blue: 0%
            - logger.log: "AQI - Muito Bom"
      - if:
          condition:
            - lambda: return ((id(aqi) >= 51) & (id(aqi) < 100));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 3
                range_to: 4
                red: 100%
                green: 100% #amarelo
                blue: 0%
            - logger.log: "AQI - Bom"
      - if:
          condition:
            - lambda: return ((id(aqi) >= 101) & (id(aqi) < 150));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 3
                range_to: 4
                red: 100%
                green: 60% # laranja
                blue: 0%
            - logger.log: "AQI - Médio"
      - if:
          condition:
            - lambda: return ((id(aqi) >= 151) & (id(aqi) < 300));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 3
                range_to: 4
                red: 100%
                green: 0% #vermelho
                blue: 0%
            - logger.log: "AQI - Fraco"
      - if:
          condition:
            - lambda: return ((id(aqi) >= 301) & (id(aqi) < 2800));
          then:
            - light.turn_on:
                id: Particle_Matter_Indicator
                brightness: 20%
            - light.addressable_set: 
                id: Particle_Matter_Indicator
                range_from: 3
                range_to: 4
                red: 25%
                green: 0% #roxo
                blue: 25%
            - logger.log: "AQI - Mau"

English’s not my native language, so sorry for the erratas!
Thanks

Welcome to forum.

Rarely problem here.
Posting your esphome log would be the most efficient way to go forward.

Thanks for the reply.
Here it goes:

INFO ESPHome 2025.6.2
INFO Reading configuration /config/esphome/esphome-web-0524a0.yaml...
INFO Starting log output from 192.168.1.xx using esphome API
INFO Successfully resolved esphome-web-0524a0 @ 192.168.1.xx in 0.000s
INFO Successfully connected to esphome-web-0524a0 @ 192.168.1.xx in 0.003s
INFO Successful handshake with esphome-web-0524a0 @ 192.168.1.xx in 2.623s
[21:12:17][I][app:137]: ESPHome version 2025.6.2 compiled on Jul  1 2025, 21:08:14
[21:12:17][I][app:139]: Project esphome.web version 4.0
[21:12:17][C][wifi:613]: WiFi:
[21:12:17][C][wifi:434]:   Local MAC: 84:F3:EB:05:24:A0
[21:12:17][C][wifi:439]:   SSID: 'xxxxxxxxxxxxxxx'[redacted]
[21:12:17][C][wifi:442]:   IP Address: 192.168.1.xx
[21:12:17][C][wifi:446]:   BSSID: xx[redacted]
[21:12:17][C][wifi:446]:   Hostname: 'xxxxxxx'
[21:12:17][C][wifi:446]:   Signal strength: -67 dB ▂▄▆█
[21:12:17][C][wifi:455]:   Channel: 3
[21:12:17][C][wifi:455]:   Subnet: 255.255.255.0
[21:12:17][C][wifi:455]:   Gateway: 192.168.1.xx
[21:12:17][C][wifi:455]:   DNS1: 192.168.1.xx
[21:12:17][C][wifi:455]:   DNS2: 0.0.0.0
[21:12:17][C][logger:211]: Logger:
[21:12:17][C][logger:211]:   Max Level: DEBUG
[21:12:17][C][logger:211]:   Initial Level: DEBUG
[21:12:17][C][logger:217]:   Log Baud Rate: 0
[21:12:17][C][logger:217]:   Hardware UART: UART0
[21:12:17][C][uart.arduino_esp8266:118]: UART Bus:
[21:12:17][C][uart.arduino_esp8266:119]:   TX Pin: GPIO15
[21:12:17][C][uart.arduino_esp8266:120]:   RX Pin: GPIO13
[21:12:17][C][uart.arduino_esp8266:122]:   RX Buffer Size: 256
[21:12:17][C][uart.arduino_esp8266:124]:   Baud Rate: 9600 baud
[21:12:17][C][uart.arduino_esp8266:124]:   Data Bits: 8
[21:12:17][C][uart.arduino_esp8266:124]:   Parity: NONE
[21:12:17][C][uart.arduino_esp8266:124]:   Stop bits: 1
[21:12:17][C][uart.arduino_esp8266:131]:   Using hardware serial interface.
[21:12:17][C][gpio.output:010]: Binary Output:
[21:12:17][C][gpio.output:011]:   Pin: GPIO2
[21:12:17][C][gpio.output:012]:   Inverted: YES
[21:12:17][C][uptime.sensor:033]: Uptime Sensor 'Sensor Partículas Uptime'
[21:12:17][C][uptime.sensor:033]:   State Class: 'total_increasing'
[21:12:17][C][uptime.sensor:033]:   Unit of Measurement: 's'
[21:12:17][C][uptime.sensor:033]:   Accuracy Decimals: 0
[21:12:17][C][uptime.sensor:033]:   Device Class: 'duration'
[21:12:17][C][uptime.sensor:033]:   Icon: 'mdi:timer-outline'
[21:12:17][C][uptime.sensor:034]:   Type: Seconds
[21:12:17][C][template.sensor:022]: Template Sensor 'Air Quality Index'
[21:12:17][C][template.sensor:022]:   State Class: ''
[21:12:17][C][template.sensor:022]:   Unit of Measurement: 'AQI'
[21:12:17][C][template.sensor:022]:   Accuracy Decimals: 1
[21:12:17][C][template.sensor:023]:   Update Interval: 60.0s
[21:12:17][C][light:092]: Light 'Indicador de Particulas'
[21:12:17][C][light:094]:   Default Transition Length: 0.1s
[21:12:17][C][light:094]:   Gamma Correct: 2.80
[21:12:17][C][restart.button:017]: Restart Button 'Reiniciar'
[21:12:17][C][restart.button:017]:   Icon: 'mdi:restart'
[21:12:17][C][pmsx003:022]: PMSX003:
[21:12:17][C][pmsx003:027]:   PM1.0 'Particulate Matter <1.0µm Concentration'
[21:12:17][C][pmsx003:027]:     State Class: 'measurement'
[21:12:17][C][pmsx003:027]:     Unit of Measurement: 'µg/m³'
[21:12:17][C][pmsx003:027]:     Accuracy Decimals: 0
[21:12:17][C][pmsx003:027]:     Device Class: 'pm1'
[21:12:17][C][pmsx003:027]:     Icon: 'mdi:chemical-weapon'
[21:12:17][C][pmsx003:028]:   PM2.5 'Particulate Matter <2.5µm Concentration'
[21:12:17][C][pmsx003:028]:     State Class: 'measurement'
[21:12:17][C][pmsx003:028]:     Unit of Measurement: 'µg/m³'
[21:12:17][C][pmsx003:028]:     Accuracy Decimals: 0
[21:12:17][C][pmsx003:028]:     Device Class: 'pm25'
[21:12:17][C][pmsx003:028]:     Icon: 'mdi:chemical-weapon'
[21:12:17][C][pmsx003:029]:   PM10.0 'Particulate Matter <10.0µm Concentration'
[21:12:17][C][pmsx003:029]:     State Class: 'measurement'
[21:12:17][C][pmsx003:029]:     Unit of Measurement: 'µg/m³'
[21:12:17][C][pmsx003:029]:     Accuracy Decimals: 0
[21:12:17][C][pmsx003:029]:     Device Class: 'pm10'
[21:12:17][C][pmsx003:029]:     Icon: 'mdi:chemical-weapon'
[21:12:17][C][status:034]: Status Binary Sensor 'Sensor Partículas'
[21:12:17][C][status:034]:   Device Class: 'connectivity'
[21:12:17][C][captive_portal:089]: Captive Portal:
[21:12:17][C][esphome.ota:073]: Over-The-Air updates:
[21:12:17][C][esphome.ota:073]:   Address: 192.168.1.xx:8266
[21:12:17][C][esphome.ota:073]:   Version: 2
[21:12:17][C][esphome.ota:080]:   Password configured
[21:12:17][C][safe_mode:018]: Safe Mode:
[21:12:17][C][safe_mode:019]:   Boot considered successful after 60 seconds
[21:12:17][C][safe_mode:019]:   Invoke after 10 boot attempts
[21:12:17][C][safe_mode:019]:   Remain for 300 seconds
[21:12:17][C][api:182]: API Server:
[21:12:17][C][api:182]:   Address: 192.168.1.xx:6053
[21:12:17][C][api:187]:   Using noise encryption: YES
[21:12:17][C][wifi_signal.sensor:010]: WiFi Signal 'Sensor Partículas WiFi Signal Strength'
[21:12:17][C][wifi_signal.sensor:010]:   State Class: 'measurement'
[21:12:17][C][wifi_signal.sensor:010]:   Unit of Measurement: 'dBm'
[21:12:17][C][wifi_signal.sensor:010]:   Accuracy Decimals: 0
[21:12:17][C][wifi_signal.sensor:010]:   Device Class: 'signal_strength'
[21:12:17][C][mdns:122]: mDNS:
[21:12:17][C][mdns:122]:   Hostname:xxxxxxxxx 
[21:12:42][I][AQI:168]: AQI Calculado: 29
[21:12:42][D][sensor:098]: 'Air Quality Index': Sending state 29.00000 AQI with 1 decimals of accuracy
[21:12:42][D][main:1312]: Script LED_control executado
[21:12:42][D][main:172]: pm1=4.0 pm2.5=6.0 pm10=7.0 AQI=29
[21:12:42][D][light:036]: 'Indicador de Particulas' Setting:
[21:12:42][D][light:085]:   Transition length: 0.1s
[21:12:42][D][main:215]: pm1 < 10µg/m3
[21:12:42][D][light:036]: 'Indicador de Particulas' Setting:
[21:12:42][D][light:085]:   Transition length: 0.1s
[21:12:42][D][main:287]: pm2.5 < 10µg/m3
[21:12:42][D][light:036]: 'Indicador de Particulas' Setting:
[21:12:42][D][light:085]:   Transition length: 0.1s
[21:12:42][D][main:358]: pm10 < 20µg/m3
[21:12:42][D][light:036]: 'Indicador de Particulas' Setting:
[21:12:42][D][light:085]:   Transition length: 0.1s
[21:12:42][D][main:429]: AQI - Muito Bom
[21:12:49][D][sensor:098]: 'Sensor Partículas WiFi Signal Strength': Sending state -64.00000 dBm with 0 decimals of accuracy
[21:12:52][D][sensor:098]: 'Sensor Partículas Uptime': Sending state 263.74200 s with 0 decimals of accuracy

Not so easy to understand what’s going on there, the log is not exactly something I was expecting.
Anyway, If I was you I would try without - light.turn_on: part.

- light.addressable_set: should do the job.
Simplified setup for debugging could be good option too.

Ok, thanks, i will give it a go.
I’ve tried to change a few things, like the method and it seems esp8266_dma its not working, even with “baud rate: 0” in the logger, only the first led lights, and the pms5003 doesn’t even work…
I’ll reply in a moment.

May I suggest you to generally use Esp32 for any hardware setup beyond “button and LED”.

I understand the limitations of esp8266, but i still have a bunch of the from arduino learning…

Me too, laying in the drawer.
Little by little they find some place for simple/no -hardware setups.

Thanks a lot, your hint was spot on. I just added that line because before, no led was turning on, probably had something messing behind.

Not so easy to debug, happy you made it!

I’d also suggest to him the importance of a regular flossing routine for healthy gums and taking a shower at least once a week before i would switching to esp32 bourds but, to each his own.

Good suggestions.
You could use Esp8266 board with built in LED to make shower reminder…

Alll jokes aside, i do use a shower tracker for when i give my dog a bath and if she needs her flea/tick medicine applied after the bath or if it’s too soon. For myself i can just tell when im ripe enough with Man Stank and need one or not. Keepin it simple!

So what’s the fun?

No, we need tiktok approved calibrated ripeness sensor. My daughter doesn’t agree with my thresholds. On the other hand she doesn’t pay the water bill…

+1 point for you!

Dang! It’s got you under its spell too?? Those karate kid, rice eaters over there are sneaky!

Shoot… mine is 10 and doesn’t pay any bills either but, half the fun of having kids is getting all that free manual labor!! Next tine you mow the grass just pretend like your having so much fun and then trick them into learning how to do it too! Once they learn how to mow, they wont have any good excuses for not mowing from then on…

You can thank me next time its 90F and your kicked back relaxing, watching your free labor do labor! If she gets lippy just do what i did. Threaten them with a choice, either work in the lawn or they can go work on the corner!

; )

Totally kidding!! I love my little girl and would protect her at all cost.