Compare commits

...

10 Commits

Author SHA1 Message Date
a095936f3f Add SGP30 baseline sensors 2025-05-19 17:00:59 -04:00
547983173b Add compensation values to SGP30 2025-05-19 16:58:22 -04:00
2145d4eff1 Decrease Sensirion interval to 15s
60s felt like far too long.
2025-05-19 16:56:51 -04:00
9fc8ad7318 Adjust eCO2 threshold for Excellent 2025-05-19 16:49:33 -04:00
66573f2346 Adjust Sensirion update interval
15s is a little too frequent, so make it 60s
2025-05-17 00:14:02 -04:00
a2ff9491a3 Fix GPIO pin assignments 2025-05-17 00:11:03 -04:00
1ef3ba2e57 Fix micro wake word model selector 2025-05-17 00:10:54 -04:00
97dd3a9a90 Fix table formatting 2025-05-11 20:02:48 -04:00
993c3407ea Update board to 2.x revision 2025-05-11 20:00:35 -04:00
ae4713969d Rename and update dashboard ref 2025-05-11 19:40:54 -04:00
4 changed files with 26231 additions and 24546 deletions

View File

@ -1,7 +1,7 @@
# SuperSensor v2.x # SuperSensor v2.x
The SuperSensor is an all-in-one voice, motion, presence, temperature/humidity/ The SuperSensor is an all-in-one voice, motion, presence, temperature/humidity/air
air quality, and light sensor, built on an ESP32 with ESPHome, and inspired quality, and light sensor, built on an ESP32 with ESPHome, and inspired
heavily by the EverythingSmartHome Everything Presence One sensor and the heavily by the EverythingSmartHome Everything Presence One sensor and the
HomeAssistant "$13 Voice Assistant" project. HomeAssistant "$13 Voice Assistant" project.
@ -17,7 +17,7 @@ it bare if you like the "PCB on a wall" aesthetic.
To Use: To Use:
* Install the ESPHome configuration `supersensor-2.x.yaml` to a compatible ESP32 devkit (below). * Install the ESPHome configuration `supersensor.yaml` to a compatible ESP32 devkit (below).
* Install the ESP32 and sensors into the custom PCB (if desired). * Install the ESP32 and sensors into the custom PCB (if desired).
* [Optional] 3D Print the custom case. * [Optional] 3D Print the custom case.
* Power up the SuperSensor, connect to the WiFi AP, and connect it to your network. * Power up the SuperSensor, connect to the WiFi AP, and connect it to your network.
@ -69,7 +69,6 @@ and [my update post on version 2.0](https://www.boniface.me/the-supersensor-2.0)
## Parts List ## Parts List
|-------|--------------------|----------------------------------|-------|
| Qty | Component | Cost (2025/05 CAD, ex. shipping) | Links | | Qty | Component | Cost (2025/05 CAD, ex. shipping) | Links |
|-------|--------------------|----------------------------------|-------| |-------|--------------------|----------------------------------|-------|
| 1 | GY-SGP30 | $5.73 | [AliExpress](https://www.aliexpress.com/item/1005008473372972.html) | | 1 | GY-SGP30 | $5.73 | [AliExpress](https://www.aliexpress.com/item/1005008473372972.html) |
@ -84,12 +83,12 @@ and [my update post on version 2.0](https://www.boniface.me/the-supersensor-2.0)
| 1 | Female pin header† | $1.59 ($15.99/10) | [Amazon](https://www.amazon.ca/dp/B08CMNRXJ1) | | 1 | Female pin header† | $1.59 ($15.99/10) | [Amazon](https://www.amazon.ca/dp/B08CMNRXJ1) |
| 1 | Custom PCB (JLC) | $0.69 ($6.89/10) | [GitHub](https://github.com/joshuaboniface/supersensor) | | 1 | Custom PCB (JLC) | $0.69 ($6.89/10) | [GitHub](https://github.com/joshuaboniface/supersensor) |
| 1 | 3D Printed case | $?.??‡ | [GitHub](https://github.com/joshuaboniface/supersensor) | | 1 | 3D Printed case | $?.??‡ | [GitHub](https://github.com/joshuaboniface/supersensor) |
|-------|--------------------|----------------------------------|-------| | **TOTAL** | | **$33.64** | |
| TOTAL | | $33.64 | |
|-------|--------------------|----------------------------------|-------|
`*` Ensure you select the correct device on the page as it shows multiple options. `*` Ensure you select the correct device on the page as it shows multiple options.
`†` This is optional and only required if you don't want to directly solder the ESP32 to the board, but I recommend it. `†` This is optional and only required if you don't want to directly solder the ESP32 to the board, but I recommend it.
`‡` Providing a price is impossible due to the wide range of possible fillament types and brands, but should be negligible. `‡` Providing a price is impossible due to the wide range of possible fillament types and brands, but should be negligible.
## Configurable Options ## Configurable Options

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -53,7 +53,7 @@ esphome:
- switch.turn_on: voice_support_active - switch.turn_on: voice_support_active
dashboard_import: dashboard_import:
package_import_url: github://joshuaboniface/supersensor/supersensor-2.x.yaml package_import_url: github://joshuaboniface/supersensor/supersensor.yaml@2.x
esp32: esp32:
board: esp32dev board: esp32dev
@ -364,7 +364,8 @@ interval:
} }
micro_wake_word: micro_wake_word:
model: hey_jarvis models:
- model: hey_jarvis
on_wake_word_detected: on_wake_word_detected:
then: then:
- voice_assistant.start: - voice_assistant.start:
@ -491,13 +492,13 @@ light:
output: output:
- platform: ledc - platform: ledc
id: rgb_r id: rgb_r
pin: GPIO32 pin: GPIO23
- platform: ledc - platform: ledc
id: rgb_g id: rgb_g
pin: GPIO33 pin: GPIO22
- platform: ledc - platform: ledc
id: rgb_b id: rgb_b
pin: GPIO25 pin: GPIO21
ld2410: ld2410:
id: ld2410_radar id: ld2410_radar
@ -513,6 +514,15 @@ sensor:
name: "SGP30 TVOC" name: "SGP30 TVOC"
id: sgp30_tvoc id: sgp30_tvoc
accuracy_decimals: 1 accuracy_decimals: 1
eco2_baseline:
name: "SGP30 Baseline eCO2"
id: sgp30_baseline_ec02
tvoc_baseline:
name: "SGP30 Baseline TVOC"
id: sgp30_baseline_tvoc
compensation:
temperature_source: sht45_temperature
humidity_source: sht45_humidity
store_baseline: yes store_baseline: yes
update_interval: 15s update_interval: 15s
@ -559,7 +569,7 @@ sensor:
if (tvoc > 2200 || eco2 > 2000) return 1; // Unhealthy if (tvoc > 2200 || eco2 > 2000) return 1; // Unhealthy
if (tvoc > 660 || eco2 > 1200) return 2; // Poor if (tvoc > 660 || eco2 > 1200) return 2; // Poor
if (tvoc > 220 || eco2 > 800) return 3; // Moderate if (tvoc > 220 || eco2 > 800) return 3; // Moderate
if (tvoc > 65 || eco2 > 600) return 4; // Good if (tvoc > 65 || eco2 > 500) return 4; // Good
return 5; // Excellent return 5; // Excellent
update_interval: 15s update_interval: 15s
@ -690,7 +700,7 @@ binary_sensor:
- platform: gpio - platform: gpio
name: "PIR GPIO" name: "PIR GPIO"
id: pir_gpio id: pir_gpio
pin: GPIO13 pin: GPIO32
internal: false internal: false
device_class: motion device_class: motion
on_press: on_press:
@ -1070,6 +1080,7 @@ text_sensor:
name: "CO2 Level" name: "CO2 Level"
lambda: |- lambda: |-
int eco2 = id(sgp30_eco2).state; int eco2 = id(sgp30_eco2).state;
if (eco2 < 500) return {"Excellent"};
if (eco2 < 800) return {"Good"}; if (eco2 < 800) return {"Good"};
if (eco2 < 1200) return {"Moderate"}; if (eco2 < 1200) return {"Moderate"};
if (eco2 < 2000) return {"Poor"}; if (eco2 < 2000) return {"Poor"};