NEWS
ESPHome - DHT22 Defaultwert möglich?
-
Bei meinem ESP8266 mit DHT22 fällt dieser leider immer wieder aus, der ESP liefert dann den Wert "null" bzw. "nan". Kann man da irgendwie einen anderen Wert vorgeben? das Problem ist, dass der Adapter "HeatingControl" das als 0° auffasst und dann den Raum permanent beheizt.
-
Schmeiß das ding weg und nimm was anständiges, bme280 oder sowas in der Art.
-
halte auch nicht viel von den DHTs aber das lässt sich doch mit einer Logik schnell beheben. Plausibilitätsprüfung ob das Delta zum vorherigen Wert größer ist als x% oder auch im Fall von "null", "nan" den Wert verwerfen und den vorherigen verwenden. Entweder per Skript in ESPHome oder im IObroker.
-
@dieter_p said in ESPHome - DHT22 Defaultwert möglich?:
im Fall von "null", "nan" den Wert verwerfen und den vorherigen verwenden. Entweder per Skript in ESPHome
In der Tat ist das trivial in esphome und ein script nicht mal von Nöten. Einfach
der dht22 sensor components einen filter spendieren und fertich:# Example configuration entry - platform: dht # ... filters: - filter_out: nan
@wolfgangfb said in ESPHome - DHT22 Defaultwert möglich?:
Bei meinem ESP8266 mit DHT22 fällt dieser leider immer wieder aus
Dann hast du wohl entweder ein Montagssensor erwischt oder vielleicht einen Widerstand zwischen DATA und VCC vergessen? Da sollten 4.7kΩ hin.
Bist du dir auch sicher das du das korrekte Modell eingestellt hast? Von den DHT's gibt es viele
DHT22, DHT22_TYPE2, AM2302, RHT03, SI7021
.Und das ein DHT22 im Jahre 2022 generell nicht die erste Wahl ist wahrscheinlich auch bekannt. Für weniger Geld gibt es z.B. den HTU21D der nicht nur genauer Temp+Luftfeuchte misst sondern vor allem auch zuverlässigst über i2c kommuniziert
-
@opensourcenomad
Danke für den Hinweis mit dem Filter. Der hilft schon sehr Das mit dem Widerstand muss ich heute Abend überprüfen.Eine Frage zu den Filtern: Ich habe Pulsemeter im Einsatz und da kommen ab und zu kurzzeitig zu hohe Leistungen. Wie kann ich die am sinnvollsten filtern? filter_out geht ja nur für absolute Zahlen und nicht für "größer als xxx". Bleibt noch eine Filter (z.B. Median) oder ein "on_value", da verstehe ich aber die Syntax nicht ganz. Was wäre Eurer Meinung nah der sinnvollste Weg um einzelne Ausreißer wegzuwerfen?
-
@wolfgangfb said in ESPHome - DHT22 Defaultwert möglich?:
Ich habe Pulsemeter im Einsatz und da kommen ab und zu kurzzeitig zu hohe Leistungen.
Hast du schon mal den
internal_filter
vom pulse meter probiert? Eventuell bringt dich der schon zum Ziel -
Hi, der internal_filter ist schon gesetzt.
-
@wolfgangfb said in ESPHome - DHT22 Defaultwert möglich?:
Hi, der internal_filter ist schon gesetzt.
Hast du mal versucht die Quelle für diese bursts zu finden? Hat deine pulsemeter Hardware zum digitalen Ausgang zufällig noch einen analogen? Und wenn ja, schießt dieser ebenfalls mit zu vielen Pulses um sich?
Was misst du denn genau? Strom an S0? Und was hast du für einen "Leser"? TCRT5000? -
@opensourcenomad said in ESPHome - DHT22 Defaultwert möglich?:
@wolfgangfb said in ESPHome - DHT22 Defaultwert möglich?:
Was misst du denn genau?Würde auf Leistung von einem HLW8012 tippen.
Wenn Du es einfach nur glätten und weniger reaktionsfreudig machen möchtest evtl. so (ich nutze diese Filter für die Helligkeit/Luxmeter um nicht zu reaktionsfreudig die Rollos rauf/runter zu fahren). Nur noch Übersetzen in ESPHome/IObroker und die Filtergeschwindigkeit nach Wunsch justieren :
On Lux#Lux do if [var#4]=0 Let 4,[Lux#Lux] // internal variable 4 initialisation endif Let 5,[Lux#Lux]-[var#4] // store difference variable 5 Let 6,%v5%/8 // determines filter speed variable 6 Let 4,%v4%+%v6% // add fraction of difference and result as variable 4 Publish %sysname%/Lux/Helligkeit,[var#4#D.1] //publish by MQTT EndOn
Wenn Du auf dieser Basis allerdings Kosten/Verbräuche berechnest wird das ordentlich falsch dadurch.
-
@dieter_p said in ESPHome - DHT22 Defaultwert möglich?:
Wenn Du es einfach nur glätten und weniger reaktionsfreudig machen möchtest
klingt es nach einem moving average für mich, in esphome natürlich (wie immer) trivialst zu lösen:
# Example configuration entry - platform: wifi_signal # ... filters: - sliding_window_moving_average: window_size: 15 send_every: 15
Wenn du damit allerdings Verbräuche messen willst kommt natürlich am Ende nur Mumpitz raus, mit einem Schätzeisen wie dem HLW8012 ist das aber wahrscheinlich nur noch ein Tropfen auf den heißen Stein.
-
Hier geht es um einen Stromzähler mit S0 Ausgang (0.5 Wh pro Impuls).
Ich habe das jetzt wie folgt gelöst:
- platform: pulse_meter pin: D4 internal_filter: 75ms timeout: 600s unit_of_measurement: 'W' name: 'D4.state Leistung 4 state' filters: - multiply: 30 # 2000 imp/kWh - median: window_size: 3 send_every: 1 total: unit_of_measurement: 'Wh' name: 'D4.state Energy 4 state' filters: - multiply: 0.5 # (2 pulses per Wh)
Die Leistung hat bisher keine Ausreißer denn einzelne Ausreißer werden beim Median einfach rausgefiltert und bei der Energie spielt es keine signifikante Rolle ob alle paar Stunden eine halbe Wattsunde zuviel gemessen wird oder nicht.