Loft Overvågning & Barometer
Multi-sensor telemetri monteret i loftsrummet til måling af temperaturgradienter, lufttryk og trådløs Wi-Fi diagnostik.
Projektoverblik
Formålet med dette projekt er overvågning af loftsrummets mikroklima. Ved at tilkoble to DS18B20 sensorer på den samme 1-Wire bus samt en BMP280 sensor via I2C, overvåges både temperaturforskelle i loftsrummet og det atmosfæriske barometertryk i realtid.
Fysisk Placering & Sensoropdeling
Placeringen på loftet stiller særlige krav til målingerne grundet store temperaturudsving mellem sommer og vinter:
- DS18B20 Føler #1 (Loftrum temperatur): Placeret frit i loftsrummets luftmasse for at registrere den generelle omgivelsestemperatur.
- DS18B20 Føler #2 (Loft temperatur): Placeret tættere ved isoleringen/etageadskillelsen for at måle temperaturforskellen ned mod boligen.
- BMP280 (Barometer & Temp): Monteret på hovedboardet til præcis måling af atmosfærisk lufttryk (hPa) og lokal board-temperatur.
- Placering af Enhed: Wemos D1 Mini styreenheden er monteret i en støv- og berøringssikker boks hævet over isoleringen.
Hardware & Dual 1-Wire Wiring Diagram
Opstillingen udnytter 1-Wire protokollens bus-topologi, hvor flere DS18B20 følere deler nøjagtig samme dataledning og differentieres via deres unikke 64-bit ROM-adresser.
- Mikrokontroller: ESP8266 Wemos D1 Mini
- Temperatursensorer: 2x Maxim / Dallas DS18B20 (Parallelt koblede på 1-Wire bus)
- Barometersensor: Bosch BMP280 (I2C Bus: SDA = GPIO2 / D4, SCL = GPIO14 / D5)
- Pull-up Modstand: 1x 4.7 kΩ modstand fælles monteret mellem
VCC (3.3V)ogData (GPIO0).
Skematisk Diagram (Shared 1-Wire Bus & I2C)
[ Wemos D1 Mini ] [ 1-Wire Bus ] [ DS18B20 #1 & #2 ]
+-----------------+ +--------------------+ +-------------------+
| 3.3V (VCC) ----+------*--------+--------------------+---->| VCC (Rød) |
| | | | | | |
| GPIO0 (D3) ----+---*--|--------+--------------------+---->| DATA (Gul/Hvid) |
| | | | | | | |
| GND ----+---|--|--------+--------------------+---->| GND (Sort) |
+-----------------+ | | +--------------------+ +-------------------+
| |
[4.7kΩ Modstand] (Mellem VCC og DATA)
[ I2C Bus ]
| GPIO2 (D4 / SDA)+-----------------------------------------> SDA (BMP280)
| GPIO14(D5 / SCL)+-----------------------------------------> SCL (BMP280)
DS18B20 Datasheet Højdepunkter
Nøgledata for 1-Wire bussen uddraget direkte fra Maxim Integrated DS18B20 databladet:
- Multi-drop Kapacitet: Adskillige sensorer kan parallelkobles på samme dataledning takket være individualiserede 64-bit ROM-koder.
- Måleområde: -55°C til +125°C (-67°F til +257°F).
- Nøjagtighed: ±0.5°C præcision i området fra -10°C til +85°C.
- Opløsning: Konfigurerbar fra 9 til 12 bits.
- Driftsspænding: 3.0V til 5.5V DC.
ESPHome YAML Konfiguration
Komplet firmware-konfiguration flashet til Wemos D1 Mini enheden. Koden opretter I2C-bussen, 1-Wire bussen med de to specifikke sensoradresser, BMP280 barometeret samt konvertering af Wi-Fi RSSI til procentuel signalstyrke:
esphome:
name: wemos-loft
friendly_name: Wemos Loft
esp8266:
board: d1_mini
# Aktiverer logging
logger:
# Aktiverer Home Assistant API (kryptografisk nøgle)
api:
encryption:
key: "!secret api_key"
ota:
- platform: esphome
password: "!secret ota_password"
wifi:
ssid: !secret wifi_ssid
password: !secret wifi_password
ap:
ssid: "Wemos-Loft Fallback Hotspot"
password: "!secret ap_password"
captive_portal:
button:
- platform: restart
name: "Genstart Wemos Loft"
id: restart_button
- platform: safe_mode
name: "Genstart i Safe Mode"
web_server:
port: 80
# I2C bus konfiguration til BMP280
i2c:
sda: GPIO2 # D4
scl: GPIO14 # D5
scan: true
id: bus_a
uart:
id: uart_bus
tx_pin: GPIO5 # D1
rx_pin: GPIO4 # D2
baud_rate: 9600
data_bits: 8
parity: EVEN
stop_bits: 1
# 1-Wire bus konfiguration på GPIO0
one_wire:
- platform: gpio
pin: GPIO0
sensor:
# BMP280 I2C Barometer & Temperatur
- platform: bmp280_i2c
address: 0x76
temperature:
name: "Loft Temperature"
pressure:
name: "Loft Pressure"
# Wi-Fi Signal Diagnostics (dB & Procent)
- platform: wifi_signal
name: "WiFi Signal dB"
id: wifi_signal_db
update_interval: 60s
entity_category: "diagnostic"
- platform: copy
source_id: wifi_signal_db
name: "WiFi Signal Percent"
filters:
- lambda: return min(max(2 * (x + 100.0), 0.0), 100.0);
unit_of_measurement: "%"
entity_category: "diagnostic"
# 1-Wire DS18B20 Sensor #1
- platform: dallas_temp
address: 0x4a00000c49992228
name: "Loftrum tempratur"
update_interval: 120s
# 1-Wire DS18B20 Sensor #2 (Samme bus)
- platform: dallas_temp
address: 0x92de94ce95a96b28
name: "Loft tempratur"
update_interval: 120s
- platform: uptime
name: "Uptime"
entity_category: "diagnostic"
text_sensor:
- platform: version
name: "ESPHome Version"
entity_category: "diagnostic"