v1.10.0: intégration capteur CCS811 (TVOC/eCO2, I2C)
Nouveau capteur de qualité d'air CCS811 sur le bus I2C, calqué sur le pattern S88 (local-only, pas encore dans le payload de transmission). - CCS811/get_data.py (lecture live) + write_data.py (timer 10s, self-heal table) - table data_CCS811 (timestamp, eCO2, TVOC) dans create_db.py - config CCS811 (bool) + CCS811_address (0x5A/0x5B, défaut 0x5A) dans set_config.py - service+timer systemd nebuleair-ccs811-data (10s) + ajout boucle d'activation - admin.html: case d'activation + dropdown adresse I2C - sensors.html: carte Get Data (TVOC + eCO2) - database.html + launcher.php: consultation/export/stats data_CCS811 - lib adafruit-circuitpython-ccs811 dans installation_part1.sh - CCS811/README.md: câblage, adresses, warning clock-stretching I2C sur Pi - CLAUDE.md + changelog mis à jour Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -154,6 +154,20 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-check mb-3">
|
||||
<input class="form-check-input" type="checkbox" value="" id="check_ccs811" onchange="update_config_sqlite('CCS811', this.checked)">
|
||||
<label class="form-check-label" for="check_ccs811">
|
||||
Send VOC sensor data (CCS811)
|
||||
</label>
|
||||
<div class="mt-2 ms-4" style="max-width: 250px;">
|
||||
<label for="ccs811_address" class="form-label small mb-1">Adresse I2C du capteur CCS811</label>
|
||||
<select class="form-select form-select-sm" id="ccs811_address" onchange="update_config_sqlite('CCS811_address', this.value)">
|
||||
<option value="0x5A">0x5A (Adafruit, ADDR=GND)</option>
|
||||
<option value="0x5B">0x5B (SparkFun, ADDR=VDD)</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-check mb-3">
|
||||
<input class="form-check-input" type="checkbox" value="" id="check_wifi_power_saving" onchange="update_config_sqlite('wifi_power_saving', this.checked)">
|
||||
<label class="form-check-label" for="check_wifi_power_saving">
|
||||
@@ -596,6 +610,7 @@ window.onload = function() {
|
||||
const checkbox_noise = document.getElementById("check_NOISE");
|
||||
const checkbox_mhz19 = document.getElementById("check_mhz19");
|
||||
const checkbox_s88 = document.getElementById("check_s88");
|
||||
const checkbox_ccs811 = document.getElementById("check_ccs811");
|
||||
const checkbox_wifi_power_saving = document.getElementById("check_wifi_power_saving");
|
||||
|
||||
checkbox_bme.checked = response["BME280"];
|
||||
@@ -609,6 +624,10 @@ window.onload = function() {
|
||||
if (response["S88_port"]) {
|
||||
document.getElementById("s88_port").value = response["S88_port"];
|
||||
}
|
||||
checkbox_ccs811.checked = response["CCS811"];
|
||||
if (response["CCS811_address"]) {
|
||||
document.getElementById("ccs811_address").value = response["CCS811_address"];
|
||||
}
|
||||
checkbox_wifi_power_saving.checked = response["wifi_power_saving"];
|
||||
|
||||
checkbox_uSpot.checked = response["send_uSpot"];
|
||||
|
||||
Reference in New Issue
Block a user