CO2 monitoring with SCD30 sensor and HA integration

@void
I managed to get the sensor working problem was the i2c gpio connection.
https://www.reddit.com/r/homeassistant/comments/tajhp7/esphome_scd30_found_no_i2c_devices/
Some guys helped me out on reddit

Been reading up on some threads because I also need some co2 measurements. Looks like the SCD30 is the most solid one when hooked up to an ESP32. I must admit that I’m still experimenting with HA and have never done anything with an ESP32 or ESPHome, so I’m in at the deep end :wink:
I dont mind a little soldering, so no problem there. What I’m still wondering about, though, is casing. I’d like to put everything together in a small case, but the sensors needs to be in contact with the ambient air, obviously. Any recommendations? I saw Ombra’s setup, but is that a good one? I’d like it to be acurate, not that its measuring the air inside the box.

good thread.

yeah, coming from an industrial perspective it seems on point ;). suppose longevity / recalibration intervals would be more compelling in my decision tree for home use and anything but playing around.

i think for most HA purposes, raw ppm correlation, span linearity etc. etc. is not something to get too hung up on. practically, durability, interfacing (digital connectivity) and suitable sampling ( mounting, flow rates etc. etc. ) fit for use case are key for something practically functional. Of course all depends on use case.

1 Like

Agree! Perhaps for home use even knowing exactly how many ppm in a room is pointless. It’s rather more useful to know if the raw ppm is higher or lower than a certain thresold, like any gas sensor for methane emissions from the kitchen.

2 Likes

I have issue with sgp30 sensor, after baseline calibration it shows that both baseline values are 0xFFF8
and not changing anything even if I breathe over the sensor, I followed steps from esp home page, but no good so far, Am I bought trashy sensors?

Good afternoon everyone…

Hope someone can help me with my little prob here…
I have the pm5003 for fine particles, a sdc30 for co2, a d1 mini and a ssd1306 display plunged together…
Display did rotate with fine particle values until i connected the sdc30, now i have all the values working on the home assistant, but display is frozen…
Can someone give me an idea how i can have them all working fine and the display?
Here my code:

captive_portal:
    
i2c:
  sda: D1
  scl: D2
  scan: True
  id: bus_a

uart:
  - rx_pin: D6
    tx_pin: D5
    baud_rate: 9600
    id: uart1

font:
  - file: "monofont.ttf"
    id: opensans
    size: 10

display:
  - platform: ssd1306_i2c
    id: oled
    model: "SSD1306 64x48"
    pages:
      - id: page1
        lambda: |-
          it.printf(0, 0, id(opensans), "CO2: %.0fppm", id(co2).state);
          it.printf(0, 10, id(opensans), "PM10 : %.0f", id(pm10).state);
          it.printf(0, 20, id(opensans), "PM25 : %.0f", id(pm25).state);
          it.printf(0, 30, id(opensans), "PM100: %.0f", id(pm100).state);
      - id: page2
        lambda: |-
          it.printf(0, 20, id(opensans), "Hmdty: %.0f", id(humidity).state);
          it.printf(0, 30, id(opensans), "Temp: %.0fC", id(temp).state);

interval:
  - interval: 5s
    then:
      - display.page.show_next: oled
      - component.update: oled
  - interval: 120s
    then:
      - switch.turn_on: pms_set
      - delay: 20s
      - switch.turn_off: pms_set

sensor:
  - platform: pmsx003
    type: PMSX003
    uart_id: uart1
    pm_1_0:
      id: pm10
      name: "Fein Partikel <1.0µm: "
    pm_2_5:
      id: pm25
      name: "Fein Partikel <2.5µm: "
    pm_10_0:
      id: pm100
      name: "Fein Partikel <10.0µm: "
  - platform: scd30
    co2:
      id: co2
      name: "CO2"
      accuracy_decimals: 1
    temperature:
      id: temp
      name: "Temperature"
      accuracy_decimals: 2
    humidity:
      id: humidity
      name: "Humidity"
      accuracy_decimals: 1
    temperature_offset: 1.5 °C
    address: 0x61
    i2c_id: bus_a
    update_interval: 5s

switch:
  - platform: gpio
    pin: 
      number: D3
    id: pms_set
    name: "Start measuring"

number:
  - platform: template
    name: "CO2 calibration value"
    optimistic: true
    min_value: 350
    max_value: 4500
    step: 1
    id: co2_cal
    icon: "mdi:molecule-co2"
    entity_category: "config"

button:
  - platform: template
    name: "SCD30 Force manual calibration"
    entity_category: "config"
    on_press:
      then:
        - scd30.force_recalibration_with_reference:
            value: !lambda 'return id(co2_cal).state;'

I’ve a D1 mini and a SCD30 and am struggling to get it working. I’ve connected the top 4 pins as described on the esphome page with SCL to D1 and SDA to D2.

I’m getting an error Failed to write i2c register=0xD100 (2) err=2, and Component scd30.sensor was marked as failed. very early and then the i2c finds no devices. Any ideas?

I’ve:

  • tested continuity pad to pad
  • added 10K pull-ups to the i2c lines
  • swapped lines for sda/scl
  • tried other pins on the d1

I’m guessing as the error is coming very early it may be a software issue but unsure where to start. I’m on esphome Version: 2023.2.4

esphome:
  name: debug-air-quality
  platform: ESP8266
  board: d1_mini

# wifi:
#   ssid: !secret wifi_ssid
#   password: !secret wifi_password
#   use_address: bedroom-air-quality.pimblett.me.uk

logger:
  level: DEBUG

# Enable Home Assistant API
# api:
#   password: !secret api_password

# ota:
#   password: !secret ota_password

i2c:
  sda: D2
  scl: D1

sensor:
  - platform: scd30
    co2:
      name: "Bedroom CO2"
      accuracy_decimals: 1
    temperature:
      name: "Bedroom Temperature"
      accuracy_decimals: 2
    humidity:
      name: "Bedroom Humidity"
      accuracy_decimals: 1
    # temperature_offset: 1.5 °C
    # update_interval: 5s
[I][logger:258]: Log initialized
[20:47:42][I][app:029]: Running through setup()...
[20:47:42][I][i2c.arduino:175]: Performing I2C bus recovery
[20:47:42][C][scd30:029]: Setting up scd30...
[20:47:42][E][sensirion_i2c:085]: Failed to write i2c register=0xD100 (2) err=2,
[20:47:42][E][component:113]: Component scd30.sensor was marked as failed.
[20:47:42][I][app:062]: setup() finished successfully!
[20:47:42][I][app:102]: ESPHome version 2023.2.4 compiled on Feb 28 2023, 20:46:51
[20:47:42][C][logger:293]: Logger:
[20:47:42][C][logger:294]:   Level: DEBUG
[20:47:42][C][logger:295]:   Log Baud Rate: 115200
[20:47:42][C][logger:296]:   Hardware UART: UART0
[20:47:42][C][i2c.arduino:052]: I2C Bus:
[20:47:42][C][i2c.arduino:053]:   SDA Pin: GPIO4
[20:47:42][C][i2c.arduino:054]:   SCL Pin: GPIO5
[20:47:42][C][i2c.arduino:055]:   Frequency: 50000 Hz
[20:47:42][C][i2c.arduino:058]:   Recovery: bus successfully recovered
[20:47:42][I][i2c.arduino:068]: Results from i2c bus scan:
[20:47:42][I][i2c.arduino:070]: Found no i2c devices!
[20:47:42][C][scd30:115]: scd30:
[20:47:42][C][scd30:116]:   Address: 0x61
[20:47:42][W][scd30:126]: Unable to read sensor firmware version
[20:47:42][C][scd30:134]:   Altitude compensation: OFF
[20:47:42][C][scd30:138]:   Automatic self calibration: ON
[20:47:42][C][scd30:139]:   Ambient pressure compensation: 0mBar
[20:47:42][C][scd30:140]:   Temperature offset: 0.00 °C
[20:47:42][C][scd30:141]:   Update interval: 60s
[20:47:42][C][scd30:142]:   CO2 'Bedroom CO2'
[20:47:42][C][scd30:142]:     State Class: 'measurement'
[20:47:42][C][scd30:142]:     Unit of Measurement: 'ppm'
[20:47:42][C][scd30:142]:     Accuracy Decimals: 1
[20:47:42][C][scd30:142]:     Icon: 'mdi:molecule-co2'
[20:47:42][C][scd30:143]:   Temperature 'Bedroom Temperature'
[20:47:42][C][scd30:143]:     Device Class: 'temperature'
[20:47:42][C][scd30:143]:     State Class: 'measurement'
[20:47:42][C][scd30:143]:     Unit of Measurement: '°C'
[20:47:42][C][scd30:143]:     Accuracy Decimals: 2
[20:47:42][C][scd30:144]:   Humidity 'Bedroom Humidity'
[20:47:42][C][scd30:144]:     Device Class: 'humidity'
[20:47:42][C][scd30:144]:     State Class: 'measurement'
[20:47:42][C][scd30:144]:     Unit of Measurement: '%'
[20:47:42][C][scd30:144]:     Accuracy Decimals: 1

Hey @inkylatte,

Your setup sounds interesting. How did you ensure the power supply for the three boards? Did you use the 3V/GND pins of the node mcu?

I know this is an old post, but it I felt it was important to add this. A year ago we found that everyone in our house had elevated red blood cell counts. After $1000’s of dollars spent we learned that it was because of Co2 levels averaging 1200-1500. This causes “Sick House Syndrome” and needs to be taken seriously. Modern houses are sealed up well and Co2 builds up fast. We did not find out about this until a random gift of a Co2 monitor notified us. A properly sized ERV or HRV can save your health. After 30 days of keeping the average Co2 levels under 650ppm, everyone’s red blood cell counts are in the normal and everyone’s headaches went away. I personally battled this for almost 20 years.

3 Likes

+1 to this.
However, how do you keep the concentration so low? Aren’t you losing too much heat?

We use a central HRVU (heat-recovery vent unit) with vents present in all rooms and we struggle to keep this below 800ppm, while occupied.
Surely, the positioning of the sensors matters a lot since we have a constant airflow in the house. But i would say the positioning is okay.
One thing that really affects the contrentation is interior doors (duh).
It is recommended to have a wider gap under the door to allow a reasonable airflow, even with the door closed, but i guess the overal airflow is quite disturbed while I keep myself closed in the office while the rest of the doors around the house are open. This obviously leads to air finding the least possible resistance and stops flowing through my office in the “projected” intensity.

I did massive research on ERV/HRV’s and most of them are sold to people with someone guessing the proper size and they are more times than not under sized. Try turning on your bathroom fans at the same time and see if the ppm drops. If it does then the ERV/HRV is under sized. If you have a pressure differential gauge that will help a lot in determining what is wrong with the system. It is used to measure across the inlet/outlets on your ERV/HRV.

As far as loosing more heat, I am sure I am loosing a fair amount in its current config. But with luck I actually ran 23 hours less heat in December compared to last year.

We have 3 people and a cat in our ~2100 square foot house. Two of us work from home so we are in here almost all the time. If the system is turned off, then the co2 will hit 1500 after about 4 hours.

I live in Idaho and as long as there are no wild fires the outside air is usually around 400ppm of co2. My system is not what I would recommend to be honest. I have what you would call a makeup air supply in the air return. It has a 8" supply duct & a motorized valve that is run by a raspberry pi. When the co2 in my office hits 650ppm, the sensor writes the value to a postgre sql db. Then the pi on the air handler (reads the db every 60 seconds) opens the valve and turns on the fan in the air handler when above 650. This uses the air handler to suck in fresh air in before the filter and then distribute it through the house. At the same time there is another pi that is in the Laundry room and it turns on the 4" exhaust fan. I am not doing any heat recovery yet but it is in the works. I wanted to prove that it would work and that I could reduce the co2 to a good level before I spent $3000 on an HRV/ERV.

I actually found Home Assistant when investigating the replacement of the Pi’s with Shelly Relays. This is my goal so I can score a better wife approval rating. Some reason a Pi hanging on the wall isn’t cool for her. :slight_smile:






I did install a air pass through above the door of each room to allow the air to get out of the rooms. One room the door was cut 1" shorter on the bottom for air flow. My Office French doors are cut one inch short as well.

I purposely put my sensor in the worst place it the corner, far away from my vents, in my office. The idea I had for this was that it should be the worst there and the hardest to clear out. I am in my office 10+ hours a day. (11’x14’ space) Maybe making the rest of the house just a little bit better.

I will say that this has made the air filters get dirty faster. This summer I am going to install an inline filter in the intake.

1 Like

I am trying to flash the file you provided to calibrate two sensors that are both out of specs completely (200 and 500 aproximately) but when I flash the tasmota.sensors.bin in the console get just this:
"rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
wrong chip id 0xcebc
wrong chip id 0xcebc
wrong chip id 0xcebc
wrong chip id 0xcebc
wrong chip id 0xcebc
wrong chip id 0xcebc
wrong chip id 0xcebc
ets Jul 29 2019 12:21:46

rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
wrong chip id 0xcebc
wrong chip id 0xcebc
wrong chip id 0xcebc
wrong chip id 0xcebc
wrong chip id 0xcebc
wrong chip id 0xcebc
wrong chip id 0xcebc
ets Jul 29 2019 12:21:46"

and it just continue to roll endlessly.
When I try to flash offered Tasmota from here Install Tasmota I can connect and set everything up, but when I try to issue the command in the console as you inustructed: scd30cal 410, it report trhat it is unknown command.
What am I doing wrong?

Hi, I am unable to get the SCD30 working with my Wemos D1 mini my yaml configuration is below.
Does someone have an idea about what is wrong?

captive_portal:

i2c:
  sda: D2
  scl: D1
  scan: True
  id: bus_a

sensor:
  - platform: scd30
    co2:
      name: "CO2 PPM"
      accuracy_decimals: 1
    temperature:
      name: "SCD30 Temperature"
      accuracy_decimals: 1
    humidity:
      name: "SCD30 Humidity"
      accuracy_decimals: 1
    address: 0x61
    update_interval: 5s

This is the output I get from the log file.

INFO ESPHome 2024.4.0
INFO Reading configuration /config/esphome/wemos-mini-3.yaml...
INFO Starting log output from 192.168.0.16 using esphome API
INFO Successfully connected to wemos-mini-3 @ 192.168.0.16 in 0.004s
INFO Successful handshake with wemos-mini-3 @ 192.168.0.16 in 2.947s
[21:55:28][I][app:100]: ESPHome version 2024.4.0 compiled on Apr 18 2024, 21:45:10
[21:55:28][C][wifi:580]: WiFi:
[21:55:28][C][wifi:408]:   Local MAC: 29:33:29:81:33:42
[21:55:28][C][wifi:413]:   SSID: 'wifi B'[redacted]
[21:55:28][C][wifi:416]:   IP Address: 192.168.0.16
[21:55:28][C][wifi:419]:   BSSID: 04:11:D4:17:2F:1E[redacted]
[21:55:28][C][wifi:421]:   Hostname: 'wemos-mini-3'
[21:55:28][C][wifi:423]:   Signal strength: -57 dB ▂▄▆█
[21:55:28][C][wifi:427]:   Channel: 4
[21:55:28][C][wifi:428]:   Subnet: 255.255.255.0
[21:55:28][C][wifi:429]:   Gateway: 192.168.0.1
[21:55:28][C][wifi:430]:   DNS1: 0.0.0.0
[21:55:28][C][wifi:431]:   DNS2: 0.0.0.0
[21:55:28][C][logger:166]: Logger:
[21:55:28][C][logger:167]:   Level: DEBUG
[21:55:28][C][logger:169]:   Log Baud Rate: 115200
[21:55:28][C][logger:170]:   Hardware UART: UART0
[21:55:28][C][i2c.arduino:071]: I2C Bus:
[21:55:28][C][i2c.arduino:072]:   SDA Pin: GPIO4
[21:55:28][C][i2c.arduino:073]:   SCL Pin: GPIO5
[21:55:28][C][i2c.arduino:074]:   Frequency: 50000 Hz
[21:55:28][C][i2c.arduino:089]:   Recovery: failed, SCL is held low on the bus
[21:55:28][I][i2c.arduino:096]: Results from i2c bus scan:
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x08
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x09
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x0A
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x0B
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x0C
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x0D
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x0E
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x0F
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x10
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x11
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x12
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x13
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x14
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x15
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x16
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x17
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x18
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x19
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x1A
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x1B
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x1C
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x1D
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x1E
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x1F
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x20
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x21
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x22
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x23
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x24
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x25
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x26
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x27
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x28
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x29
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x2A
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x2B
[21:55:28][E][i2c.arduino:104]: Unknown error at address 0x2C
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x2D
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x2E
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x2F
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x30
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x31
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x32
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x33
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x34
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x35
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x36
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x37
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x38
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x39
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x3A
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x3B
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x3C
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x3D
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x3E
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x3F
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x40
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x41
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x42
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x43
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x44
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x45
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x46
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x47
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x48
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x49
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x4A
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x4B
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x4C
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x4D
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x4E
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x4F
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x50
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x51
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x52
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x53
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x54
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x55
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x56
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x57
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x58
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x59
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x5A
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x5B
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x5C
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x5D
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x5E
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x5F
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x60
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x61
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x62
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x63
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x64
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x65
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x66
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x67
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x68
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x69
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x6A
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x6B
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x6C
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x6D
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x6E
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x6F
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x70
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x71
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x72
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x73
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x74
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x75
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x76
[21:55:29][E][i2c.arduino:104]: Unknown error at address 0x77
[21:55:29][C][scd30:120]: scd30:
[21:55:29][C][scd30:121]:   Address: 0x61
[21:55:29][W][scd30:131]: Unable to read sensor firmware version
[21:55:29][C][scd30:139]:   Altitude compensation: OFF
[21:55:29][C][scd30:143]:   Automatic self calibration: ON
[21:55:29][C][scd30:144]:   Ambient pressure compensation: 0mBar
[21:55:29][C][scd30:145]:   Temperature offset: 0.00 °C
[21:55:29][C][scd30:146]:   Update interval: 5s
[21:55:29][C][scd30:147]:   CO2 'CO2 PPM'
[21:55:29][C][scd30:147]:     Device Class: 'carbon_dioxide'
[21:55:29][C][scd30:147]:     State Class: 'measurement'
[21:55:29][C][scd30:147]:     Unit of Measurement: 'ppm'
[21:55:29][C][scd30:147]:     Accuracy Decimals: 1
[21:55:29][C][scd30:147]:     Icon: 'mdi:molecule-co2'
[21:55:29][C][scd30:148]:   Temperature 'SCD30 Temperature'
[21:55:29][C][scd30:148]:     Device Class: 'temperature'
[21:55:29][C][scd30:148]:     State Class: 'measurement'
[21:55:29][C][scd30:148]:     Unit of Measurement: '°C'
[21:55:29][C][scd30:148]:     Accuracy Decimals: 1
[21:55:29][C][scd30:149]:   Humidity 'SCD30 Humidity'
[21:55:29][C][scd30:149]:     Device Class: 'humidity'
[21:55:29][C][scd30:149]:     State Class: 'measurement'
[21:55:29][C][scd30:149]:     Unit of Measurement: '%'
[21:55:29][C][scd30:149]:     Accuracy Decimals: 1
[21:55:29][E][component:082]:   Component scd30.sensor is marked FAILED
[21:55:29][C][captive_portal:088]: Captive Portal:
[21:55:29][C][mdns:115]: mDNS:
[21:55:29][C][mdns:116]:   Hostname: wemos-mini-3
[21:55:29][C][ota:096]: Over-The-Air Updates:
[21:55:29][C][ota:097]:   Address: 192.168.0.16:8266
[21:55:29][C][ota:100]:   Using Password.
[21:55:29][C][ota:103]:   OTA version: 2.
[21:55:29][C][api:139]: API Server:
[21:55:29][C][api:140]:   Address: 192.168.0.16:6053
[21:55:29][C][api:142]:   Using noise encryption: YES

looks like either your SCD30 is broken or the i2c bus is not wired correctly

Sorry for the late response, you might have figured it out already, but you appear to have two devices on the same i2c address. Sometimes the sensors have a resistor you have to remove to change the address. Some have jumpers or switches. You need to get one of your devices on a different address.

Thank you all for this discussion. It helped me to make my SCD30 working (after few days and many troubles caused by faulty connection :slightly_smiling_face: ) Anyway, I have my prototype working and now I would like to make final version. My vision is to have one sensor in each room and one ESP for all of them above ceiling to get rid of heat from ESP and minimize case for sensor. Each sensor would have up to 10 m of wire. And now to my questions:
Is it even possible to have 8-10 sensors connected to one ESP?
To save space I put connector like in the picture. Could it make any troubles? After week of testing it looks fine.
My vision is to have one connector for sensor in outdoor storage to have calibration place. As I found here, the calibration is stored in SCD30 so reconnect to another ESP should keep sensor calibrated. Is that correct?
Now I’m using ESP32. Is it also fine to use ESP8266 even for more sensors, if possibe?
Is it possible to turn off LED on the ESP?


Thank you advance for your replies.